Beispiel #1
0
 /**
  * @param null|SJB_Object $object
  */
 function SJB_Form(SJB_Object $object = null)
 {
     if (!empty($object)) {
         $object_details = $object->getDetails();
         $this->object_properties = $object_details->getProperties();
         $this->object_properties = $this->object_properties ? $this->object_properties : array();
         foreach ($this->object_properties as $object_property) {
             $form_field['caption'] = $object_property->getCaption();
             $form_field['is_system'] = $object_property->isSystem();
             $form_field['id'] = $object_property->getID();
             $form_field['is_required'] = $object_property->isRequired();
             $form_field['disabled'] = false;
             $form_field['order'] = $object_property->getOrder();
             $form_field['comment'] = $object_property->getComment();
             $form_field['type'] = $object_property->getType();
             $form_field['instructions'] = $object_property->getInstructions();
             $form_field['is_classifieds'] = $object_property->isClassifieds();
             $form_field['use_autocomplete'] = $object_property->isUsingAutocomplete();
             $form_field['display_as'] = $object_property->getDisplayAs();
             $this->form_fields[$object_property->getID()] = $form_field;
         }
         $this->object = $object;
     }
     $this->path_to_templates = '../field_types/';
 }
Beispiel #2
0
 /**
  * @param $db_table_name
  * @param SJB_Object $object
  * @param bool $sid
  * @param array $listingSidsForCopy
  * @return bool
  */
 public static function saveObject($db_table_name, SJB_Object $object, $sid = false, $listingSidsForCopy = array())
 {
     $object_sid = $object->getSID();
     if (is_null($object_sid)) {
         if ($sid) {
             if (!SJB_DB::query("INSERT INTO ?w (sid) VALUES({$sid})", $db_table_name)) {
                 return false;
             } else {
                 $object_sid = $sid;
             }
         } elseif (!$sid && !($object_sid = SJB_DB::query("INSERT INTO ?w() VALUES()", $db_table_name))) {
             return false;
         }
         $object->setSID($object_sid);
     }
     if (!empty($listingSidsForCopy)) {
         SJB_ListingManager::copyFilesAndPicturesFromListing($listingSidsForCopy['filesFrom'], $object_sid, $listingSidsForCopy['picturesFrom']);
     }
     $object_details = $object->getDetails();
     $object_properties = $object_details->getProperties();
     $complexFields = array();
     foreach ($object_properties as $object_property) {
         if (!$object_property->saveIntoBD()) {
             continue;
         }
         if ($object_property->isComplex()) {
             $complexProperties = $object_property->type->complex->getProperties();
             $propertyId = $object_property->getID();
             $complexFields[$propertyId] = array();
             if ($complexProperties) {
                 foreach ($complexProperties as $complexProperty) {
                     $complexProperty->setObjectSID($object_property->object_sid);
                     $fieldValues = $complexProperty->getValue();
                     if (!empty($fieldValues) && is_array($fieldValues)) {
                         foreach ($fieldValues as $complexEnum => $value) {
                             $complexProperty->setValue($value);
                             $complexProperty->setComplexEnum($complexEnum);
                             $complexProperty->setComplexParent($propertyId);
                             $propertySqlValue = $complexProperty->getSQLValue();
                             $complexPropertyID = $complexProperty->getID();
                             $complexParameter = $complexProperty->getAddParameter();
                             if ($complexParameter == '') {
                                 $complexFields[$propertyId][$complexPropertyID][$complexEnum] = $propertySqlValue == 'NULL' ? NULL : $propertySqlValue;
                             } else {
                                 $complexFields[$propertyId][$complexPropertyID][$complexEnum] = array('add_parameter' => $complexParameter, 'value' => $propertySqlValue == 'NULL' ? NULL : $propertySqlValue);
                             }
                         }
                         $complexProperty->setValue($fieldValues);
                     }
                 }
             }
         } elseif ($object_property->isParent()) {
             $childProperties = $object_property->type->child->getProperties();
             $parentID = $object_property->getID();
             $keywords = '';
             if ($childProperties) {
                 foreach ($childProperties as $childProperty) {
                     $childProperty->setObjectSID($object_property->object_sid);
                     $property_id = $parentID . "_" . $childProperty->getID();
                     $property_sql_value = $childProperty->getSQLValue();
                     if ($childProperty->getID() == 'State') {
                         $displayAS = $childProperty->display_as;
                         $displayAS = $displayAS ? $displayAS : 'state_name';
                         $childProperty->type->list_values = SJB_StatesManager::getStatesNamesByCountry(false, true, $displayAS);
                     }
                     $keywords .= $childProperty->getKeywordValue() . ' ';
                     if (empty($property_sql_value) && in_array($childProperty->getType(), array('boolean', 'integer', 'float'))) {
                         $property_sql_value = 0;
                     }
                     SJB_DB::query("UPDATE `?w` SET `?w` = ?s WHERE sid = ?n", $db_table_name, $property_id, $property_sql_value, $object_sid);
                 }
             }
             $origValue = $object_property->getValue();
             $object_property->setValue($keywords);
             $property_id = $object_property->getID();
             $property_sql_value = $object_property->getSQLValue();
             $object_property->setValue($origValue);
             SJB_DB::query("UPDATE `?w` SET `?w` = ?s WHERE sid = ?n", $db_table_name, $property_id, $property_sql_value, $object_sid);
         } else {
             $property_id = $object_property->getID();
             $property_sql_value = $object_property->getSQLValue();
             $property_sql_add_parameter = $object_property->getAddParameter();
             if ($object_property->isSystem()) {
                 if (empty($property_sql_value) && in_array($object_property->getType(), array('boolean', 'integer', 'float'))) {
                     $property_sql_value = 0;
                 }
                 SJB_DB::query("UPDATE `?w` SET `?w` = ?s WHERE sid = ?n", $db_table_name, $property_id, $property_sql_value, $object_sid);
                 if (!empty($property_sql_add_parameter)) {
                     if ($object_property->getType() == 'monetary' && $object->getObjectType() != 'field') {
                         SJB_DB::query("UPDATE `?w` SET `?w` = ?w WHERE sid = ?n", $db_table_name, $property_id . '_parameter', $property_sql_add_parameter, $object_sid);
                     } else {
                         SJB_DB::query("UPDATE `?w` SET `add_parameter` = ?w WHERE sid = ?n", $db_table_name, $property_sql_add_parameter, $object_sid);
                     }
                 }
             } else {
                 if (SJB_DB::table_exists($db_table_name . "_properties")) {
                     $property_exists = SJB_DB::queryValue("SELECT COUNT(*) FROM ?w WHERE object_sid = ?n AND id = ?s", $db_table_name . "_properties", $object_sid, $property_id);
                     if ($property_exists) {
                         SJB_DB::query("UPDATE ?w SET value = ?s, add_parameter = ?s WHERE object_sid = ?n AND id = ?s", $db_table_name . "_properties", $property_sql_value, $property_sql_add_parameter, $object_sid, $property_id);
                     } else {
                         SJB_DB::query("INSERT INTO ?w(object_sid, id , value, add_parameter) VALUES(?n, ?s, ?s, ?s)", $db_table_name . "_properties", $object_sid, $property_id, $property_sql_value, $property_sql_add_parameter);
                     }
                 }
             }
         }
     }
     if (!empty($complexFields)) {
         SJB_DB::query("UPDATE `?w` SET `?w` = ?s WHERE sid = ?n", $db_table_name, 'complex', serialize($complexFields), $object_sid);
     }
 }