public function archivesAction() { $this->init(); $arcUrl = $this->params('arc'); $arc = new \ATPComic\Model\Arc(); $arcs = $arc->loadMultiple(array('where' => !empty($arcUrl) ? "url = ?" : "parent_arc_id is null OR parent_arc_id = 0", 'orderBy' => 'sort_order ASC', 'data' => !empty($arcUrl) ? array($arcUrl) : array())); return new \Zend\View\Model\ViewModel(array('arcs' => $arcs)); }
public function __invoke() { $arcId = $this->getView()->siteParam('comic-default-arc'); $arc = new \ATPComic\Model\Arc(); $arc->loadById($arcId); $node = $arc->firstNode(); return $this->getView()->url('comic/page', $node->getRoutingData()); }
public function postSave() { if (isset($this->arcAssignments)) { $newArcIds = $this->arcAssignments; $nodes = (array) $this->getNodes(); //Determine nodes to delete $nodesToDelete = array_filter($nodes, function ($node) use($newArcIds) { return !in_array($node->arcId, $newArcIds); }); //Determine arcs to add $arcsToAdd = array_filter($newArcIds, function ($id) use($nodes) { foreach ($nodes as $node) { if ($node->arcId == $id) { return false; } } return true; }); //Delete unneeded nodes foreach ($nodesToDelete as $node) { //Delete the node $node->delete(); //Update page numbers on subsequent pages $db = $node->getAdapter(); $sql = "UPDATE atpcomic_nodes SET page_number = page_number-1 WHERE page_number > ? AND arc_id = ?"; $db->query($sql, array($node->pageNumber, $node->arcId)); } //Add new arcs foreach ($arcsToAdd as $arcId) { //Get the last node in the arc $arc = new \ATPComic\Model\Arc(); $arc->loadById($arcId); $lastNode = $arc->lastNode(false); $newNode = new \ATPComic\Model\Node(); $newNode->arc = $arc; $newNode->page = $this; $newNode->pageNumber = $lastNode ? $lastNode->pageNumber + 1 : 1; $newNode->isActive = $this->isActive; $newNode->save(); } } //Update active flag on nodes foreach ($this->getNodes() as $node) { $node->isActive = $this->isActive; $node->save(); } }