Index: branches/5.2.x/core/kernel/db/db_tag_processor.php
===================================================================
diff -u -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)) {