Example #1
0
 function createExtraFieldsCriteria($categoryId, $extraFieldsValues)
 {
     $c = new Criteria();
     $extraFields = $this->getCategoryFields($categoryId);
     foreach ($extraFields as $extraField) {
         $fieldId = $extraField['fieldId'];
         if (empty($extraFieldsValues[$fieldId]) || $extraField['type'] == "range" && empty($extraFieldsValues[$fieldId]['from']) && empty($extraFieldsValues[$fieldId]['to'])) {
             continue;
         }
         $c2 = new Criteria();
         $prefix = Config::get("DB_PREFIX");
         $sql = "EXISTS (SELECT * FROM " . $prefix . "extrafieldvalues WHERE itemId = " . $prefix . "sites.siteId AND fieldId = '{$fieldId}' AND ";
         switch ($extraField['type']) {
             case "text":
             case "textarea":
                 $c2->add("text", $extraFieldsValues[$fieldId], "LIKE");
                 break;
             case "checkbox":
                 $value = 0;
                 $checkboxValues = $extraFieldsValues[$fieldId];
                 foreach ($checkboxValues as $checkBoxValue) {
                     $value += pow(2, $checkBoxValue - 1);
                     //minus 1 because we count from 1,2,3,4.. to have 1,2,4,8
                 }
                 $c2->add("value & {$value} = {$value}");
                 break;
             case "select":
             case "radio":
                 $c2->add("value", $extraFieldsValues[$fieldId]);
                 break;
             case "range":
                 if (!empty($extraFieldsValues[$fieldId]['from'])) {
                     $c2->add("value", $extraFieldsValues[$fieldId]['from'], ">=");
                 }
                 if (!empty($extraFieldsValues[$fieldId]['to'])) {
                     $c2->add("value", $extraFieldsValues[$fieldId]['to'], "<=");
                 }
                 break;
         }
         $sql .= $c2->prepareQuery();
         $sql .= ")";
         $c->add($sql);
     }
     return $c;
 }
Example #2
0
 /**
  * Get field value from row which matched criteria
  * @param string $what Field Name
  * @param Criteria $c
  * @return mixed
  */
 public function get($what, Criteria $c = null)
 {
     if (!$c) {
         $c = new Criteria();
     }
     $where = $c->prepareQuery();
     $prefix = Config::get("DB_PREFIX");
     return $this->db->sqlGet($what, $prefix . $this->dbTable, $where);
 }