Index: branches/5.2.x/core/kernel/db/db_tag_processor.php =================================================================== diff -u -N -r14092 -r14095 --- branches/5.2.x/core/kernel/db/db_tag_processor.php (.../db_tag_processor.php) (revision 14092) +++ branches/5.2.x/core/kernel/db/db_tag_processor.php (.../db_tag_processor.php) (revision 14095) @@ -1,6 +1,6 @@ Conn =& $this->Application->GetADODBConnection(); - } - - - /** * Returns true if "new" button was pressed in toolbar * * @param Array $params @@ -403,17 +388,17 @@ } if (array_key_exists('offset', $params)) { - $list->Offset += $params['offset']; // apply custom offset + $list->SetOffset( $list->GetOffset() + $params['offset'] ); // apply custom offset } $list->Query($requery); if (array_key_exists('offset', $params)) { - $list->Offset -= $params['offset']; // remove custom offset + $list->SetOffset( $list->GetOffset() - $params['offset'] ); // remove custom offset } } - $this->Special = $special; + $this->Init($this->Prefix, $special); if ($list_name) { $names_mapping[$this->Prefix][$list_name] = $special; @@ -478,7 +463,7 @@ $id_field = (isset($params['id_field'])) ? $params['id_field'] : $this->Application->getUnitOption($this->Prefix, 'IDField'); if ($columns > 1 && $direction == 'V') { - $records_left = array_splice($list->Records, $list->SelectedCount); // because we have 1 more record for "More..." link detection (don't need to sort it) + $records_left = array_splice($list->Records, $list->GetSelectedCount()); // because we have 1 more record for "More..." link detection (don't need to sort it) $list->Records = $this->LinearToVertical($list->Records, $columns, $list->GetPerPage()); $list->Records = array_merge($list->Records, $records_left); } @@ -512,8 +497,8 @@ while (!$list->EOL() && (!$limit || $i<$limit)) { $this->Application->SetVar( $this->getPrefixSpecial().'_id', $list->GetDBField($id_field) ); // for edit/delete links using GET $this->Application->SetVar( $this->Prefix.'_id', $list->GetDBField($id_field) ); - $block_params['is_last'] = ($i == $list->SelectedCount - 1); - $block_params['last_row'] = ($i + (($i+1) % $columns) >= $list->SelectedCount - 1); + $block_params['is_last'] = ($i == $list->GetSelectedCount() - 1); + $block_params['last_row'] = ($i + (($i+1) % $columns) >= $list->GetSelectedCount() - 1); $block_params['not_last'] = !$block_params['is_last']; // for front-end if ($cache_mod_rw) { @@ -553,7 +538,7 @@ $o.= $this->Application->ParseBlock($block_params); array_push($displayed, $list->GetDBField($id_field)); - if($direction == 'V' && $list->SelectedCount % $columns > 0 && $column_number == ($columns - 1) && ceil(($i + 1) / $columns) > $list->SelectedCount % ceil($list->SelectedCount / $columns)) { + if($direction == 'V' && $list->GetSelectedCount() % $columns > 0 && $column_number == ($columns - 1) && ceil(($i + 1) / $columns) > $list->GetSelectedCount() % ceil($list->GetSelectedCount() / $columns)) { // if vertical output, then draw empty cells vertically, not horizontally $o .= $block_empty_cell_params['name'] ? $this->Application->ParseBlock($block_empty_cell_params) : ' '; $i++; @@ -627,11 +612,12 @@ $list =& $this->GetList($params); - if ($list->Counted) { - $has_next_page = $list->Page < $list->GetTotalPages(); + if ( $list->isCounted() ) { + $has_next_page = $list->GetPage() < $list->GetTotalPages(); } else { - $has_next_page = $list->PerPage < $list->RecordsCount; + // selected more, then on the page -> has more + $has_next_page = $list->GetPerPage() < $list->GetRecordsCount(); } if ($has_next_page) { @@ -643,19 +629,6 @@ } } - /** - * Depricated - * - * @param array $params - * @return int - * @deprecated Parameter "not_last" of "PrintList" tag does that - */ - function NotLastItem($params) - { - $object =& $this->getList($params); // maybe we should use $this->GetList($params) instead - return ($object->CurrentIndex < min($object->PerPage == -1 ? $object->RecordsCount : $object->PerPage, $object->RecordsCount) - 1); - } - function PageLink($params) { static $default_per_page = Array (); @@ -664,7 +637,7 @@ /* @var $object kDBList */ // process sorting - if ($object->mainList) { + if ($object->isMainList()) { if (!array_key_exists('sort_by', $params)) { $sort_by = $this->Application->GetVar('sort_by'); @@ -681,7 +654,7 @@ if (!$page) { // ensure, that page is always present - if ($object->mainList) { + if ($object->isMainList()) { $params[$prefix_special . '_Page'] = $this->Application->GetVar('page', 1); } else { @@ -708,7 +681,7 @@ $default_per_page[$prefix] = $list_helper->getDefaultPerPage($prefix); } - if ($object->mainList) { + if ($object->isMainList()) { $params[$prefix_special . '_PerPage'] = $this->Application->GetVar('per_page', $default_per_page[$prefix]); } else { @@ -828,6 +801,7 @@ } $object =& $this->getObject($params); + /* @var $object kDBItem */ if (array_key_exists('db', $params) && $params['db']) { $value = $object->GetDBField($field); @@ -838,7 +812,7 @@ $original = $object->GetDBField($field); $value = $this->ConvertCurrency($original, $iso); $object->SetDBField($field, $value); - $object->Fields[$field]['converted'] = true; + $object->SetFieldOption($field, 'converted', true); } $format = array_key_exists('format', $params) ? $params['format'] : false; @@ -1053,18 +1027,16 @@ function IsRequired($params) { $field = $params['field']; - $object =& $this->getObject($params);; + $object =& $this->getObject($params); - $formatter_class = getArrayValue($object->Fields, $field, 'formatter'); + $formatter_class = $object->GetFieldOption($field, 'formatter'); if ($formatter_class == 'kMultiLanguage') { $formatter =& $this->Application->recallObject($formatter_class); $field = $formatter->LangFieldName($field); } - $options = $object->GetFieldOptions($field); - - return array_key_exists('required', $options) ? $options['required'] : false; + return $object->GetFieldOption($field, 'required'); } function FieldOption($params) @@ -1092,7 +1064,7 @@ if (array_key_exists('has_empty', $params) && $params['has_empty']) { $empty_value = array_key_exists('empty_value', $params) ? $params['empty_value'] : ''; - $options = array_merge_recursive2(Array ($empty_value => ''), $options); // don't use other array merge function, because they will reset keys !!! + $options = kUtil::array_merge_recursive(Array ($empty_value => ''), $options); // don't use other array merge function, because they will reset keys !!! } $block_params = $this->prepareTagParams($params); @@ -1205,26 +1177,26 @@ $ret = ''; switch ($type) { case 'current': - $ret = $object->Page; + $ret = $object->GetPage(); break; case 'total': $ret = $object->GetTotalPages(); break; case 'prev': - $ret = $object->Page > 1 ? $object->Page - 1 : false; + $ret = $object->GetPage() > 1 ? $object->GetPage() - 1 : false; break; case 'next': - $ret = $object->Page < $object->GetTotalPages() ? $object->Page + 1 : false; + $ret = $object->GetPage() < $object->GetTotalPages() ? $object->GetPage() + 1 : false; break; } if ($ret && isset($params['as_link']) && $params['as_link']) { unset($params['as_link']); // remove parameters used only by current tag $params['page'] = $ret; - $current_page = $object->Page; // backup current page + $current_page = $object->GetPage(); // backup current page $ret = $this->PageLink($params); $this->Application->SetVar($object->getPrefixSpecial().'_Page', $current_page); // restore page } @@ -1255,7 +1227,7 @@ $this->Application->SetVar($prefix_special.'_event',''); $this->Application->SetVar($prefix_special.'_id',''); - $current_page = $list->Page; // $this->Application->RecallVar($prefix_special.'_Page'); + $current_page = $list->GetPage(); // $this->Application->RecallVar($prefix_special.'_Page'); $block_params = $this->prepareTagParams($params); @@ -1372,12 +1344,12 @@ foreach ($per_pages as $per_page) { $block_params['per_page'] = $per_page; $this->Application->SetVar($this->getPrefixSpecial() . '_PerPage', $per_page); - $block_params['selected'] = $per_page == $object->PerPage; + $block_params['selected'] = $per_page == $object->GetPerPage(); $ret .= $this->Application->ParseBlock($block_params, 1); } - $this->Application->SetVar($this->getPrefixSpecial() . '_PerPage', $object->PerPage); + $this->Application->SetVar($this->getPrefixSpecial() . '_PerPage', $object->GetPerPage()); return $ret; } @@ -1392,15 +1364,17 @@ */ function prepareInputName($params) { - $field = $this->SelectParam($params, 'name,field'); $object =& $this->getObject($params); + /* @var $object kDBItem */ + + $field = $this->SelectParam($params, 'name,field'); + $formatter_class = $object->GetFieldOption($field, 'formatter'); - $formatter_class = getArrayValue($object->Fields, $field, 'formatter'); if ($formatter_class == 'kMultiLanguage') { $formatter =& $this->Application->recallObject($formatter_class); /* @var $formatter kMultiLanguage */ - $force_primary = isset($object->Fields[$field]['force_primary']) && $object->Fields[$field]['force_primary']; + $force_primary = $object->GetFieldOption($field, 'force_primary'); $field = $formatter->LangFieldName($field, $force_primary); } @@ -1568,8 +1542,9 @@ */ function PerPage($params) { - $object =& $this->getObject($params); - return $object->PerPage; + $object =& $this->GetList($params); + + return $object->GetPerPage(); } /** @@ -1580,8 +1555,9 @@ */ function PerPageEquals($params) { - $object =& $this->getObject($params); - return $object->PerPage == $params['value']; + $object =& $this->GetList($params); + + return $object->GetPerPage() == $params['value']; } function SaveEvent($params) @@ -1742,7 +1718,7 @@ */ function SectionTitle($params) { - $preset_name = replaceModuleSection($params['title_preset']); + $preset_name = kUtil::replaceModuleSection($params['title_preset']); $title_presets = $this->Application->getUnitOption($this->Prefix,'TitlePresets'); $title_info = array_key_exists($preset_name, $title_presets) ? $title_presets[$preset_name] : false; @@ -1756,7 +1732,7 @@ if (array_key_exists('default', $title_presets) && $title_presets['default']) { // use default labels + custom labels specified in preset used - $title_info = array_merge_recursive2($title_presets['default'], $title_info); + $title_info = kUtil::array_merge_recursive($title_presets['default'], $title_info); } $title = $title_info['format']; @@ -1790,7 +1766,7 @@ } } - $tag_params = array_merge_recursive2($params, $tag_params); + $tag_params = array_merge($params, $tag_params); $objects[ $prefix_data['prefix_special'] ] =& $this->Application->recallObject($prefix_data['prefix_special'], $prefix_data['prefix'], $tag_params); $object_status[ $prefix_data['prefix_special'] ] = $objects[ $prefix_data['prefix_special'] ]->IsNewItem() ? 'new' : 'edit'; @@ -1866,7 +1842,7 @@ case 'recordcount': $of_phrase = $this->Application->Phrase('la_of'); - return $object->NoFilterCount != $object->RecordsCount ? $object->RecordsCount.' '.$of_phrase.' '.$object->NoFilterCount : $object->RecordsCount; + return $object->GetRecordsCount(false) != $object->GetRecordsCount() ? $object->GetRecordsCount().' '.$of_phrase.' '.$object->GetRecordsCount(false) : $object->GetRecordsCount(); break; default: @@ -1880,20 +1856,28 @@ $object =& $this->GetList($params); /* @var $object kDBList */ - switch ($params['type']) { + switch ( $params['type'] ) { case 'filtered': return $object->GetRecordsCount(); + case 'total': - return $object->GetNoFilterCount(); + return $object->GetRecordsCount(false); + case 'from': - return $object->RecordsCount ? $object->Offset+1 : 0; //0-based + return $object->GetRecordsCount() ? $object->GetOffset() + 1 : 0; //0-based + case 'to': - return $object->PerPage > 0 ? min($object->Offset + $object->PerPage, $object->RecordsCount) : $object->RecordsCount; + $record_count = $object->GetRecordsCount(); + return $object->GetPerPage(true) != -1 ? min($object->GetOffset() + $object->GetPerPage(), $record_count) : $record_count; + case 'total_pages': return $object->GetTotalPages(); + case 'needs_pagination': - return ($object->PerPage != -1) && (($object->RecordsCount > $object->PerPage) || ($object->Page > 1)); + return ($object->GetPerPage(true) != -1) && (($object->GetRecordsCount() > $object->GetPerPage()) || ($object->GetPage() > 1)); } + + return false; } /** @@ -1949,7 +1933,7 @@ } if (!$element_type) { - trigger_error('Element type missing for "' . $object->GetDBField('VariableName') . '" configuration variable.', E_USER_ERROR); + throw new Exception('Element type missing for "' . $object->GetDBField('VariableName') . '" configuration variable'); return ''; } @@ -2055,8 +2039,8 @@ function TotalRecords($params) { $list =& $this->GetList($params); - if (!$list->Counted) $list->CountRecs(); - return $list->RecordsCount; + + return $list->GetRecordsCount(); } /** @@ -2206,27 +2190,6 @@ return $object->$property_name == $params['value']; } - /** - * Group list records by header, saves internal order in group - * - * @param Array $records - * @param string $heading_field - */ - function groupRecords(&$records, $heading_field) - { - $sorted = Array(); - $i = 0; $record_count = count($records); - while ($i < $record_count) { - $sorted[ $records[$i][$heading_field] ][] = $records[$i]; - $i++; - } - - $records = Array(); - foreach ($sorted as $heading => $heading_records) { - $records = array_merge_recursive($records, $heading_records); - } - } - function DisplayOriginal($params) { return false; @@ -2241,7 +2204,7 @@ $ret = ''; if ($selected_ids) { $selected_ids = explode(',', $selected_ids); - $object =& $this->getObject( array_merge_recursive2($params, Array('skip_autoload' => true)) ); + $object =& $this->getObject( kUtil::array_merge_recursive($params, Array('skip_autoload' => true)) ); $params['name'] = $params['render_as']; foreach ($selected_ids as $id) { $object->Load($id); @@ -2518,7 +2481,7 @@ { $list =& $this->GetList($params); - return $list->PerPage == $params['per_page'] ? $params['selected'] : ''; + return $list->GetPerPage() == $params['per_page'] ? $params['selected'] : ''; } /** @@ -2644,7 +2607,7 @@ */ function VisibleToolbarButtons($params) { - $preset_name = replaceModuleSection($params['title_preset']); + $preset_name = kUtil::replaceModuleSection($params['title_preset']); $title_presets = $this->Application->getUnitOption($this->Prefix, 'TitlePresets'); if (!array_key_exists($preset_name, $title_presets)) {