Source for file FeedbackForm.class.php

Documentation is available at FeedbackForm.class.php

  1. /**
  2.  * Содержит класс FeedbackForm
  3.  *
  4.  * @package energine
  5.  * @subpackage share
  6.  * @author dr.Pavka
  7.  * @copyright ColoCall 2007
  8.  * @version $Id: fsource_energine_share_modulessharecomponentsFeedbackForm.class.php.html,v 1.1 2007/09/17 14:32:36 pavka Exp $
  9.  */
  10.  
  11. require_once('core/modules/share/components/DBDataSet.class.php');
  12. require_once('core/framework/Mail.class.php');
  13.  
  14. /**
  15.  * Форма обратной связи
  16.  *
  17.  * @package energine
  18.  * @subpackage share
  19.  */
  20. class FeedbackForm extends DBDataSet {
  21.  
  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.  
  34.         $this->setTableName('share_Feedback');
  35.         $this->setType(self::COMPONENT_TYPE_FORM_ADD);
  36.         $this->setDataSetAction('send');
  37.         $this->setTitle($this->translate('TXT_FEEDBACK_FORM'));
  38.     }
  39.     /**
  40.      * Переопределен параметр active
  41.      *
  42.      * @return int 
  43.      * @access protected
  44.      */
  45.  
  46.     protected function defineParams({
  47.         $result = array_merge(parent::defineParams(),
  48.         array(
  49.         'active'=>true,
  50.         ));
  51.         return $result;
  52.     }
  53.     /**
  54.      * Сохраняет данные
  55.      *
  56.      * @return mixed 
  57.      * @access protected
  58.      */
  59.  
  60.      protected function saveData($data{
  61.         $result false;
  62.         //создаем объект описания данных
  63.         $dataDescriptionObject new DataDescription();
  64.  
  65.        //получаем описание полей для метода
  66.         $configDataDescription $this->config->getMethodConfig($this->getPreviousAction());
  67.         //если в конфиге есть описание полей для метода - загружаем их
  68.         if (isset($configDataDescription->fields)) {
  69.             $dataDescriptionObject->loadXML($configDataDescription->fields);
  70.         }
  71.  
  72.         //Создаем объект описания данных взятых из БД
  73.         $DBDataDescription new DataDescription();
  74.         //Загружаем в него инфу о колонках
  75.         $DBDataDescription->load($this->loadDataDescription());
  76.         $this->setDataDescription($dataDescriptionObject->intersect($DBDataDescription));
  77.  
  78.         $dataObject new Data();
  79.         $dataObject->load($data);
  80.         $this->setData($dataObject);
  81.  
  82.         //Создаем сейвер
  83.         $this->saver new Saver();
  84.         //Устанавливаем его режим
  85.         $this->saver->setMode(self::COMPONENT_TYPE_FORM_ADD);
  86.         $this->saver->setDataDescription($this->getDataDescription());
  87.         $this->saver->setData($this->getData());
  88.  
  89.         if($this->saver->validate(=== true{
  90.             $this->saver->setFilter($this->getFilter());
  91.             $this->saver->save();
  92.             $result $this->saver->getResult();
  93.  
  94.         }
  95.         else {
  96.             //выдвигается пустой exception который перехватывается в методе save
  97.             throw new FormException();
  98.         }
  99.  
  100.         return $result;
  101.  
  102.      }
  103.  
  104.     /**
  105.      * Записывает обращение в БД, отправляет уведомление пользователю и администратору
  106.      *
  107.      * @return void 
  108.      * @access protected
  109.      */
  110.  
  111.     protected function send({
  112.         $data[$this->getTableName()$_POST[$this->getTableName()];
  113.  
  114.         if ($result $this->saveData($data)) {
  115.             $data $data[$this->getTableName()];
  116.             $senderEmail $data['feed_email'];
  117.  
  118.             $this->dbh->modify(QAL::UPDATE$this->getTableName()array('feed_date'=>date('Y-m-d H:i:s'))array($this->getPK()=>$result));
  119.  
  120.             $mailer new Mail();
  121.             $mailer->setFrom($this->getConfigValue('mail.from'))->
  122.                 setSubject($this->translate('TXT_SUBJ_FEEDBACK_USER'))->
  123.                 setText(sprintf($this->translate('TXT_BODY_FEEDBACK_USER')$data['feed_author']$result))->
  124.                 addTo($senderEmail$senderEmail)
  125.                 ->send();
  126.             try {
  127.                 $mailer new Mail();
  128.                 $mailer->setFrom($this->getConfigValue('mail.from'))->
  129.                     setSubject($this->translate('TXT_SUBJ_FEEDBACK_ADMIN'))->
  130.                     setText(sprintf($this->translate('TXT_BODY_FEEDBACK_ADMIN')$data['feed_author']$senderEmail$senderEmail$data['feed_text']))->
  131.                     addTo($this->getConfigValue('mail.feedback'))
  132.                     ->send();
  133.             }
  134.             catch (Exception $e){
  135.             }
  136.         }
  137.  
  138.  
  139.         $this->prepare();
  140.         if ($textBlock $this->document->componentManager->getComponentByName('feedback_text')) {
  141.             $textBlock->disable();
  142.         }
  143.  
  144.         $field new Field('result');
  145.         $field->setData($this->translate('TXT_FEEDBACK_SUCCESS_SEND'));
  146.         $this->getData()->addField($field);
  147.     }
  148. }

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