Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F804409
db_tag_processor.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Wed, Feb 26, 10:31 AM
Size
55 KB
Mime Type
text/x-php
Expires
Fri, Feb 28, 10:31 AM (21 h, 31 m)
Engine
blob
Format
Raw Data
Handle
576960
Attached To
rINP In-Portal
db_tag_processor.php
View Options
<?php
class
kDBTagProcessor
extends
TagProcessor
{
/**
* Description
*
* @var kDBConnection
* @access public
*/
var
$Conn
;
function
kDBTagProcessor
()
{
parent
::
kBase
();
$this
->
Conn
=&
$this
->
Application
->
GetADODBConnection
();
}
/**
* Returns true if "new" button was pressed in toolbar
*
* @param Array $params
* @return bool
*/
function
IsNewMode
(
$params
)
{
$object
=&
$this
->
getObject
(
$params
);
return
$object
->
GetID
()
<=
0
;
}
/**
* Returns view menu name for current prefix
*
* @param Array $params
* @return string
*/
function
GetItemName
(
$params
)
{
$item_name
=
$this
->
Application
->
getUnitOption
(
$this
->
Prefix
,
'ViewMenuPhrase'
);
return
$this
->
Application
->
Phrase
(
$item_name
);
}
function
ViewMenu
(
$params
)
{
$block_params
=
$params
;
unset
(
$block_params
[
'block'
]);
$block_params
[
'name'
]
=
$params
[
'block'
];
$list
=&
$this
->
GetList
(
$params
);
$block_params
[
'PrefixSpecial'
]
=
$list
->
getPrefixSpecial
();
return
$this
->
Application
->
ParseBlock
(
$block_params
);
}
function
SearchKeyword
(
$params
)
{
$list
=&
$this
->
GetList
(
$params
);
return
$this
->
Application
->
RecallVar
(
$list
->
getPrefixSpecial
().
'_search_keyword'
);
}
/**
* Draw filter menu content (for ViewMenu) based on filters defined in config
*
* @param Array $params
* @return string
*/
function
DrawFilterMenu
(
$params
)
{
$block_params
=
$this
->
prepareTagParams
(
$params
);
$block_params
[
'name'
]
=
$params
[
'spearator_block'
];
$separator
=
$this
->
Application
->
ParseBlock
(
$block_params
);
$filter_menu
=
$this
->
Application
->
getUnitOption
(
$this
->
Prefix
,
'FilterMenu'
);
if
(!
$filter_menu
)
{
trigger_error
(
'<span class="debug_error">no filters defined</span> for prefix <b>'
.
$this
->
Prefix
.
'</b>, but <b>DrawFilterMenu</b> tag used'
,
E_USER_WARNING
);
return
''
;
}
// Params: label, filter_action, filter_status
$block_params
[
'name'
]
=
$params
[
'item_block'
];
$view_filter
=
$this
->
Application
->
RecallVar
(
$this
->
getPrefixSpecial
().
'_view_filter'
);
if
(
$view_filter
===
false
)
{
$event_params
=
Array
(
'prefix'
=>
$this
->
Prefix
,
'special'
=>
$this
->
Special
,
'name'
=>
'OnRemoveFilters'
);
$this
->
Application
->
HandleEvent
(
new
kEvent
(
$event_params
)
);
$view_filter
=
$this
->
Application
->
RecallVar
(
$this
->
getPrefixSpecial
().
'_view_filter'
);
}
$view_filter
=
unserialize
(
$view_filter
);
$filters
=
Array
();
$prefix_special
=
$this
->
getPrefixSpecial
();
foreach
(
$filter_menu
[
'Filters'
]
as
$filter_key
=>
$filter_params
)
{
$group_params
=
isset
(
$filter_params
[
'group_id'
])
?
$filter_menu
[
'Groups'
][
$filter_params
[
'group_id'
]
]
:
Array
();
if
(!
isset
(
$group_params
[
'element_type'
]))
{
$group_params
[
'element_type'
]
=
'checkbox'
;
}
if
(!
$filter_params
)
{
$filters
[]
=
$separator
;
continue
;
}
$block_params
[
'label'
]
=
addslashes
(
$this
->
Application
->
Phrase
(
$filter_params
[
'label'
])
);
if
(
getArrayValue
(
$view_filter
,
$filter_key
))
{
$submit
=
0
;
if
(
isset
(
$params
[
'old_style'
]))
{
$status
=
$group_params
[
'element_type'
]
==
'checkbox'
?
1
:
2
;
}
else
{
$status
=
$group_params
[
'element_type'
]
==
'checkbox'
?
'[
\'
img/check_on.gif
\'
]'
:
'[
\'
img/menu_dot.gif
\'
]'
;
}
}
else
{
$submit
=
1
;
$status
=
'null'
;
}
$block_params
[
'filter_action'
]
=
'set_filter("'
.
$prefix_special
.
'","'
.
$filter_key
.
'","'
.
$submit
.
'",'
.
$params
[
'ajax'
].
');'
;
$block_params
[
'filter_status'
]
=
$status
;
// 1 - checkbox, 2 - radio, 0 - no image
$filters
[]
=
$this
->
Application
->
ParseBlock
(
$block_params
);
}
return
implode
(
''
,
$filters
);
}
function
IterateGridFields
(
$params
)
{
$mode
=
$params
[
'mode'
];
$def_block
=
isset
(
$params
[
'block'
])
?
$params
[
'block'
]
:
''
;
$force_block
=
isset
(
$params
[
'force_block'
])
?
$params
[
'force_block'
]
:
false
;
$grids
=
$this
->
Application
->
getUnitOption
(
$this
->
Prefix
,
'Grids'
);
$grid_config
=
$grids
[
$params
[
'grid'
]][
'Fields'
];
$picker_helper
=&
$this
->
Application
->
RecallObject
(
'ColumnPickerHelper'
);
/* @var $picker_helper kColumnPickerHelper */
$picker_helper
->
ApplyPicker
(
$this
->
getPrefixSpecial
(),
$grid_config
,
$params
[
'grid'
]);
$std_params
[
'pass_params'
]=
'true'
;
$std_params
[
'PrefixSpecial'
]=
$this
->
getPrefixSpecial
();
$o
=
''
;
$i
=
0
;
foreach
(
$grid_config
as
$field
=>
$options
)
{
$i
++;
$block_params
=
Array
();
$block_params
[
'name'
]
=
$force_block
?
$force_block
:
(
isset
(
$options
[
$mode
.
'_block'
])
?
$options
[
$mode
.
'_block'
]
:
$def_block
);
$block_params
[
'field'
]
=
$field
;
$block_params
[
'sort_field'
]
=
isset
(
$options
[
'sort_field'
])
?
$options
[
'sort_field'
]
:
$field
;
$block_params
[
'filter_field'
]
=
isset
(
$options
[
'filter_field'
])
?
$options
[
'filter_field'
]
:
$field
;
if
(
isset
(
$options
[
'filter_width'
]))
{
$block_params
[
'filter_width'
]
=
$options
[
'filter_width'
];
}
elseif
(
isset
(
$options
[
'width'
]))
{
if
(
isset
(
$options
[
'filter_block'
])
&&
preg_match
(
'/range/'
,
$options
[
'filter_block'
]))
{
if
(
$options
[
'width'
]
<
60
)
{
$options
[
'width'
]
=
60
;
$block_params
[
'filter_width'
]
=
20
;
}
else
{
$block_params
[
'filter_width'
]
=
$options
[
'width'
]
-
40
;
}
}
else
{
$block_params
[
'filter_width'
]
=
max
(
$options
[
'width'
]-
10
,
20
);
}
}
if
(
isset
(
$block_params
[
'filter_width'
]))
$block_params
[
'filter_width'
]
.=
'px'
;
$field_options
=
$this
->
Application
->
getUnitOption
(
$this
->
Prefix
.
'.'
.
$field
,
'Fields'
);
if
(
isset
(
$field_options
[
'use_phrases'
]))
{
$block_params
[
'use_phrases'
]
=
$field_options
[
'use_phrases'
];
}
$block_params
[
'is_last'
]
=
(
$i
==
count
(
$grid_config
));
$block_params
=
array_merge
(
$std_params
,
$options
,
$block_params
);
$o
.=
$this
->
Application
->
ParseBlock
(
$block_params
,
1
);
}
return
$o
;
}
function
PickerCRC
(
$params
)
{
/* @var $picker_helper kColumnPickerHelper */
$picker_helper
=&
$this
->
Application
->
RecallObject
(
'ColumnPickerHelper'
);
$picker_helper
->
SetGridName
(
$params
[
'grid'
]);
$data
=
$picker_helper
->
LoadColumns
(
$this
->
getPrefixSpecial
());
return
$data
[
'crc'
];
}
function
GridFieldsCount
(
$params
)
{
$grids
=
$this
->
Application
->
getUnitOption
(
$this
->
Prefix
,
'Grids'
);
$grid_config
=
$grids
[
$params
[
'grid'
]][
'Fields'
];
return
count
(
$grid_config
);
}
/**
* Prints list content using block specified
*
* @param Array $params
* @return string
* @access public
*/
function
PrintList
(
$params
)
{
$params
[
'no_table'
]
=
1
;
return
$this
->
PrintList2
(
$params
);
}
function
InitList
(
$params
)
{
$list_name
=
isset
(
$params
[
'list_name'
])
?
$params
[
'list_name'
]
:
''
;
$names_mapping
=
$this
->
Application
->
GetVar
(
'NamesToSpecialMapping'
);
if
(
!
getArrayValue
(
$names_mapping
,
$this
->
Prefix
,
$list_name
)
)
{
$list
=&
$this
->
GetList
(
$params
);
}
}
function
BuildListSpecial
(
$params
)
{
return
$this
->
Special
;
}
/**
* Enter description here...
*
* @param Array $params
* @return kDBList
*/
function
&
GetList
(
$params
)
{
$list_name
=
$this
->
SelectParam
(
$params
,
'list_name,name'
);
if
(!
$list_name
)
{
$list_name
=
$this
->
Application
->
Parser
->
GetParam
(
'list_name'
);
}
$requery
=
isset
(
$params
[
'requery'
])
&&
$params
[
'requery'
];
if
(
$list_name
&&
!
$requery
){
$names_mapping
=
$this
->
Application
->
GetVar
(
'NamesToSpecialMapping'
);
$special
=
is_array
(
$names_mapping
)
&&
isset
(
$names_mapping
[
$this
->
Prefix
])
&&
isset
(
$names_mapping
[
$this
->
Prefix
][
$list_name
])
?
$names_mapping
[
$this
->
Prefix
][
$list_name
]
:
false
;
// $special = getArrayValue($names_mapping, $this->Prefix, $list_name);
if
(!
$special
)
{
$special
=
$this
->
BuildListSpecial
(
$params
);
}
}
else
{
$special
=
$this
->
BuildListSpecial
(
$params
);
}
$prefix_special
=
rtrim
(
$this
->
Prefix
.
'.'
.
$special
,
'.'
);
$params
[
'skip_counting'
]
=
true
;
$list
=&
$this
->
Application
->
recallObject
(
$prefix_special
,
$this
->
Prefix
.
'_List'
,
$params
);
if
(
$requery
)
{
$this
->
Application
->
HandleEvent
(
$an_event
,
$prefix_special
.
':OnListBuild'
,
$params
);
}
$list
->
Query
(
$requery
);
$this
->
Special
=
$special
;
if
(
$list_name
)
{
$names_mapping
[
$this
->
Prefix
][
$list_name
]
=
$special
;
$this
->
Application
->
SetVar
(
'NamesToSpecialMapping'
,
$names_mapping
);
}
return
$list
;
}
function
ListMarker
(
$params
)
{
$list
=&
$this
->
GetList
(
$params
);
$ret
=
$list
->
getPrefixSpecial
();
if
(
getArrayValue
(
$params
,
'as_preg'
)
)
$ret
=
preg_quote
(
$ret
,
'/'
);
return
$ret
;
}
/**
* Prepares name for field with event in it (used only on front-end)
*
* @param Array $params
* @return string
*/
function
SubmitName
(
$params
)
{
$list
=&
$this
->
GetList
(
$params
);
$prefix_special
=
$list
->
getPrefixSpecial
();
return
'events['
.
$prefix_special
.
']['
.
$params
[
'event'
].
']'
;
}
/**
* Prints list content using block specified
*
* @param Array $params
* @return string
* @access public
*/
function
PrintList2
(
$params
)
{
$per_page
=
$this
->
SelectParam
(
$params
,
'per_page,max_items'
);
if
(
$per_page
!==
false
)
$params
[
'per_page'
]
=
$per_page
;
$list
=&
$this
->
GetList
(
$params
);
$o
=
''
;
$direction
=
(
isset
(
$params
[
'direction'
])
&&
$params
[
'direction'
]==
"H"
)?
"H"
:
"V"
;
$columns
=
(
isset
(
$params
[
'columns'
]))
?
$params
[
'columns'
]
:
1
;
$id_field
=
(
isset
(
$params
[
'id_field'
]))
?
$params
[
'id_field'
]
:
$this
->
Application
->
getUnitOption
(
$this
->
Prefix
,
'IDField'
);
if
(
$columns
>
1
&&
$direction
==
"V"
)
{
$list
->
Records
=
$this
->
LinearToVertical
(
$list
->
Records
,
$columns
,
$list
->
GetPerPage
());
$list
->
SelectedCount
=
count
(
$list
->
Records
);
ksort
(
$list
->
Records
);
// this is issued twice, maybe need to be removed
}
$list
->
GoFirst
();
$block_params
=
$this
->
prepareTagParams
(
$params
);
$block_params
[
'name'
]=
$this
->
SelectParam
(
$params
,
'render_as,block'
);
$block_params
[
'pass_params'
]=
'true'
;
$block_params
[
'column_width'
]
=
100
/
$columns
;
$block_start_row_params
=
$this
->
prepareTagParams
(
$params
);
$block_start_row_params
[
'name'
]
=
$this
->
SelectParam
(
$params
,
'row_start_render_as,block_row_start,row_start_block'
);
$block_end_row_params
=
$this
->
prepareTagParams
(
$params
);
$block_end_row_params
[
'name'
]
=
$this
->
SelectParam
(
$params
,
'row_end_render_as,block_row_end,row_end_block'
);
$block_empty_cell_params
=
$this
->
prepareTagParams
(
$params
);
$block_empty_cell_params
[
'name'
]
=
$this
->
SelectParam
(
$params
,
'empty_cell_render_as,block_empty_cell,empty_cell_block'
);
$i
=
0
;
$backup_id
=
$this
->
Application
->
GetVar
(
$this
->
Prefix
.
"_id"
);
$displayed
=
array
();
$column_number
=
1
;
$cache_mod_rw
=
$this
->
Application
->
getUnitOption
(
$this
->
Prefix
,
'CacheModRewrite'
)
&&
$this
->
Application
->
RewriteURLs
();
while
(!
$list
->
EOL
())
{
$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
[
'not_last'
]
=
!
$block_params
[
'is_last'
];
// for front-end
if
(
$cache_mod_rw
)
{
$this
->
Application
->
setCache
(
'filenames'
,
$this
->
Prefix
.
'_'
.
$list
->
GetDBField
(
$id_field
),
$list
->
GetDBField
(
'Filename'
));
$this
->
Application
->
setCache
(
'filenames'
,
'c_'
.
$list
->
GetDBField
(
'CategoryId'
),
$list
->
GetDBField
(
'CategoryFilename'
));
}
if
(
$i
%
$columns
==
0
)
{
// record in this iteration is first in row, then open row
$column_number
=
1
;
$o
.=
$block_start_row_params
[
'name'
]
?
$this
->
Application
->
ParseBlock
(
$block_start_row_params
,
1
)
:
(!
isset
(
$params
[
'no_table'
])
?
'<tr>'
:
''
);
}
else
{
$column_number
++;
}
$block_params
[
'first_col'
]
=
$column_number
==
1
?
1
:
0
;
$block_params
[
'last_col'
]
=
$column_number
==
$columns
?
1
:
0
;
$block_params
[
'column_number'
]
=
$column_number
;
$this
->
PrepareListElementParams
(
$list
,
$block_params
);
// new, no need to rewrite PrintList
$o
.=
$this
->
Application
->
ParseBlock
(
$block_params
,
1
);
array_push
(
$displayed
,
$list
->
GetDBField
(
$id_field
));
if
((
$i
+
1
)
%
$columns
==
0
)
{
// record in next iteration is first in row too, then close this row
$o
.=
$block_end_row_params
[
'name'
]
?
$this
->
Application
->
ParseBlock
(
$block_end_row_params
,
1
)
:
(!
isset
(
$params
[
'no_table'
])
?
'</tr>'
:
''
);
}
$list
->
GoNext
();
$i
++;
}
// append empty cells in place of missing cells in last row
while
(
$i
%
$columns
!=
0
)
{
// until next cell will be in new row append empty cells
$o
.=
$block_empty_cell_params
[
'name'
]
?
$this
->
Application
->
ParseBlock
(
$block_empty_cell_params
,
1
)
:
'<td> </td>'
;
if
((
$i
+
1
)
%
$columns
==
0
)
{
// record in next iteration is first in row too, then close this row
$o
.=
$block_end_row_params
[
'name'
]
?
$this
->
Application
->
ParseBlock
(
$block_end_row_params
,
1
)
:
'</tr>'
;
}
$i
++;
}
$cur_displayed
=
$this
->
Application
->
GetVar
(
$this
->
Prefix
.
'_displayed_ids'
);
if
(!
$cur_displayed
)
{
$cur_displayed
=
Array
();
}
else
{
$cur_displayed
=
explode
(
','
,
$cur_displayed
);
}
$displayed
=
array_unique
(
array_merge
(
$displayed
,
$cur_displayed
));
$this
->
Application
->
SetVar
(
$this
->
Prefix
.
'_displayed_ids'
,
implode
(
','
,
$displayed
));
$this
->
Application
->
SetVar
(
$this
->
Prefix
.
'_id'
,
$backup_id
);
$this
->
Application
->
SetVar
(
$this
->
getPrefixSpecial
().
'_id'
,
''
);
if
(
isset
(
$params
[
'more_link_render_as'
]))
{
$block_params
=
$params
;
$params
[
'render_as'
]
=
$params
[
'more_link_render_as'
];
$o
.=
$this
->
MoreLink
(
$params
);
}
return
$o
;
}
/**
* Allows to modify block params & current list record before PrintList parses record
*
* @param kDBList $object
* @param Array $block_params
*/
function
PrepareListElementParams
(&
$object
,
&
$block_params
)
{
// $fields_hash =& $object->Records[$this->CurrentIndex];
//
// $object->Records[$this->CurrentIndex] =& $fields_hash;
}
function
MoreLink
(
$params
)
{
$per_page
=
$this
->
SelectParam
(
$params
,
'per_page,max_items'
);
if
(
$per_page
!==
false
)
$params
[
'per_page'
]
=
$per_page
;
$list
=&
$this
->
GetList
(
$params
);
if
(
$list
->
PerPage
<
$list
->
RecordsCount
)
{
$block_params
=
array
();
$block_params
[
'name'
]
=
$this
->
SelectParam
(
$params
,
'render_as,block'
);
return
$this
->
Application
->
ParseBlock
(
$block_params
,
1
);
}
}
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
)
{
$t
=
isset
(
$params
[
'template'
])
?
$params
[
'template'
]
:
''
;
unset
(
$params
[
'template'
]);
if
(!
$t
)
$t
=
$this
->
Application
->
GetVar
(
't'
);
if
(
isset
(
$params
[
'page'
]))
{
$this
->
Application
->
SetVar
(
$this
->
getPrefixSpecial
().
'_Page'
,
$params
[
'page'
]);
unset
(
$params
[
'page'
]);
}
if
(!
isset
(
$params
[
'pass'
]))
{
$params
[
'pass'
]
=
'm,'
.
$this
->
getPrefixSpecial
();
}
return
$this
->
Application
->
HREF
(
$t
,
''
,
$params
);
}
function
ColumnWidth
(
$params
)
{
$columns
=
$this
->
Application
->
Parser
->
GetParam
(
'columns'
);
return
round
(
100
/
$columns
).
'%'
;
}
/**
* Append prefix and special to tag
* params (get them from tagname) like
* they were really passed as params
*
* @param Array $tag_params
* @return Array
* @access protected
*/
function
prepareTagParams
(
$tag_params
=
Array
())
{
/*if (isset($tag_params['list_name'])) {
$list =& $this->GetList($tag_params);
$this->Init($list->Prefix, $list->Special);
}*/
$ret
=
$tag_params
;
$ret
[
'Prefix'
]
=
$this
->
Prefix
;
$ret
[
'Special'
]
=
$this
->
Special
;
$ret
[
'PrefixSpecial'
]
=
$this
->
getPrefixSpecial
();
return
$ret
;
}
function
GetISO
(
$currency
)
{
if
(
$currency
==
'selected'
)
{
$iso
=
$this
->
Application
->
RecallVar
(
'curr_iso'
);
}
elseif
(
$currency
==
'primary'
||
$currency
==
''
)
{
$iso
=
$this
->
Application
->
GetPrimaryCurrency
();
}
else
{
//explicit currency
$iso
=
$currency
;
}
return
$iso
;
}
function
ConvertCurrency
(
$value
,
$iso
)
{
$converter
=&
$this
->
Application
->
recallObject
(
'kCurrencyRates'
);
// convery primary currency to selected (if they are the same, converter will just return)
$value
=
$converter
->
Convert
(
$value
,
'PRIMARY'
,
$iso
);
return
$value
;
}
function
AddCurrencySymbol
(
$value
,
$iso
)
{
$currency
=&
$this
->
Application
->
recallObject
(
'curr.-'
.
$iso
,
null
,
Array
(
'skip_autoload'
=>
true
));
if
(
!
$currency
->
isLoaded
()
)
$currency
->
Load
(
$iso
,
'ISO'
);
$symbol
=
$currency
->
GetDBField
(
'Symbol'
);
if
(!
$symbol
)
$symbol
=
$currency
->
GetDBField
(
'ISO'
).
' '
;
if
(
$currency
->
GetDBField
(
'SymbolPosition'
)
==
0
)
{
$value
=
$symbol
.
$value
;
}
if
(
$currency
->
GetDBField
(
'SymbolPosition'
)
==
1
)
{
$value
=
$value
.
$symbol
;
}
return
$value
;
}
/**
* Get's requested field value
*
* @param Array $params
* @return string
* @access public
*/
function
Field
(
$params
)
{
$field
=
$this
->
SelectParam
(
$params
,
'name,field'
);
if
(
!
$this
->
Application
->
IsAdmin
()
)
$params
[
'no_special'
]
=
'no_special'
;
$object
=&
$this
->
getObject
(
$params
);
if
(
$this
->
HasParam
(
$params
,
'db'
)
)
{
$value
=
$object
->
GetDBField
(
$field
);
}
else
{
if
(
$this
->
HasParam
(
$params
,
'currency'
)
)
{
$iso
=
$this
->
GetISO
(
$params
[
'currency'
]);
$original
=
$object
->
GetDBField
(
$field
);
$value
=
$this
->
ConvertCurrency
(
$original
,
$iso
);
$object
->
SetDBField
(
$field
,
$value
);
$object
->
Fields
[
$field
][
'converted'
]
=
true
;
}
$format
=
getArrayValue
(
$params
,
'format'
);
if
(
!
$format
||
$format
==
'$format'
)
{
$format
=
null
;
}
else
{
if
(
preg_match
(
"/_regional_(.*)/"
,
$format
,
$regs
))
{
$lang
=&
$this
->
Application
->
recallObject
(
'lang.current'
);
$format
=
$lang
->
GetDBField
(
$regs
[
1
]);
}
}
$value
=
$object
->
GetField
(
$field
,
$format
);
if
(
$this
->
SelectParam
(
$params
,
'negative'
)
)
{
if
(
strpos
(
$value
,
'-'
)
===
0
)
{
$value
=
substr
(
$value
,
1
);
}
else
{
$value
=
'-'
.
$value
;
}
}
if
(
$this
->
HasParam
(
$params
,
'currency'
)
)
{
$value
=
$this
->
AddCurrencySymbol
(
$value
,
$iso
);
$params
[
'no_special'
]
=
1
;
}
}
if
(
!
$this
->
HasParam
(
$params
,
'no_special'
)
)
$value
=
htmlspecialchars
(
$value
);
if
(
getArrayValue
(
$params
,
'checked'
)
)
$value
=
(
$value
==
(
isset
(
$params
[
'value'
])
?
$params
[
'value'
]
:
1
))
?
'checked'
:
''
;
if
(
isset
(
$params
[
'plus_or_as_label'
])
)
{
$value
=
substr
(
$value
,
0
,
1
)
==
'+'
?
substr
(
$value
,
1
)
:
$this
->
Application
->
Phrase
(
$value
);
}
elseif
(
isset
(
$params
[
'as_label'
])
&&
$params
[
'as_label'
]
)
$value
=
$this
->
Application
->
Phrase
(
$value
);
$first_chars
=
$this
->
SelectParam
(
$params
,
'first_chars,cut_first'
);
if
(
$first_chars
)
{
$needs_cut
=
strlen
(
$value
)
>
$first_chars
;
$value
=
substr
(
$value
,
0
,
$first_chars
);
if
(
$needs_cut
)
$value
.=
' ...'
;
}
if
(
getArrayValue
(
$params
,
'nl2br'
)
)
$value
=
nl2br
(
$value
);
if
(
$value
!=
''
)
$this
->
Application
->
Parser
->
DataExists
=
true
;
if
(
$this
->
HasParam
(
$params
,
'currency'
)
)
{
//restoring value in original currency, for other Field tags to work properly
$object
->
SetDBField
(
$field
,
$original
);
}
return
$value
;
}
function
SetField
(
$params
)
{
// <inp2:SetField field="Value" src=p:cust_{$custom_name}"/>
$object
=&
$this
->
getObject
(
$params
);
$dst_field
=
$this
->
SelectParam
(
$params
,
'name,field'
);
list
(
$prefix_special
,
$src_field
)
=
explode
(
':'
,
$params
[
'src'
]);
$src_object
=&
$this
->
Application
->
recallObject
(
$prefix_special
);
$object
->
SetDBField
(
$dst_field
,
$src_object
->
GetDBField
(
$src_field
));
}
/**
* Checks if parameter is passed
* Note: works like Tag and line simple method too
*
* @param Array $params
* @param string $param_name
* @return bool
*/
function
HasParam
(
$params
,
$param_name
=
null
)
{
if
(
!
isset
(
$param_name
)
)
{
$param_name
=
$this
->
SelectParam
(
$params
,
'name'
);
$params
=
$this
->
Application
->
Parser
->
Params
;
}
$value
=
isset
(
$params
[
$param_name
])
?
$params
[
$param_name
]
:
false
;
return
$value
&&
(
$value
!=
'$'
.
$param_name
);
}
function
PhraseField
(
$params
)
{
$field_label
=
$this
->
Field
(
$params
);
$translation
=
$this
->
Application
->
Phrase
(
$field_label
);
return
$translation
;
}
function
Error
(
$params
)
{
$field
=
$this
->
SelectParam
(
$params
,
'name,field'
);
$object
=&
$this
->
getObject
(
$params
);
$msg
=
$object
->
GetErrorMsg
(
$field
,
false
);
return
$msg
;
}
function
HasError
(
$params
)
{
if
(
$params
[
'field'
]
==
'any'
)
{
$object
=&
$this
->
getObject
(
$params
);
$skip_fields
=
getArrayValue
(
$params
,
'except'
);
$skip_fields
=
$skip_fields
?
explode
(
','
,
$skip_fields
)
:
Array
();
return
$object
->
HasErrors
(
$skip_fields
);
}
else
{
$fields
=
$this
->
SelectParam
(
$params
,
'field,fields'
);
$fields
=
explode
(
','
,
$fields
);
$res
=
false
;
foreach
(
$fields
as
$field
)
{
$params
[
'field'
]
=
$field
;
$res
=
$res
||
(
$this
->
Error
(
$params
)
!=
''
);
}
return
$res
;
}
}
function
ErrorWarning
(
$params
)
{
if
(!
isset
(
$params
[
'field'
]))
{
$params
[
'field'
]
=
'any'
;
}
if
(
$this
->
HasError
(
$params
))
{
$params
[
'prefix'
]
=
$this
->
getPrefixSpecial
();
return
$this
->
Application
->
ParseBlock
(
$params
);
}
}
function
IsRequired
(
$params
)
{
$field
=
$params
[
'field'
];
$object
=&
$this
->
getObject
(
$params
);;
$formatter_class
=
getArrayValue
(
$object
->
Fields
,
$field
,
'formatter'
);
if
(
$formatter_class
==
'kMultiLanguage'
)
{
$formatter
=&
$this
->
Application
->
recallObject
(
$formatter_class
);
$field
=
$formatter
->
LangFieldName
(
$field
);
}
$options
=
$object
->
GetFieldOptions
(
$field
);
return
getArrayValue
(
$options
,
'required'
);
}
function
FieldOption
(
$params
)
{
$object
=&
$this
->
getObject
(
$params
);;
$options
=
$object
->
GetFieldOptions
(
$params
[
'field'
]);
$ret
=
isset
(
$options
[
$params
[
'option'
]])
?
$options
[
$params
[
'option'
]]
:
''
;
if
(
isset
(
$params
[
'as_label'
])
&&
$params
[
'as_label'
])
$ret
=
$this
->
Application
->
ReplaceLanguageTags
(
$ret
);
return
$ret
;
}
function
PredefinedOptions
(
$params
)
{
$field
=
$params
[
'field'
];
$object
=&
$this
->
getObject
(
$params
);
$value
=
$object
->
GetDBField
(
$field
);
$options
=
$object
->
GetFieldOptions
(
$field
);
if
(
$this
->
HasParam
(
$params
,
'has_empty'
)
)
{
$empty_value
=
getArrayValue
(
$params
,
'empty_value'
);
if
(
$empty_value
===
false
)
$empty_value
=
''
;
$options
[
'options'
]
=
array_merge_recursive2
(
Array
(
$empty_value
=>
''
),
$options
[
'options'
]
);
}
$block_params
=
$this
->
prepareTagParams
(
$params
);
$block_params
[
'name'
]
=
$this
->
SelectParam
(
$params
,
'render_as,block'
);
$block_params
[
'field'
]
=
$params
[
'field'
];
$block_params
[
'pass_params'
]
=
'true'
;
$block_params
[
'field_name'
]
=
$this
->
InputName
(
$params
);
$block_params
[
'PrefixSpecial'
]
=
$this
->
getPrefixSpecial
();
$selected_param_name
=
getArrayValue
(
$params
,
'selected_param'
);
if
(!
$selected_param_name
)
$selected_param_name
=
$params
[
'selected'
];
$selected
=
$params
[
'selected'
];
$o
=
''
;
if
(
$this
->
HasParam
(
$params
,
'no_empty'
)
&&
!
getArrayValue
(
$options
[
'options'
],
''
)
)
array_shift
(
$options
[
'options'
]);
if
(
strpos
(
$value
,
'|'
)
!==
false
)
{
// multiple selection checkboxes
$value
=
explode
(
'|'
,
substr
(
$value
,
1
,
-
1
)
);
foreach
(
$options
[
'options'
]
as
$key
=>
$val
)
{
$block_params
[
'key'
]
=
$key
;
$block_params
[
'option'
]
=
$val
;
$block_params
[
$selected_param_name
]
=
(
in_array
(
$key
,
$value
)
?
' '
.
$selected
:
''
);
$o
.=
$this
->
Application
->
ParseBlock
(
$block_params
,
1
);
}
}
else
{
// single selection radio or checkboxes
foreach
(
$options
[
'options'
]
as
$key
=>
$val
)
{
$block_params
[
'key'
]
=
$key
;
$block_params
[
'option'
]
=
$val
;
$block_params
[
$selected_param_name
]
=
(
strlen
(
$key
)
==
strlen
(
$value
)
&&
(
$key
==
$value
)
?
' '
.
$selected
:
''
);
$o
.=
$this
->
Application
->
ParseBlock
(
$block_params
,
1
);
}
}
return
$o
;
}
function
PredefinedSearchOptions
(
$params
)
{
$object
=&
$this
->
getObject
(
$params
);
/* @var $object kDBList */
$field
=
$params
[
'field'
];
$saved_value
=
$object
->
Queried
?
$object
->
GetDBField
(
$field
)
:
null
;
$object
->
SetDBField
(
$field
,
$this
->
SearchField
(
$params
));
$view_name
=
$this
->
Application
->
RecallVar
(
$this
->
getPrefixSpecial
().
'_current_view'
);
$custom_filter
=
$this
->
Application
->
RecallPersistentVar
(
$this
->
getPrefixSpecial
().
'_custom_filter.'
.
$view_name
);
$ret
=
$this
->
PredefinedOptions
(
$params
);
$object
->
SetDBField
(
$field
,
$saved_value
);
return
$ret
;
}
function
Format
(
$params
)
{
$field
=
$this
->
SelectParam
(
$params
,
'name,field'
);
$object
=&
$this
->
getObject
(
$params
);
$options
=
$object
->
GetFieldOptions
(
$field
);
$format
=
$options
[
$this
->
SelectParam
(
$params
,
'input_format'
)
?
'input_format'
:
'format'
];
$formatter_class
=
getArrayValue
(
$options
,
'formatter'
);
if
(
$formatter_class
)
{
$formatter
=&
$this
->
Application
->
recallObject
(
$formatter_class
);
$human_format
=
getArrayValue
(
$params
,
'human'
);
$edit_size
=
getArrayValue
(
$params
,
'edit_size'
);
$sample
=
getArrayValue
(
$params
,
'sample'
);
if
(
$sample
)
{
return
$formatter
->
GetSample
(
$field
,
$options
,
$object
);
}
elseif
(
$human_format
||
$edit_size
)
{
$format
=
$formatter
->
HumanFormat
(
$format
);
return
$edit_size
?
strlen
(
$format
)
:
$format
;
}
}
return
$format
;
}
/**
* Returns grid padination information
* Can return links to pages
*
* @param Array $params
* @return mixed
*/
function
PageInfo
(
$params
)
{
$object
=&
$this
->
GetList
(
$params
);
/* @var $object kDBList */
$type
=
$params
[
'type'
];
unset
(
$params
[
'type'
]);
// remove parameters used only by current tag
$ret
=
''
;
switch
(
$type
)
{
case
'current'
:
$ret
=
$object
->
Page
;
break
;
case
'total'
:
$ret
=
$object
->
GetTotalPages
();
break
;
case
'prev'
:
$ret
=
$object
->
Page
>
1
?
$object
->
Page
-
1
:
false
;
break
;
case
'next'
:
$ret
=
$object
->
Page
<
$object
->
GetTotalPages
()
?
$object
->
Page
+
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
$ret
=
$this
->
PageLink
(
$params
);
$this
->
Application
->
SetVar
(
$object
->
getPrefixSpecial
().
'_Page'
,
$current_page
);
// restore page
}
return
$ret
;
}
/**
* Print grid pagination using
* block names specified
*
* @param Array $params
* @return string
* @access public
*/
function
PrintPages
(
$params
)
{
$list
=&
$this
->
GetList
(
$params
);
$prefix_special
=
$list
->
getPrefixSpecial
();
$total_pages
=
$list
->
GetTotalPages
();
if
(
$total_pages
>
1
)
$this
->
Application
->
Parser
->
DataExists
=
true
;
if
(
$total_pages
==
0
)
$total_pages
=
1
;
// display 1st page as selected in case if we have no pages at all
$o
=
''
;
// what are these 2 lines for?
$this
->
Application
->
SetVar
(
$prefix_special
.
'_event'
,
''
);
$this
->
Application
->
SetVar
(
$prefix_special
.
'_id'
,
''
);
$current_page
=
$list
->
Page
;
// $this->Application->RecallVar($prefix_special.'_Page');
$block_params
=
$this
->
prepareTagParams
(
$params
);
$split
=
(
isset
(
$params
[
'split'
]
)
?
$params
[
'split'
]
:
10
);
$split_start
=
$current_page
-
ceil
(
$split
/
2
);
if
(
$split_start
<
1
){
$split_start
=
1
;
}
$split_end
=
$split_start
+
$split
-
1
;
if
(
$split_end
>
$total_pages
)
{
$split_end
=
$total_pages
;
$split_start
=
max
(
$split_end
-
$split
+
1
,
1
);
}
if
(
$current_page
>
1
){
$prev_block_params
=
$this
->
prepareTagParams
();
if
(
$total_pages
>
$split
){
$prev_block_params
[
'page'
]
=
max
(
$current_page
-
$split
,
1
);
$prev_block_params
[
'name'
]
=
$this
->
SelectParam
(
$params
,
'prev_page_split_render_as,prev_page_split_block'
);
if
(
$prev_block_params
[
'name'
]){
$o
.=
$this
->
Application
->
ParseBlock
(
$prev_block_params
,
1
);
}
}
$prev_block_params
[
'name'
]
=
'page'
;
$prev_block_params
[
'page'
]
=
$current_page
-
1
;
$prev_block_params
[
'name'
]
=
$this
->
SelectParam
(
$params
,
'prev_page_render_as,block_prev_page,prev_page_block'
);
if
(
$prev_block_params
[
'name'
])
{
$this
->
Application
->
SetVar
(
$this
->
getPrefixSpecial
().
'_Page'
,
$current_page
-
1
);
$o
.=
$this
->
Application
->
ParseBlock
(
$prev_block_params
,
1
);
}
}
else
{
if
(
$no_prev_page_block
=
$this
->
SelectParam
(
$params
,
'no_prev_page_render_as,block_no_prev_page'
)
)
{
$block_params
[
'name'
]
=
$no_prev_page_block
;
$o
.=
$this
->
Application
->
ParseBlock
(
$block_params
,
1
);
}
}
$separator_params
[
'name'
]
=
$this
->
SelectParam
(
$params
,
'separator_render_as,block_separator'
);
for
(
$i
=
$split_start
;
$i
<=
$split_end
;
$i
++)
{
if
(
$i
==
$current_page
)
{
$block
=
$this
->
SelectParam
(
$params
,
'current_render_as,active_render_as,block_current,active_block'
);
}
else
{
$block
=
$this
->
SelectParam
(
$params
,
'link_render_as,inactive_render_as,block_link,inactive_block'
);
}
$block_params
[
'name'
]
=
$block
;
$block_params
[
'page'
]
=
$i
;
$this
->
Application
->
SetVar
(
$this
->
getPrefixSpecial
().
'_Page'
,
$i
);
$o
.=
$this
->
Application
->
ParseBlock
(
$block_params
,
1
);
if
(
$this
->
SelectParam
(
$params
,
'separator_render_as,block_separator'
)
&&
$i
<
$split_end
)
{
$o
.=
$this
->
Application
->
ParseBlock
(
$separator_params
,
1
);
}
}
if
(
$current_page
<
$total_pages
){
$next_block_params
=
$this
->
prepareTagParams
();
$next_block_params
[
'page'
]=
$current_page
+
1
;
$next_block_params
[
'name'
]
=
$this
->
SelectParam
(
$params
,
'next_page_render_as,block_next_page,next_page_block'
);
if
(
$next_block_params
[
'name'
]){
$this
->
Application
->
SetVar
(
$this
->
getPrefixSpecial
().
'_Page'
,
$current_page
+
1
);
$o
.=
$this
->
Application
->
ParseBlock
(
$next_block_params
,
1
);
}
if
(
$total_pages
>
$split
){
$next_block_params
[
'page'
]=
min
(
$current_page
+
$split
,
$total_pages
);
$next_block_params
[
'name'
]
=
$this
->
SelectParam
(
$params
,
'next_page_split_render_as,next_page_split_block'
);
if
(
$next_block_params
[
'name'
]){
$o
.=
$this
->
Application
->
ParseBlock
(
$next_block_params
,
1
);
}
}
}
$this
->
Application
->
SetVar
(
$this
->
getPrefixSpecial
().
'_Page'
,
$current_page
);
return
$o
;
}
/**
* Print grid pagination using
* block names specified
*
* @param Array $params
* @return string
* @access public
*/
function
PaginationBar
(
$params
)
{
return
$this
->
PrintPages
(
$params
);
}
/**
* Returns field name (processed by kMultiLanguage formatter
* if required) and item's id from it's IDField or field required
*
* @param Array $params
* @return Array (id,field)
* @access private
*/
function
prepareInputName
(
$params
)
{
$field
=
$this
->
SelectParam
(
$params
,
'name,field'
);
$object
=&
$this
->
getObject
(
$params
);
$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'
];
$field
=
$formatter
->
LangFieldName
(
$field
,
$force_primary
);
}
$id_field
=
getArrayValue
(
$params
,
'IdField'
);
$id
=
$id_field
?
$object
->
GetDBField
(
$id_field
)
:
$object
->
GetID
();
return
Array
(
$id
,
$field
);
}
/**
* Returns input field name to
* be placed on form (for correct
* event processing)
*
* @param Array $params
* @return string
* @access public
*/
function
InputName
(
$params
)
{
list
(
$id
,
$field
)
=
$this
->
prepareInputName
(
$params
);
$ret
=
$this
->
getPrefixSpecial
().
'['
.
$id
.
']['
.
$field
.
']'
;
if
(
getArrayValue
(
$params
,
'as_preg'
)
)
$ret
=
preg_quote
(
$ret
,
'/'
);
return
$ret
;
}
/**
* Allows to override various field options through hidden fields with specific names in submit.
* This tag generates this special names
*
* @param Array $params
* @return string
* @author Alex
*/
function
FieldModifier
(
$params
)
{
list
(
$id
,
$field
)
=
$this
->
prepareInputName
(
$params
);
$ret
=
'field_modifiers['
.
$this
->
getPrefixSpecial
().
']['
.
$field
.
']['
.
$params
[
'type'
].
']'
;
if
(
getArrayValue
(
$params
,
'as_preg'
)
)
$ret
=
preg_quote
(
$ret
,
'/'
);
if
(
isset
(
$params
[
'value'
]))
{
$object
=&
$this
->
getObject
(
$params
);
$field_modifiers
[
$field
][
$params
[
'type'
]]
=
$params
[
'value'
];
$object
->
ApplyFieldModifiers
(
$field_modifiers
);
}
return
$ret
;
}
/**
* Returns index where 1st changable sorting field begins
*
* @return int
* @access private
*/
function
getUserSortIndex
()
{
$list_sortings
=
$this
->
Application
->
getUnitOption
(
$this
->
Prefix
,
'ListSortings'
);
$sorting_prefix
=
getArrayValue
(
$list_sortings
,
$this
->
Special
)
?
$this
->
Special
:
''
;
$user_sorting_start
=
0
;
if
(
$forced_sorting
=
getArrayValue
(
$list_sortings
,
$sorting_prefix
,
'ForcedSorting'
)
)
{
$user_sorting_start
=
count
(
$forced_sorting
);
}
return
$user_sorting_start
;
}
/**
* Returns order direction for given field
*
*
*
* @param Array $params
* @return string
* @access public
*/
function
Order
(
$params
)
{
$field
=
$params
[
'field'
];
$user_sorting_start
=
$this
->
getUserSortIndex
();
$list
=&
$this
->
GetList
(
$params
);
if
(
$list
->
GetOrderField
(
$user_sorting_start
)
==
$field
)
{
return
strtolower
(
$list
->
GetOrderDirection
(
$user_sorting_start
));
}
elseif
(
$list
->
GetOrderField
(
$user_sorting_start
+
1
)
==
$field
)
{
return
'2_'
.
strtolower
(
$list
->
GetOrderDirection
(
$user_sorting_start
+
1
));
}
else
{
return
'no'
;
}
}
/**
* Get's information of sorting field at "pos" position,
* like sorting field name (type="field") or sorting direction (type="direction")
*
* @param Array $params
* @return mixed
*/
function
OrderInfo
(
$params
)
{
$user_sorting_start
=
$this
->
getUserSortIndex
()
+
--
$params
[
'pos'
];
$list
=&
$this
->
GetList
(
$params
);
// $object =& $this->Application->recallObject( $this->getPrefixSpecial() );
if
(
$params
[
'type'
]
==
'field'
)
return
$list
->
GetOrderField
(
$user_sorting_start
);
if
(
$params
[
'type'
]
==
'direction'
)
return
$list
->
GetOrderDirection
(
$user_sorting_start
);
}
/**
* Checks if sorting field/direction matches passed field/direction parameter
*
* @param Array $params
* @return bool
*/
function
IsOrder
(
$params
)
{
$params
[
'type'
]
=
isset
(
$params
[
'field'
])
?
'field'
:
'direction'
;
$value
=
$this
->
OrderInfo
(
$params
);
if
(
isset
(
$params
[
'field'
])
)
return
$params
[
'field'
]
==
$value
;
if
(
isset
(
$params
[
'direction'
])
)
return
$params
[
'direction'
]
==
$value
;
}
/**
* Returns list perpage
*
* @param Array $params
* @return int
*/
function
PerPage
(
$params
)
{
$object
=&
$this
->
getObject
(
$params
);
return
$object
->
PerPage
;
}
/**
* Checks if list perpage matches value specified
*
* @param Array $params
* @return bool
*/
function
PerPageEquals
(
$params
)
{
$object
=&
$this
->
getObject
(
$params
);
return
$object
->
PerPage
==
$params
[
'value'
];
}
function
SaveEvent
(
$params
)
{
// SaveEvent is set during OnItemBuild, but we may need it before any other tag calls OnItemBuild
$object
=&
$this
->
getObject
(
$params
);
return
$this
->
Application
->
GetVar
(
$this
->
getPrefixSpecial
().
'_SaveEvent'
);
}
function
NextId
(
$params
)
{
$object
=&
$this
->
getObject
(
$params
);
$wid
=
$this
->
Application
->
GetTopmostWid
(
$this
->
Prefix
);
$session_name
=
rtrim
(
$this
->
getPrefixSpecial
().
'_selected_ids_'
.
$wid
,
'_'
);
$ids
=
explode
(
','
,
$this
->
Application
->
RecallVar
(
$session_name
));
$cur_id
=
$object
->
GetID
();
$i
=
array_search
(
$cur_id
,
$ids
);
if
(
$i
!==
false
)
{
return
$i
<
count
(
$ids
)
-
1
?
$ids
[
$i
+
1
]
:
''
;
}
return
''
;
}
function
PrevId
(
$params
)
{
$object
=&
$this
->
getObject
(
$params
);
$wid
=
$this
->
Application
->
GetTopmostWid
(
$this
->
Prefix
);
$session_name
=
rtrim
(
$this
->
getPrefixSpecial
().
'_selected_ids_'
.
$wid
,
'_'
);
$ids
=
explode
(
','
,
$this
->
Application
->
RecallVar
(
$session_name
));
$cur_id
=
$object
->
GetID
();
$i
=
array_search
(
$cur_id
,
$ids
);
if
(
$i
!==
false
)
{
return
$i
>
0
?
$ids
[
$i
-
1
]
:
''
;
}
return
''
;
}
function
IsSingle
(
$params
)
{
return
(
$this
->
NextId
(
$params
)
===
''
&&
$this
->
PrevId
(
$params
)
===
''
);
}
function
IsLast
(
$params
)
{
return
(
$this
->
NextId
(
$params
)
===
''
);
}
function
IsFirst
(
$params
)
{
return
(
$this
->
PrevId
(
$params
)
===
''
);
}
/**
* Checks if field value is equal to proposed one
*
* @param Array $params
* @return bool
*/
function
FieldEquals
(
$params
)
{
$object
=&
$this
->
getObject
(
$params
);
$ret
=
$object
->
GetDBField
(
$this
->
SelectParam
(
$params
,
'name,field'
))
==
$params
[
'value'
];
// if( getArrayValue($params,'inverse') ) $ret = !$ret;
return
$ret
;
}
function
ItemIcon
(
$params
)
{
$object
=&
$this
->
getObject
(
$params
);
$grids
=
$this
->
Application
->
getUnitOption
(
$this
->
Prefix
,
'Grids'
);
$icons
=&
$grids
[
$params
[
'grid'
]
][
'Icons'
];
$key
=
''
;
$status_fields
=
$this
->
Application
->
getUnitOption
(
$this
->
Prefix
,
'StatusField'
);
if
(!
$status_fields
)
return
$icons
[
'default'
];
foreach
(
$status_fields
as
$status_field
)
{
$key
.=
$object
->
GetDBField
(
$status_field
).
'_'
;
}
$key
=
rtrim
(
$key
,
'_'
);
$value
=
(
$key
!==
false
)
?
$key
:
'default'
;
return
isset
(
$icons
[
$value
])
?
$icons
[
$value
]
:
$icons
[
'default'
];
}
/**
* Generates bluebar title + initializes prefixes used on page
*
* @param Array $params
* @return string
*/
function
SectionTitle
(
$params
)
{
$preset_name
=
replaceModuleSection
(
$params
[
'title_preset'
]);
$title_presets
=
$this
->
Application
->
getUnitOption
(
$this
->
Prefix
,
'TitlePresets'
);
$title_info
=
getArrayValue
(
$title_presets
,
$preset_name
);
if
(
$title_info
===
false
)
{
$title
=
str_replace
(
'#preset_name#'
,
$preset_name
,
$params
[
'title'
]);
if
(
$this
->
Application
->
ConfigValue
(
'UseSmallHeader'
)
&&
isset
(
$params
[
'group_title'
])
&&
$params
[
'group_title'
])
{
$title
.=
' - '
.
$params
[
'group_title'
];
}
return
$title
;
}
if
(
getArrayValue
(
$title_presets
,
'default'
))
{
// use default labels + custom labels specified in preset used
$title_info
=
array_merge_recursive2
(
$title_presets
[
'default'
],
$title_info
);
}
$title
=
$title_info
[
'format'
];
// 1. get objects in use for title construction
$objects
=
Array
();
$object_status
=
Array
();
$status_labels
=
Array
();
$prefixes
=
getArrayValue
(
$title_info
,
'prefixes'
);
$all_tag_params
=
getArrayValue
(
$title_info
,
'tag_params'
);
if
(
$prefixes
)
{
// extract tag_perams passed directly to SectionTitle tag for specific prefix
foreach
(
$params
as
$tp_name
=>
$tp_value
)
{
if
(
preg_match
(
'/(.*)
\[
(.*)
\]
/'
,
$tp_name
,
$regs
))
{
$all_tag_params
[
$regs
[
1
]
][
$regs
[
2
]
]
=
$tp_value
;
unset
(
$params
[
$tp_name
]);
}
}
$tag_params
=
Array
();
foreach
(
$prefixes
as
$prefix_special
)
{
$prefix_data
=
$this
->
Application
->
processPrefix
(
$prefix_special
);
$prefix_data
[
'prefix_special'
]
=
rtrim
(
$prefix_data
[
'prefix_special'
],
'.'
);
if
(
$all_tag_params
)
{
$tag_params
=
getArrayValue
(
$all_tag_params
,
$prefix_data
[
'prefix_special'
]);
if
(!
$tag_params
)
$tag_params
=
Array
();
}
$tag_params
=
array_merge_recursive2
(
$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'
;
// a. set object's status field (adding item/editing item) for each object in title
if
(
getArrayValue
(
$title_info
[
$object_status
[
$prefix_data
[
'prefix_special'
]
].
'_status_labels'
],
$prefix_data
[
'prefix_special'
]))
{
$status_labels
[
$prefix_data
[
'prefix_special'
]
]
=
$title_info
[
$object_status
[
$prefix_data
[
'prefix_special'
]
].
'_status_labels'
][
$prefix_data
[
'prefix_special'
]
];
$title
=
str_replace
(
'#'
.
$prefix_data
[
'prefix_special'
].
'_status#'
,
$status_labels
[
$prefix_data
[
'prefix_special'
]
],
$title
);
}
// b. setting object's titlefield value (in titlebar ONLY) to default in case if object beeing created with no titlefield filled in
if
(
$object_status
[
$prefix_data
[
'prefix_special'
]
]
==
'new'
)
{
$new_value
=
$this
->
getInfo
(
$objects
[
$prefix_data
[
'prefix_special'
]
],
'titlefield'
);
if
(!
$new_value
&&
getArrayValue
(
$title_info
[
'new_titlefield'
],
$prefix_data
[
'prefix_special'
])
)
$new_value
=
$this
->
Application
->
Phrase
(
$title_info
[
'new_titlefield'
][
$prefix_data
[
'prefix_special'
]
]);
$title
=
str_replace
(
'#'
.
$prefix_data
[
'prefix_special'
].
'_titlefield#'
,
$new_value
,
$title
);
}
}
}
// 2. replace phrases if any found in format string
$title
=
$this
->
Application
->
ReplaceLanguageTags
(
$title
,
false
);
// 3. find and replace any replacement vars
preg_match_all
(
'/#(.*_.*)#/Uis'
,
$title
,
$rets
);
if
(
$rets
[
1
])
{
$replacement_vars
=
array_keys
(
array_flip
(
$rets
[
1
])
);
foreach
(
$replacement_vars
as
$replacement_var
)
{
$var_info
=
explode
(
'_'
,
$replacement_var
,
2
);
$object
=&
$objects
[
$var_info
[
0
]
];
$new_value
=
$this
->
getInfo
(
$object
,
$var_info
[
1
]);
$title
=
str_replace
(
'#'
.
$replacement_var
.
'#'
,
$new_value
,
$title
);
}
}
// replace trailing spaces inside title preset + '' occurences into single space
$title
=
preg_replace
(
'/[ ]*
\'\'
[ ]*/'
,
' '
,
$title
);
if
(
$this
->
Application
->
ConfigValue
(
'UseSmallHeader'
)
&&
isset
(
$params
[
'group_title'
])
&&
$params
[
'group_title'
])
{
$title
.=
' - '
.
$params
[
'group_title'
];
}
$cut_first
=
getArrayValue
(
$params
,
'cut_first'
);
if
(
$cut_first
&&
strlen
(
$title
)
>
$cut_first
)
{
if
(!
preg_match
(
'/<a href="(.*)">(.*)<
\/
a>/'
,
$title
))
{
$title
=
substr
(
$title
,
0
,
$cut_first
).
' ...'
;
}
}
return
$title
;
}
function
getInfo
(&
$object
,
$info_type
)
{
switch
(
$info_type
)
{
case
'titlefield'
:
$field
=
$this
->
Application
->
getUnitOption
(
$object
->
Prefix
,
'TitleField'
);
return
$field
!==
false
?
$object
->
GetField
(
$field
)
:
'TitleField Missing'
;
break
;
case
'recordcount'
:
$of_phrase
=
$this
->
Application
->
Phrase
(
'la_of'
);
return
$object
->
NoFilterCount
!=
$object
->
RecordsCount
?
$object
->
RecordsCount
.
' '
.
$of_phrase
.
' '
.
$object
->
NoFilterCount
:
$object
->
RecordsCount
;
break
;
default
:
return
$object
->
GetField
(
$info_type
);
break
;
}
}
function
GridInfo
(
$params
)
{
$object
=&
$this
->
GetList
(
$params
);
/* @var $object kDBList */
switch
(
$params
[
'type'
])
{
case
'filtered'
:
return
$object
->
GetRecordsCount
();
case
'total'
:
return
$object
->
GetNoFilterCount
();
case
'from'
:
return
$object
->
RecordsCount
?
$object
->
Offset
+
1
:
0
;
//0-based
case
'to'
:
return
min
(
$object
->
Offset
+
$object
->
PerPage
,
$object
->
RecordsCount
);
case
'total_pages'
:
return
$object
->
GetTotalPages
();
case
'needs_pagination'
:
return
(
$object
->
RecordsCount
>
$object
->
PerPage
)
||
(
$object
->
Page
>
1
);
}
}
/**
* Parses block depending on its element type.
* For radio and select elements values are taken from 'value_list_field' in key1=value1,key2=value2
* format. key=value can be substituted by <SQL>SELECT f1 AS OptionName, f2 AS OptionValue... FROM <PREFIX>TableName </SQL>
* where prefix is TABLE_PREFIX
*
* @param Array $params
* @return string
*/
function
ConfigFormElement
(
$params
)
{
$object
=&
$this
->
getObject
(
$params
);
$field
=
$params
[
'field'
];
$helper
=&
$this
->
Application
->
recallObject
(
'InpCustomFieldsHelper'
);
$element_type
=
$object
->
GetDBField
(
$params
[
'element_type_field'
]);
if
(
$element_type
==
'label'
)
$element_type
=
'text'
;
$params
[
'name'
]
=
$params
[
'blocks_prefix'
].
$element_type
;
switch
(
$element_type
)
{
case
'select'
:
case
'multiselect'
:
case
'radio'
:
$field_options
=
$object
->
GetFieldOptions
(
$field
,
'options'
);
if
(
$object
->
GetDBField
(
'DirectOptions'
))
{
// used for custom fields
$field_options
[
'options'
]
=
$object
->
GetDBField
(
'DirectOptions'
);
}
else
{
// used for configuration
$field_options
[
'options'
]
=
$helper
->
GetValuesHash
(
$object
->
GetDBField
(
$params
[
'value_list_field'
])
);
}
$object
->
SetFieldOptions
(
$field
,
$field_options
);
break
;
case
'text'
:
case
'textarea'
:
$params
[
'field_params'
]
=
$helper
->
ParseConfigSQL
(
$object
->
GetDBField
(
$params
[
'value_list_field'
]));
break
;
case
'password'
:
case
'checkbox'
:
default
:
break
;
}
return
$this
->
Application
->
ParseBlock
(
$params
,
1
);
}
/**
* Get's requested custom field value
*
* @param Array $params
* @return string
* @access public
*/
function
CustomField
(
$params
)
{
$params
[
'name'
]
=
'cust_'
.
$this
->
SelectParam
(
$params
,
'name,field'
);
return
$this
->
Field
(
$params
);
}
function
CustomFieldLabel
(
$params
)
{
$object
=&
$this
->
getObject
(
$params
);
$field
=
$this
->
SelectParam
(
$params
,
'name,field'
);
$sql
=
'SELECT FieldLabel
FROM '
.
$this
->
Application
->
getUnitOption
(
'cf'
,
'TableName'
).
'
WHERE FieldName = '
.
$this
->
Conn
->
qstr
(
$field
);
return
$this
->
Application
->
Phrase
(
$this
->
Conn
->
GetOne
(
$sql
));
}
/**
* transposes 1-dimensional array elements for vertical alignment according to given columns and per_page parameters
*
* @param array $arr
* @param int $columns
* @param int $per_page
* @return array
*/
function
LinearToVertical
(&
$arr
,
$columns
,
$per_page
)
{
$rows
=
$columns
;
// in case if after applying per_page limit record count less then
// can fill requrested column count, then fill as much as we can
$cols
=
min
(
ceil
(
$per_page
/
$columns
),
ceil
(
count
(
$arr
)
/
$columns
));
$imatrix
=
array
();
for
(
$row
=
0
;
$row
<
$rows
;
$row
++)
{
for
(
$col
=
0
;
$col
<
$cols
;
$col
++)
{
$source_index
=
$row
*
$cols
+
$col
;
if
(!
isset
(
$arr
[
$source_index
]))
{
// in case if source array element count is less then element count in one row
continue
;
}
$imatrix
[
$col
*
$rows
+
$row
]
=
$arr
[
$source_index
];
}
}
ksort
(
$imatrix
);
reset
(
$imatrix
);
return
$imatrix
;
}
/**
* If data was modfied & is in TempTables mode, then parse block with name passed;
* remove modification mark if not in TempTables mode
*
* @param Array $params
* @return string
* @access public
* @author Alexey
*/
function
SaveWarning
(
$params
)
{
$main_prefix
=
getArrayValue
(
$params
,
'main_prefix'
);
if
(
$main_prefix
&&
$main_prefix
!=
'$main_prefix'
)
{
$top_prefix
=
$main_prefix
;
}
else
{
$top_prefix
=
$this
->
Application
->
GetTopmostPrefix
(
$this
->
Prefix
);
}
$temp_tables
=
substr
(
$this
->
Application
->
GetVar
(
$top_prefix
.
'_mode'
),
0
,
1
)
==
't'
;
$modified
=
$this
->
Application
->
RecallVar
(
$top_prefix
.
'_modified'
);
if
(
$temp_tables
&&
$modified
)
{
$block_params
=
$this
->
prepareTagParams
(
$params
);
$block_params
[
'name'
]
=
$this
->
SelectParam
(
$params
,
'render_as,name'
);
$block_params
[
'edit_mode'
]
=
$temp_tables
?
1
:
0
;
return
$this
->
Application
->
ParseBlock
(
$block_params
);
}
$this
->
Application
->
RemoveVar
(
$top_prefix
.
'_modified'
);
return
''
;
}
/**
* Returns list record count queries (on all pages)
*
* @param Array $params
* @return int
*/
function
TotalRecords
(
$params
)
{
$list
=&
$this
->
GetList
(
$params
);
if
(!
$list
->
Counted
)
$list
->
CountRecs
();
return
$list
->
RecordsCount
;
}
/**
* Range filter field name
*
* @param Array $params
* @return string
*/
function
SearchInputName
(
$params
)
{
$field
=
$this
->
SelectParam
(
$params
,
'field,name'
);
$ret
=
'custom_filters['
.
$this
->
getPrefixSpecial
().
']['
.
$params
[
'grid'
].
']['
.
$field
.
']['
.
$params
[
'filter_type'
].
']'
;
if
(
isset
(
$params
[
'type'
]))
{
$ret
.=
'['
.
$params
[
'type'
].
']'
;
}
return
$ret
;
}
/**
* Return range filter field value
*
* @param Array $params
* @return string
*/
function
SearchField
(
$params
)
// RangeValue
{
$field
=
$this
->
SelectParam
(
$params
,
'field,name'
);
$view_name
=
$this
->
Application
->
RecallVar
(
$this
->
getPrefixSpecial
().
'_current_view'
);
$custom_filter
=
$this
->
Application
->
RecallPersistentVar
(
$this
->
getPrefixSpecial
().
'_custom_filter.'
.
$view_name
);
$custom_filter
=
$custom_filter
?
unserialize
(
$custom_filter
)
:
Array
();
if
(
isset
(
$custom_filter
[
$params
[
'grid'
]
][
$field
]))
{
$ret
=
$custom_filter
[
$params
[
'grid'
]
][
$field
][
$params
[
'filter_type'
]
][
'submit_value'
];
if
(
isset
(
$params
[
'type'
]))
{
$ret
=
$ret
[
$params
[
'type'
]
];
}
if
(
!
$this
->
HasParam
(
$params
,
'no_special'
)
)
$ret
=
htmlspecialchars
(
$ret
);
return
$ret
;
}
return
''
;
}
function
SearchFormat
(
$params
)
{
$field
=
$params
[
'field'
];
$object
=&
$this
->
GetList
(
$params
);
$options
=
$object
->
GetFieldOptions
(
$field
);
$format
=
$options
[
$this
->
SelectParam
(
$params
,
'input_format'
)
?
'input_format'
:
'format'
];
$formatter_class
=
getArrayValue
(
$options
,
'formatter'
);
if
(
$formatter_class
)
{
$formatter
=&
$this
->
Application
->
recallObject
(
$formatter_class
);
$human_format
=
getArrayValue
(
$params
,
'human'
);
$edit_size
=
getArrayValue
(
$params
,
'edit_size'
);
$sample
=
getArrayValue
(
$params
,
'sample'
);
if
(
$sample
)
{
return
$formatter
->
GetSample
(
$field
,
$options
,
$object
);
}
elseif
(
$human_format
||
$edit_size
)
{
$format
=
$formatter
->
HumanFormat
(
$format
);
return
$edit_size
?
strlen
(
$format
)
:
$format
;
}
}
return
$format
;
}
/**
* Returns error of range field
*
* @param unknown_type $params
* @return unknown
*/
function
SearchError
(
$params
)
{
$field
=
$this
->
SelectParam
(
$params
,
'field,name'
);
$error_var_name
=
$this
->
getPrefixSpecial
().
'_'
.
$field
.
'_error'
;
$pseudo
=
$this
->
Application
->
RecallVar
(
$error_var_name
);
if
(
$pseudo
)
{
$this
->
Application
->
RemoveVar
(
$error_var_name
);
}
$object
=&
$this
->
Application
->
recallObject
(
$this
->
Prefix
.
'.'
.
$this
->
Special
.
'-item'
,
null
,
Array
(
'skip_autoload'
=>
true
));
/* @var $object kDBItem */
$object
->
SetError
(
$field
,
$pseudo
);
return
$object
->
GetErrorMsg
(
$field
,
false
);
}
/**
* Returns templates path for module, which is gathered from prefix module
*
* @param Array $params
* @return string
* @author Alex
*/
function
ModulePath
(
$params
)
{
$force_module
=
getArrayValue
(
$params
,
'module'
);
if
(
$force_module
)
{
if
(
$force_module
==
'#session#'
)
{
$force_module
=
preg_replace
(
'/([^:]*):.*/'
,
'
\1
'
,
$this
->
Application
->
RecallVar
(
'module'
));
if
(!
$force_module
)
$force_module
=
'core'
;
}
else
{
$force_module
=
strtolower
(
$force_module
);
}
if
(
$force_module
==
'core'
)
{
$module_folder
=
'core'
;
}
else
{
$module_folder
=
trim
(
$this
->
Application
->
findModule
(
'Name'
,
$force_module
,
'Path'
),
'/'
);
}
}
else
{
$module_folder
=
$this
->
Application
->
getUnitOption
(
$this
->
Prefix
,
'ModuleFolder'
);
}
return
'../../'
.
$module_folder
.
'/admin_templates/'
;
}
/**
* Returns object used in tag processor
*
* @access public
* @return kDBBase
*/
function
&
getObject
(
$params
=
Array
())
{
$object
=&
$this
->
Application
->
recallObject
(
$this
->
getPrefixSpecial
(),
$this
->
Prefix
,
$params
);
if
(
isset
(
$params
[
'requery'
])
&&
$params
[
'requery'
])
{
$this
->
Application
->
HandleEvent
(
$q_event
,
$this
->
getPrefixSpecial
().
':LoadItem'
);
}
return
$object
;
}
/**
* Checks if object propery value matches value passed
*
* @param Array $params
* @return bool
*/
function
PropertyEquals
(
$params
)
{
$object
=&
$this
->
getObject
(
$params
);
$property_name
=
$this
->
SelectParam
(
$params
,
'name,var,property'
);
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
;
}
function
MultipleEditing
(
$params
)
{
$wid
=
$this
->
Application
->
GetTopmostWid
(
$this
->
Prefix
);
$session_name
=
rtrim
(
$this
->
getPrefixSpecial
().
'_selected_ids_'
.
$wid
,
'_'
);
$selected_ids
=
explode
(
','
,
$this
->
Application
->
RecallVar
(
$session_name
));
$ret
=
''
;
if
(
$selected_ids
)
{
$selected_ids
=
explode
(
','
,
$selected_ids
);
$object
=&
$this
->
getObject
(
array_merge_recursive2
(
$params
,
Array
(
'skip_autoload'
=>
true
))
);
$params
[
'name'
]
=
$params
[
'render_as'
];
foreach
(
$selected_ids
as
$id
)
{
$object
->
Load
(
$id
);
$ret
.=
$this
->
Application
->
ParseBlock
(
$params
);
}
}
return
$ret
;
}
function
ExportStatus
(
$params
)
{
$export_object
=&
$this
->
Application
->
recallObject
(
'CatItemExportHelper'
);
$event
=
new
kEvent
(
$this
->
getPrefixSpecial
().
':OnDummy'
);
$action_method
=
'perform'
.
ucfirst
(
$this
->
Special
);
$field_values
=
$export_object
->
$action_method
(
$event
);
// finish code is done from JS now
if
(
$field_values
[
'start_from'
]
>=
$field_values
[
'total_records'
])
{
if
(
$this
->
Special
==
'import'
)
{
$this
->
Application
->
StoreVar
(
'PermCache_UpdateRequired'
,
1
);
$this
->
Application
->
Redirect
(
'in-portal/categories/cache_updater'
,
Array
(
'm_opener'
=>
'r'
,
'pass'
=>
'm'
,
'continue'
=>
1
,
'no_amp'
=>
1
));
}
elseif
(
$this
->
Special
==
'export'
)
{
$finish_t
=
$this
->
Application
->
RecallVar
(
'export_finish_t'
);
$this
->
Application
->
Redirect
(
$finish_t
,
Array
(
'pass'
=>
'all'
));
$this
->
Application
->
RemoveVar
(
'export_finish_t'
);
}
}
$export_options
=
$export_object
->
loadOptions
(
$event
);
return
$export_options
[
'start_from'
]
*
100
/
$export_options
[
'total_records'
];
}
/**
* Returns path where exported category items should be saved
*
* @param Array $params
*/
function
ExportPath
(
$params
)
{
$ret
=
EXPORT_PATH
.
'/'
;
if
(
getArrayValue
(
$params
,
'as_url'
)
)
{
$ret
=
str_replace
(
FULL_PATH
.
'/'
,
$this
->
Application
->
BaseURL
(),
$ret
);
}
$export_options
=
unserialize
(
$this
->
Application
->
RecallVar
(
$this
->
getPrefixSpecial
().
'_options'
));
$ret
.=
$export_options
[
'ExportFilename'
].
'.'
.(
$export_options
[
'ExportFormat'
]
==
1
?
'csv'
:
'xml'
);
return
$ret
;
}
function
FieldTotal
(
$params
)
{
$list
=&
$this
->
GetList
(
$params
);
return
$list
->
GetFormattedTotal
(
$this
->
SelectParam
(
$params
,
'field,name'
),
$params
[
'function'
]);
}
function
FCKEditor
(
$params
)
{
$params
[
'no_special'
]
=
1
;
$value
=
$this
->
Field
(
$params
);
$name
=
$this
->
InputName
(
$params
);
$theme_path
=
$this
->
Application
->
BaseURL
().
substr
(
$this
->
Application
->
GetFrontThemePath
(),
1
);
$bgcolor
=
$this
->
Application
->
GetVar
(
'bgcolor'
);
if
(!
$bgcolor
)
$bgcolor
=
'#ffffff'
;
include_once
(
FULL_PATH
.
'/core/cmseditor/fckeditor.php'
);
$oFCKeditor
=
new
FCKeditor
(
$name
);
$oFCKeditor
->
BasePath
=
BASE_PATH
.
'/core/cmseditor/'
;
$oFCKeditor
->
Width
=
$params
[
'width'
]
;
$oFCKeditor
->
Height
=
$params
[
'height'
]
;
$oFCKeditor
->
ToolbarSet
=
'Advanced'
;
$oFCKeditor
->
Value
=
$value
;
$oFCKeditor
->
Config
=
Array
(
//'UserFilesPath' => $pathtoroot.'kernel/user_files',
'ProjectPath'
=>
BASE_PATH
.
'/'
,
'CustomConfigurationsPath'
=>
$this
->
Application
->
BaseURL
().
'core/admin_templates/js/inp_fckconfig.js'
,
'StylesXmlPath'
=>
$theme_path
.
'/inc/styles.xml'
,
'EditorAreaCSS'
=>
$theme_path
.
'/inc/style.css'
,
'DefaultClass'
=>
'Default Text'
,
// 'Debug' => 1,
'Admin'
=>
1
,
'K4'
=>
1
,
'newBgColor'
=>
$bgcolor
,
);
return
$oFCKeditor
->
CreateHtml
();
}
function
IsNewItem
(
$params
)
{
$object
=&
$this
->
getObject
(
$params
);
return
$object
->
IsNewItem
();
}
/**
* Creates link to an item including only it's id
*
* @param Array $params
* @return string
*/
function
ItemLink
(
$params
)
{
$object
=&
$this
->
getObject
(
$params
);
$params
[
'pass'
]
=
'm'
;
$params
[
$object
->
getPrefixSpecial
().
'_id'
]
=
$object
->
GetID
();
$m
=&
$this
->
Application
->
recallObject
(
'm_TagProcessor'
);
return
$m
->
t
(
$params
);
}
function
PresetFormFields
(
$params
)
{
$prefix
=
$this
->
getPrefixSpecial
();
if
(!
$this
->
Application
->
GetVar
(
$prefix
.
'_event'
))
{
$this
->
Application
->
HandleEvent
(
new
kEvent
(
$prefix
.
':OnNew'
));
}
}
function
PrintSerializedFields
(
$params
)
{
$object
=&
$this
->
getObject
();
$field
=
$this
->
SelectParam
(
$params
,
'field'
);
$data
=
unserialize
(
$object
->
GetDBField
(
$field
));
$o
=
''
;
$std_params
[
'name'
]
=
$params
[
'render_as'
];
$std_params
[
'field'
]
=
$params
[
'field'
];
$std_params
[
'pass_params'
]
=
true
;
foreach
(
$data
as
$key
=>
$row
)
{
$block_params
=
array_merge
(
$std_params
,
$row
,
array
(
'key'
=>
$key
));
$o
.=
$this
->
Application
->
ParseBlock
(
$block_params
);
}
return
$o
;
}
/**
* Checks if current prefix is main item
*
* @param Array $params
* @return bool
*/
function
IsTopmostPrefix
(
$params
)
{
return
$this
->
Prefix
==
$this
->
Application
->
GetTopmostPrefix
(
$this
->
Prefix
);
}
function
PerPageSelected
(
$params
)
{
$list
=&
$this
->
GetList
(
$params
);
return
$list
->
PerPage
==
$params
[
'per_page'
]
?
$params
[
'selected'
]
:
''
;
}
/**
* Returns prefix + generated sepcial + any word
*
* @param Array $params
* @return string
*/
function
VarName
(
$params
)
{
$list
=&
$this
->
GetList
(
$params
);
return
$list
->
getPrefixSpecial
().
'_'
.
$params
[
'type'
];
}
}
?>
Event Timeline
Log In to Comment