Source for file JSONBuilder.class.php

Documentation is available at JSONBuilder.class.php

  1. /**
  2.  * Класс JSONBuilder
  3.  *
  4.  * @package energine
  5.  * @subpackage core
  6.  * @author dr.Pavka
  7.  * @copyright ColoCall 2006
  8.  * @version $Id: fsource_energine_core_frameworkJSONBuilder.class.php.html,v 1.1 2007/09/17 14:32:34 pavka Exp $
  9.  */
  10.  
  11. require_once 'core/framework/Builder.class.php';
  12.  
  13. /**
  14.  * Построитель данных в формат JSON (JavaScript Object Notation).
  15.  *
  16.  * @package energine
  17.  * @subpackage core
  18.  */
  19. class JSONBuilder extends Builder {
  20.     /**
  21.      * Листалка
  22.      *
  23.      * @var Pager 
  24.      * @access private
  25.      */
  26.     private $pager = null;
  27.  
  28.     /**
  29.      * @access private
  30.      * @var array список ошибок
  31.      * @todo зачем это!?
  32.      */
  33.     private $errors = array();
  34.  
  35.     /**
  36.      * Конструктор класса.
  37.      *
  38.      * @access public
  39.      * @return void 
  40.      */
  41.     public function __construct({
  42.         parent::__construct();
  43.     }
  44.  
  45.     /**
  46.      * Создает результирующий JSON-объект.
  47.      *
  48.      * @access public
  49.      * @return bool 
  50.      */
  51.     public function build({
  52.         $result false;
  53.  
  54.         if ($this->dataDescription == false{
  55.             throw new SystemException('ERR_DEV_NO_DATA_DESCRIPTION'SystemException::ERR_DEVELOPER);
  56.         }
  57.  
  58.         $fields $this->dataDescription->getFieldDescriptions();
  59.         foreach ($fields as $fieldName => $fieldInfo{
  60.             $result['meta'][$fieldNamearray(
  61.                 'type' => $fieldInfo->getType(),
  62.                 'key' => $fieldInfo->getPropertyValue('key')&&$fieldInfo->getPropertyValue('index')=='PRI'truefalse,
  63.                 'visible' => $fieldInfo->getPropertyValue('key')&&$fieldInfo->getPropertyValue('index')=='PRI' false true,
  64.                 'name' => $fieldInfo->getPropertyValue('tableName')."[$fieldName]",
  65.                 'rights' => $fieldInfo->getRights(),
  66.                 'field' => $fieldName
  67.             );
  68.         }
  69.  
  70.         if ($this->data{
  71.             for ($i 0$i $this->data->getRowCount()$i++{
  72.                 foreach ($fields as $fieldName => $fieldInfo{
  73.                     $fieldType $fieldInfo->getType();
  74.                     $fieldValue $this->data->getFieldByName($fieldName)->getRowData($i);
  75.                     switch ($fieldType{
  76.                         case FieldDescription::FIELD_TYPE_DATETIME:
  77.                         case FieldDescription::FIELD_TYPE_DATE:
  78.                             if (!empty($fieldValue)) {
  79.                                 $fieldValue = strftime($fieldInfo->getPropertyValue('outputFormat')$fieldValue);
  80.                             }
  81.                             break;
  82.                         case FieldDescription::FIELD_TYPE_SELECT:
  83.                             $value $fieldInfo->getAvailableValues();
  84.                             if (isset($value[$fieldValue])) {
  85.                                 $fieldValue $value[$fieldValue]['value'];
  86.                             }
  87.                             break;
  88.                         default// not used
  89.                     }
  90.                     if (is_null($fieldValue)) {
  91.                         $fieldValue '';
  92.                     }
  93.                     $result['data'][$i][$fieldName$fieldValue;
  94.                 }
  95.             }
  96.         }
  97.  
  98.         $result['result'true;
  99.         $result['mode''select';
  100.  
  101.         $this->result = $result;
  102.  
  103.         return true;
  104.     }
  105.  
  106.     /**
  107.      * Возвращает результат работы построителя.
  108.      *
  109.      * @access public
  110.      * @return string 
  111.      */
  112.     public function getResult({
  113.         $result $this->result;
  114.         if (!is_null($this->pager)) {
  115.             $result['pager'array(
  116.                'current' => $this->pager->getCurrentPage(),
  117.                'count' => $this->pager->getNumPages()
  118.             );
  119.         }
  120.         $result = json_encode($result);
  121.         return $result;
  122.     }
  123.  
  124.     /**
  125.      * Возвращает список ошибок.
  126.      *
  127.      * @return string 
  128.      * @access public
  129.      * @todo зачем это!?
  130.      */
  131.     public function getErrors({
  132.         return json_encode($this->errors);
  133.     }
  134.  
  135.     /**
  136.      * Устанавливает кооличество страниц для листлки
  137.      *
  138.      * @param int 
  139.      * @return void 
  140.      * @access public
  141.      */
  142.  
  143.     public function setPager($pager{
  144.         $this->pager = $pager;
  145.     }
  146. }

Documentation generated on Mon, 17 Sep 2007 13:30:09 +0300 by phpDocumentor 1.4.0a2