Example #1
0
 /** 
  * Gets all layout grid objects for a collection
  * @param Page|Collection $c
  * @return Layout[]
  */
 public function getAreaLayouts($c)
 {
     if (!intval($c->cID)) {
         //Invalid Collection
         return false;
     }
     if (!$c->hasLayouts()) {
         return array();
     }
     $db = Loader::db();
     $vals = array(intval($c->cID), $c->getVersionID(), $this->getAreaHandle());
     $sql = 'SELECT * FROM CollectionVersionAreaLayouts WHERE cID=? AND cvID=? AND arHandle=? ORDER BY position ASC, cvalID ASC';
     $rows = $db->getArray($sql, $vals);
     $layouts = array();
     $i = 0;
     if (is_array($rows)) {
         foreach ($rows as $row) {
             $layout = Layout::getById(intval($row['layoutID']));
             if (is_object($layout)) {
                 $i++;
                 //check position is correct, update if not
                 if ($i != $row['position'] || $renumbering) {
                     $renumbering = 1;
                     $db->query('UPDATE CollectionVersionAreaLayouts SET position=? WHERE cvalID=?', array($i, $row['cvalID']));
                 }
                 $layout->position = $i;
                 $layout->cvalID = intval($row['cvalID']);
                 $layout->setAreaObj($this);
                 $layout->setAreaNameNumber(intval($row['areaNameNumber']));
                 $layouts[] = $layout;
             }
         }
     }
     return $layouts;
 }