コード例 #1
0
ファイル: AddPageFormFactory.php プロジェクト: svatekr/rsrs
 /**
  * @param Form $form
  * @param $form->values
  */
 private function formSubmitted(Form $form)
 {
     /** @var PagesEntity $pageParent */
     $pageParent = $this->pagesRepository->get($form->values->parent);
     $this->pagesRepository->begin();
     $this->pagesRepository->prepareBeforeAdd($pageParent);
     $this->page = new PagesEntity();
     $this->page->level($pageParent->level() + 1);
     $this->page->lft($pageParent->rgt());
     $this->page->rgt($pageParent->rgt() + 1);
     $this->page->parent($pageParent->id());
     $this->page->date(new DateTime());
     $this->page->upDate(new DateTime());
     $this->page->name($form->values->name);
     $this->page->inMenu(json_encode($form->values->inMenu));
     $this->page->menuTitle($form->values->menuTitle);
     $this->page->perex($form->values->perex);
     $this->page->text($form->values->text);
     $this->page->pictureName($form->values->pictureName);
     $this->page->pictureDescription($form->values->pictureDescription);
     $this->page->active($form->values->active);
     $this->page->onHomepage($form->values->onHomepage);
     $this->page->secret($form->values->secret);
     $this->page->title($form->values->title);
     $this->page->description($form->values->description);
     $this->page->keywords($form->values->keywords);
     $this->page->secretText($form->values->secretText);
     $this->page->galleryIds(json_encode($form->values->galleryIds));
     $this->page->upDate(new DateTime());
     $this->getUrl($form->values);
     $this->pagesRepository->commit();
 }
コード例 #2
0
ファイル: PagesMapper.php プロジェクト: svatekr/rsrs
 /**
  * @param PagesEntity $page
  * @param PagesEntity $newParent
  */
 public function changeParent(PagesEntity $page, PagesEntity $newParent)
 {
     $different = $page->rgt() - $page->lft() + 1;
     $lft = $newParent->rgt();
     $level = $newParent->level() + 1;
     if ($lft > $page->lft()) {
         $lft -= $different;
     }
     $min_lft = min($lft, $page->lft());
     $max_rgt = max($lft + $different - 1, $page->rgt());
     $move = $lft - $page->lft();
     if ($lft > $page->lft()) {
         $different = -$different;
     }
     $sql = "UPDATE {$this->tableName}\n\t        SET level = level + IF(@subtree := lft >= " . $page->lft() . " \n\t                AND rgt <= " . $page->rgt() . ", " . ($level - $page->level()) . ", 0),\n\t            parent = IF(id = " . $page->id() . ", " . $newParent->id() . ", parent),\n\t            lft = lft + IF(@subtree, {$move}, IF(lft >= {$min_lft}, {$different}, 0)),\n\t            rgt = rgt + IF(@subtree, {$move}, IF(rgt <= {$max_rgt}, {$different}, 0))\n\t        WHERE rgt >= {$min_lft} AND lft <= {$max_rgt} ";
     $this->db->query($sql);
 }
コード例 #3
0
ファイル: PagesPresenter.php プロジェクト: svatekr/rsrs
 /**
  * Inicializace třídních proměnných
  */
 public function startup()
 {
     parent::startup();
     $pages = $this->pagesRepository->getAll()->fetch();
     if ($pages === FALSE) {
         $page = new PagesEntity();
         $page->level(0);
         $page->lft(1);
         $page->rgt(2);
         $page->parent(0);
         $page->active(1);
         $page->date(new DateTime());
         $page->upDate(new DateTime());
         $page->name('root');
         $page->menuTitle('root');
         $page->title('root');
         $page->url('/');
         $this->pagesRepository->save($page);
     }
 }