Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F1215633
main_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, Nov 12, 12:48 AM
Size
30 KB
Mime Type
text/x-php
Expires
Fri, Nov 14, 12:48 AM (2 h, 46 m)
Engine
blob
Format
Raw Data
Handle
794360
Attached To
rINP In-Portal
main_processor.php
View Options
<?php
class
kMainTagProcessor
extends
TagProcessor
{
function
Init
(
$prefix
,
$special
,
$event_params
=
null
)
{
parent
::
Init
(
$prefix
,
$special
,
$event_params
);
$actions
=&
$this
->
Application
->
recallObject
(
'kActions'
);
$actions
->
Set
(
't'
,
$this
->
Application
->
GetVar
(
't'
));
$actions
->
Set
(
'sid'
,
$this
->
Application
->
GetSID
());
$actions
->
Set
(
'm_opener'
,
$this
->
Application
->
GetVar
(
'm_opener'
)
);
}
/**
* Used to handle calls where tag name
* match with existing php function name
*
* @param Tag $tag
* @return string
*/
function
ProcessTag
(&
$tag
)
{
if
(
$tag
->
Tag
==
'include'
)
$tag
->
Tag
=
'MyInclude'
;
return
parent
::
ProcessTag
(
$tag
);
}
/**
* Base folder for all template includes
*
* @param Array $params
* @return string
*/
function
TemplatesBase
(
$params
)
{
if
(
$this
->
Application
->
IsAdmin
())
{
$module
=
isset
(
$params
[
'module'
])
?
$params
[
'module'
]
:
'core'
;
if
(
$module
==
'in-portal'
)
{
$module
=
'kernel'
;
}
$path
=
preg_replace
(
'/
\/
(.*?)
\/
(.*)/'
,
$module
.
'/
\\
2'
,
THEMES_PATH
);
// remove leading slash + substitute module
}
else
{
$path
=
mb_substr
(
THEMES_PATH
,
1
);
$module
=
isset
(
$params
[
'module'
])
?
$params
[
'module'
]
:
'core'
;
if
(
mb_strtolower
(
$module
)
==
'in-portal'
)
{
$module_folder
=
'platform'
;
}
else
{
$module_folder
=
$this
->
Application
->
findModule
(
'Name'
,
$module
,
'TemplatePath'
);
}
$path
.=
'/'
.
trim
(
$module_folder
,
'/'
).
'/'
;
}
return
$this
->
Application
->
BaseURL
().
$path
;
}
/**
* Creates <base href ..> HTML tag for all templates
* affects future css, js files and href params of links
*
* @return string
* @access public
*/
function
Base_Ref
(
$params
)
{
return
'<base href="'
.
$this
->
TemplatesBase
(
$params
).
'/" />'
;
}
/**
* Returns base url for web-site
*
* @return string
* @access public
*/
function
BaseURL
()
{
return
$this
->
Application
->
BaseURL
();
}
//for compatability with K3 tags
function
Base
(
$params
)
{
return
$this
->
TemplatesBase
(
$params
).
'/'
;
}
function
ProjectBase
(
$params
)
{
return
$this
->
Application
->
BaseURL
();
}
/*function Base($params)
{
return $this->Application->BaseURL().$params['add'];
}*/
/**
* Used to create link to any template.
* use "pass" paramter if "t" tag to specify
* prefix & special of object to be represented
* in resulting url
*
* @param Array $params
* @return string
* @access public
*/
function
T
(
$params
)
{
//by default link to current template
$t
=
$this
->
SelectParam
(
$params
,
't,template'
);
unset
(
$params
[
't'
]);
unset
(
$params
[
'template'
]);
$prefix
=
isset
(
$params
[
'prefix'
])
?
$params
[
'prefix'
]
:
''
;
unset
(
$params
[
'prefix'
]);
$index_file
=
isset
(
$params
[
'index_file'
])
?
$params
[
'index_file'
]
:
null
;
unset
(
$params
[
'index_file'
]);
return
$this
->
Application
->
HREF
(
$t
,
$prefix
,
$params
,
$index_file
);
}
function
Link
(
$params
)
{
if
(
isset
(
$params
[
'template'
]))
{
$params
[
't'
]
=
$params
[
'template'
];
unset
(
$params
[
'template'
]);
}
if
(!
isset
(
$params
[
'pass'
])
&&
!
isset
(
$params
[
'no_pass'
]))
$params
[
'pass'
]
=
'm'
;
if
(
isset
(
$params
[
'no_pass'
]))
unset
(
$params
[
'no_pass'
]);
if
(
$this
->
Application
->
GetVar
(
'admin'
)
)
$params
[
'admin'
]
=
1
;
return
$this
->
T
(
$params
);
}
function
Env
(
$params
)
{
$t
=
$params
[
'template'
];
unset
(
$params
[
'template'
]);
return
$this
->
Application
->
BuildEnv
(
$t
,
$params
,
'm'
,
null
,
false
);
}
function
FormAction
(
$params
)
{
$params
[
'pass'
]
=
'all,m'
;
$params
[
'pass_category'
]
=
1
;
return
$this
->
Application
->
HREF
(
''
,
''
,
$params
);
}
/*// NEEDS TEST
function Config($params)
{
return $this->Application->ConfigOption($params['var']);
}
function Object($params)
{
$name = $params['name'];
$method = $params['method'];
$tmp =& $this->Application->recallObject($name);
if ($tmp != null) {
if (method_exists($tmp, $method))
return $tmp->$method($params);
else
echo "Method $method does not exist in object ".get_class($tmp)." named $name<br>";
}
else
echo "Object $name does not exist in the appliaction<br>";
}*/
/**
* Tag, that always returns true.
* For parser testing purposes
*
* @param Array $params
* @return bool
* @access public
*/
function
True
(
$params
)
{
return
true
;
}
/**
* Tag, that always returns false.
* For parser testing purposes
*
* @param Array $params
* @return bool
* @access public
*/
function
False
(
$params
)
{
return
false
;
}
/**
* Returns block parameter by name
*
* @param Array $params
* @return stirng
* @access public
*/
function
Param
(
$params
)
{
//$parser =& $this->Application->recallObject('TemplateParser');
$name
=
$params
[
'name'
];
if
(
isset
(
$this
->
Application
->
LateParsed
[
$name
]))
{
$f
=
$this
->
Application
->
PreParsedBlocks
[
'capture_'
.
$name
.
$this
->
Application
->
LateParsed
[
$name
]];
$this
->
Application
->
Parser
->
SetParam
(
$name
,
$f
(
array
()));
}
$res
=
$this
->
Application
->
Parser
->
GetParam
(
$params
[
'name'
]);
if
(
$res
===
false
)
$res
=
''
;
if
(
isset
(
$params
[
'plus'
]))
$res
+=
$params
[
'plus'
];
return
$res
;
}
function
DefaultParam
(
$params
)
{
foreach
(
$params
as
$key
=>
$val
)
{
if
(
$this
->
Application
->
Parser
->
GetParam
(
$key
)
===
false
)
{
$this
->
Application
->
Parser
->
SetParam
(
$key
,
$val
);
}
}
}
/**
* Gets value of specified field from specified prefix_special and set it as parser param
*
* @param Array $params
*/
/*function SetParam($params)
{
// <inp2:m_SetParam param="custom_name" src="cf:FieldName"/>
list($prefix_special, $field_name) = explode(':', $params['src']);
$object =& $this->Application->recallObject($prefix_special);
$name = $this->SelectParam($params, 'param,name,var');
$this->Application->Parser->SetParam($name, $object->GetField($field_name) );
}*/
/**
* Compares block parameter with value specified
*
* @param Array $params
* @return bool
* @access public
*/
function
ParamEquals
(
$params
)
{
//$parser =& $this->Application->recallObject('TemplateParser');
$name
=
$this
->
SelectParam
(
$params
,
'name,var,param'
);
$value
=
$params
[
'value'
];
return
(
$this
->
Application
->
Parser
->
GetParam
(
$name
)
==
$value
);
}
/*function PHP_Self($params)
{
return $HTTP_SERVER_VARS['PHP_SELF'];
}
*/
/**
* Returns session variable value by name
*
* @param Array $params
* @return string
* @access public
*/
function
Recall
(
$params
)
{
$var_name
=
$this
->
SelectParam
(
$params
,
'name,var,param'
);
if
(
isset
(
$params
[
'persistent'
])
&&
$params
[
'persistent'
])
{
$ret
=
$this
->
Application
->
RecallPersistentVar
(
$var_name
);
}
else
{
$ret
=
$this
->
Application
->
RecallVar
(
$var_name
);
}
$ret
=
(
$ret
===
false
&&
isset
(
$params
[
'no_null'
]))
?
''
:
$ret
;
if
(
getArrayValue
(
$params
,
'special'
)
||
getArrayValue
(
$params
,
'htmlchars'
))
{
$ret
=
htmlspecialchars
(
$ret
);
}
if
(
getArrayValue
(
$params
,
'urlencode'
))
{
$ret
=
urlencode
(
$ret
);
}
return
$ret
;
}
function
RemoveVar
(
$params
)
{
$this
->
Application
->
RemoveVar
(
$this
->
SelectParam
(
$params
,
'name,var,param'
)
);
}
// bad style to store something from template to session !!! (by Alex)
// Used here only to test how session works, nothing more
function
Store
(
$params
)
{
//echo"Store $params[name]<br>";
$name
=
$params
[
'name'
];
$value
=
$params
[
'value'
];
$this
->
Application
->
StoreVar
(
$name
,
$value
);
}
/**
* Sets application variable value(-s)
*
* @param Array $params
* @access public
*/
function
Set
(
$params
)
{
foreach
(
$params
as
$param
=>
$value
)
{
$this
->
Application
->
SetVar
(
$param
,
$value
);
}
}
/**
* Increment application variable
* specified by number specified
*
* @param Array $params
* @access public
*/
function
Inc
(
$params
)
{
$this
->
Application
->
SetVar
(
$params
[
'param'
],
$this
->
Application
->
GetVar
(
$params
[
'param'
])
+
$params
[
'by'
]);
}
/**
* Retrieves application variable
* value by name
*
* @param Array $params
* @return string
* @access public
*/
function
Get
(
$params
)
{
$ret
=
$this
->
Application
->
GetVar
(
$this
->
SelectParam
(
$params
,
'name,var,param'
),
''
);
return
getArrayValue
(
$params
,
'htmlchars'
)
?
htmlspecialchars
(
$ret
)
:
$ret
;
}
/**
* Retrieves application constant
* value by name
*
* @param Array $params
* @return string
* @access public
*/
function
GetConst
(
$params
)
{
return
defined
(
$this
->
SelectParam
(
$params
,
'name,const'
))
?
constant
(
$this
->
SelectParam
(
$params
,
'name,const,param'
))
:
''
;
}
/**
* Retrieves configuration variable value by name
*
* @param Array $params
* @return string
* @access public
*/
function
GetConfig
(
$params
)
{
$config_name
=
$this
->
SelectParam
(
$params
,
'name,var'
);
$ret
=
$this
->
Application
->
ConfigValue
(
$config_name
);
if
(
getArrayValue
(
$params
,
'escape'
)
)
$ret
=
addslashes
(
$ret
);
return
$ret
;
}
function
ConfigEquals
(
$params
)
{
$option
=
$this
->
SelectParam
(
$params
,
'name,option,var'
);
return
$this
->
Application
->
ConfigValue
(
$option
)
==
getArrayValue
(
$params
,
'value'
);
}
/**
* Creates all hidden fields
* needed for kernel_form
*
* @param Array $params
* @return string
* @access public
*/
function
DumpSystemInfo
(
$params
)
{
$actions
=&
$this
->
Application
->
recallObject
(
'kActions'
);
$actions
->
Set
(
't'
,
$this
->
Application
->
GetVar
(
't'
)
);
$params
=
$actions
->
GetParams
();
$o
=
''
;
foreach
(
$params
AS
$name
=>
$val
)
{
$o
.=
"<input type='hidden' name='$name' id='$name' value='$val'>
\n
"
;
}
return
$o
;
}
/**
* Used for search sidebox on front-end only
*
* @param Array $params
* @return string
* @author Alex
*/
function
GetFormHiddens
(
$params
)
{
$t
=
$this
->
SelectParam
(
$params
,
'template,t'
);
unset
(
$params
[
'template'
]);
$form_fields
=
Array
();
if
(
$this
->
Application
->
RewriteURLs
())
{
$session
=&
$this
->
Application
->
recallObject
(
'Session'
);
if
(
$session
->
NeedQueryString
())
{
$form_fields
[
'sid'
]
=
$this
->
Application
->
GetSID
();
}
}
else
{
$form_fields
[
'env'
]
=
$this
->
Application
->
BuildEnv
(
$t
,
$params
,
'm'
,
null
,
false
);
}
if
(
$this
->
Application
->
GetVar
(
'admin'
)
==
1
)
{
$form_fields
[
'admin'
]
=
1
;
}
$ret
=
''
;
$field_tpl
=
'<input type="hidden" name="%1$s" id="%1$s" value="%2$s"/>'
.
"
\n
"
;
foreach
(
$form_fields
as
$form_field
=>
$field_value
)
{
$ret
.=
sprintf
(
$field_tpl
,
$form_field
,
$field_value
);
}
return
$ret
;
}
function
Odd_Even
(
$params
)
{
$odd
=
$params
[
'odd'
];
$even
=
$params
[
'even'
];
if
(!
isset
(
$params
[
'var'
]))
{
$var
=
'odd_even'
;
}
else
{
$var
=
$params
[
'var'
];
}
if
(
$this
->
Application
->
GetVar
(
$var
)
==
'even'
)
{
if
(!
isset
(
$params
[
'readonly'
])
||
!
$params
[
'readonly'
])
{
$this
->
Application
->
SetVar
(
$var
,
'odd'
);
}
return
$even
;
}
else
{
if
(!
isset
(
$params
[
'readonly'
])
||
!
$params
[
'readonly'
])
{
$this
->
Application
->
SetVar
(
$var
,
'even'
);
}
return
$odd
;
}
}
/**
* Returns phrase translation by name
*
* @param Array $params
* @return string
* @access public
*/
function
Phrase
(
$params
)
{
// m:phrase name="phrase_name" default="Tr-alala" updated="2004-01-29 12:49"
$phrase_name
=
$this
->
SelectParam
(
$params
,
'label,name,title'
);
if
(
isset
(
$params
[
'source'
])
&&
$params
[
'source'
])
{
$phrase_name
=
$this
->
Application
->
GetVar
(
$phrase_name
);
if
(
array_key_exists
(
'default'
,
$params
)
&&
!
$phrase_name
)
{
$phrase_name
=
$params
[
'default'
];
}
}
$translation
=
$this
->
Application
->
Phrase
(
$phrase_name
);
if
(
isset
(
$params
[
'escape'
])
&&
$params
[
'escape'
])
{
$translation
=
htmlspecialchars
(
$translation
,
ENT_QUOTES
);
$translation
=
addslashes
(
$translation
);
}
return
$translation
;
}
// for tabs
function
is_active
(
$params
)
{
$test_templ
=
$this
->
SelectParam
(
$params
,
'templ,template,t'
);
if
(
!
getArrayValue
(
$params
,
'allow_empty'
)
)
{
$if_true
=
getArrayValue
(
$params
,
'true'
)
?
$params
[
'true'
]
:
1
;
$if_false
=
getArrayValue
(
$params
,
'false'
)
?
$params
[
'false'
]
:
0
;
}
else
{
$if_true
=
$params
[
'true'
];
$if_false
=
$params
[
'false'
];
}
if
(
preg_match
(
"/^"
.
str_replace
(
'/'
,
'
\/
'
,
$test_templ
).
"/i"
,
$this
->
Application
->
GetVar
(
't'
)))
{
return
$if_true
;
}
else
{
return
$if_false
;
}
}
function
IsNotActive
(
$params
)
{
return
!
$this
->
is_active
(
$params
);
}
function
IsActive
(
$params
)
{
return
$this
->
is_active
(
$params
);
}
function
is_t_active
(
$params
)
{
return
$this
->
is_active
(
$params
);
}
function
CurrentTemplate
(
$params
)
{
return
$this
->
is_active
(
$params
);
}
/**
* Checks if session variable
* specified by name value match
* value passed as parameter
*
* @param Array $params
* @return string
* @access public
*/
function
RecallEquals
(
$params
)
{
$name
=
$this
->
SelectParam
(
$params
,
'name,var'
);
$value
=
$params
[
'value'
];
if
(
isset
(
$params
[
'persistent'
])
&&
$params
[
'persistent'
])
{
return
$this
->
Application
->
RecallPersistentVar
(
$name
)
==
$value
;
}
return
(
$this
->
Application
->
RecallVar
(
$name
)
==
$value
);
}
/**
* Checks if application variable
* specified by name value match
* value passed as parameter
*
* @param Array $params
* @return bool
* @access public
*/
function
GetEquals
(
$params
)
{
$name
=
$this
->
SelectParam
(
$params
,
'var,name,param'
);
$value
=
$params
[
'value'
];
if
(
$this
->
Application
->
GetVar
(
$name
)
==
$value
)
{
return
1
;
}
}
/**
* Includes template
* and returns it's
* parsed version
*
* @param Array $params
* @return string
* @access public
*/
function
MyInclude
(
$params
)
{
if
(
defined
(
'NPARSER'
)
&&
NPARSER
)
{
return
$this
->
Application
->
Parser
->
IncludeTemplate
(
$params
,
isset
(
$params
[
'is_silent'
])
?
1
:
0
);
}
$BlockParser
=&
$this
->
Application
->
makeClass
(
'TemplateParser'
);
/* @var $BlockParser TemplateParser */
// $BlockParser->SetParams($params);
$parser
=&
$this
->
Application
->
Parser
;
$this
->
Application
->
Parser
=&
$BlockParser
;
// this is for the parser to know the master template in case an error occurs,
// ParseTemplate will reset it anyway, but this will allow error handler to display the tempalte
// which tries to include missing template for example
$this
->
Application
->
Parser
->
TemplateName
=
$parser
->
TemplateName
;
$t
=
$this
->
SelectParam
(
$params
,
't,template,block,name'
);
$t
=
eregi_replace
(
"
\.
tpl$"
,
''
,
$t
);
if
(!
$t
)
{
trigger_error
(
'Template name not specified in <b><inp2:m_include .../></b> tag'
,
E_USER_ERROR
);
}
if
(
isset
(
$this
->
Application
->
PreParsedBlocks
[
$t
])
)
{
$params
[
'name'
]
=
$t
;
$res
=
$this
->
Application
->
ParseBlock
(
$params
);
}
else
{
$res
=
$BlockParser
->
ParseTemplate
(
$t
,
1
,
$params
,
isset
(
$params
[
'is_silent'
])
?
1
:
0
);
}
if
(!
$BlockParser
->
DataExists
&&
((
isset
(
$params
[
'data_exists'
])
&&
$params
[
'data_exists'
])
||
isset
(
$params
[
'block_no_data'
])))
{
if
(
$block_no_data
=
getArrayValue
(
$params
,
'block_no_data'
))
{
if
(
isset
(
$this
->
Application
->
PreParsedBlocks
[
$block_no_data
])
)
{
// block_no_data is another block name
$res
=
$this
->
Application
->
ParseBlock
(
Array
(
'name'
=>
$block_no_data
));
}
else
{
// block_no_data is template name (only looks through real templates)
$res
=
$BlockParser
->
ParseTemplate
(
$block_no_data
,
1
,
Array
(),
getArrayValue
(
$params
,
'is_silent'
));
}
}
else
{
$res
=
''
;
}
}
$this
->
Application
->
Parser
=&
$parser
;
$this
->
Application
->
Parser
->
DataExists
=
$this
->
Application
->
Parser
->
DataExists
||
$BlockParser
->
DataExists
;
if
(
isset
(
$params
[
'return_params'
])
&&
$params
[
'return_params'
])
{
$new_params
=
array_merge
(
$this
->
Application
->
Parser
->
Params
,
$BlockParser
->
ParamsStack
[
0
]);
$this
->
Application
->
Parser
->
SetParams
(
$new_params
,
false
);
}
return
$res
;
}
function
ModuleInclude
(
$params
)
{
$ret
=
''
;
$block_params
=
array_merge
(
$params
,
Array
(
'is_silent'
=>
2
));
// don't make fatal errors in case if template is missing
$current_template
=
$this
->
Application
->
GetVar
(
't'
);
$skip_prefixes
=
isset
(
$params
[
'skip_prefixes'
])
?
explode
(
','
,
$params
[
'skip_prefixes'
])
:
Array
();
foreach
(
$this
->
Application
->
ModuleInfo
as
$module_name
=>
$module_data
)
{
$module_key
=
mb_strtolower
(
$module_name
);
if
(
$module_name
==
'In-Portal'
)
{
// don't process In-Portal templates
continue
;
}
$module_prefix
=
$this
->
Application
->
IsAdmin
()
?
$module_key
.
'/'
:
rtrim
(
$module_data
[
'TemplatePath'
],
'/'
).
'/'
;
$block_params
[
't'
]
=
$module_prefix
.
$this
->
SelectParam
(
$params
,
$module_key
.
'_template,'
.
$module_key
.
'_t,template,t'
);
if
(
$block_params
[
't'
]
==
$current_template
||
in_array
(
$module_data
[
'Var'
],
$skip_prefixes
))
continue
;
$no_data
=
$this
->
SelectParam
(
$params
,
$module_key
.
'_block_no_data,block_no_data'
);
if
(
$no_data
)
{
$block_params
[
'block_no_data'
]
=
$module_prefix
.
'/'
.
$no_data
;
}
$ret
.=
$this
->
MyInclude
(
$block_params
);
}
return
$ret
;
}
function
ModuleEnabled
(
$params
)
{
return
$this
->
Application
->
isModuleEnabled
(
$params
[
'module'
]
);
}
/*function Kernel_Scripts($params)
{
return '<script type="text/javascript" src="'.PROTOCOL.SERVER_NAME.BASE_PATH.'/kernel3/js/grid.js"></script>';
}*/
/*function GetUserPermission($params)
{
// echo"GetUserPermission $params[name]";
if ($this->Application->RecallVar('user_type') == 1)
return 1;
else {
$perm_name = $params[name];
$aPermissions = unserialize($this->Application->RecallVar('user_permissions'));
if ($aPermissions)
return $aPermissions[$perm_name];
}
}*/
/**
* Set's parser block param value
*
* @param Array $params
* @access public
*/
function
AddParam
(
$params
)
{
$parser
=&
$this
->
Application
->
Parser
;
// recallObject('TemplateParser');
foreach
(
$params
as
$param
=>
$value
)
{
$this
->
Application
->
SetVar
(
$param
,
$value
);
$parser
->
SetParam
(
$param
,
$value
);
$parser
->
AddParam
(
'/
\$
'
.
$param
.
'/'
,
$value
);
}
}
/*function ParseToVar($params)
{
$var = $params['var'];
$tagdata = $params['tag'];
$parser =& $this->Application->Parser; //recallObject('TemplateParser');
$res = $this->Application->ProcessTag($tagdata);
$parser->SetParam($var, $res);
$parser->AddParam('/\$'.$var.'/', $res);
return '';
}*/
/*function TagNotEmpty($params)
{
$tagdata = $params['tag'];
$res = $this->Application->ProcessTag($tagdata);
return $res != '';
}*/
/*function TagEmpty($params)
{
return !$this->TagNotEmpty($params);
}*/
/**
* Parses block and returns result
*
* @param Array $params
* @return string
* @access public
*/
function
ParseBlock
(
$params
)
{
$parser
=&
$this
->
Application
->
Parser
;
// recallObject('TemplateParser');
return
$parser
->
ParseBlock
(
$params
);
}
function
RenderElement
(
$params
)
{
if
(
isset
(
$params
[
'design'
])
&&
$params
[
'design'
])
{
$block_name
=
$params
[
'name'
];
if
(
$block_name
!=
'__this__'
)
{
// prepare content
$block_params
=
$params
;
$block_params
[
'template'
]
=
$block_name
;
$block_params
[
'return_params'
]
=
1
;
$block_params
[
'strip_nl'
]
=
2
;
$block_content
=
$this
->
MyInclude
(
$block_params
);
if
(
isset
(
$params
[
'data_exists'
])
&&
$params
[
'data_exists'
]
&&
!
$block_content
)
{
return
''
;
}
// prepare design
$block_params
=
Array
(
'content'
=>
$block_content
,
);
}
$block_params
[
'name'
]
=
$params
[
'design'
];
return
$this
->
Application
->
ParseBlock
(
$block_params
,
1
);
}
return
$this
->
ParseBlock
(
$params
);
}
function
RenderElements
(
$params
)
{
if
(!
isset
(
$params
[
'elements'
])
||
!
$params
[
'elements'
])
return
;
$elements
=
explode
(
','
,
$params
[
'elements'
]);
if
(
isset
(
$params
[
'skip'
])
&&
$params
[
'skip'
])
{
$tmp_skip
=
explode
(
','
,
$params
[
'skip'
]);
foreach
(
$tmp_skip
as
$elem
)
{
$skip
[]
=
trim
(
$elem
);
}
}
else
{
$skip
=
array
();
}
unset
(
$params
[
'elements'
]);
$o
=
''
;
foreach
(
$elements
as
$an_element
)
{
$cur
=
trim
(
$an_element
);
if
(
in_array
(
$cur
,
$skip
)
||
!
$cur
)
continue
;
$pass_params
=
$params
;
$pass_params
[
'name'
]
=
$cur
;
$o
.=
$this
->
RenderElement
(
$pass_params
);
}
return
$o
;
}
/**
* Checks if debug mode is on
*
* @param Array $params
* @return bool
* @access public
*/
function
IsDebugMode
(
$params
)
{
return
$this
->
Application
->
isDebugMode
();
}
function
MassParse
(
$params
)
{
$qty
=
$params
[
'qty'
];
$block
=
$params
[
'block'
];
$mode
=
$params
[
'mode'
];
$o
=
''
;
if
(
$mode
==
'func'
)
{
$func
=
create_function
(
'$params'
,
'
$o =
\'
<tr>
\'
;
$o.=
\'
<td>a
\'
.$params[
\'
param1
\'
].
\'
</td>
\'
;
$o.=
\'
<td>a
\'
.$params[
\'
param2
\'
].
\'
</td>
\'
;
$o.=
\'
<td>a
\'
.$params[
\'
param3
\'
].
\'
</td>
\'
;
$o.=
\'
<td>a
\'
.$params[
\'
param4
\'
].
\'
</td>
\'
;
$o.=
\'
</tr>
\'
;
return $o;
'
);
for
(
$i
=
1
;
$i
<
$qty
;
$i
++)
{
$block_params
[
'param1'
]
=
rand
(
1
,
10000
);
$block_params
[
'param2'
]
=
rand
(
1
,
10000
);
$block_params
[
'param3'
]
=
rand
(
1
,
10000
);
$block_params
[
'param4'
]
=
rand
(
1
,
10000
);
$o
.=
$func
(
$block_params
);
}
return
$o
;
}
$block_params
[
'name'
]
=
$block
;
for
(
$i
=
0
;
$i
<
$qty
;
$i
++)
{
$block_params
[
'param1'
]
=
rand
(
1
,
10000
);
$block_params
[
'param2'
]
=
rand
(
1
,
10000
);
$block_params
[
'param3'
]
=
rand
(
1
,
10000
);
$block_params
[
'param4'
]
=
rand
(
1
,
10000
);
$block_params
[
'passed'
]
=
$params
[
'passed'
];
$block_params
[
'prefix'
]
=
'm'
;
$o
.=
$this
->
Application
->
ParseBlock
(
$block_params
,
1
);
}
return
$o
;
}
function
LoggedIn
(
$params
)
{
return
$this
->
Application
->
LoggedIn
();
}
/**
* Allows to check if permission exists directly in template and perform additional actions if required
*
* @param Array $params
* @return bool
*/
function
CheckPermission
(
$params
)
{
$perm_helper
=&
$this
->
Application
->
recallObject
(
'PermissionsHelper'
);
return
$perm_helper
->
TagPermissionCheck
(
$params
);
}
/**
* Checks if user is logged in and if not redirects it to template passed
*
* @param Array $params
*/
function
RequireLogin
(
$params
)
{
$t
=
$this
->
Application
->
GetVar
(
't'
);
if
(
$next_t
=
getArrayValue
(
$params
,
'next_template'
))
{
$t
=
$next_t
;
}
// check by permissions: begin
if
((
isset
(
$params
[
'perm_event'
])
&&
$params
[
'perm_event'
])
||
(
isset
(
$params
[
'perm_prefix'
])
&&
$params
[
'perm_prefix'
])
||
(
isset
(
$params
[
'permissions'
])
&&
$params
[
'permissions'
]))
{
$perm_helper
=&
$this
->
Application
->
recallObject
(
'PermissionsHelper'
);
/* @var $perm_helper kPermissionsHelper */
$perm_status
=
$perm_helper
->
TagPermissionCheck
(
$params
);
if
(!
$perm_status
)
{
list
(
$redirect_template
,
$redirect_params
)
=
$perm_helper
->
getPermissionTemplate
(
$params
);
$this
->
Application
->
Redirect
(
$redirect_template
,
$redirect_params
);
}
else
{
return
;
}
}
// check by permissions: end
// check by configuration value: begin
$condition
=
getArrayValue
(
$params
,
'condition'
);
if
(!
$condition
)
{
$condition
=
true
;
}
else
{
if
(
substr
(
$condition
,
0
,
1
)
==
'!'
)
{
$condition
=
!
$this
->
Application
->
ConfigValue
(
substr
(
$condition
,
1
));
}
else
{
$condition
=
$this
->
Application
->
ConfigValue
(
$condition
);
}
}
// check by configuration value: end
// check by belonging to group: begin
$group
=
$this
->
SelectParam
(
$params
,
'group'
);
$group_access
=
true
;
if
(
$group
)
{
$conn
=&
$this
->
Application
->
GetADODBConnection
();
$group_id
=
$conn
->
GetOne
(
'SELECT GroupId FROM '
.
TABLE_PREFIX
.
'PortalGroup WHERE Name = '
.
$conn
->
qstr
(
$group
));
if
(
$group_id
)
{
$groups
=
explode
(
','
,
$this
->
Application
->
RecallVar
(
'UserGroups'
));
$group_access
=
in_array
(
$group_id
,
$groups
);
}
}
// check by belonging to group: end
if
((!
$this
->
Application
->
LoggedIn
()
||
!
$group_access
)
&&
$condition
)
{
$redirect_params
=
$this
->
Application
->
HttpQuery
->
getRedirectParams
();
$redirect_params
[
'next_template'
]
=
$t
;
if
(
array_key_exists
(
'pass_category'
,
$params
))
{
$redirect_params
[
'pass_category'
]
=
$params
[
'pass_category'
];
}
if
(
$this
->
Application
->
LoggedIn
()
&&
!
$group_access
)
{
$this
->
Application
->
Redirect
(
$params
[
'no_group_perm_template'
],
$redirect_params
);
}
$redirect_params
[
'lang_mode'
]
=
''
;
// if expiration happens while editing language it will be in temp mode
$redirect_params
[
'm_wid'
]
=
''
;
// remove wid, otherwise parent window may add wid to its name breaking all the frameset (for <a> targets)
$this
->
Application
->
Redirect
(
$params
[
'login_template'
],
$redirect_params
);
}
}
function
IsMember
(
$params
)
{
$group
=
getArrayValue
(
$params
,
'group'
);
$conn
=&
$this
->
Application
->
DB
;
$group_id
=
$conn
->
GetOne
(
'SELECT GroupId FROM '
.
TABLE_PREFIX
.
'PortalGroup WHERE Name = '
.
$conn
->
qstr
(
$group
));
if
(
$group_id
)
{
$groups
=
explode
(
','
,
$this
->
Application
->
RecallVar
(
'UserGroups'
));
$group_access
=
in_array
(
$group_id
,
$groups
);
}
return
$group_access
;
}
/**
* Checks if SSL is on and redirects to SSL URL if needed
* If SSL_URL is not defined in config - the tag does not do anything
* If for_logged_in_only="1" exits if user is not logged in.
* If called without params forces https right away. If called with by_config="1" checks the
* Require SSL setting from General Config and if it is ON forces https
*
* @param unknown_type $params
*/
function
CheckSSL
(
$params
)
{
$ssl
=
$this
->
Application
->
IsAdmin
()
?
$this
->
Application
->
ConfigValue
(
'AdminSSL_URL'
)
:
false
;
if
(!
$ssl
)
{
// not in admin or admin ssl url is empty
$ssl
=
$this
->
Application
->
ConfigValue
(
'SSL_URL'
);
}
if
(!
$ssl
)
return
;
//SSL URL is not set - no way to require SSL
$require
=
false
;
if
(
isset
(
$params
[
'mode'
])
&&
$params
[
'mode'
]
==
'required'
)
{
$require
=
true
;
if
(
isset
(
$params
[
'for_logged_in_only'
])
&&
$params
[
'for_logged_in_only'
]
&&
!
$this
->
Application
->
LoggedIn
())
{
$require
=
false
;
}
if
(
isset
(
$params
[
'condition'
]))
{
if
(!
$this
->
Application
->
ConfigValue
(
$params
[
'condition'
]))
{
$require
=
false
;
}
}
}
$http_query
=&
$this
->
Application
->
recallObject
(
'HTTPQuery'
);
$pass
=
$http_query
->
getRedirectParams
();
if
(
$require
)
{
if
(
PROTOCOL
==
'https://'
)
{
$this
->
Application
->
SetVar
(
'__KEEP_SSL__'
,
1
);
return
;
}
$this
->
Application
->
Redirect
(
''
,
array_merge_recursive2
(
$pass
,
Array
(
'__SSL__'
=>
1
)));
}
else
{
if
(
PROTOCOL
==
'https://'
&&
$this
->
Application
->
ConfigValue
(
'Force_HTTP_When_SSL_Not_Required'
))
{
if
(
$this
->
Application
->
GetVar
(
'__KEEP_SSL__'
))
return
;
$pass
=
array
(
'pass'
=>
'm'
,
'm_cat_id'
=>
0
);
$this
->
Application
->
Redirect
(
''
,
array_merge_recursive2
(
$pass
,
Array
(
'__SSL__'
=>
0
)));
}
}
}
function
ConstOn
(
$params
)
{
$name
=
$this
->
SelectParam
(
$params
,
'name,const'
);
return
constOn
(
$name
);
}
function
SetDefaultCategory
(
$params
)
{
$category_id
=
$this
->
Application
->
findModule
(
'Name'
,
$params
[
'module'
],
'RootCat'
);
$this
->
Application
->
SetVar
(
'm_cat_id'
,
$category_id
);
}
function
XMLTemplate
(
$params
)
{
safeDefine
(
'DBG_SKIP_REPORTING'
,
1
);
if
(
isset
(
$params
[
'cache'
])
&&
$params
[
'cache'
])
{
$nextyear
=
intval
(
date
(
'Y'
)
+
1
);
$format
=
"D, d M Y H:i:s"
;
$expiration
=
gmdate
(
$format
,
mktime
()
+
$params
[
'cache'
]).
' GMT'
;
$last_modified
=
mktime
();
header
(
'Cache-Control: public, cache, max-age='
.
$params
[
'cache'
]);
header
(
"Expires: $expiration"
);
header
(
'Pragma: public'
);
// Getting headers sent by the client.
$headers
=
request_headers
();
// Checking if the client is validating his cache and if it is current.
if
(
isset
(
$headers
[
'If-Modified-Since'
])
&&
(
strtotime
(
$headers
[
'If-Modified-Since'
])
>
$last_modified
-
$params
[
'cache'
]))
{
// Client's cache IS current, so we just respond '304 Not Modified'.
header
(
'Last-Modified: '
.
date
(
$format
,
strtotime
(
$headers
[
'If-Modified-Since'
])).
' GMT'
,
true
,
304
);
exit
();
}
else
{
// Image not cached or cache outdated, we respond '200 OK' and output the image.
header
(
'Last-Modified: '
.
gmdate
(
$format
,
$last_modified
).
' GMT'
,
true
,
200
);
}
}
return
$this
->
Application
->
XMLHeader
(
getArrayValue
(
$params
,
'xml_version'
));
}
function
Header
(
$params
)
{
header
(
$params
[
'data'
]);
}
function
NoDebug
(
$params
)
{
if
(!
$this
->
Application
->
GetVar
(
'debug'
))
{
define
(
'DBG_SKIP_REPORTING'
,
1
);
}
}
function
RootCategoryName
(
$params
)
{
$root_phrase
=
$this
->
Application
->
ConfigValue
(
'Root_Name'
);
return
$this
->
Application
->
Phrase
(
$root_phrase
);
}
/**
* Allows to attach file directly from email event template
*
* @param Array $params
*/
function
AttachFile
(
$params
)
{
$esender
=&
$application
->
recallObject
(
'EmailSender'
.(
isset
(
$params
[
'special'
])
?
'.'
.
$params
[
'special'
]
:
''
));
/* @var $esender kEmailSendingHelper */
$path
=
FULL_PATH
.
'/'
.
$params
[
'path'
];
if
(
file_exists
(
$path
))
{
$esender
->
AddAttachment
(
$path
);
}
}
function
CaptchaImage
(
$params
){
$captcha_helper
=&
$this
->
Application
->
recallObject
(
'CaptchaHelper'
);
/* @var $captcha_helper kCaptchaHelper */
$captcha_helper
->
GenerateCaptchaImage
(
$this
->
Application
->
RecallVar
(
$this
->
Application
->
GetVar
(
'var'
)),
$this
->
Application
->
GetVar
(
'w'
),
$this
->
Application
->
GetVar
(
'h'
),
true
);
}
function
SID
(
$params
)
{
return
$this
->
Application
->
GetSID
();
}
function
ModuleInfo
(
$params
)
{
return
$this
->
Application
->
findModule
(
$params
[
'key'
],
$params
[
'value'
],
$params
[
'return'
]);
}
function
Random
(
$params
)
{
return
rand
(
1
,
100000000
);
}
/**
* Prints parser params, available at current deep level
*
* @param Array $params
* @return string
*/
function
PrintCurrentParams
(
$params
)
{
$current_params
=
$this
->
Application
->
Parser
->
Params
;
foreach
(
$current_params
as
$param_name
=>
$param_value
)
{
$current_params
[
$param_name
]
=
$param_name
.
' = "'
.
$param_value
.
'"'
;
}
return
'<pre>'
.
implode
(
"
\n
"
,
$current_params
)
.
'</pre>'
;
}
/**
* Gets previously defined counter result
*
* @param Array $params
* @return int
*/
function
GetCounter
(
$params
)
{
return
$this
->
Application
->
getCounter
(
$params
[
'name'
],
$params
);
}
/**
* Increments PageHit counter
*
* @param Array $params
* @return int
*/
function
RegisterPageHit
(
$params
)
{
if
(
$this
->
Application
->
ConfigValue
(
'UsePageHitCounter'
))
{
$db
=&
$this
->
Application
->
GetADODBConnection
();
// get current counte
$sql
=
'SELECT VariableValue
FROM '
.
TABLE_PREFIX
.
'ConfigurationValues
WHERE VariableName = "PageHitCounter"'
;
$page_counter
=
(
int
)
$db
->
GetOne
(
$sql
);
$sql
=
'UPDATE LOW_PRIORITY '
.
TABLE_PREFIX
.
'ConfigurationValues
SET VariableValue = '
.(
$page_counter
+
1
).
'
WHERE VariableName = "PageHitCounter"'
;
$db
->
Query
(
$sql
);
}
}
function
Timestamp
(
$params
)
{
$format
=
isset
(
$params
[
'format'
])
?
$params
[
'format'
]
:
'd.m.Y H:i:s'
;
return
adodb_date
(
$format
);
}
}
Event Timeline
Log In to Comment