function gen_reseller_menu(&$tpl)
{
    global $sql, $cfg;
    $tpl->assign(array('TR_MENU_GENERAL_INFORMATION' => tr('General information'), 'TR_MENU_CHANGE_PASSWORD' => tr('Change password'), 'TR_MENU_CHANGE_PERSONAL_DATA' => tr('Change personal data'), 'TR_MENU_HOSTING_PLANS' => tr('Manage hosting plans'), 'TR_MENU_ADD_HOSTING' => tr('Add hosting plan'), 'TR_MENU_MANAGE_USERS' => tr('Manage users'), 'TR_MENU_ADD_USER' => tr('Add user'), 'TR_MENU_E_MAIL_SETUP' => tr('Email setup'), 'TR_MENU_CIRCULAR' => tr('Email marketing'), 'TR_MENU_MANAGE_DOMAINS' => tr('Manage domains'), 'TR_MENU_DOMAIN_ALIAS' => tr('Domain alias'), 'TR_MENU_SUBDOMAINS' => tr('Subdomains'), 'TR_MENU_DOMAIN_STATISTICS' => tr('Domain statistics'), 'TR_MENU_QUESTIONS_AND_COMMENTS' => tr('Support system'), 'TR_MENU_NEW_TICKET' => tr('New ticket'), 'TR_MENU_LAYOUT_SETTINGS' => tr('Layout settings'), 'TR_MENU_LOGOUT' => tr('Logout'), 'TR_MENU_OVERVIEW' => tr('Overview'), 'TR_MENU_LANGUAGE' => tr('Language'), 'SUPPORT_SYSTEM_PATH' => $cfg['VHCS_SUPPORT_SYSTEM_PATH'], 'SUPPORT_SYSTEM_TARGET' => $cfg['VHCS_SUPPORT_SYSTEM_TARGET'], 'TR_MENU_ORDERS' => tr('Manage Orders'), 'TR_MENU_ORDER_SETTINGS' => tr('Order settings'), 'TR_MENU_ORDER_EMAIL' => tr('Order email setup'), 'TR_MENU_LOSTPW_EMAIL' => tr('Lostpw email setup')));
    $query = <<<SQL_QUERY
        select
            *
        from
            custom_menus
        where
            menu_level = 'reseller'
          or
            menu_level = 'all'
SQL_QUERY;
    $rs = exec_query($sql, $query, array());
    if ($rs->RecordCount() == 0) {
        $tpl->assign('CUSTOM_BUTTONS', '');
    } else {
        global $i;
        $i = 100;
        while (!$rs->EOF) {
            $menu_name = $rs->fields['menu_name'];
            $menu_link = get_menu_vars($rs->fields['menu_link']);
            $menu_target = $rs->fields['menu_target'];
            if ($menu_target === '') {
                $menu_target = "";
            } else {
                $menu_target = "target=\"" . $menu_target . "\"";
            }
            $tpl->assign(array('BUTTON_LINK' => $menu_link, 'BUTTON_NAME' => $menu_name, 'BUTTON_TARGET' => $menu_target, 'BUTTON_ID' => $i));
            $tpl->parse('CUSTOM_BUTTONS', '.custom_buttons');
            $rs->MoveNext();
            $i++;
        }
        // end while
    }
    // end else
    $support_system = $cfg['VHCS_SUPPORT_SYSTEM'];
    if ($support_system == 'no') {
        $tpl->assign('SUPPORT_SYSTEM', '');
    }
}
function gen_client_menu(&$tpl)
{
    global $sql, $cfg;
    $tpl->assign(array('TR_MENU_GENERAL_INFORMATION' => tr('General information'), 'TR_MENU_CHANGE_PASSWORD' => tr('Change password'), 'TR_MENU_CHANGE_PERSONAL_DATA' => tr('Change personal data'), 'TR_MENU_MANAGE_DOMAINS' => tr('Manage domains'), 'TR_MENU_ADD_SUBDOMAIN' => tr('Add subdomain'), 'TR_MENU_MANAGE_USERS' => tr('Email and FTP accounts'), 'TR_MENU_ADD_MAIL_USER' => tr('Add mail user'), 'TR_MENU_ADD_FTP_USER' => tr('Add FTP user'), 'TR_MENU_MANAGE_SQL' => tr('Manage SQL'), 'TR_MENU_ERROR_PAGES' => tr('Error pages'), 'TR_MENU_ADD_SQL_DATABASE' => tr('Add SQL database'), 'TR_MENU_DOMAIN_STATISTICS' => tr('Domain statistics'), 'TR_MENU_DAILY_BACKUP' => tr('Daily backup'), 'TR_MENU_QUESTIONS_AND_COMMENTS' => tr('Support system'), 'TR_MENU_NEW_TICKET' => tr('New ticket'), 'TR_MENU_LOGOUT' => tr('Logout'), 'PHP_MY_ADMIN' => tr('PhpMyAdmin'), 'TR_WEBMAIL' => tr('Webmail'), 'TR_FILEMANAGER' => tr('Filemanager'), 'TR_MENU_WEBTOOLS' => tr('Webtools'), 'TR_HTACCESS' => tr('Protected areas'), 'TR_AWSTATS' => tr('Webstatistics'), 'TR_MENU_OVERVIEW' => tr('Overview'), 'TR_MENU_EMAIL_ACCOUNTS' => tr('Email Accounts'), 'TR_MENU_FTP_ACCOUNTS' => tr('FTP Accounts'), 'TR_MENU_LANGUAGE' => tr('Language'), 'TR_MENU_CATCH_ALL_MAIL' => tr('Catch all'), 'TR_MENU_ADD_ALIAS' => tr('Add alias'), 'TR_MENU_UPDATE_HP' => tr('Update hosting packet'), 'SUPPORT_SYSTEM_PATH' => $cfg['VHCS_SUPPORT_SYSTEM_PATH'], 'SUPPORT_SYSTEM_TARGET' => $cfg['VHCS_SUPPORT_SYSTEM_TARGET'], 'WEBMAIL_PATH' => $cfg['WEBMAIL_PATH'], 'WEBMAIL_TARGET' => $cfg['WEBMAIL_TARGET'], 'PMA_PATH' => $cfg['PMA_PATH'], 'PMA_TARGET' => $cfg['PMA_TARGET'], 'FILEMANAGER_PATH' => $cfg['FILEMANAGER_PATH'], 'FILEMANAGER_TARGET' => $cfg['FILEMANAGER_TARGET']));
    $query = <<<SQL_QUERY
        select
            *
        from
            custom_menus
        where
            menu_level = 'user'
          or
            menu_level = 'all'
SQL_QUERY;
    $rs = exec_query($sql, $query, array());
    if ($rs->RecordCount() == 0) {
        $tpl->assign('CUSTOM_BUTTONS', '');
    } else {
        global $i;
        $i = 100;
        while (!$rs->EOF) {
            $menu_name = $rs->fields['menu_name'];
            $menu_link = get_menu_vars($rs->fields['menu_link']);
            $menu_target = $rs->fields['menu_target'];
            if ($menu_target === '') {
                $menu_target = "";
            } else {
                $menu_target = "target=\"" . $menu_target . "\"";
            }
            $tpl->assign(array('BUTTON_LINK' => $menu_link, 'BUTTON_NAME' => $menu_name, 'BUTTON_TARGET' => $menu_target, 'BUTTON_ID' => $i));
            $tpl->parse('CUSTOM_BUTTONS', '.custom_buttons');
            $rs->MoveNext();
            $i++;
        }
        // end while
    }
    // end else
    $support_system = $cfg['VHCS_SUPPORT_SYSTEM'];
    if ($support_system == 'no') {
        $tpl->assign('SUPPORT_SYSTEM', '');
    }
}
Exemplo n.º 3
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));
}