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 ''; } 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; } ksort($section_data['children'], SORT_NUMERIC); foreach ($section_data['children'] as $section_name) { $params['section_name'] = $section_name; $ret .= $this->DrawTree($params); $deep_level--; } return $ret; } function PrintSection($params) { $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'); $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 ''; } 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['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) { $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; } elseif (!$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('
', '\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->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) { include_once(FULL_PATH.'/admin/editor/cmseditor/fckeditor.php'); $oFCKeditor = new FCKeditor($params['name']); $oFCKeditor->BasePath = BASE_PATH.'/admin/editor/cmseditor/'; $oFCKeditor->Width = $params['width'] ; $oFCKeditor->Height = $params['height'] ; $oFCKeditor->ToolbarSet = 'Advanced' ; $oFCKeditor->Value = '' ; $oFCKeditor->Config = Array( //'UserFilesPath' => $pathtoroot.'kernel/user_files', 'ProjectPath' => BASE_PATH.'/', 'CustomConfigurationsPath' => $this->Application->BaseURL().'admin/editor/inp_fckconfig.js', 'EditorAreaCSS' => $this->Application->BaseURL().'/themes/inportal_site/inc/inportal.css', //GetThemeCSS(), //'StylesXmlPath' => '../../inp_styles.xml', // 'Debug' => 1, 'Admin' => 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'] = '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, 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; } } ?>