Index: trunk/kernel/units/custom_fields/custom_fields_event_handler.php =================================================================== diff -u -N -r4000 -r4017 --- trunk/kernel/units/custom_fields/custom_fields_event_handler.php (.../custom_fields_event_handler.php) (revision 4000) +++ trunk/kernel/units/custom_fields/custom_fields_event_handler.php (.../custom_fields_event_handler.php) (revision 4017) @@ -48,26 +48,42 @@ function OnAfterItemDelete(&$event) { $object =& $event->getObject(); - $custom_field_id=$event->getEventParam('id'); - $this->Application->SetVar('cf_id', ''); + $main_prefix = $this->getPrefixByItemType($object->GetDBField('Type')); - $sql='DELETE FROM '.TABLE_PREFIX.'CustomMetaData WHERE CustomFieldId = '.$custom_field_id; - $this->Conn->Query($sql); + $ml_helper =& $this->Application->recallObject('kMultiLanguageHelper'); + $ml_helper->deleteField($main_prefix.'-cdata', $event->getEventParam('id')); } /** + * Get config prefix based on item type + * + * @param unknown_type $item_type + * @return unknown + */ + function getPrefixByItemType($item_type) + { + $sql = 'SELECT Prefix + FROM '.TABLE_PREFIX.'ItemTypes + WHERE ItemType = '.$item_type; + return $this->Conn->GetOne($sql); + } + + /** * Enter description here... * * @param kEvent $event */ function OnSaveCustomField(&$event) { + if ($event->MasterEvent->status != erSUCCESS) { + return false; + } + $object =& $event->getObject(); - $sql = 'SELECT Prefix - FROM '.TABLE_PREFIX.'ItemTypes - WHERE ItemType = '.$object->GetDBField('Type'); - $main_prefix = $this->Conn->GetOne($sql); + $main_prefix = $this->getPrefixByItemType($object->GetDBField('Type')); + $this->Application->HandleEvent( new kEvent($main_prefix.'-cdata:OnCreateCustomFields') ); + $ml_helper =& $this->Application->recallObject('kMultiLanguageHelper'); $ml_helper->createFields($main_prefix.'-cdata'); } Index: trunk/core/units/custom_fields/custom_fields_event_handler.php =================================================================== diff -u -N -r4000 -r4017 --- trunk/core/units/custom_fields/custom_fields_event_handler.php (.../custom_fields_event_handler.php) (revision 4000) +++ trunk/core/units/custom_fields/custom_fields_event_handler.php (.../custom_fields_event_handler.php) (revision 4017) @@ -48,26 +48,42 @@ function OnAfterItemDelete(&$event) { $object =& $event->getObject(); - $custom_field_id=$event->getEventParam('id'); - $this->Application->SetVar('cf_id', ''); + $main_prefix = $this->getPrefixByItemType($object->GetDBField('Type')); - $sql='DELETE FROM '.TABLE_PREFIX.'CustomMetaData WHERE CustomFieldId = '.$custom_field_id; - $this->Conn->Query($sql); + $ml_helper =& $this->Application->recallObject('kMultiLanguageHelper'); + $ml_helper->deleteField($main_prefix.'-cdata', $event->getEventParam('id')); } /** + * Get config prefix based on item type + * + * @param unknown_type $item_type + * @return unknown + */ + function getPrefixByItemType($item_type) + { + $sql = 'SELECT Prefix + FROM '.TABLE_PREFIX.'ItemTypes + WHERE ItemType = '.$item_type; + return $this->Conn->GetOne($sql); + } + + /** * Enter description here... * * @param kEvent $event */ function OnSaveCustomField(&$event) { + if ($event->MasterEvent->status != erSUCCESS) { + return false; + } + $object =& $event->getObject(); - $sql = 'SELECT Prefix - FROM '.TABLE_PREFIX.'ItemTypes - WHERE ItemType = '.$object->GetDBField('Type'); - $main_prefix = $this->Conn->GetOne($sql); + $main_prefix = $this->getPrefixByItemType($object->GetDBField('Type')); + $this->Application->HandleEvent( new kEvent($main_prefix.'-cdata:OnCreateCustomFields') ); + $ml_helper =& $this->Application->recallObject('kMultiLanguageHelper'); $ml_helper->createFields($main_prefix.'-cdata'); } Index: trunk/kernel/units/general/helpers/multilanguage.php =================================================================== diff -u -N -r4000 -r4017 --- trunk/kernel/units/general/helpers/multilanguage.php (.../multilanguage.php) (revision 4000) +++ trunk/kernel/units/general/helpers/multilanguage.php (.../multilanguage.php) (revision 4017) @@ -121,6 +121,21 @@ } } + function deleteField($prefix, $custom_id) + { + $table_name = $this->Application->getUnitOption($prefix, 'TableName'); + $sql = 'DESCRIBE '.$table_name.' "l%_cust_'.$custom_id.'"'; + $fields = $this->Conn->GetCol($sql); + + $sql = 'ALTER TABLE '.$table_name.' '; + $sql_template = 'DROP COLUMN %s, '; + foreach ($fields as $field_name) { + $sql .= sprintf($sql_template, $field_name); + } + $sql = preg_replace('/(.*), $/', '\\1', $sql); + $this->Conn->Query($sql); + } + /** * Returns parameter requested of current source field * Index: trunk/core/units/general/helpers/multilanguage.php =================================================================== diff -u -N -r4000 -r4017 --- trunk/core/units/general/helpers/multilanguage.php (.../multilanguage.php) (revision 4000) +++ trunk/core/units/general/helpers/multilanguage.php (.../multilanguage.php) (revision 4017) @@ -121,6 +121,21 @@ } } + function deleteField($prefix, $custom_id) + { + $table_name = $this->Application->getUnitOption($prefix, 'TableName'); + $sql = 'DESCRIBE '.$table_name.' "l%_cust_'.$custom_id.'"'; + $fields = $this->Conn->GetCol($sql); + + $sql = 'ALTER TABLE '.$table_name.' '; + $sql_template = 'DROP COLUMN %s, '; + foreach ($fields as $field_name) { + $sql .= sprintf($sql_template, $field_name); + } + $sql = preg_replace('/(.*), $/', '\\1', $sql); + $this->Conn->Query($sql); + } + /** * Returns parameter requested of current source field *