Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F1245148
admin_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
Fri, Nov 21, 5:21 AM
Size
25 KB
Mime Type
text/x-php
Expires
Sun, Nov 23, 5:21 AM (1 d, 21 h)
Engine
blob
Format
Raw Data
Handle
809777
Attached To
rINP In-Portal
admin_tag_processor.php
View Options
<?php
class
AdminTagProcessor
extends
kDBTagProcessor
{
function
SetConst
(
$params
)
{
$name
=
$this
->
SelectParam
(
$params
,
'name,const'
);
safeDefine
(
$name
,
$params
[
'value'
]);
}
/**
* Allows to execute js script after the page is fully loaded
*
* @param Array $params
* @return string
*/
function
AfterScript
(
$params
)
{
$after_script
=
$this
->
Application
->
GetVar
(
'after_script'
);
if
(
$after_script
)
{
return
'<script type="text/javascript">'
.
$after_script
.
'</script>'
;
}
return
''
;
}
/**
* Returns section title with #section# keyword replaced with current section
*
* @param Array $params
* @return string
*/
function
GetSectionTitle
(
$params
)
{
$params
[
'name'
]
=
replaceModuleSection
(
$params
[
'phrase'
]);
return
$this
->
Application
->
ProcessParsedTag
(
'm'
,
'Phrase'
,
$params
);
}
/**
* Returns section icon with #section# keyword replaced with current section
*
* @param Array $params
* @return string
*/
function
GetSectionIcon
(
$params
)
{
return
replaceModuleSection
(
$params
[
'icon'
]);
}
/**
* Allows to detect if current template is one of listed ones
*
* @param Array $params
* @return int
*/
function
TemplateMatches
(
$params
)
{
$templates
=
explode
(
','
,
$params
[
'templates'
]);
$t
=
$this
->
Application
->
GetVar
(
't'
);
return
in_array
(
$t
,
$templates
)
?
1
:
0
;
}
/**
* Save return script in cases, when old sections are opened from new sections
*
* @param Array $params
*/
function
SaveReturnScript
(
$params
)
{
// admin/save_redirect.php?do=
$url
=
str_replace
(
$this
->
Application
->
BaseURL
(),
''
,
$this
->
Application
->
ProcessParsedTag
(
'm'
,
'Link'
,
$params
)
);
$url
=
explode
(
'?'
,
$url
,
2
);
$url
=
'save_redirect.php?'
.
$url
[
1
].
'&do='
.
$url
[
0
];
$this
->
Application
->
StoreVar
(
'ReturnScript'
,
$url
);
}
/**
* Redirects to correct next import step template based on import script data
*
* @param Array $params
*/
function
ImportRedirect
(
$params
)
{
$import_id
=
$this
->
Application
->
GetVar
(
'import_id'
);
if
(
$import_id
)
{
// redirect forward to step3 (import parameters coosing)
$this
->
Application
->
StoreVar
(
'ImportScriptID'
,
$import_id
);
$sql
=
'SELECT *
FROM '
.
TABLE_PREFIX
.
'ImportScripts
WHERE is_id = '
.
$import_id
;
$db
=&
$this
->
Application
->
GetADODBConnection
();
$is_params
=
$db
->
GetRow
(
$sql
);
if
(
$is_params
[
'is_type'
]
==
'db'
)
{
$this
->
Application
->
Redirect
(
''
,
null
,
''
,
'import/step3.php'
);
}
elseif
(
$is_params
[
'is_type'
]
==
'csv'
)
{
$module
=
strtolower
(
$is_params
[
'is_Module'
]);
$template
=
$module
.
'/import'
;
$module_info
=
$this
->
Application
->
findModule
(
'Name'
,
$module
);
$item_prefix
=
$module_info
[
'Var'
];
$pass_params
=
Array
(
'm_opener'
=>
'd'
,
$item_prefix
.
'.import_id'
=>
0
,
$item_prefix
.
'.import_event'
=>
'OnNew'
,
'pass'
=>
'm,'
.
$item_prefix
.
'.import'
,
'm_cat_id'
=>
$module_info
[
'RootCat'
]);
$this
->
Application
->
Redirect
(
$template
,
$pass_params
);
}
}
else
{
// redirect back to step2 (import type choosing)
$this
->
Application
->
Redirect
(
''
,
null
,
''
,
'import/step2.php'
);
}
}
/**
* Returns version of module by name
*
* @param Array $params
* @return string
*/
function
ModuleVersion
(
$params
)
{
return
$this
->
Application
->
findModule
(
'Name'
,
$params
[
'module'
],
'Version'
);
}
/**
* Used in table form section drawing
*
* @param Array $params
* @return string
*/
function
DrawTree
(
$params
)
{
static
$deep_level
=
0
;
// when processings, then sort children by priority (key of children array)
$ret
=
''
;
$section_name
=
$params
[
'section_name'
];
$params
[
'name'
]
=
$this
->
SelectParam
(
$params
,
'name,render_as,block'
);
$sections_helper
=&
$this
->
Application
->
recallObject
(
'SectionsHelper'
);
$section_data
=&
$sections_helper
->
getSectionData
(
$section_name
);
$params
[
'children_count'
]
=
isset
(
$section_data
[
'children'
])
?
count
(
$section_data
[
'children'
])
:
0
;
$params
[
'deep_level'
]
=
$deep_level
++;
$template
=
$section_data
[
'url'
][
't'
];
unset
(
$section_data
[
'url'
][
't'
]);
$section_data
[
'section_url'
]
=
$this
->
Application
->
HREF
(
$template
,
''
,
$section_data
[
'url'
]);
$ret
.=
$this
->
Application
->
ParseBlock
(
array_merge_recursive2
(
$params
,
$section_data
)
);
if
(!
isset
(
$section_data
[
'children'
]))
{
return
$ret
;
}
$debug_mode
=
$this
->
Application
->
isDebugMode
();
$super_admin_mode
=
$this
->
Application
->
RecallVar
(
'super_admin'
);
ksort
(
$section_data
[
'children'
],
SORT_NUMERIC
);
foreach
(
$section_data
[
'children'
]
as
$section_name
)
{
$section_data
=&
$sections_helper
->
getSectionData
(
$section_name
);
if
(
isset
(
$section_data
[
'show_mode'
])
&&
is_numeric
(
$section_data
[
'show_mode'
]))
{
$show_mode
=
$section_data
[
'show_mode'
];
// if super admin section -> show in super admin mode & debug mode
$show_section
=
((
$show_mode
&
smSUPER_ADMIN
)
==
smSUPER_ADMIN
)
&&
(
$super_admin_mode
||
$debug_mode
);
if
(!
$show_section
)
{
// if section is in debug mode only && debug mode -> show
$show_section
=
((
$show_mode
&
smDEBUG
)
==
smDEBUG
)
&&
$debug_mode
;
}
if
(!
$show_section
)
{
continue
;
}
}
$params
[
'section_name'
]
=
$section_name
;
$ret
.=
$this
->
DrawTree
(
$params
);
$deep_level
--;
}
return
$ret
;
}
function
SectionInfo
(
$params
)
{
$section
=
$params
[
'section'
];
if
(
$section
==
'#session#'
)
{
$section
=
$this
->
Application
->
RecallVar
(
'section'
);
}
$sections_helper
=&
$this
->
Application
->
recallObject
(
'SectionsHelper'
);
/* @var $sections_helper kSectionsHelper */
$section_data
=&
$sections_helper
->
getSectionData
(
$section
);
if
(
isset
(
$params
[
'parent'
])
&&
$params
[
'parent'
])
{
do
{
$section_data
=&
$sections_helper
->
getSectionData
(
$section_data
[
'parent'
]);
}
while
(
isset
(
$section_data
[
'use_parent_header'
])
&&
$section_data
[
'use_parent_header'
]);
}
$info
=
$params
[
'info'
];
switch
(
$info
)
{
case
'module_path'
:
if
(
isset
(
$params
[
'module'
])
&&
$params
[
'module'
])
{
$module
=
$params
[
'module'
];
}
elseif
(
isset
(
$section_data
[
'icon_module'
]))
{
$module
=
$section_data
[
'icon_module'
];
}
else
{
$module
=
'#session#'
;
}
$res
=
$this
->
ModulePath
(
array
(
'module'
=>
$module
));
break
;
default
:
$res
=
$section_data
[
$info
];
}
if
(
$info
==
'label'
||
isset
(
$params
[
'as_label'
]))
{
$res
=
$this
->
Application
->
Phrase
(
$res
);
}
return
$res
;
}
function
PrintSection
(
$params
)
{
$section_name
=
$params
[
'section_name'
];
if
(
$section_name
==
'#session#'
)
{
$section_name
=
$this
->
Application
->
RecallVar
(
'section'
);
}
$sections_helper
=&
$this
->
Application
->
recallObject
(
'SectionsHelper'
);
/* @var $sections_helper kSectionsHelper */
$section_data
=&
$sections_helper
->
getSectionData
(
$section_name
);
$params
[
'name'
]
=
$this
->
SelectParam
(
$params
,
'name,render_as,block'
);
$params
[
'section_name'
]
=
$section_name
;
$template
=
$section_data
[
'url'
][
't'
];
unset
(
$section_data
[
'url'
][
't'
]);
$section_data
[
'section_url'
]
=
$this
->
Application
->
HREF
(
$template
,
''
,
$section_data
[
'url'
]);
$ret
=
$this
->
Application
->
ParseBlock
(
array_merge_recursive2
(
$params
,
$section_data
)
);
return
$ret
;
}
/**
* Used in XML drawing for tree
*
* @param Array $params
* @return string
*/
function
PrintSections
(
$params
)
{
// when processings, then sort children by priority (key of children array)
$ret
=
''
;
$section_name
=
$params
[
'section_name'
];
if
(
$section_name
==
'#session#'
)
{
$section_name
=
$this
->
Application
->
RecallVar
(
'section'
);
}
$sections_helper
=&
$this
->
Application
->
recallObject
(
'SectionsHelper'
);
$section_data
=&
$sections_helper
->
getSectionData
(
$section_name
);
$params
[
'name'
]
=
$this
->
SelectParam
(
$params
,
'name,render_as,block'
);
if
(!
isset
(
$section_data
[
'children'
]))
{
return
''
;
}
$debug_mode
=
$this
->
Application
->
isDebugMode
();
$super_admin_mode
=
$this
->
Application
->
RecallVar
(
'super_admin'
);
ksort
(
$section_data
[
'children'
],
SORT_NUMERIC
);
foreach
(
$section_data
[
'children'
]
as
$section_name
)
{
$params
[
'section_name'
]
=
$section_name
;
$section_data
=&
$sections_helper
->
getSectionData
(
$section_name
);
if
(
isset
(
$section_data
[
'show_mode'
])
&&
is_numeric
(
$section_data
[
'show_mode'
]))
{
$show_mode
=
$section_data
[
'show_mode'
];
// if super admin section -> show in super admin mode & debug mode
$show_section
=
((
$show_mode
&
smSUPER_ADMIN
)
==
smSUPER_ADMIN
)
&&
(
$super_admin_mode
||
$debug_mode
);
if
(!
$show_section
)
{
// if section is in debug mode only && debug mode -> show
$show_section
=
((
$show_mode
&
smDEBUG
)
==
smDEBUG
)
&&
$debug_mode
;
}
if
(!
$show_section
)
{
continue
;
}
}
if
(
isset
(
$section_data
[
'tabs_only'
])
&&
$section_data
[
'tabs_only'
])
{
$perm_status
=
false
;
$folder_label
=
$section_data
[
'label'
];
ksort
(
$section_data
[
'children'
],
SORT_NUMERIC
);
foreach
(
$section_data
[
'children'
]
as
$priority
=>
$section_name
)
{
// if only tabs in this section & none of them have permission, then skip section too
$section_data
=&
$sections_helper
->
getSectionData
(
$section_name
);
if
(
$section_data
&&
isset
(
$section_data
[
'perm_prefix'
]))
{
// this section uses other section permissions
$section_name
=
$this
->
Application
->
getUnitOption
(
$section_data
[
'perm_prefix'
].
'.main'
,
'PermSection'
);
}
$perm_status
=
$this
->
Application
->
CheckPermission
(
$section_name
.
'.view'
,
1
);
if
(
$perm_status
)
{
break
;
}
}
if
(!
$perm_status
)
{
// no permission for all tabs -> don't display tree node either
continue
;
}
$params
[
'section_name'
]
=
$section_name
;
$section_data
=&
$sections_helper
->
getSectionData
(
$section_name
);
$section_data
[
'label'
]
=
$folder_label
;
// use folder label in tree
$section_data
[
'is_tab'
]
=
1
;
}
else
{
if
(
$section_data
&&
isset
(
$section_data
[
'perm_prefix'
]))
{
// this section uses other section permissions
$section_name
=
$this
->
Application
->
getUnitOption
(
$section_data
[
'perm_prefix'
].
'.main'
,
'PermSection'
);
}
if
(!
$this
->
Application
->
CheckPermission
(
$section_name
.
'.view'
,
1
))
continue
;
}
$params
[
'children_count'
]
=
isset
(
$section_data
[
'children'
])
?
count
(
$section_data
[
'children'
])
:
0
;
$template
=
$section_data
[
'url'
][
't'
];
unset
(
$section_data
[
'url'
][
't'
]);
$section_data
[
'section_url'
]
=
$this
->
Application
->
HREF
(
$template
,
''
,
$section_data
[
'url'
]);
$late_load
=
getArrayValue
(
$section_data
,
'late_load'
);
if
(
$late_load
)
{
$t
=
$late_load
[
't'
];
unset
(
$late_load
[
't'
]);
$section_data
[
'late_load'
]
=
$this
->
Application
->
HREF
(
$t
,
''
,
$late_load
);
$params
[
'children_count'
]
=
99
;
}
else
{
$section_data
[
'late_load'
]
=
''
;
}
$ret
.=
$this
->
Application
->
ParseBlock
(
array_merge_recursive2
(
$params
,
$section_data
)
);
$params
[
'section_name'
]
=
$section_name
;
}
return
preg_replace
(
"/
\r\n
|
\n
/"
,
''
,
$ret
);
}
function
ListSectionPermissions
(
$params
)
{
$section_name
=
isset
(
$params
[
'section_name'
])
?
$params
[
'section_name'
]
:
$this
->
Application
->
GetVar
(
'section_name'
);
$sections_helper
=&
$this
->
Application
->
recallObject
(
'SectionsHelper'
);
$section_data
=&
$sections_helper
->
getSectionData
(
$section_name
);
$block_params
=
array_merge_recursive2
(
$section_data
,
Array
(
'name'
=>
$params
[
'render_as'
],
'section_name'
=>
$section_name
));
$ret
=
''
;
foreach
(
$section_data
[
'permissions'
]
as
$perm_name
)
{
if
(
preg_match
(
'/^advanced:(.*)/'
,
$perm_name
)
!=
$params
[
'type'
])
continue
;
$block_params
[
'perm_name'
]
=
$perm_name
;
$ret
.=
$this
->
Application
->
ParseBlock
(
$block_params
);
}
return
$ret
;
}
function
ModuleInclude
(
$params
)
{
foreach
(
$params
as
$param_name
=>
$param_value
)
{
$params
[
$param_name
]
=
replaceModuleSection
(
$param_value
);
}
return
$this
->
Application
->
ProcessParsedTag
(
'm'
,
'ModuleInclude'
,
$params
);
}
function
TodayDate
(
$params
)
{
return
date
(
$params
[
'format'
]);
}
function
TreeEditWarrning
(
$params
)
{
$ret
=
$this
->
Application
->
Phrase
(
$params
[
'label'
]);
$ret
=
str_replace
(
Array
(
'<'
,
'>'
,
'br/'
,
'br /'
,
"
\n
"
,
"
\r
"
),
Array
(
'<'
,
'>'
,
'br'
,
'br'
,
''
,
''
),
$ret
);
if
(
getArrayValue
(
$params
,
'escape'
))
{
$ret
=
addslashes
(
$ret
);
}
$ret
=
str_replace
(
'<br>'
,
'
\n
'
,
$ret
);
return
$ret
;
}
/**
* Draws section tabs using block name passed
*
* @param Array $params
*/
function
ListTabs
(
$params
)
{
$sections_helper
=&
$this
->
Application
->
recallObject
(
'SectionsHelper'
);
$section_data
=&
$sections_helper
->
getSectionData
(
$params
[
'section_name'
]);
$ret
=
''
;
$block_params
=
Array
(
'name'
=>
$params
[
'render_as'
]);
ksort
(
$section_data
[
'children'
],
SORT_NUMERIC
);
foreach
(
$section_data
[
'children'
]
as
$priority
=>
$section_name
)
{
if
(!
$this
->
Application
->
CheckPermission
(
$section_name
.
'.view'
,
1
))
continue
;
$tab_data
=&
$sections_helper
->
getSectionData
(
$section_name
);
$block_params
[
't'
]
=
$tab_data
[
'url'
][
't'
];
$block_params
[
'title'
]
=
$tab_data
[
'label'
];
$block_params
[
'main_prefix'
]
=
$section_data
[
'SectionPrefix'
];
$ret
.=
$this
->
Application
->
ParseBlock
(
$block_params
);
}
return
$ret
;
}
/**
* Returns list of module item tabs that have view permission in current category
*
* @param Array $params
*/
function
ListCatalogTabs
(
$params
)
{
$ret
=
''
;
$special
=
isset
(
$params
[
'special'
])
?
$params
[
'special'
]
:
''
;
$replace_main
=
isset
(
$params
[
'replace_m'
])
&&
$params
[
'replace_m'
];
$skip_prefixes
=
isset
(
$params
[
'skip_prefixes'
])
?
explode
(
','
,
$params
[
'skip_prefixes'
])
:
Array
();
$block_params
=
Array
(
'name'
=>
$params
[
'render_as'
]);
foreach
(
$this
->
Application
->
ModuleInfo
as
$module_name
=>
$module_info
)
{
$prefix
=
$module_info
[
'Var'
];
if
(
in_array
(
$prefix
,
$skip_prefixes
)
||
!
$this
->
Application
->
prefixRegistred
(
$prefix
)
||
!
$this
->
Application
->
getUnitOption
(
$prefix
,
'CatalogItem'
))
continue
;
if
(
$prefix
==
'm'
&&
$replace_main
)
$prefix
=
'c'
;
$label
=
$this
->
Application
->
getUnitOption
(
$prefix
,
$params
[
'title_property'
]);
$block_params
[
'title'
]
=
$label
;
$block_params
[
'prefix'
]
=
$prefix
;
$ret
.=
$this
->
Application
->
ParseBlock
(
$block_params
);
}
return
$ret
;
}
function
FCKEditor
(
$params
)
{
if
(
file_exists
(
FULL_PATH
.
'/core/cmseditor/fckeditor.php'
))
{
$editor_path
=
'core/cmseditor/'
;
}
else
{
$editor_path
=
'admin/editor/cmseditor/'
;
}
include_once
(
FULL_PATH
.
'/'
.
$editor_path
.
'/fckeditor.php'
);
$oFCKeditor
=
new
FCKeditor
(
$params
[
'name'
]);
$oFCKeditor
->
BasePath
=
BASE_PATH
.
'/'
.
$editor_path
;
$oFCKeditor
->
Width
=
$params
[
'width'
]
;
$oFCKeditor
->
Height
=
$params
[
'height'
]
;
$oFCKeditor
->
ToolbarSet
=
'Advanced'
;
$oFCKeditor
->
Value
=
''
;
if
(
$this
->
Application
->
isModuleEnabled
(
'In-Portal'
))
{
$config_path
=
$this
->
Application
->
BaseURL
().
'kernel/admin_templates/incs/inp_fckconfig.js'
;
}
else
{
$config_path
=
$this
->
Application
->
BaseURL
().
'core/admin_templates/js/inp_fckconfig.js'
;
}
$oFCKeditor
->
Config
=
Array
(
// 'UserFilesPath' => FULL_PATH.'/kernel/user_files',
'ProjectPath'
=>
BASE_PATH
.
'/'
,
'CustomConfigurationsPath'
=>
$config_path
,
// 'EditorAreaCSS' => $this->Application->BaseURL().'/themes/inportal_site/inc/inportal.css', //GetThemeCSS(),
//'StylesXmlPath' => '../../inp_styles.xml',
// 'Debug' => 1,
'Admin'
=>
1
,
'K4'
=>
1
,
);
return
$oFCKeditor
->
CreateHtml
();
}
/**
* Allows to construct link for opening any type of catalog item selector
*
* @param Array $params
* @return string
*/
function
SelectorLink
(
$params
)
{
$mode
=
'catalog'
;
if
(
isset
(
$params
[
'mode'
]))
{
// {catalog, advanced_view}
$mode
=
$params
[
'mode'
];
unset
(
$params
[
'mode'
]);
}
$params
[
't'
]
=
'in-portal/item_selector/item_selector_'
.
$mode
;
$default_params
=
Array
(
'no_amp'
=>
1
,
'pass'
=>
'all,'
.
$params
[
'prefix'
]);
unset
(
$params
[
'prefix'
]);
$pass_through
=
Array
();
if
(
isset
(
$params
[
'tabs_dependant'
]))
{
// {yes, no}
$pass_through
[
'td'
]
=
$params
[
'tabs_dependant'
];
unset
(
$params
[
'tabs_dependant'
]);
}
if
(
isset
(
$params
[
'selection_mode'
]))
{
// {single, multi}
$pass_through
[
'tm'
]
=
$params
[
'selection_mode'
];
unset
(
$params
[
'selection_mode'
]);
}
if
(
isset
(
$params
[
'tab_prefixes'
]))
{
// {all, none, <comma separated prefix list}
$pass_through
[
'tp'
]
=
$params
[
'tab_prefixes'
];
unset
(
$params
[
'tab_prefixes'
]);
}
if
(
$pass_through
)
{
// add pass_through to selector url if any
$params
[
'pass_through'
]
=
implode
(
','
,
array_keys
(
$pass_through
));
$params
=
array_merge_recursive2
(
$params
,
$pass_through
);
}
// user can override default parameters (except pass_through of course)
$params
=
array_merge_recursive2
(
$default_params
,
$params
);
return
$this
->
Application
->
ProcessParsedTag
(
'm'
,
't'
,
$params
);
}
function
TimeFrame
(
$params
)
{
$w
=
adodb_date
(
'w'
);
$m
=
adodb_date
(
'm'
);
$y
=
adodb_date
(
'Y'
);
//FirstDayOfWeek is 0 for Sunday and 1 for Monday
$fdow
=
$this
->
Application
->
ConfigValue
(
'FirstDayOfWeek'
);
if
(
$fdow
&&
$w
==
0
)
$w
=
7
;
$today_start
=
adodb_mktime
(
0
,
0
,
0
,
adodb_date
(
'm'
),
adodb_date
(
'd'
),
$y
);
$first_day_of_this_week
=
$today_start
-
(
$w
-
$fdow
)*
86400
;
$first_day_of_this_month
=
adodb_mktime
(
0
,
0
,
0
,
$m
,
1
,
$y
);
$this_quater
=
ceil
(
$m
/
3
);
$this_quater_start
=
adodb_mktime
(
0
,
0
,
0
,
$this_quater
*
3
-
2
,
1
,
$y
);
switch
(
$params
[
'type'
])
{
case
'last_week_start'
:
$timestamp
=
$first_day_of_this_week
-
86400
*
7
;
break
;
case
'last_week_end'
:
$timestamp
=
$first_day_of_this_week
-
1
;
break
;
case
'last_month_start'
:
$timestamp
=
$m
==
1
?
adodb_mktime
(
0
,
0
,
0
,
12
,
1
,
$y
-
1
)
:
adodb_mktime
(
0
,
0
,
0
,
$m
-
1
,
1
,
$y
);
break
;
case
'last_month_end'
:
$timestamp
=
$first_day_of_this_month
=
adodb_mktime
(
0
,
0
,
0
,
$m
,
1
,
$y
)
-
1
;
break
;
case
'last_quater_start'
:
$timestamp
=
$this_quater
==
1
?
adodb_mktime
(
0
,
0
,
0
,
10
,
1
,
$y
-
1
)
:
adodb_mktime
(
0
,
0
,
0
,(
$this_quater
-
1
)*
3
-
2
,
1
,
$y
);
break
;
case
'last_quater_end'
:
$timestamp
=
$this_quater_start
-
1
;
break
;
case
'last_6_months_start'
:
$timestamp
=
$m
<=
6
?
adodb_mktime
(
0
,
0
,
0
,
$m
+
6
,
1
,
$y
-
1
)
:
adodb_mktime
(
0
,
0
,
0
,
$m
-
6
,
1
,
$y
);
break
;
case
'last_year_start'
:
$timestamp
=
adodb_mktime
(
0
,
0
,
0
,
1
,
1
,
$y
-
1
);
break
;
case
'last_year_end'
:
$timestamp
=
adodb_mktime
(
23
,
59
,
59
,
12
,
31
,
$y
-
1
);
break
;
}
if
(
isset
(
$params
[
'format'
]))
{
$format
=
$params
[
'format'
];
if
(
preg_match
(
"/_regional_(.*)/"
,
$format
,
$regs
))
{
$lang
=&
$this
->
Application
->
recallObject
(
'lang.current'
);
$format
=
$lang
->
GetDBField
(
$regs
[
1
]);
}
return
adodb_date
(
$format
,
$timestamp
);
}
return
$timestamp
;
}
function
CheckPermCache
(
$params
)
{
if
(
$this
->
Conn
->
GetOne
(
'SELECT Data FROM '
.
TABLE_PREFIX
.
'Cache WHERE VarName =
\'
ForcePermCacheUpdate
\'
'
))
{
$this
->
Application
->
Redirect
(
$params
[
'cache_update_t'
],
array
(
'continue'
=>
1
));
}
}
/**
* Checks if current protocol is SSL
*
* @param Array $params
* @return int
*/
function
IsSSL
(
$params
)
{
return
(
PROTOCOL
==
'https://'
)?
1
:
0
;
}
function
PrintColumns
(
$params
)
{
$picker_helper
=&
$this
->
Application
->
RecallObject
(
'ColumnPickerHelper'
);
$picker_helper
->
SetGridName
(
$this
->
Application
->
GetLinkedVar
(
'grid_name'
));
/* @var $picker_helper kColumnPickerHelper */
$main_prefix
=
$this
->
Application
->
RecallVar
(
'main_prefix'
);
$cols
=
$picker_helper
->
LoadColumns
(
$main_prefix
);
$o
=
''
;
if
(
isset
(
$params
[
'hidden'
])
&&
$params
[
'hidden'
])
{
foreach
(
$cols
[
'hidden_fields'
]
as
$col
)
{
$title
=
$this
->
Application
->
Phrase
(
$cols
[
'titles'
][
$col
]);
$o
.=
"<option value='$col'>"
.
$title
;
}
}
else
{
foreach
(
$cols
[
'order'
]
as
$col
)
{
if
(
in_array
(
$col
,
$cols
[
'hidden_fields'
]))
continue
;
$title
=
$this
->
Application
->
Phrase
(
$cols
[
'titles'
][
$col
]);
$o
.=
"<option value='$col'>"
.
$title
;
}
}
return
$o
;
}
/**
* Allows to set popup size (key - current template name)
*
* @param Array $params
*/
function
SetPopupSize
(
$params
)
{
if
(!
$this
->
UsePopups
(
$params
))
return
;
$width
=
$params
[
'width'
];
$height
=
$params
[
'height'
];
if
(
$this
->
Application
->
GetVar
(
'ajax'
)
==
'yes'
)
{
// during AJAX request just output size
die
(
$width
.
'x'
.
$height
);
}
$t
=
$this
->
Application
->
GetVar
(
't'
);
$sql
=
'SELECT *
FROM '
.
TABLE_PREFIX
.
'PopupSizes
WHERE TemplateName = '
.
$this
->
Conn
->
qstr
(
$t
);
$popup_info
=
$this
->
Conn
->
GetRow
(
$sql
);
if
(!
$popup_info
)
{
// create new popup size record
$fields_hash
=
Array
(
'TemplateName'
=>
$t
,
'PopupWidth'
=>
$width
,
'PopupHeight'
=>
$height
,
);
$this
->
Conn
->
doInsert
(
$fields_hash
,
TABLE_PREFIX
.
'PopupSizes'
);
}
elseif
(
$popup_info
[
'PopupWidth'
]
!=
$width
||
$popup_info
[
'PopupHeight'
]
!=
$height
)
{
// popup found and size in tag differs from one in db -> update in db
$fields_hash
=
Array
(
'PopupWidth'
=>
$width
,
'PopupHeight'
=>
$height
,
);
$this
->
Conn
->
doUpdate
(
$fields_hash
,
TABLE_PREFIX
.
'PopupSizes'
,
'PopupId = '
.
$popup_info
[
'PopupId'
]);
}
}
/**
* Returns popup size (by template), if not cached, then parse template to get value
*
* @param Array $params
* @return string
*/
function
GetPopupSize
(
$params
)
{
$t
=
$this
->
Application
->
GetVar
(
'template_name'
);
$sql
=
'SELECT *
FROM '
.
TABLE_PREFIX
.
'PopupSizes
WHERE TemplateName = '
.
$this
->
Conn
->
qstr
(
$t
);
$popup_info
=
$this
->
Conn
->
GetRow
(
$sql
);
if
(!
$popup_info
)
{
$this
->
Application
->
InitParser
();
$this
->
Application
->
ParseBlock
(
array
(
'name'
=>
$t
));
// dies when SetPopupSize tag found & in ajax requrest
return
'750x400'
;
// tag SetPopupSize not found in template -> use default size
}
return
$popup_info
[
'PopupWidth'
].
'x'
.
$popup_info
[
'PopupHeight'
];
}
function
UsePopups
(
$params
)
{
return
(
int
)
$this
->
Application
->
ConfigValue
(
'UsePopups'
);
}
function
UseToolbarLabels
(
$params
)
{
return
(
int
)
$this
->
Application
->
ConfigValue
(
'UseToolbarLabels'
);
}
/**
* Checks if debug mode enabled (optionally) and specified constant is on
*
* @param Array $params
* @return bool
*/
function
ConstOn
(
$params
)
{
$constant_name
=
$this
->
SelectParam
(
$params
,
'name,const'
);
$debug_mode
=
isset
(
$params
[
'debug_mode'
])
&&
$params
[
'debug_mode'
]
?
$this
->
Application
->
isDebugMode
()
:
true
;
return
$debug_mode
&&
constOn
(
$constant_name
);
}
/**
* Builds link to last template in main frame of admin
*
* @param Array $params
* @return string
*/
function
MainFrameLink
(
$params
)
{
$persistent
=
isset
(
$params
[
'persistent'
])
&&
$params
[
'persistent'
];
if
(
$persistent
)
{
// check last_template in persistent session
$last_template
=
$this
->
Application
->
RecallPersistentVar
(
'last_template_popup'
);
}
else
{
// check last_template in session
$last_template
=
$this
->
Application
->
RecallVar
(
'last_template_popup'
);
// because of m_opener=s there
}
if
(!
$last_template
)
{
$params
[
'persistent'
]
=
1
;
return
$persistent
?
false
:
$this
->
MainFrameLink
(
$params
);
}
list
(
$index_file
,
$env
)
=
explode
(
'|'
,
$last_template
);
$vars
=
$this
->
Application
->
HttpQuery
->
processQueryString
(
$env
,
'pass'
);
$recursion_templates
=
Array
(
'login'
,
'index'
,
'no_permission'
);
if
(
isset
(
$vars
[
'admin'
])
&&
$vars
[
'admin'
]
==
1
)
{
// index template doesn't begin recursion on front-end (in admin frame)
$vars
[
'm_theme'
]
=
''
;
if
(
isset
(
$params
[
'm_opener'
])
&&
$params
[
'm_opener'
]
==
'r'
)
{
// front-end link for highlighting purposes
$vars
[
't'
]
=
'index'
;
$vars
[
'm_cat_id'
]
=
$this
->
Application
->
findModule
(
'Name'
,
'Proj-CMS'
,
'RootCat'
);
}
unset
(
$recursion_templates
[
array_search
(
'index'
,
$recursion_templates
)]);
}
if
(
in_array
(
$vars
[
't'
],
$recursion_templates
))
{
// prevents redirect recursion OR old in-portal pages
$params
[
'persistent'
]
=
1
;
return
$persistent
?
false
:
$this
->
MainFrameLink
(
$params
);
}
$vars
=
array_merge_recursive2
(
$vars
,
$params
);
$t
=
$vars
[
't'
];
unset
(
$vars
[
't'
],
$vars
[
'persistent'
]);
return
$this
->
Application
->
HREF
(
$t
,
''
,
$vars
,
$index_file
);
}
function
AdminSkin
(
$params
)
{
static
$style
;
if
(!
isset
(
$style
))
{
$style
=
$this
->
Conn
->
GetRow
(
'SELECT * FROM '
.
TABLE_PREFIX
.
'Skins WHERE IsPrimary = 1'
);
}
$css_path
=
WRITEABLE
.
'/user_files'
;
$css_url
=
$this
->
Application
->
BaseURL
(
WRITEBALE_BASE
).
'user_files/'
;
if
(
isset
(
$params
[
'type'
])
&&
$params
[
'type'
]
==
'logo'
)
{
return
$style
[
'Logo'
]
?
$css_url
.
$style
[
'Logo'
]
:
''
;
}
$last_compiled
=
$style
[
'LastCompiled'
];
$style_name
=
strtolower
(
$style
[
'Name'
]
);
if
(
file_exists
(
$css_path
.
'/'
.
'admin-'
.
$style_name
.
'-'
.
$last_compiled
.
'.css'
)
)
{
$ret
=
$css_url
.
'admin-'
.
$style_name
.
'-'
.
$last_compiled
.
'.css'
;
}
else
{
// search for previously compiled stylesheet
$last_compiled
=
0
;
if
(
$dh
=
opendir
(
$css_path
)
)
{
while
(
(
$file
=
readdir
(
$dh
))
!==
false
)
{
if
(
preg_match
(
'/admin-(.*)-([
\d
]+).css/'
,
$file
,
$rets
)
)
{
if
(
$rets
[
1
]
==
$style_name
&&
$rets
[
2
]
>
$last_compiled
)
$last_compiled
=
$rets
[
2
];
}
}
closedir
(
$dh
);
}
if
(
$last_compiled
)
{
// found
$ret
=
$css_url
.
'admin-'
.
$style_name
.
'-'
.
$last_compiled
.
'.css'
;
}
else
{
// not found (try to compile on the fly)
$object
=&
$this
->
Application
->
recallObject
(
'skin.-item'
,
null
,
Array
(
'skip_autoload'
=>
true
));
/* @var $object kDBItem */
$skin_eh
=&
$this
->
Application
->
recallObject
(
'skin_EventHandler'
);
/* @var $skin_eh SkinEventHandler */
$object
->
Load
(
1
,
'IsPrimary'
);
$skin_eh
->
Compile
(
$object
);
$ret
=
$css_url
.
'admin-'
.
$style_name
.
'-'
.
adodb_mktime
().
'.css'
;
}
}
if
(
isset
(
$params
[
'file_only'
]))
return
$ret
;
return
'<link rel="stylesheet" rev="stylesheet" href="'
.
$ret
.
'" type="text/css" media="screen" />'
;
}
}
?>
Event Timeline
Log In to Comment