示例#1
0
 /**
  * retrieve items from the database
  *
  * @param object $criteria {@link CriteriaElement} conditions to be met
  * @param bool $id_key what shall we use as array key ? none, itemid, categoryid
  * @return array array of {@link ssItem} objects
  */
 function &getObjects($criteria = null, $id_key = 'none', $notNullFields = '')
 {
     $ret = false;
     $limit = $start = 0;
     $sql = 'SELECT * FROM ' . $this->db->prefix('smartsection_items');
     if (isset($criteria) && is_subclass_of($criteria, 'criteriaelement')) {
         $whereClause = $criteria->renderWhere();
         if ($whereClause != 'WHERE ()') {
             $sql .= ' ' . $criteria->renderWhere();
             if (!empty($notNullFields)) {
                 $sql .= $this->NotNullFieldClause($notNullFields, true);
             }
         } elseif (!empty($notNullFields)) {
             $sql .= " WHERE " . $this->NotNullFieldClause($notNullFields);
         }
         if ($criteria->getSort() != '') {
             $sql .= ' ORDER BY ' . $criteria->getSort() . ' ' . $criteria->getOrder();
         }
         $limit = $criteria->getLimit();
         $start = $criteria->getStart();
     } elseif (!empty($notNullFields)) {
         $sql .= $sql .= " WHERE " . $this->NotNullFieldClause($notNullFields);
     }
     //echo "<br />" . $sql . "<br />";
     $result = $this->db->query($sql, $limit, $start);
     if (!$result) {
         return $ret;
     }
     if (count($result) == 0) {
         return $ret;
     }
     while ($myrow = $this->db->fetchArray($result)) {
         $item = new ssItem();
         $item->assignVars($myrow);
         $item->assignOtherProperties();
         if ($id_key == 'none') {
             $ret[] =& $item;
         } elseif ($id_key == 'itemid') {
             $ret[$myrow['itemid']] =& $item;
         } else {
             if (isset($myrow[$id_key])) {
                 $ret[$myrow[$id_key]][$myrow['itemid']] =& $item;
             }
         }
         unset($item);
     }
     return $ret;
 }