Index: branches/5.2.x/core/units/custom_fields/custom_fields_event_handler.php =================================================================== diff -u -N -r14244 -r14628 --- branches/5.2.x/core/units/custom_fields/custom_fields_event_handler.php (.../custom_fields_event_handler.php) (revision 14244) +++ branches/5.2.x/core/units/custom_fields/custom_fields_event_handler.php (.../custom_fields_event_handler.php) (revision 14628) @@ -1,6 +1,6 @@ getObject(); /* @var $object kDBList */ @@ -57,7 +60,7 @@ } if ($item_type) { - $hidden_fields = array_map(Array(&$this->Conn, 'qstr'), $this->_getHiddenFiels($event)); + $hidden_fields = array_map(Array(&$this->Conn, 'qstr'), $this->_getHiddenFields($event)); if ($hidden_fields) { $object->addFilter('hidden_filter', '%1$s.FieldName NOT IN (' . implode(',', $hidden_fields) . ')'); @@ -95,20 +98,22 @@ * * @param kEvent $event * @return Array + * @access protected */ - function _getHiddenFiels(&$event) + protected function _getHiddenFields(&$event) { $prefix = $this->_getSourcePrefix($event); + $hidden_fields = Array (); $virtual_fields = $this->Application->getUnitOption($prefix, 'VirtualFields', Array ()); $custom_fields = $this->Application->getUnitOption($prefix, 'CustomFields', Array ()); + /* @var $custom_fields Array */ - $hidden_fields = Array (); foreach ($custom_fields as $custom_field) { $check_field = 'cust_' . $custom_field; $show_mode = array_key_exists('show_mode', $virtual_fields[$check_field]) ? $virtual_fields[$check_field]['show_mode'] : true; - if (($show_mode === false) || (($show_mode === smDEBUG) && !(defined('DEBUG_MODE') && DEBUG_MODE))) { + if ( ($show_mode === false) || (($show_mode === smDEBUG) && !(defined('DEBUG_MODE') && DEBUG_MODE)) ) { $hidden_fields[] = $custom_field; } } @@ -120,25 +125,29 @@ * Prevents from duplicate item creation * * @param kEvent $event + * @return void + * @access protected */ - function OnBeforeItemCreate(&$event) + protected function OnBeforeItemCreate(&$event) { + parent::OnBeforeItemCreate($event); + $object =& $event->getObject(); + /* @var $object kDBItem */ - $live_table = $this->Application->getUnitOption($event->Prefix, 'TableName'); $sql = 'SELECT COUNT(*) - FROM '.$live_table.' - WHERE FieldName = '.$this->Conn->qstr($object->GetDBField('FieldName')).' AND Type = '.$object->GetDBField('Type'); + FROM ' . $this->Application->getUnitOption($event->Prefix, 'TableName') . ' + WHERE FieldName = ' . $this->Conn->qstr($object->GetDBField('FieldName')) . ' AND Type = ' . $object->GetDBField('Type'); $found = $this->Conn->GetOne($sql); - if ($found) { + if ( $found ) { $event->status = kEvent::erFAIL; $object->SetError('FieldName', 'duplicate', 'la_error_CustomExists'); } } /** - * Occurse after deleting item, id of deleted item + * Occurs after deleting item, id of deleted item * is stored as 'id' param of event * * @param kEvent $event @@ -147,42 +156,50 @@ function OnAfterItemDelete(&$event) { $object =& $event->getObject(); - $main_prefix = $this->getPrefixByItemType($object->GetDBField('Type')); + /* @var $object kDBItem */ + $main_prefix = $this->getPrefixByItemType( $object->GetDBField('Type') ); + $ml_helper =& $this->Application->recallObject('kMultiLanguageHelper'); /* @var $ml_helper kMultiLanguageHelper */ // call main item config to clone cdata table $this->Application->getUnitOption($main_prefix, 'TableName'); - $ml_helper->deleteField($main_prefix.'-cdata', $event->getEventParam('id')); + $ml_helper->deleteField($main_prefix . '-cdata', $event->getEventParam('id')); } /** * Get config prefix based on item type * - * @param unknown_type $item_type - * @return unknown + * @param int $item_type + * @return string + * @access protected */ - function getPrefixByItemType($item_type) + protected function getPrefixByItemType($item_type) { $sql = 'SELECT Prefix - FROM '.TABLE_PREFIX.'ItemTypes - WHERE ItemType = '.$item_type; + FROM ' . TABLE_PREFIX . 'ItemTypes + WHERE ItemType = ' . $item_type; + return $this->Conn->GetOne($sql); } /** - * Enter description here... + * Creates new database columns, once custom field is successfully created * * @param kEvent $event + * @return void + * @access protected */ - function OnSaveCustomField(&$event) + protected function OnSaveCustomField(&$event) { - if ($event->MasterEvent->status != kEvent::erSUCCESS) { - return false; + if ( $event->MasterEvent->status != kEvent::erSUCCESS ) { + return ; } $object =& $event->getObject(); + /* @var $object kDBItem */ + $main_prefix = $this->getPrefixByItemType($object->GetDBField('Type')); $ml_helper =& $this->Application->recallObject('kMultiLanguageHelper'); @@ -191,13 +208,23 @@ // call main item config to clone cdata table define('CUSTOM_FIELD_ADDED', 1); // used in cdata::scanCustomFields method $this->Application->getUnitOption($main_prefix, 'TableName'); - $ml_helper->createFields($main_prefix.'-cdata'); + $ml_helper->createFields($main_prefix . '-cdata'); } - function OnMassDelete(&$event) + /** + * Deletes all selected items. + * Automatically recurse into sub-items using temp handler, and deletes sub-items + * by calling its Delete method if sub-item has AutoDelete set to true in its config file + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnMassDelete(&$event) { parent::OnMassDelete($event); - $event->setRedirectParams(Array('opener' => 's'), true); + + $event->SetRedirectParam('opener', 's'); } /** @@ -206,40 +233,46 @@ * done in OnPreSaveCreated * * @param kEvent $event + * @return void + * @access protected */ - function OnPreCreate(&$event) + protected function OnPreCreate(&$event) { parent::OnPreCreate($event); $object =& $event->getObject(); + /* @var $object kDBItem */ + $object->SetDBField('Type', $this->Application->GetVar('cf_type')); } /** * Prepares ValueList field's value as xml for editing * * @param kEvent $event + * @return void + * @access protected */ - function OnAfterItemLoad(&$event) + protected function OnAfterItemLoad(&$event) { parent::OnAfterItemLoad($event); $object =& $event->getObject(); /* @var $object kDBItem */ - if (!in_array($object->GetDBField('ElementType'), $this->_getMultiElementTypes())) { + if ( !in_array($object->GetDBField('ElementType'), $this->_getMultiElementTypes()) ) { return ; } $custom_field_helper =& $this->Application->recallObject('InpCustomFieldsHelper'); /* @var $custom_field_helper InpCustomFieldsHelper */ - $options = $custom_field_helper->GetValuesHash( $object->GetDBField('ValueList'), VALUE_LIST_SEPARATOR, false ); + $options = $custom_field_helper->GetValuesHash($object->GetDBField('ValueList'), VALUE_LIST_SEPARATOR, false); $records = Array (); $option_key = key($options); - if ($option_key === '' || $option_key == 0) { + if ( $option_key === '' || $option_key == 0 ) { // remove 1st empty option, and add it later, when options will be saved, but allow string option keys unset($options[$option_key]); // keep index, don't use array_unshift! } @@ -258,9 +291,10 @@ /** * Returns custom field element types, that will use minput control * - * @return unknown + * @return Array + * @access protected */ - function _getMultiElementTypes() + protected function _getMultiElementTypes() { return Array ('select', 'multiselect', 'radio'); } @@ -269,15 +303,17 @@ * Saves minput content to ValueList field * * @param kEvent $event + * @return void + * @access protected */ - function OnBeforeItemUpdate(&$event) + protected function OnBeforeItemUpdate(&$event) { parent::OnBeforeItemUpdate($event); $object =& $event->getObject(); /* @var $object kDBItem */ - if (!in_array($object->GetDBField('ElementType'), $this->_getMultiElementTypes())) { + if ( !in_array($object->GetDBField('ElementType'), $this->_getMultiElementTypes()) ) { return ; } @@ -287,13 +323,13 @@ $ret = $object->GetDBField('ElementType') == 'select' ? Array ('' => '=+') : Array (); $records = $minput_helper->parseMInputXML($object->GetDBField('Options')); - if ($object->GetDBField('SortValues')) { + if ( $object->GetDBField('SortValues') ) { usort($records, Array (&$this, '_sortValues')); ksort($records); } foreach ($records as $record) { - if (substr($record['OptionKey'], 0, 3) == 'SQL') { + if ( substr($record['OptionKey'], 0, 3) == 'SQL' ) { $ret[] = $record['OptionTitle']; } else {