コード例 #1
0
ファイル: ActionList.php プロジェクト: energine-cmf/energine
 protected function clear()
 {
     $this->dbh->modify(QAL::DELETE, $this->getTableName());
     $b = new JSONCustomBuilder();
     $b->setProperty('result', true)->setProperty('mode', 'clear');
     $this->setBuilder($b);
 }
コード例 #2
0
ファイル: Grid.php プロジェクト: energine-cmf/energine
 /**
  * Move the record.
  * Allowed movement:
  * - above
  * - below
  * - top
  * - bottom
  * @todo: Пофиксить перемещение в начало списка, т.к. сейчас порядковый номер может выйти меньше 0. Аналогичная ситуация с move above.
  * @throws SystemException 'ERR_NO_ORDER_COLUMN'
  */
 protected function moveTo()
 {
     if (!$this->getOrderColumn()) {
         //Если не задана колонка для пользовательской сортировки то на выход
         throw new SystemException('ERR_NO_ORDER_COLUMN', SystemException::ERR_DEVELOPER);
     }
     $params = $this->getStateParams();
     list($firstItem, $direction) = $params;
     $allowed_directions = ['first', 'last', 'above', 'below'];
     if (in_array($direction, $allowed_directions) && $firstItem == intval($firstItem)) {
         switch ($direction) {
             // двигаем элемент с id=$firstItem на самый верх
             case 'first':
                 $oldFirstItem = (int) $this->dbh->getScalar('SELECT MIN(' . $this->getOrderColumn() . ') FROM ' . $this->getTableName() . ' LIMIT 1');
                 if ($oldFirstItem != $firstItem) {
                     $this->dbh->modify(QAL::UPDATE, $this->getTableName(), [$this->getOrderColumn() => $oldFirstItem - 1], [$this->getPK() => $firstItem]);
                 }
                 break;
                 // двигаем элемент с id=$firstItem в самый низ
             // двигаем элемент с id=$firstItem в самый низ
             case 'last':
                 $oldLastItem = (int) $this->dbh->getScalar('SELECT MAX(' . $this->getOrderColumn() . ') FROM ' . $this->getTableName() . ' LIMIT 1');
                 if ($oldLastItem != $firstItem) {
                     $this->dbh->modify(QAL::UPDATE, $this->getTableName(), [$this->getOrderColumn() => $oldLastItem + 1], [$this->getPK() => $firstItem]);
                 }
                 break;
                 // двигаем элемент выше или ниже id=$secondItem
             // двигаем элемент выше или ниже id=$secondItem
             case 'above':
             case 'below':
                 $secondItem = !empty($params[2]) ? $params[2] : NULL;
                 if ($secondItem == intval($secondItem) && $firstItem != $secondItem) {
                     $secondItemOrderNum = $this->dbh->getScalar('SELECT ' . $this->getOrderColumn() . ' as secondItemOrderNum ' . 'FROM ' . $this->getTableName() . ' ' . 'WHERE ' . $this->getPK() . ' = ' . $secondItem);
                     $this->dbh->beginTransaction();
                     // сдвигаем все элементы выше или ниже второго id
                     $this->dbh->modify('UPDATE ' . $this->getTableName() . ' ' . 'SET ' . $this->getOrderColumn() . ' = ' . $this->getOrderColumn() . ($direction == 'below' ? ' +2 ' : ' -2 ') . 'WHERE ' . $this->getOrderColumn() . ($direction == 'below' ? ' > ' : ' < ') . intval($secondItemOrderNum));
                     // устанавливаем новый порядок для первого id
                     $this->dbh->modify(QAL::UPDATE, $this->getTableName(), [$this->getOrderColumn() => $direction == 'below' ? $secondItemOrderNum + 1 : $secondItemOrderNum - 1], [$this->getPK() => $firstItem]);
                     $this->dbh->commit();
                 }
                 break;
         }
     }
     $b = new JSONCustomBuilder();
     $b->setProperty('result', true);
     $this->setBuilder($b);
 }
コード例 #3
0
 /**
  * Reset content template.
  * @note XML content code taken from the file.
  */
 protected function resetTemplates()
 {
     $ap = $this->getStateParams(true);
     $filter = ['smap_id' => $this->document->getID()];
     if (isset($ap['site_id'])) {
         $filter = ['site_id' => $ap['site_id']];
     } elseif (isset($ap['smap_id'])) {
         $filter = ['smap_id' => $ap['smap_id']];
     }
     $smapID = $this->dbh->getColumn($this->getTableName(), ['smap_id'], $filter);
     $this->dbh->beginTransaction();
     if (is_array($smapID) && !empty($smapID)) {
         $this->dbh->modify(QAL::UPDATE, $this->getTableName(), ['smap_content_xml' => '', 'smap_layout_xml' => ''], ['smap_id' => $smapID]);
     }
     $b = new JSONCustomBuilder();
     $b->setProperty('result', true);
     $this->setBuilder($b);
     $this->dbh->commit();
 }