Esempio n. 1
0
 public function getSectionsArray()
 {
     $attr = Widget::getI18nFieldName('title', 'Widget');
     $sql = 'SELECT ns.`id`, u.`' . $attr . '` FROM `' . Widget::tableName() . '` as u
             INNER JOIN `' . ModelBlog::tableName() . '` as ns
                 ON u.id = ns.widget_id
             WHERE u.`class` = "WidgetBlog" ORDER BY u.`' . $attr . '`';
     $result = Yii::app()->db->createCommand($sql)->queryAll();
     $ret = array();
     foreach ($result as $row) {
         $ret[$row['id']] = $row[$attr];
     }
     return $ret;
 }
Esempio n. 2
0
 /**
  * Страница инсталляции/деинсталляции блоков
  */
 public function actionInstall()
 {
     $allUnits = ContentUnit::getAvailableUnits();
     $errors = array();
     if (isset($_POST['Units'])) {
         $units = array_keys($_POST['Units']);
         ContentUnit::install($units);
         $uninstall = array_diff(array_keys($allUnits), $units);
         foreach ($uninstall as $i => $className) {
             $sql = 'SELECT count(*) FROM `' . Widget::tableName() . '` WHERE `class` = :class';
             $command = Yii::app()->db->createCommand($sql);
             $command->bindValue(':class', $className, PDO::PARAM_STR);
             $exists = $command->queryScalar();
             if ($exists) {
                 unset($uninstall[$i]);
                 $errors[] = Yii::t('cms', 'Can\\`t unistall "{name}"', array('{name}' => $allUnits[$className]['name']));
             }
         }
         ContentUnit::uninstall($uninstall);
         $allUnits = ContentUnit::getAvailableUnits();
     }
     $this->render('install', array('units' => $allUnits, 'errors' => $errors));
 }
Esempio n. 3
0
    public function afterDelete()
    {
        PageWidget::model()->deleteAll('page_id = :page_id', array(':page_id' => $this->id));
        // Удаляем все блоки, которые больше нигде не размещены
        $sql = 'SELECT `widget`.`id`, `widget`.`class`  FROM `' . Widget::tableName() . '` as `widget`
				LEFT JOIN `' . PageWidget::tableName() . '` as `pagewidget` ON (`widget`.`id` = `pagewidget`.`widget_id`)



		$pus = Yii::app()->db->createCommand($sql)->queryAll();
				WHERE `pagewidget`.`id` IS NULL';
        $ids = array();
        if ($pus && is_array($pus)) {
            foreach ($pus as $pu) {
                $ids[] = intval($pu['id']);
                $widgetClass = $pu['class'];
                $modelClass = call_user_func(array($widgetClass, 'modelClassName'));
                call_user_func(array($modelClass, 'model'))->deleteAll('widget_id = ' . intval($pu['id']));
            }
            $sql = 'DELETE FROM `' . Widget::tableName() . '` WHERE `id` IN (' . implode(',', $ids) . ')';
            Yii::app()->db->createCommand($sql)->execute();
        }
        return parent::afterDelete();
    }