<?php
// This file is part of the Studyplan plugin for Moodle
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <https://www.gnu.org/licenses/>.
/**
 * Ease of debugging tools
 * @package    local_treestudyplan
 * @copyright  2023 P.M. Kuipers
 * @license    https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

namespace local_treestudyplan;

use Exception;

defined('MOODLE_INTERNAL') || die();

class debug {
    /**
     * @param $object Object to dump
     * @param $filename File to write to
     * @return any The object
     */
    public static function &dump(&$object,$filename="/tmp/debug.log") {
        $f = fopen($filename,"a+");
        try {
            $json = \json_encode($object,JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR );
            fwrite($f,$json."\n");
        } catch (Exception $x) {
            fwrite($f,"Error processing json: ". $x->getMessage()."\n");
            fwrite($f,"Print_r dump: \n".print_r($object,true)."\n");
        }
        fclose($f);
        return $object;
    }

    /**
     * @param $object Object to dump
     * @param $filename File to write to
     * @return any The object
     */
    public static function &print_r(&$object,$filename="/tmp/debug.log") {
        $f = fopen($filename,"a+");
        fwrite($f,"Print_r dump: \n".print_r($object,true)."\n");
        fclose($f);
        return $object;
    }


    /**
     * @param $object Object to dump
     * @param $filename File to write to
     * @return any The object
     */
    public static function write($text,$filename="/tmp/debug.log") {
        $f = fopen($filename,"a+");
        fwrite($f,$text."\n");
        fclose($f);
    }
}