/** * Helper function to generate navigation * * @throws iMSCP_Exception * @param iMSCP_pTemplate $tpl iMSCP_pTemplate instance * @return void */ function generateNavigation($tpl) { iMSCP_Events_Aggregator::getInstance()->dispatch(iMSCP_Events::onBeforeGenerateNavigation, array('templateEngine' => $tpl)); /** @var $cfg iMSCP_Config_Handler_File */ $cfg = iMSCP_Registry::get('config'); $tpl->define_dynamic(array('main_menu' => 'layout', 'main_menu_block' => 'main_menu', 'menu' => 'layout', 'left_menu_block' => 'menu', 'breadcrumbs' => 'layout', 'breadcrumb_block' => 'breadcrumbs')); generateLoggedFrom($tpl); /** @var $navigation Zend_Navigation */ $navigation = iMSCP_Registry::get('navigation'); // Dynamic links (only at customer level) if ($_SESSION['user_type'] == 'user') { $domainProperties = get_domain_default_props($_SESSION['user_id']); $tpl->assign('WEBSTATS_PATH', 'http://' . decode_idna($domainProperties['domain_name']) . '/stats'); if (customerHasFeature('mail')) { $webmails = getWebmailList(); if (!empty($webmails)) { $page1 = $navigation->findOneBy('class', 'email'); $page2 = $navigation->findOneBy('class', 'webtools'); foreach ($webmails as $webmail) { $page = array('label' => tr('%s webmail', $webmail), 'uri' => '/' . ($webmail == 'Roundcube' ? 'webmail' : strtolower($webmail)), 'target' => '_blank'); $page1->addPage($page); $page2->addPage($page); } } } } // Dynamic links (All levels) $tpl->assign(array('SUPPORT_SYSTEM_PATH' => 'ticket_system.php', 'SUPPORT_SYSTEM_TARGET' => '_self')); // Remove support system page if feature is globally disabled if (!$cfg['IMSCP_SUPPORT_SYSTEM']) { $navigation->removePage($navigation->findOneBy('class', 'support')); } // Custom menus if (null != ($customMenus = getCustomMenus($_SESSION['user_type']))) { foreach ($customMenus as $customMenu) { $navigation->addPage(array('order' => $customMenu['menu_order'], 'label' => tohtml($customMenu['menu_name']), 'uri' => get_menu_vars($customMenu['menu_link']), 'target' => !empty($customMenu['menu_target']) ? tohtml($customMenu['menu_target']) : '_self', 'class' => 'custom_link')); } } /** @var $activePage Zend_Navigation_Page_Uri */ foreach ($navigation->findAllBy('uri', $_SERVER['SCRIPT_NAME']) as $activePage) { $activePage->setActive(); } if (!empty($_GET)) { $query = '?' . http_build_query($_GET); } else { $query = ''; } /** @var $page Zend_Navigation_Page */ foreach ($navigation as $page) { if (null !== ($callbacks = $page->get('privilege_callback'))) { $callbacks = isset($callbacks['name']) ? array($callbacks) : $callbacks; foreach ($callbacks as $callback) { if (is_callable($callback['name'])) { if (!call_user_func_array($callback['name'], isset($callback['param']) ? (array) $callback['param'] : array())) { continue 2; } } else { $name = is_array($callback['name']) ? $callback['name'][1] : $callback['name']; throw new iMSCP_Exception(sprintf('Privileges callback is not callable: %s', $name)); } } } if ($page->isVisible()) { $tpl->assign(array('HREF' => $page->getHref(), 'CLASS' => $page->getClass() . ($_SESSION['show_main_menu_labels'] ? ' show_labels' : ''), 'IS_ACTIVE_CLASS' => $page->isActive(true) ? 'active' : 'dummy', 'TARGET' => $page->getTarget() ? tohtml($page->getTarget()) : '_self', 'MAIN_MENU_LABEL_TOOLTIP' => tohtml($page->getLabel(), 'htmlAttr'), 'MAIN_MENU_LABEL' => $_SESSION['show_main_menu_labels'] ? tohtml($page->getLabel()) : '')); // Add page to main menu $tpl->parse('MAIN_MENU_BLOCK', '.main_menu_block'); if ($page->isActive(true)) { $tpl->assign(array('TR_SECTION_TITLE' => tohtml($page->getLabel()), 'SECTION_TITLE_CLASS' => $page->getClass())); // Add page to breadcrumb $tpl->assign('BREADCRUMB_LABEL', tohtml($page->getLabel())); $tpl->parse('BREADCRUMB_BLOCK', '.breadcrumb_block'); if ($page->hasPages()) { $iterator = new RecursiveIteratorIterator($page, RecursiveIteratorIterator::SELF_FIRST); /** @var $subpage Zend_Navigation_Page_Uri */ foreach ($iterator as $subpage) { if (null !== ($callbacks = $subpage->get('privilege_callback'))) { $callbacks = isset($callbacks['name']) ? array($callbacks) : $callbacks; foreach ($callbacks as $callback) { if (is_callable($callback['name'])) { if (!call_user_func_array($callback['name'], isset($callback['param']) ? (array) $callback['param'] : array())) { continue 2; } } else { $name = is_array($callback['name']) ? $callback['name'][1] : $callback['name']; throw new iMSCP_Exception(sprintf('Privileges callback is not callable: %s', $name)); } } } $tpl->assign(array('HREF' => $subpage->getHref(), 'IS_ACTIVE_CLASS' => $subpage->isActive(true) ? 'active' : 'dummy', 'LEFT_MENU_LABEL' => tohtml($subpage->getLabel()), 'TARGET' => $subpage->getTarget() ? $subpage->getTarget() : '_self')); if ($subpage->isVisible()) { // Add subpage to left menu $tpl->parse('LEFT_MENU_BLOCK', '.left_menu_block'); } if ($subpage->isActive(true)) { $tpl->assign(array('TR_TITLE' => $subpage->get('dynamic_title') ? $subpage->get('dynamic_title') : tohtml($subpage->getLabel()), 'TITLE_CLASS' => $subpage->get('title_class'))); if (!$subpage->hasPages()) { $tpl->assign('HREF', $subpage->getHref() . "{$query}"); } // ad subpage to breadcrumbs if (null != ($label = $subpage->get('dynamic_title'))) { $tpl->assign('MENU_LABEL_TOOLTIP', tohtml($label)); } else { $tpl->assign('BREADCRUMB_LABEL', tohtml($subpage->getLabel())); } $tpl->parse('BREADCRUMB_BLOCK', '.breadcrumb_block'); } } $tpl->parse('MENU', 'menu'); } else { $tpl->assign('MENU', ''); } } } } $tpl->parse('MAIN_MENU', 'main_menu'); $tpl->parse('BREADCRUMBS', 'breadcrumbs'); $tpl->parse('MENU', 'menu'); // Static variables $tpl->assign(array('TR_MENU_LOGOUT' => tr('Logout'), 'VERSION' => isset($cfg['Version']) && $cfg['Version'] != '' ? $cfg['Version'] : tohtml(tr('Unknown')), 'BUILDDATE' => isset($cfg['BuildDate']) && $cfg['BuildDate'] != '' ? $cfg['BuildDate'] : tohtml(tr('Unavailable')), 'CODENAME' => isset($cfg['CodeName']) && $cfg['CodeName'] != '' ? $cfg['CodeName'] : tohtml(tr('Unknown')))); iMSCP_Events_Aggregator::getInstance()->dispatch(iMSCP_Events::onAfterGenerateNavigation, array('templateEngine' => $tpl)); }
$data_1 = get_lostpassword_activation_email($user_id); $data_2 = get_lostpassword_password_email($user_id); if (isset($_POST['uaction']) && $_POST['uaction'] == 'apply') { $err_message = ''; $data_1['subject'] = clean_input($_POST['subject1'], false); $data_1['message'] = clean_input($_POST['message1'], false); $data_2['subject'] = clean_input($_POST['subject2'], false); $data_2['message'] = clean_input($_POST['message2'], false); if (empty($data_1['subject']) || empty($data_2['subject'])) { $err_message = tr('Please specify a message subject.'); } if (empty($data_1['message']) || empty($data_2['message'])) { $err_message = tr('Please specify a message content.'); } if (!empty($err_message)) { set_page_message($err_message, 'error'); } else { set_lostpassword_activation_email($user_id, $data_1); set_lostpassword_password_email($user_id, $data_2); set_page_message(tr('Auto email template data updated!'), 'success'); } } $tpl->assign('TR_PAGE_TITLE', tr('Admin / Settings / Lost Password Email')); generateNavigation($tpl); generateLoggedFrom($tpl); $tpl->assign(array('TR_LOSTPW_EMAIL' => tr('Lost password email'), 'TR_MESSAGE_TEMPLATE_INFO' => tr('Message template info'), 'TR_MESSAGE_TEMPLATE' => tr('Message template'), 'SUBJECT_VALUE1' => clean_input($data_1['subject'], true), 'MESSAGE_VALUE1' => tohtml($data_1['message']), 'SUBJECT_VALUE2' => clean_input($data_2['subject'], true), 'MESSAGE_VALUE2' => tohtml($data_2['message']), 'SENDER_EMAIL_VALUE' => tohtml($data_1['sender_email']), 'SENDER_NAME_VALUE' => tohtml($data_1['sender_name']), 'TR_ACTIVATION_EMAIL' => tr('Activation email'), 'TR_PASSWORD_EMAIL' => tr('Password email'), 'TR_USER_LOGIN_NAME' => tr('User login (system) name'), 'TR_USER_PASSWORD' => tr('User password'), 'TR_USER_REAL_NAME' => tr('User (first and last) name'), 'TR_LOSTPW_LINK' => tr('Lost password link'), 'TR_SUBJECT' => tr('Subject'), 'TR_MESSAGE' => tr('Message'), 'TR_SENDER_EMAIL' => tr('Sender email'), 'TR_SENDER_NAME' => tr('Sender name'), 'TR_APPLY_CHANGES' => tr('Apply changes'), 'TR_BASE_SERVER_VHOST_PREFIX' => tr('URL protocol'), 'TR_BASE_SERVER_VHOST' => tr('URL to this admin panel'), 'TR_BASE_SERVER_VHOST_PORT' => tr('URL port'))); generatePageMessage($tpl); $tpl->parse('LAYOUT_CONTENT', 'page'); iMSCP_Events_Aggregator::getInstance()->dispatch(iMSCP_Events::onAdminScriptEnd, array('templateEngine' => $tpl)); $tpl->prnt(); unsetMessages();