Index: branches/5.2.x/core/kernel/utility/formatters/date_formatter.php =================================================================== diff -u -N -r13840 -r14095 --- branches/5.2.x/core/kernel/utility/formatters/date_formatter.php (.../date_formatter.php) (revision 13840) +++ branches/5.2.x/core/kernel/utility/formatters/date_formatter.php (.../date_formatter.php) (revision 14095) @@ -1,6 +1,6 @@ language =& $this->Application->recallObject('lang.current'); } @@ -94,6 +100,15 @@ } } + /** + * The method is supposed to alter config options or cofigure object in some way based on its usage of formatters + * The methods is called for every field with formatter defined when configuring item. + * Could be used for adding additional VirtualFields to an object required by some special Formatter + * + * @param string $field_name + * @param array $field_options + * @param kDBBase $object + */ function PrepareOptions($field_name, &$field_options, &$object) { list ($display_format, $input_format) = $this->GetSeparateFormats($field_options, 'mixed'); @@ -131,21 +146,14 @@ $add_fields[$field_name.'_rangeto'] = $opts; } - if ( !isset($object->VirtualFields[$field_name]) ) { + if ( !$object->isVirtualField($field_name) ) { // adding caluclated field to format date directly in the query - if ( !isset($object->CalculatedFields) || !is_array($object->CalculatedFields) ) { - $object->CalculatedFields = Array(); - } -// $object->CalculatedFields[$field_name.'_formatted'] = 'FROM_UNIXTIME('.'`%1$s`.'.$field_name.', \''.$this->SQLFormat($field_options['format']).'\')'; - $object->CalculatedFields[$field_name.'_date'] = '%1$s.'.$field_name; - $object->CalculatedFields[$field_name.'_time'] = '%1$s.'.$field_name; -// $opts['format'] = $field_options['format']; -// $opts['required'] = 0; -// unset($opts['master_field']); -// $add_fields[$field_name.'_formatted'] = $opts; + $object->addCalculatedField($field_name.'_date', '%1$s.'.$field_name); + $object->addCalculatedField($field_name.'_time', '%1$s.'.$field_name); } - $add_fields = array_merge_recursive2($add_fields, $object->VirtualFields); + $virtual_fields = $object->getVirtualFields(); + $add_fields = kUtil::array_merge_recursive($add_fields, $virtual_fields); $object->setVirtualFields($add_fields); } @@ -160,6 +168,15 @@ } } + /** + * Used for split fields like timestamp -> date, time + * Called from DBItem Validate (before validation) to get back master field value from its sub_fields + * + * @param string $field + * @param mixed $value + * @param Array $options + * @param kDBItem $object + */ function UpdateMasterFields($field, $value, &$options, &$object) { // when in master field - set own value from sub_fields @@ -181,8 +198,8 @@ $object->SetDBField($sub_fields['date'], $empty_date); } - $input_format['date'] = $object->Fields[ $sub_fields['date'] ]['input_format']; - $input_format['time'] = $object->Fields[ $sub_fields['time'] ]['input_format']; + $input_format['date'] = $object->GetFieldOption($sub_fields['date'], 'input_format'); + $input_format['time'] = $object->GetFieldOption($sub_fields['time'], 'input_format'); $object->SetField($field, $object->GetField($sub_fields['date'], $input_format['date']).$options['date_time_separator'].$object->GetField($sub_fields['time'], $input_format['time'])); }