chevereto-free/lib/G/functions.render.php

158 lines
4.0 KiB
PHP

<?php
/* --------------------------------------------------------------------
G\ library
http://gbackslash.com
@author Rodolfo Berrios A. <http://rodolfoberrios.com/>
Copyright (c) Rodolfo Berrios <inbox@rodolfoberrios.com> All rights reserved.
Licensed under the MIT license
http://opensource.org/licenses/MIT
--------------------------------------------------------------------- */
namespace G\Render;
use G;
/**
* INCLUDE TAGS
* ---------------------------------------------------------------------
*/
function include_theme_file($filename) {
$file = G_APP_PATH_THEME . $filename;
$override = G_APP_PATH_THEME . 'overrides/' . $filename;
if(!file_exists($file)) {
$file .= '.php';
$override .= '.php';
}
if(file_exists($override)) {
$file = $override;
}
if(file_exists($file)) include($file);
}
function include_theme_header() {
include_theme_file('header');
}
function include_theme_footer() {
include_theme_file('footer');
}
function get_theme_file_contents($filename) {
$file = G_APP_PATH_THEME . $filename;
return file_exists($file) ? file_get_contents($file) : null;
}
/**
* THEME DATA FUNCTIONS
* ---------------------------------------------------------------------
*/
function get_theme_file_url($string) {
return BASE_URL_THEME . $string;
}
/**
* ASSETS
* ---------------------------------------------------------------------
*/
// Return app lib file url
function get_app_lib_file_url($string){
return G_APP_LIB_URL . $string;
}
// Returns the HTML input with the auth token
function get_input_auth_token($name='auth_token') {
return '<input type="hidden" name="'.$name.'" value="'.G\Handler::getAuthToken().'">';
}
/**
* NON HTML OUTPUT
* ---------------------------------------------------------------------
*/
// Outputs the REST_API array to xml
function xml_output($array=array()) {
error_reporting(0);
//@ini_set('display_errors', false);
if(ob_get_level() === 0 and !ob_start('ob_gzhandler')) {
ob_start();
}
header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-Type:text/xml; charset=UTF-8");
$out = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
$out .= "<response>\n";
$out .= " <status_code>$array[status_code]</status_code>\n";
$out .= " <status_txt>$array[status_txt]</status_txt>\n";
if(count($array["data"])>0) {
$out .= " <data>\n";
foreach($array["data"] as $key => $value) {
$out .= " <$key>$value</$key>\n";
}
$out .= " </data>\n";
}
$out .= "</response>";
echo $out;
}
// Procedural function to output an array to json
function json_output($data=[], $callback=NULL) {
error_reporting(0);
//@ini_set('display_errors', false);
if(ob_get_level() === 0 and !ob_start('ob_gzhandler')) ob_start();
header('Last-Modified: '.gmdate('D, d M Y H:i:s').'GMT');
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');
header('Content-type: application/json; charset=UTF-8');
// Invalid json request
if(!G\check_value($data) || (G\check_value($callback) and preg_match('/\W/', $callback))) {
G\set_status_header(400);
$json_fail = [
'status_code' => 400,
'status_txt' => G\get_set_status_header_desc(400),
'error' => [
'message' => 'no request data present',
'code' => NULL
]
];
die(json_encode($json_fail));
}
// Populate missing values
if($data['status_code'] && !$data['status_txt']){
$data['status_txt'] = G\get_set_status_header_desc($data['status_code']);
}
$json_encode = json_encode($data);
if(!$json_encode) { // Json failed
G\set_status_header(500);
$json_fail = [
'status_code' => 500,
'status_txt' => G\get_set_status_header_desc(500),
'error' => [
'message' => "data couldn't be encoded into json",
'code' => NULL
]
];
die(json_encode($json_fail));
}
G\set_status_header($data['status_code']);
if(!is_null($callback)) {
print sprintf('%s(%s);', $callback, $json_encode);
} else {
print $json_encode;
}
die();
}