예제 #1
0
 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();
     }
 }