PHP Classes

File: Smarty/libs/plugins/function.json.php

Recommend this page to a friend!
  Classes of Isaac Trenado Mx   FDSSmarty   Smarty/libs/plugins/function.json.php   Download  
File: Smarty/libs/plugins/function.json.php
Role: Auxiliary script
Content type: text/plain
Description: Auxiliary script
Class: FDSSmarty
Load and display views using Smarty
Author: By
Last change:
Date: 9 years ago
Size: 3,134 bytes
 

Contents

Class file image Download
<?php

/**
 * Smarty {json} plugin
 *
 * Type: function
 * Name: json
 * Date: Apr 12, 2009
 * Purpose: Read JSON from file, decode and assign data to Smarty template variable
 * Syntax: {json file="filename.json"}: 'file' is a required parameter (URL)
 * Predefined additional parameters:
 * - assign="data": assign all JSON data to template variable $data
 * - obj2obj [ Boolean | default:false ]:
 * decodes JSON objects as either PHP associative arrays or PHP objects
 * - debug [ Boolean | default:false ]: print decoded data in template
 * Variable parameters:
 * {json file="filename.json" home="homepage" lang="languages"}:
 * assign (JSONdata)["homepage"] to template variable $home
 * and (JSONdata)["languages"] to $lang,
 * compare to: {config_load file="filename.conf" section="homepage"}
 * Install: Drop into the plugin directory
 * @link http://jlix.net/extensions/smarty/json
 * @author Sander Aarts <smarty at jlix dot net>
 * @copyright 2009 Sander Aarts
 * @license LGPL License
 * @version 1.0.1
 * @param array
 * @param Smarty
 */
function smarty_function_json($params, &$smarty) {


   
$params['file'] = isset($params['file']) ? $params['file'] : null;
   
$params['obj2obj'] = isset($params['obj2obj']) ? $params['obj2obj'] : true;
   
$params['debug'] = isset($params['debug']) ? $params['debug'] : false;
   
   
$larConfigDir = $smarty->getConfigDir();
   
$lstConfigDir = $larConfigDir[0];

   
//echo "<pre>";
    //print_r($smarty->template_dir);
    //echo "</pre>";
    //echo "<h1>Params</h1>";
    //echo "<pre>";
    //print_r($params);
    //echo "</pre>";
   
if (!is_callable('json_decode')) {
       
$smarty->_trigger_fatal_error("{json} requires json_decode() function (PHP 5.2.0+)");
    }
    if (empty(
$params['file'])) {
       
$smarty->_trigger_fatal_error("{json} parameter 'file' must not be empty");
    }
    if (isset(
$params['assign'], $params[$params['assign']])) {
       
$smarty->_trigger_fatal_error("{json} parameter 'assign' conflicts with a variable assign parameter (both refer to the same variable)");
    }

   
$assoc = ($params['obj2obj'] == true) ? false : true;
   
$json = trim(file_get_contents($lstConfigDir . $params['file']));
   
$data = json_decode($json, $assoc);

   
/* echo "<h1>Data</h1>";
      echo "<pre>";
      print_r($data);
      echo "</pre>"; */

   
if ($params['debug'] == true) {
       
/* echo "<pre>";
          print_r($data);
          echo "</pre>"; */
   
}

    unset(
$params['file'], $params['obj2obj'], $params['debug']);

   
$assign = array();
    foreach (
$params as $key => $value) {
        if (
$key === 'assign')
           
$assign[$value] = $data;
        else
           
$assign[$key] = $assoc ? $data[$value] : $data->$value;
    }
// echo "<h1>Assign</h1>";
// echo "<pre>";
// print_r($assign);
// echo "</pre>";
   
if (count($assign) > 0) {
       
$smarty->assign($assign);
    } else {
        return
$data;
    }
}