示例#1
0
/**
 * 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();