function __construct($args) { $args = array_merge(array('depth' => 'response'), $args); $this->depth = $args['depth']; // argument assertions if (!isset($args['pageID'])) { throw new InvalidArgumentException('Missing pageID as argument to PageModel constructor'); } if (!isset(self::$pageTable)) { self::$pageTable = QFrame_Db_Table::getTable('page'); } if (!isset(self::$sectionTable)) { self::$sectionTable = QFrame_Db_Table::getTable('section'); } if (!isset(self::$questionTable)) { self::$questionTable = QFrame_Db_Table::getTable('question'); } if (!isset(self::$ruleTable)) { self::$ruleTable = QFrame_Db_Table::getTable('rule'); } if (!isset(self::$questionTypeTable)) { self::$questionTypeTable = QFrame_Db_Table::getTable('question_type'); } if (!isset(self::$pageReferenceTable)) { self::$pageReferenceTable = QFrame_Db_Table::getTable('page_reference'); } if (!isset(self::$referenceDetailTable)) { self::$referenceDetailTable = QFrame_Db_Table::getTable('reference_detail'); } $rows = self::$pageTable->fetchRows('pageID', $args['pageID']); $this->pageRow = $rows[0]; // page row assertion if ($this->pageRow === NULL) { throw new Exception('Page not found [' . $args['pageID'] . ']'); } $ruleRows = self::$ruleTable->fetchRows('targetID', $this->pageRow->pageID, null, $this->pageRow->instanceID); $disableCount = 0; foreach ($ruleRows as $row) { if ($row->enabled === 'Y' && $row->type === 'disablePage') { $disableCount++; } elseif ($row->enabled === 'Y' && $row->type === 'enablePage') { $disableCount--; } } if ($this->pageRow->defaultPageHidden) { $disableCount++; } if ($disableCount != $this->pageRow->disableCount) { $this->pageRow->disableCount = $disableCount; $this->pageRow->save(); } if ($this->depth !== 'page') { $this->_loadSections(); } $pageReferenceRows = self::$pageReferenceTable->fetchRows('pageID', $this->pageRow->pageID, null, $this->pageRow->instanceID); foreach ($pageReferenceRows as $row) { $rows = self::$referenceDetailTable->fetchRows('referenceDetailID', $row->referenceDetailID, null, $this->pageRow->instanceID); $this->referenceDetailRows[] = $rows[0]->toArray(); } }