/** * 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; }