Index: trunk/kernel/units/config_search/config_search_event_handler.php =================================================================== diff -u -N -r2711 -r3999 --- trunk/kernel/units/config_search/config_search_event_handler.php (.../config_search_event_handler.php) (revision 2711) +++ trunk/kernel/units/config_search/config_search_event_handler.php (.../config_search_event_handler.php) (revision 3999) @@ -77,64 +77,36 @@ */ function OnCreateCustomField(&$event) { - $cf_object =& $event->MasterEvent->getObject(); - - $is_new = $event->MasterEvent->getEventParam('IsNew'); + $custom_field =& $event->MasterEvent->getObject(); - // TODO: direct access to private attributes of object is prohibited - $cf_search = array(); - $cf_search['DisplayOrder'] = $cf_object->FieldValues['DisplayOrder']; - $cf_search['ElementType'] = $cf_object->FieldValues['ElementType']; - $cf_search['DisplayName'] = $cf_object->FieldValues['FieldLabel']; - $cf_search['FieldName'] = $cf_object->FieldValues['FieldName']; - $cf_search['Description'] = $cf_object->FieldValues['Prompt']; - $cf_search['ConfigHeader'] = 'la_Text_CustomFields'; - - $cf_search['TableName'] = "CustomField"; - $cf_search['ModuleName'] = "In-Commerce"; - $cf_search['ForeignField'] = "CustomMetaData.Value"; - $cf_search['JoinClause'] = "{ForeignTable}.ResourceId={LocalTable}.ResourceId"; + $sql = 'SELECT Module + FROM '.TABLE_PREFIX.'ItemTypes + WHERE ItemType = '.$custom_field->GetDBField('Type'); + $module_name = $this->Conn->GetOne($sql); - if($is_new) - { - - $live_id = $this->Conn->GetOne("SELECT CustomFieldId FROM ".TABLE_PREFIX."CustomField WHERE FieldName='".$cf_search['FieldName']."'"); - - $cf_search['CustomFieldId'] = $live_id; - - $this->Application->setUnitOption($event->Prefix,'AutoLoad',false); - $confs_item = $event->getObject(); - $confs_item->SetFieldsFromHash($cf_search); - $confs_item->Create(); - - }else{ - - - $cf_search['CustomFieldId'] = $cf_object->FieldValues['CustomFieldId']; - - $search_config_id = $this->Conn->GetOne("SELECT SearchConfigId FROM ".TABLE_PREFIX."SearchConfig WHERE CustomFieldId='".$cf_object->FieldValues['CustomFieldId']."'"); - - $cf_search['SearchConfigId'] = $search_config_id; - - $this->Application->setUnitOption($event->Prefix,'AutoLoad',false); - $confs_item = $event->getObject(); - $confs_item->SetFieldsFromHash($cf_search); - $confs_item->Update($search_config_id); - + $object =& $event->getObject( Array('skip_autoload' => true) ); + + $custom_id = $custom_field->GetID(); + if ($custom_id) { + $object->Load($custom_id, 'CustomFieldId'); + $object->SetDBField('CustomFieldId', $custom_id); // for cloning only } - } - - /** - * Enter description here... - * - * @param kEvent $event - */ - function OnDeleteCustomField(&$event){ + + $cf_search = Array(); + $cf_search['DisplayOrder'] = $custom_field->GetDBField('DisplayOrder'); + $cf_search['ElementType'] = $custom_field->GetDBField('ElementType'); + $cf_search['DisplayName'] = $custom_field->GetDBField('FieldLabel'); + $cf_search['FieldName'] = $custom_field->GetDBField('FieldName'); + $cf_search['Description'] = $custom_field->GetDBField('Prompt'); + $cf_search['ConfigHeader'] = $custom_field->GetDBField('Heading'); // 'la_Text_CustomFields'; + $cf_search['TableName'] = 'CustomField'; + $cf_search['ModuleName'] = $module_name; + $cf_search['ForeignField'] = 'CustomMetaData.Value'; + $cf_search['JoinClause'] = '{ForeignTable}.ResourceId={LocalTable}.ResourceId'; + $object->SetFieldsFromHash($cf_search); - $custom_field_id =&$event->MasterEvent->getEventParam('id'); - $this->Conn->Query("DELETE FROM ".TABLE_PREFIX."SearchConfig WHERE CustomFieldId=".$custom_field_id); - + $result = $object->isLoaded() ? $object->Update() : $object->Create(); } }