energine
[ class tree: energine ] [ index: energine ] [ all elements ]

Source for file ParamValuesEditor.class.php

Documentation is available at ParamValuesEditor.class.php

  1. <?php
  2. /**
  3.  * Содержит класс ParamValuesEditor
  4.  *
  5.  * @package energine
  6.  * @subpackage shop
  7.  * @author dr.Pavka
  8.  * @copyright ColoCall 2006
  9.  * @version $Id$
  10.  */
  11.  
  12. //require_once('core/modules/share/components/Grid.class.php');
  13.  
  14. /**
  15.  * Редактор значений параметров продукта
  16.  *
  17.  * @package energine
  18.  * @subpackage shop
  19.  * @author dr.Pavka
  20.  */
  21. class ParamValuesEditor extends Grid {
  22.     /**
  23.      * Конструктор класса
  24.      *
  25.      * @param string $name 
  26.      * @param string $module 
  27.      * @param Document $document 
  28.      * @param array $params 
  29.      * @access public
  30.      */
  31.     public function __construct($name$moduleDocument $document,  array $params null{
  32.         parent::__construct($name$module$document,  $params);
  33.         $this->setTableName('shop_product_param_values');
  34.     }
  35.  
  36.     /**
  37.      * Добавлен параметр идентификатор продукта
  38.      *
  39.      * @return array 
  40.      * @access protected
  41.      */
  42.  
  43.     protected function defineParams({
  44.         return array_merge(
  45.         parent::defineParams(),
  46.         array(
  47.         'productID' => false
  48.         )
  49.         );
  50.     }
  51.  
  52.     /**
  53.      * Всегда выводятся все присвоенные этому типу параметра значения
  54.      *
  55.      * @return array 
  56.      * @access protected
  57.      */
  58.  
  59.     protected function loadData({
  60.         $result false;
  61.         if ($this->getAction(== 'getRawData'{
  62.             $result $this->dbh->selectRequest(sprintf('
  63.             SELECT ppv.ppv_id, ppvt.lang_id, ppt.pp_name, ppvt.ppv_value FROM shop_product_params pp
  64.             LEFT JOIN shop_product_params_translation ppt ON ppt.pp_id = pp.pp_id
  65.             LEFT JOIN shop_product_param_values ppv ON ppv.pp_id = pp.pp_id AND ppv.product_id = %s
  66.             LEFT JOIN shop_product_param_values_translation ppvt ON ppvt.ppv_id = ppv.ppv_id AND ppvt.lang_id = %s
  67.             WHERE pp.pt_id in(
  68.             SELECT pt_id FROM `shop_products` WHERE product_id = %s)
  69.             AND ppt.lang_id = %s
  70.             ',
  71.             $this->getParam('productID'),
  72.             $this->getDataLanguage(),
  73.             $this->getParam('productID'),
  74.             $this->getDataLanguage()
  75.             ));
  76.  
  77.         }
  78.         else {
  79.             $result parent::loadData();
  80.         }
  81.         return $result;
  82.     }
  83.  
  84.     /**
  85.      * В зависимости от типа продукта выставляется тип поля ppv_value
  86.      *
  87.      * @return DataDescription 
  88.      * @access protected
  89.      */
  90.  
  91.     protected function createDataDescription({
  92.         $result parent::createDataDescription();
  93.         if ($this->getType(== self::COMPONENT_TYPE_FORM_ALTER{
  94.             $fieldType simplifyDBResult($this->dbh->selectRequest('SELECT pp_type FROM shop_products p
  95.             LEFT JOIN shop_product_params pp ON pp.pt_id = p.pt_id
  96.             LEFT JOIN shop_product_param_values ppv ON ppv.pp_id = pp.pp_id
  97.             WHERE p.product_id ='.$this->getParam('productID').' AND ppv.ppv_id = '.current($this->getFilter()))'pp_type'true);
  98.             $result->getFieldDescriptionByName('ppv_value')->setType($fieldType);
  99.         }
  100.         return $result;
  101.     }
  102. }
В создании документации нам помог: phpDocumentor