<?php
// prevenir invocacion directa del script
defined('PRONTUS') OR exit('');
/**
 * Utiles
 *
 * Clase generica con funciones utiles para el posting de Youtube
 *
 * @package     php-lib
 * @author      CVI/YCC <desarrollo@altavoz.net>
 * @version
 * 1.0.0 - 25/03/2014 - CVI - Primera version.
 *
 */
require_once('config.php');
require_once('Logger.class.php');

class Utiles {
    public $CONFIG_YOUTUBE;

    public function __construct($config = false) {
        $this->CONFIG_YOUTUBE = $config;
    }

    /**
     * Entrega la ruta al XML usando el TS y el nombre del Prontus
     * @param string $prontus_id Nombre del Prontus
     * @param string $ts TS del artículo
     * @return string Ruta absoluta al XML
     **/
    public function getRutaXml($prontus_id, $ts){
        $fechac = substr($ts, 0, 8);
        $ruta_xml = "/$prontus_id/site/artic/$fechac/xml/$ts.xml";
        return $this->CONFIG_YOUTUBE['DOCUMENT_ROOT'] . $ruta_xml;
    }

    /**
     * Entrega la ruta al directorio de Youtube
     * @param string $prontus_id Nombre del Prontus
     * @return string Ruta absoluta al XML
     **/
    public function getRutaYoutube($prontus_id) {
        $ruta_youtube = "/$prontus_id/cpan/data/youtube_post/";
        return $this->CONFIG_YOUTUBE['DOCUMENT_ROOT'] . $ruta_youtube;
    }

    /**
     * Funcion encargada de leer el xml de un artículo
     * @param string $file ruta al archivo xml
     * @return string Buffer con el XML
     */
    public function getXmlContent($file) {
        if (file_exists($file)) {
            return file_get_contents($file);
        } else {
            $this->printErrorLog("Error al leer el xml: $file");
            return '';
        }
    }

    /**
     * Funcion encargada de leer el json de un artículo
     * @param string $file ruta al archivo json
     * @return string Buffer con el JSON
     */
    public function getJSONContent($file) {
        if (file_exists($file)) {
            return file_get_contents($file);
        }
        $this->printErrorLog("Error al leer el JSON: $file");
        return '{}';
    }

    /**
     * Funcion para obtener un elemento xml, para xmls de hasta 2 niveles
     * @param string $buffer buffer con el contenido del xml
     * @param string $element hoja requerida del objeto xml
     * @return string Elemento buscado
     */
    public function getElementFromXML($buffer, $element) {
        $data = '';
        if (preg_match('/<'.$element.'>(.*?)<\/'.$element.'>/si', $buffer, $matches) == 1) {
            $data = $matches[1];
            if(preg_match('/<!\[cdata\[(.*?)\]\]>/si', $data, $matches) == 1) {
                $data = $matches[1];
            }
        } else {
            $this->printErrorLog("No hubo match: $element", 'debug');
        }
        return $data;
    }

    /**
     * Manejo centralizado de errores
     * @param string $msg Mensaje a imprimir
     * @param string $code Codigo del tipo de error (ej: debug, error, warn)
     * @return string Elemento buscado
     */
    public function printErrorLog($msg, $code = 'info') {
        $ruta_youtube = $this->CONFIG_YOUTUBE['DOCUMENT_ROOT'] . '/' . $this->CONFIG_YOUTUBE['PRONTUS_ID'] . "/cpan/data/youtube_post/_applog";
        $logger = new Logger(MODULOLOG, 'debug', '', $ruta_youtube);
        $logger->mensajeLog('TS:['.TSART.']['.$code.'] - ' . $msg);
    }

    public function readSingleFile($file) {
        if (file_exists($file)) {
            return file_get_contents($file);
        } else {
            return '';
        }
    }
}
