Exemplo n.º 1
0
 /**
  * Попытка загрузить контрол, файл для которого есть, но нету исключения
  * @expectedException CConfigException
  */
 public function testLoadControlWhenClassNotExists()
 {
     CConfigControlManager::loadControl('failed_to_load');
 }
Exemplo n.º 2
0
 /**
  * Добавляет в текущий конфиг новый контрол
  * @param string $name
  * @param string $xtype
  * @param string $title
  * @param mixed $value
  * @param array $additionalConfig
  */
 public function addControl($name, $xtype, $title, $additionalConfig = array(), $value = null)
 {
     try {
         $this->searchControlByName($name);
         $notFound = false;
     } catch (CConfigException $e) {
         $notFound = true;
     }
     // Если контрол уже есть, бросаем исключение
     if (!$notFound) {
         throw new CConfigException('Control with name="' . $name . '" already exists');
     }
     $sql = 'INSERT INTO `%s` SET `schemaId`="%d",`tabId`="0",`name`="%s",`xtype`="%s",`title`="%s",`value`="",`config`="%s",`order`="%d"';
     $sql = sprintf($sql, CCONFIG_CONTROL_TABLE, $this->id, \Faid\DB::escape($name), \Faid\DB::escape($xtype), \Faid\DB::escape($title), !empty($additionalConfig) ? \Faid\DB::escape(serialize($additionalConfig)) : '', sizeof($this->controls) + 1);
     DB::post($sql);
     $id = DB::$connection->insert_id;
     //
     // Вызываем after create у контрола
     $class = CConfigControlManager::loadControl($xtype);
     call_user_func(array($class, 'afterCreate'), $additionalConfig, $name, $value, $title);
     //
     $control = CConfigControlManager::createControl($id, $name, $xtype, $title, $additionalConfig, $value, $this);
     $control->setValue($value);
     $this->loadControls();
     return $control;
 }
Exemplo n.º 3
0
 /**
  * Данный метод вызывает форму редактирования доп. полей у контролов
  * @param string $xtype
  */
 public function getAdminForm($xtype)
 {
     $class = CConfigControlManager::loadControl($xtype);
     print call_user_func(array($class, 'outputAdminForm'));
     die;
 }