/** * This is called by the default ComponentController and does all the repeating work * * This creates a template of the page content and calls parsePage($template) * @param \Cx\Core\ContentManager\Model\Entity\Page $page Resolved page */ public function getPage(\Cx\Core\ContentManager\Model\Entity\Page $page) { global $_ARRAYLANG; // init component template $componentTemplate = new \Cx\Core\Html\Sigma('.'); $componentTemplate->setErrorHandling(PEAR_ERROR_DIE); $componentTemplate->setTemplate($page->getContent()); // default css and js if (file_exists($this->cx->getClassLoader()->getFilePath($this->getDirectory(false) . '/View/Style/Frontend.css'))) { \JS::registerCSS(substr($this->getDirectory(false, true) . '/View/Style/Frontend.css', 1)); } if (file_exists($this->cx->getClassLoader()->getFilePath($this->getDirectory(false) . '/View/Script/Frontend.js'))) { \JS::registerJS(substr($this->getDirectory(false, true) . '/View/Script/Frontend.js', 1)); } // parse page $componentTemplate->setGlobalVariable($_ARRAYLANG); $this->parsePage($componentTemplate, $page->getCmd()); \Cx\Core\Csrf\Controller\Csrf::add_placeholder($componentTemplate); $page->setContent($componentTemplate->get()); }
/** * Use this to parse your backend page * * You will get the template located in /View/Template/{CMD}.html * You can access Cx class using $this->cx * To show messages, use \Message class * @param \Cx\Core\Html\Sigma $template Template for current CMD * @param array $cmd CMD separated by slashes */ public function parsePage(\Cx\Core\Html\Sigma $template, array $cmd) { global $_ARRAYLANG, $objInit; $objTpl = new \Cx\Core\Html\Sigma($this->getDirectory(true) . '/View/Template/Backend'); //merge language $langData = $objInit->loadLanguageData('Pdf'); $_ARRAYLANG = array_merge($_ARRAYLANG, $langData); $objTpl->setGlobalVariable($_ARRAYLANG); $objTpl->loadTemplatefile('Default.html'); // Not an entity, parse overview or settings switch (current($cmd)) { default: // Parse entity view generation pages $entityClassName = $this->getNamespace() . '\\Model\\Entity\\PdfTemplate'; $this->parseEntityClassPage($objTpl, $entityClassName, 'PdfTemplate'); if ($objTpl->blockExists('overview')) { $objTpl->touchBlock('overview'); } break; } \JS::registerCSS(substr($this->getDirectory(false, true) . '/View/Style/Backend.css', 1)); $template->setVariable(array('CONTENT_TITLE' => $_ARRAYLANG['TXT_CORE_MODULE_PDF'], 'ADMIN_CONTENT' => $objTpl->get())); }
/** * Set the language list page * * @global array * @global ADONewConnection * @global \Cx\Core\Html\Sigma * @return void */ function languageOverview() { global $_ARRAYLANG, $objDatabase; // init vars $i = 0; \JS::activate('cx'); $cxjs = \ContrexxJavascript::getInstance(); $cxjs->setVariable('copyTitle', $_ARRAYLANG['TXT_LANGUAGE_COPY_TITLE'], 'language/lang'); $cxjs->setVariable('copyText', $_ARRAYLANG['TXT_LANGUAGE_COPY_TEXT'], 'language/lang'); $cxjs->setVariable('copySuccess', $_ARRAYLANG['TXT_LANGUAGE_COPY_SUCCESS'], 'language/lang'); $cxjs->setVariable('linkTitle', $_ARRAYLANG['TXT_LANGUAGE_LINK_TITLE'], 'language/lang'); $cxjs->setVariable('linkText', $_ARRAYLANG['TXT_LANGUAGE_LINK_TEXT'], 'language/lang'); $cxjs->setVariable('linkSuccess', $_ARRAYLANG['TXT_LANGUAGE_LINK_SUCCESS'], 'language/lang'); $cxjs->setVariable('warningTitle', $_ARRAYLANG['TXT_LANGUAGE_WARNING_TITLE'], 'language/lang'); $cxjs->setVariable('warningText', $_ARRAYLANG['TXT_LANGUAGE_WARNING_TEXT'], 'language/lang'); $cxjs->setVariable('waitTitle', $_ARRAYLANG['TXT_LANGUAGE_WAIT_TITLE'], 'language/lang'); $cxjs->setVariable('waitText', $_ARRAYLANG['TXT_LANGUAGE_WAIT_TEXT'], 'language/lang'); $cxjs->setVariable('yesOption', $_ARRAYLANG['TXT_YES'], 'language/lang'); $cxjs->setVariable('noOption', $_ARRAYLANG['TXT_NO'], 'language/lang'); $cxjs->setVariable('langRemovalLabel', $_ARRAYLANG['TXT_LANGUAGE_MANAGER_LABEL_LANG_REMOVAL'], 'language/lang'); $cxjs->setVariable('langRemovalContent', $_ARRAYLANG['TXT_LANGUAGE_MANAGER_LANG_REMOVAL_CONTENT'], 'language/lang'); $this->template->loadTemplateFile('language_langlist.html'); $this->pageTitle = $_ARRAYLANG['TXT_LANGUAGE_LIST']; if (!$this->isInFullMode()) { $this->hideVariables = true; $this->template->hideBlock('extendedTitles'); $this->template->hideBlock('extendedHeaders'); } else { $this->template->touchBlock('extendedTitles'); } //begin language variables $this->template->setVariable(array('TXT_ADD_NEW_LANGUAGE' => $_ARRAYLANG['TXT_ADD_NEW_LANGUAGE'], 'TXT_NAME' => $_ARRAYLANG['TXT_NAME'], 'TXT_SHORT_NAME' => $_ARRAYLANG['TXT_SHORT_NAME'], 'TXT_CHARSET' => $_ARRAYLANG['TXT_CHARSET'], 'TXT_ADD' => $_ARRAYLANG['TXT_ADD'], 'TXT_LANGUAGE_LIST' => $_ARRAYLANG['TXT_LANGUAGE_LIST'], 'TXT_ID' => $_ARRAYLANG['TXT_ID'], 'TXT_SHORT_FORM' => $_ARRAYLANG['TXT_SHORT_FORM'], 'TXT_STANDARD_LANGUAGE' => $_ARRAYLANG['TXT_STANDARD_LANGUAGE'], 'TXT_ACTION' => $_ARRAYLANG['TXT_ACTION'], 'TXT_ACCEPT_CHANGES' => $_ARRAYLANG['TXT_ACCEPT_CHANGES'], 'TXT_REMARK' => $_ARRAYLANG['TXT_REMARK'], 'TXT_ADD_DELETE_LANGUAGE_REMARK' => $_ARRAYLANG['TXT_ADD_DELETE_LANGUAGE_REMARK'], 'TXT_CONFIRM_DELETE_DATA' => $_ARRAYLANG['TXT_CONFIRM_DELETE_DATA'], 'TXT_ACTION_IS_IRREVERSIBLE' => $_ARRAYLANG['TXT_ACTION_IS_IRREVERSIBLE'], 'TXT_VALUE' => $_ARRAYLANG['TXT_VALUE'], 'TXT_MODULE' => $_ARRAYLANG['TXT_MODULE'], 'TXT_LANGUAGE' => $_ARRAYLANG['TXT_LANGUAGE'], 'TXT_STATUS' => $_ARRAYLANG['TXT_STATUS'], 'TXT_VIEW' => $_ARRAYLANG['TXT_VIEW'], 'TXT_CONTROLLED' => $_ARRAYLANG['TXT_CONTROLLED'], 'TXT_OPEN_ISSUE' => $_ARRAYLANG['TXT_OPEN_ISSUE'], 'TXT_SHORT_NAME' => $_ARRAYLANG['TXT_SHORT_NAME'], 'TXT_LANGUAGE_DEPENDANT_SYSTEM_VARIABLES' => $_ARRAYLANG['TXT_LANGUAGE_DEPENDANT_SYSTEM_VARIABLES'], 'TXT_ADMINISTRATION_PAGES' => $_ARRAYLANG['TXT_ADMINISTRATION_PAGES'], 'TXT_WEB_PAGES' => $_ARRAYLANG['TXT_WEB_PAGES'], 'TXT_SECTION' => $_ARRAYLANG['TXT_SECTION'], 'TXT_CORE_FALLBACK' => $_ARRAYLANG['TXT_CORE_FALLBACK'], 'TXT_LANGUAGE_MANAGER_OK' => $_ARRAYLANG['TXT_LANGUAGE_MANAGER_OK'])); $this->template->setGlobalVariable(array('TXT_DEFAULT_LANGUAGE' => $_ARRAYLANG['TXT_STANDARD_LANGUAGE'], 'TXT_CORE_NONE' => $_ARRAYLANG['TXT_CORE_NONE'], 'CMD' => contrexx_input2xhtml($_GET['cmd']), 'TXT_LANGUAGE_ACTION_COPY' => $_ARRAYLANG['TXT_LANGUAGE_ACTION_COPY'], 'TXT_LANGUAGE_ACTION_LINK' => $_ARRAYLANG['TXT_LANGUAGE_ACTION_LINK'])); //end language variables if ($this->hideVariables == true) { $this->template->setGlobalVariable(array('LANGUAGE_ADMIN_STYLE' => 'display: none')); } else { $this->template->setGlobalVariable(array('LANGUAGE_ADMIN_STYLE' => 'display: block')); } $arrLanguages = \FWLanguage::getActiveFrontendLanguages(); $this->template->setVariable('LANGUAGE_MANAGER_ACTIVE_LANGIDS', implode(', ', array_keys($arrLanguages))); $objResult = $objDatabase->Execute("SELECT * FROM " . DBPREFIX . "languages ORDER BY id"); if ($objResult !== false) { while (!$objResult->EOF) { $checked = ""; if ($objResult->fields['is_default'] == "true") { $checked = "checked"; } $status = "<input type='radio' name='langDefaultStatus' onchange='updateCurrent();' value='" . $objResult->fields['id'] . "' {$checked} />"; $checked = ""; if ($objResult->fields['frontend'] == 1) { $checked = "checked"; } $activeStatus = "<input type='checkbox' name='langActiveStatus[" . $objResult->fields['id'] . "]' onchange='updateCurrent();' value='1' {$checked} />"; $checked = ""; if ($objResult->fields['backend'] == 1) { $checked = "checked"; } $selectedLang = ''; switch ($objResult->fields['fallback']) { case '': $this->template->setVariable('NONE_SELECTED', 'selected="selected"'); break; case '0': $this->template->setVariable('LANGUAGE_DEFAULT_SELECTED', 'selected="selected"'); break; default: $selectedLang = $objResult->fields['fallback']; } // set fallback language drop down foreach ($arrLanguages as $langId => $arrLanguage) { $selected = $langId == $selectedLang ? 'selected="selected"' : ''; $this->template->setVariable(array('LANGUAGE_LANG_ID' => $langId, 'LANGUAGE_LANG_OPTION' => contrexx_raw2xhtml($arrLanguage['name']), 'LANGUAGE_OPTION_SELECTED' => $selected)); $this->template->parse('fallbackLanguages'); } $adminStatus = "<input type='checkbox' name='langAdminStatus[" . $objResult->fields['id'] . "]' value='1' {$checked} />"; $this->template->setVariable(array('LANGUAGE_ROWCLASS' => 'row' . ($i++ % 2 + 1), 'LANGUAGE_LANG_ID' => $objResult->fields['id'], 'LANGUAGE_LANG_NAME' => $objResult->fields['name'], 'LANGUAGE_LANG_SHORTNAME' => $objResult->fields['lang'], 'LANGUAGE_LANG_CHARSET' => $objResult->fields['charset'], 'LANGUAGE_LANG_STATUS' => $status, 'LANGUAGE_ACTIVE_STATUS' => $activeStatus, 'LANGUAGE_ADMIN_STATUS' => $adminStatus)); if (!$this->isInFullMode()) { $this->template->hideBlock('extendedOptions'); } $this->template->parse('languageRow'); $objResult->MoveNext(); } } }
private static function __kill() { global $_CORELANG; $data = $_SERVER['REQUEST_METHOD'] == 'GET' ? $_GET : $_POST; self::add_code(); $tpl = new \Cx\Core\Html\Sigma(\Env::get('cx')->getCodeBaseCorePath() . '/Csrf/View/Template/Generic/'); $tpl->setErrorHandling(PEAR_ERROR_DIE); $tpl->loadTemplateFile('Warning.html'); $form = ''; foreach ($data as $key => $value) { if ($key == self::$formkey || $key == 'amp;' . self::$formkey || $key == '__cap') { continue; } // There *MUST NOT* be any form element with a name attribute // value of "submit" -- this will break the form's submit() method! if ($key == 'submit') { continue; } $form .= self::parseRequestParametersForForm($key, $value); } $csrfContinue = 'javascript:sendData();'; $csrfAbort = 'index.php' . (isset($_GET['cmd']) ? '?cmd=' . $_GET['cmd'] : ''); $_CORELANG['TXT_CSRF_DESCR'] = str_replace('%1$s', $csrfContinue . '" tabindex="-1', $_CORELANG['TXT_CSRF_DESCR']); $_CORELANG['TXT_CSRF_DESCR'] = str_replace('%2$s', $csrfAbort . '" tabindex="-1', $_CORELANG['TXT_CSRF_DESCR']); $action = $_SERVER['REQUEST_URI']; $tpl->setGlobalVariable(array('TXT_CSRF_TITLE' => $_CORELANG['TXT_CSRF_TITLE'], 'TXT_CSRF_DESCR' => $_CORELANG['TXT_CSRF_DESCR'], 'TXT_CSRF_CONTINUE' => $_CORELANG['TXT_CSRF_CONTINUE'], 'TXT_CSRF_ABORT' => $_CORELANG['TXT_CSRF_ABORT'], 'CSRF_CONTINUE' => $csrfContinue . '" tabindex="1', 'CSRF_ABORT' => $csrfAbort . '" tabindex="2', 'REQUEST_METHOD' => strtolower($_SERVER['REQUEST_METHOD']), 'ACTION' => $action, 'FORM_ELEMENTS' => $form, 'IMAGES_PATH' => ASCMS_ADMIN_WEB_PATH . '/images/csrfprotection')); $tpl->parse(); $endcode = $tpl->get(); // replace links from before contrexx 3 $ls = new \LinkSanitizer(ASCMS_PATH_OFFSET . ASCMS_BACKEND_PATH . '/', $endcode); $endcode = $ls->replace(); echo $endcode; die; }
/** * Sets up the JavsScript cart * * Searches all $themesPages elements for the first occurrence of the * "shopJsCart" template block. * Generates the structure of the Javascript cart, puts it in the template, * and registers all required JS code. * Note that this is only ever called when the JS cart is enabled in the * extended settings! * @access public * @global array $_ARRAYLANG Language array * @global array $themesPages Theme template array * @return void * @static */ static function setJsCart() { global $_ARRAYLANG, $themesPages; if (!\Cx\Core\Setting\Controller\Setting::getValue('use_js_cart', 'Shop')) { return; } $objTemplate = new \Cx\Core\Html\Sigma('.'); $objTemplate->setErrorHandling(PEAR_ERROR_DIE); $match = null; $div_cart = $div_product = ''; foreach ($themesPages as $index => $content) { //\DBG::log("Shop::setJsCart(): Section $index"); $objTemplate->setTemplate($content, false, false); if (!$objTemplate->blockExists('shopJsCart')) { continue; } //\DBG::log("Shop::setJsCart(): In themespage $index: {$themesPages[$index]}"); $objTemplate->setCurrentBlock('shopJsCart'); // Set all language entries and replace formats $objTemplate->setGlobalVariable($_ARRAYLANG); if ($objTemplate->blockExists('shopJsCartProducts')) { $objTemplate->parse('shopJsCartProducts'); $div_product = $objTemplate->get('shopJsCartProducts'); //\DBG::log("Shop::setJsCart(): Got Product: $div_product"); $objTemplate->replaceBlock('shopJsCartProducts', '[[SHOP_JS_CART_PRODUCTS]]'); } $objTemplate->touchBlock('shopJsCart'); $objTemplate->parse('shopJsCart'); $div_cart = $objTemplate->get('shopJsCart'); //\DBG::log("Shop::setJsCart(): Got Cart: $div_cart"); if (preg_match('#^([\\n\\r]?[^<]*<.*id=["\']shopJsCart["\'][^>]*>)(([\\n\\r].*)*)(</[^>]*>[^<]*[\\n\\r]?)$#', $div_cart, $match)) { //\DBG::log("Shop::setJsCart(): Matched DIV {$match[1]}, content: {$match[2]}"); $themesPages[$index] = preg_replace('@(<!--\\s*BEGIN\\s+(shopJsCart)\\s*-->.*?<!--\\s*END\\s+\\2\\s*-->)@s', $match[1] . $_ARRAYLANG['TXT_SHOP_CART_IS_LOADING'] . $match[4], $content); /* // Template use won't work, because it kills the remaining <!-- blocks -->! $objTemplate->setTemplate($content, false, false); $objTemplate->replaceBlock('shopJsCart', $match[1]. $_ARRAYLANG['TXT_SHOP_CART_IS_LOADING']. $match[4]); $themesPages[$index] = $objTemplate->get(); */ //\DBG::log("Shop::setJsCart(): Out themespage $index: {$themesPages[$index]}"); } // One instance only (mind that there's a unique id attribute) self::$use_js_cart = true; break; } if (!self::$use_js_cart) { return; } self::registerJavascriptCode(); \ContrexxJavascript::getInstance()->setVariable('TXT_SHOP_CART_IS_LOADING', $_ARRAYLANG['TXT_SHOP_CART_IS_LOADING'], 'shop/cart'); \ContrexxJavascript::getInstance()->setVariable('TXT_SHOP_COULD_NOT_LOAD_CART', $_ARRAYLANG['TXT_SHOP_COULD_NOT_LOAD_CART'], 'shop/cart'); \ContrexxJavascript::getInstance()->setVariable('TXT_EMPTY_SHOPPING_CART', $_ARRAYLANG['TXT_EMPTY_SHOPPING_CART'], 'shop/cart'); \ContrexxJavascript::getInstance()->setVariable("url", (string) \Cx\Core\Routing\URL::fromModuleAndCMd('Shop' . MODULE_INDEX, 'cart', FRONTEND_LANG_ID, array('remoteJs' => 'addProduct')), 'shop/cart'); \JS::registerJS(substr(\Cx\Core\Core\Controller\Cx::instanciate()->getModuleFolderName() . '/Shop/View/Script/cart.js', 1)); \JS::registerCode("cartTpl = '" . preg_replace(array('/\'/', '/[\\n\\r]/', '/\\//'), array('\\\'', '\\n', '\\/'), $div_cart) . "';\n" . "cartProductsTpl = '" . preg_replace(array('/\'/', '/[\\n\\r]/', '/\\//'), array('\\\'', '\\n', '\\/'), $div_product) . "';\n"); }
/** * Adds an external settings view to the current template * * The content must contain the full view, including the surrounding form * tags and submit button. * Note that these are always appended on the right end of the tab list. * @param \Cx\Core\Html\Sigma $objTemplateLocal Template object * @param string $tab_name The tab name to add * @param string $content The external content * @return boolean True on success */ static function show_external(&$objTemplateLocal, $tab_name, $content) { if (empty($objTemplateLocal) || !$objTemplateLocal->blockExists('core_setting_row')) { $objTemplateLocal = new \Cx\Core\Html\Sigma(\Env::get('cx')->getCodeBaseDocumentRootPath() . '/core/Setting/View/Template/Generic'); if (!$objTemplateLocal->loadTemplateFile('Form.html')) { die("Failed to load template Form.html"); } } $active_tab = isset($_REQUEST['active_tab']) ? $_REQUEST['active_tab'] : 1; // The tabindex must be set in the form name in any case $objTemplateLocal->setGlobalVariable(array('CORE_SETTING_TAB_INDEX' => self::$tab_index, 'CORE_SETTING_EXTERNAL' => $content)); // Set up the tab, if any if (!empty($tab_name)) { $objTemplateLocal->setGlobalVariable(array('CORE_SETTING_TAB_NAME' => $tab_name, 'CORE_SETTING_TAB_INDEX' => self::$tab_index, 'CORE_SETTING_TAB_CLASS' => self::$tab_index == $active_tab ? 'active' : '', 'CORE_SETTING_TAB_DISPLAY' => self::$tab_index++ == $active_tab ? 'block' : 'none', 'CORE_SETTING_CURRENT_TAB' => 'tab-' . $active_tab)); $objTemplateLocal->touchBlock('core_setting_tab_row'); $objTemplateLocal->parse('core_setting_tab_row'); $objTemplateLocal->touchBlock('core_setting_tab_div_external'); $objTemplateLocal->parse('core_setting_tab_div_external'); } return true; }
/** * Sets up the Order statistics * @param \Cx\Core\Html\Sigma $objTemplate The optional Template, * by reference * @global ADONewConnection $objDatabase * @global array $_ARRAYLANG * @todo Rewrite the statistics in a seperate class, extending Order * @static */ static function view_statistics(&$objTemplate = null) { global $objDatabase, $_ARRAYLANG; if (!$objTemplate || !$objTemplate->blockExists('no_order')) { $objTemplate = new \Cx\Core\Html\Sigma(\Cx\Core\Core\Controller\Cx::instanciate()->getCodeBaseModulePath() . '/Shop/View/Template/Backend'); $objTemplate->loadTemplateFile('module_shop_statistic.html'); } $objTemplate->setGlobalVariable($_ARRAYLANG); // Get the first order date; if its empty, no order has been placed yet $time_first_order = Order::getFirstOrderTime(); if (!$time_first_order) { $objTemplate->touchBlock('no_order'); return $objTemplate; } $year_first_order = date('Y', $time_first_order); $month_first_order = date('m', $time_first_order); $start_month = $end_month = $start_year = $end_year = NULL; if (isset($_REQUEST['submitdate'])) { // A range is requested $start_month = intval($_REQUEST['startmonth']); $end_month = intval($_REQUEST['stopmonth']); $start_year = intval($_REQUEST['startyear']); $end_year = intval($_REQUEST['stopyear']); } else { // Default range to one year, or back to the first order if less $start_month = $month_first_order; $end_month = Date('m'); $start_year = $end_year = Date('Y'); if ($year_first_order < $start_year) { $start_year -= 1; if ($year_first_order < $start_year || $month_first_order < $start_month) { $start_month = $end_month; } } } $objTemplate->setVariable(array('SHOP_START_MONTH' => Shopmanager::getMonthDropdownMenu($start_month), 'SHOP_END_MONTH' => Shopmanager::getMonthDropdownMenu($end_month), 'SHOP_START_YEAR' => Shopmanager::getYearDropdownMenu($start_year, $year_first_order), 'SHOP_END_YEAR' => Shopmanager::getYearDropdownMenu($end_year, $year_first_order))); $start_date = date(ASCMS_DATE_FORMAT_INTERNATIONAL_DATETIME, mktime(0, 0, 0, $start_month, 1, $start_year)); // mktime() will fix the month from 13 to 01, see example 2 // on http://php.net/manual/de/function.mktime.php. // Mind that this is exclusive and only used in the queries below // so that Order date < $end_date! $end_date = date(ASCMS_DATE_FORMAT_INTERNATIONAL_DATETIME, mktime(0, 0, 0, $end_month + 1, 1, $end_year)); $selectedStat = isset($_REQUEST['selectstats']) ? intval($_REQUEST['selectstats']) : 0; if ($selectedStat == 2) { // Product statistic $objTemplate->setVariable(array('TXT_COLUMN_1_DESC' => $_ARRAYLANG['TXT_PRODUCT_NAME'], 'TXT_COLUMN_2_DESC' => $_ARRAYLANG['TXT_COUNT_ARTICLES'], 'TXT_COLUMN_3_DESC' => $_ARRAYLANG['TXT_STOCK'], 'SHOP_ORDERS_SELECTED' => '', 'SHOP_ARTICLES_SELECTED' => \Html::ATTRIBUTE_SELECTED, 'SHOP_CUSTOMERS_SELECTED' => '')); $arrSql = \Text::getSqlSnippets('`B`.`id`', FRONTEND_LANG_ID, 'Shop', array('title' => Product::TEXT_NAME)); $query = "\n SELECT A.product_id AS id,\n A.quantity AS shopColumn2,\n A.price AS sum,\n B.stock AS shopColumn3,\n C.currency_id, " . $arrSql['field'] . "\n FROM " . DBPREFIX . "module_shop" . MODULE_INDEX . "_order_items AS A\n JOIN " . DBPREFIX . "module_shop" . MODULE_INDEX . "_orders AS C\n ON A.order_id=C.id\n JOIN " . DBPREFIX . "module_shop" . MODULE_INDEX . "_products AS B\n ON A.product_id=B.id" . $arrSql['join'] . "\n WHERE C.date_time>='{$start_date}'\n AND C.date_time<'{$end_date}'\n AND ( C.status=" . Order::STATUS_CONFIRMED . "\n OR C.status=" . Order::STATUS_COMPLETED . ")\n ORDER BY shopColumn2 DESC"; } elseif ($selectedStat == 3) { // Customer statistic $objTemplate->setVariable(array('TXT_COLUMN_1_DESC' => $_ARRAYLANG['TXT_NAME'], 'TXT_COLUMN_2_DESC' => $_ARRAYLANG['TXT_COMPANY'], 'TXT_COLUMN_3_DESC' => $_ARRAYLANG['TXT_COUNT_ARTICLES'], 'SHOP_ORDERS_SELECTED' => '', 'SHOP_ARTICLES_SELECTED' => '', 'SHOP_CUSTOMERS_SELECTED' => \Html::ATTRIBUTE_SELECTED)); $query = "\n SELECT A.sum AS sum,\n A.currency_id AS currency_id,\n sum(B.quantity) AS shopColumn3,\n A.customer_id AS id\n FROM " . DBPREFIX . "module_shop" . MODULE_INDEX . "_orders AS A\n JOIN " . DBPREFIX . "module_shop" . MODULE_INDEX . "_order_items AS B\n ON A.id=B.order_id\n WHERE A.date_time>='{$start_date}'\n AND A.date_time<'{$end_date}'\n AND ( A.status=" . Order::STATUS_CONFIRMED . "\n OR A.status=" . Order::STATUS_COMPLETED . ")\n GROUP BY B.order_id\n ORDER BY sum DESC"; } else { // Order statistic (default); sales per month $objTemplate->setVariable(array('TXT_COLUMN_1_DESC' => $_ARRAYLANG['TXT_DATE'], 'TXT_COLUMN_2_DESC' => $_ARRAYLANG['TXT_COUNT_ORDERS'], 'TXT_COLUMN_3_DESC' => $_ARRAYLANG['TXT_COUNT_ARTICLES'], 'SHOP_ORDERS_SELECTED' => \Html::ATTRIBUTE_SELECTED, 'SHOP_ARTICLES_SELECTED' => '', 'SHOP_CUSTOMERS_SELECTED' => '')); $query = "\n SELECT SUM(A.quantity) AS shopColumn3,\n COUNT(A.order_id) AS shopColumn2,\n B.currency_id,\n B.sum AS sum,\n DATE_FORMAT(B.date_time, '%m') AS month,\n DATE_FORMAT(B.date_time, '%Y') AS year\n FROM " . DBPREFIX . "module_shop" . MODULE_INDEX . "_order_items AS A,\n " . DBPREFIX . "module_shop" . MODULE_INDEX . "_orders AS B\n WHERE A.order_id=B.id\n AND B.date_time>='{$start_date}'\n AND B.date_time<'{$end_date}'\n AND ( B.status=" . Order::STATUS_CONFIRMED . "\n OR B.status=" . Order::STATUS_COMPLETED . ")\n GROUP BY B.id\n ORDER BY year DESC, month DESC"; } $arrayResults = array(); $objResult = $objDatabase->Execute($query); if (!$objResult) { return Order::errorHandler(); } $sumColumn3 = $sumColumn4 = 0; $sumColumn2 = ''; if ($selectedStat == 2) { // Product statistc while (!$objResult->EOF) { // set currency id Currency::setActiveCurrencyId($objResult->fields['currency_id']); $key = $objResult->fields['id']; if (!isset($arrayResults[$key])) { $arrayResults[$key] = array('column1' => '<a href="index.php?cmd=Shop' . MODULE_INDEX . '&act=products&tpl=manage&id=' . $objResult->fields['id'] . '" title="' . $objResult->fields['title'] . '">' . $objResult->fields['title'] . '</a>', 'column2' => 0, 'column3' => $objResult->fields['shopColumn3'], 'column4' => 0); } $arrayResults[$key]['column2'] += +$objResult->fields['shopColumn2']; $arrayResults[$key]['column4'] += +$objResult->fields['shopColumn2'] * Currency::getDefaultCurrencyPrice($objResult->fields['sum']); $objResult->MoveNext(); } if (is_array($arrayResults)) { foreach ($arrayResults as $entry) { $sumColumn2 = $sumColumn2 + $entry['column2']; $sumColumn3 = $sumColumn3 + $entry['column3']; $sumColumn4 = $sumColumn4 + $entry['column4']; } rsort($arrayResults); } } elseif ($selectedStat == 3) { // Customer statistic while (!$objResult->EOF) { Currency::setActiveCurrencyId($objResult->fields['currency_id']); $key = $objResult->fields['id']; if (!isset($arrayResults[$key])) { $objUser = \FWUser::getFWUserObject()->objUser; $objUser = $objUser->getUser($key); $company = ''; $name = $_ARRAYLANG['TXT_SHOP_CUSTOMER_NOT_FOUND']; if ($objUser) { $company = $objUser->getProfileAttribute('company'); $name = $objUser->getProfileAttribute('firstname') . ' ' . $objUser->getProfileAttribute('lastname'); } $arrayResults[$key] = array('column1' => '<a href="index.php?cmd=Shop' . MODULE_INDEX . '&act=customerdetails&customer_id=' . $objResult->fields['id'] . '">' . $name . '</a>', 'column2' => $company, 'column3' => 0, 'column4' => 0); } $arrayResults[$key]['column3'] += $objResult->fields['shopColumn3']; $arrayResults[$key]['column4'] += Currency::getDefaultCurrencyPrice($objResult->fields['sum']); $sumColumn3 += $objResult->fields['shopColumn3']; $sumColumn4 += Currency::getDefaultCurrencyPrice($objResult->fields['sum']); $objResult->MoveNext(); } } else { // Order statistic (default) $arrayMonths = explode(',', $_ARRAYLANG['TXT_MONTH_ARRAY']); while (!$objResult->EOF) { $key = $objResult->fields['year'] . '.' . $objResult->fields['month']; if (!isset($arrayResults[$key])) { $arrayResults[$key] = array('column1' => '', 'column2' => 0, 'column3' => 0, 'column4' => 0); } $arrayResults[$key]['column1'] = $arrayMonths[intval($objResult->fields['month']) - 1] . ' ' . $objResult->fields['year']; $arrayResults[$key]['column2'] = $arrayResults[$key]['column2'] + 1; $arrayResults[$key]['column3'] = $arrayResults[$key]['column3'] + $objResult->fields['shopColumn3']; $arrayResults[$key]['column4'] = $arrayResults[$key]['column4'] + Currency::getDefaultCurrencyPrice($objResult->fields['sum']); $sumColumn2 = $sumColumn2 + 1; $sumColumn3 = $sumColumn3 + $objResult->fields['shopColumn3']; $sumColumn4 = $sumColumn4 + Currency::getDefaultCurrencyPrice($objResult->fields['sum']); $objResult->MoveNext(); } krsort($arrayResults, SORT_NUMERIC); } $objTemplate->setCurrentBlock('statisticRow'); $i = 0; if (is_array($arrayResults)) { foreach ($arrayResults as $entry) { $objTemplate->setVariable(array('SHOP_ROWCLASS' => 'row' . (++$i % 2 + 1), 'SHOP_COLUMN_1' => $entry['column1'], 'SHOP_COLUMN_2' => $entry['column2'], 'SHOP_COLUMN_3' => $entry['column3'], 'SHOP_COLUMN_4' => Currency::formatPrice($entry['column4']) . ' ' . Currency::getDefaultCurrencySymbol())); $objTemplate->parse('statisticRow'); } } $query_currency = "\n SELECT currency_id, sum,\n DATE_FORMAT(date_time, '%m') AS month,\n DATE_FORMAT(date_time, '%Y') AS year\n FROM " . DBPREFIX . "module_shop" . MODULE_INDEX . "_orders\n WHERE status=" . Order::STATUS_CONFIRMED . "\n OR status=" . Order::STATUS_COMPLETED . "\n ORDER BY date_time DESC"; $objResult = $objDatabase->Execute($query_currency); if (!$objResult) { return Order::errorHandler(); } $totalSoldProducts = 0; $query_totalproducts = "\n SELECT sum(A.quantity) AS shopTotalSoldProducts\n FROM " . DBPREFIX . "module_shop" . MODULE_INDEX . "_order_items AS A,\n " . DBPREFIX . "module_shop" . MODULE_INDEX . "_orders AS B\n WHERE A.order_id=B.id\n AND ( B.status=" . Order::STATUS_CONFIRMED . "\n OR B.status=" . Order::STATUS_COMPLETED . ")"; $objResult = $objDatabase->SelectLimit($query_totalproducts, 1); if ($objResult) { if (!$objResult->EOF) { $totalSoldProducts = $objResult->fields['shopTotalSoldProducts']; $objResult->MoveNext(); } } $totalOrderSum = 0; $totalOrders = 0; $bestMonthSum = 0; $bestMonthDate = ''; $arrShopMonthSum = array(); $objResult = $objDatabase->Execute($query); while (!$objResult->EOF) { $orderSum = Currency::getDefaultCurrencyPrice($objResult->fields['sum']); if (!isset($arrShopMonthSum[$objResult->fields['year']][$objResult->fields['month']])) { $arrShopMonthSum[$objResult->fields['year']][$objResult->fields['month']] = 0; } $arrShopMonthSum[$objResult->fields['year']][$objResult->fields['month']] += $orderSum; $totalOrderSum += $orderSum; $totalOrders++; $objResult->MoveNext(); } $months = explode(',', $_ARRAYLANG['TXT_MONTH_ARRAY']); foreach ($arrShopMonthSum as $year => $arrMonth) { foreach ($arrMonth as $month => $sum) { if ($bestMonthSum < $sum) { $bestMonthSum = $sum; $bestMonthDate = $months[$month - 1] . ' ' . $year; } } } $objTemplate->setVariable(array('SHOP_ROWCLASS' => 'row' . (++$i % 2 + 1), 'SHOP_TOTAL_SUM' => Currency::formatPrice($totalOrderSum) . ' ' . Currency::getDefaultCurrencySymbol(), 'SHOP_MONTH' => $bestMonthDate, 'SHOP_MONTH_SUM' => Currency::formatPrice($bestMonthSum) . ' ' . Currency::getDefaultCurrencySymbol(), 'SHOP_TOTAL_ORDERS' => $totalOrders, 'SHOP_SOLD_ARTICLES' => $totalSoldProducts, 'SHOP_SUM_COLUMN_2' => $sumColumn2, 'SHOP_SUM_COLUMN_3' => $sumColumn3, 'SHOP_SUM_COLUMN_4' => Currency::formatPrice($sumColumn4) . ' ' . Currency::getDefaultCurrencySymbol())); return true; }
/** * Show the picture with the id $intPicId (with popup) * * @global ADONewConnection * @global array * @param integer $intPicId: The id of the picture which should be shown */ function showPicture($intPicId) { global $objDatabase, $_ARRAYLANG; $arrPictures = array(); $intPicId = intval($intPicId); // Never used // $intCatId = intval($_GET['cid']); // we need to read the category id out of the database to prevent abusement $intCatId = $this->getCategoryId($intPicId); $categoryProtected = $this->categoryIsProtected($intCatId); if ($categoryProtected > 0) { if (!\Permission::checkAccess($categoryProtected, 'dynamic', true)) { $link = base64_encode($_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING']); \Cx\Core\Csrf\Controller\Csrf::header("Location: " . CONTREXX_DIRECTORY_INDEX . "?section=Login&cmd=noaccess&redirect=" . $link); exit; } } // POPUP Code $objTpl = new \Cx\Core\Html\Sigma(ASCMS_MODULE_PATH . '/Gallery/View/Template/Backend'); $objTpl->loadTemplateFile('module_gallery_show_picture.html', true, true); // get category description $objResult = $objDatabase->Execute("SELECT value FROM " . DBPREFIX . "module_gallery_language " . "WHERE gallery_id={$intCatId} AND lang_id={$this->langId} " . "AND name='desc' LIMIT 1"); $strCategoryComment = ''; if ($objResult && $objResult->RecordCount()) { $strCategoryComment = $objResult->fields['value']; } $objResult = $objDatabase->Execute("SELECT comment, voting " . "FROM " . DBPREFIX . "module_gallery_categories " . "WHERE id={$intCatId}"); $boolComment = ''; $boolVoting = ''; if ($objResult && $objResult->RecordCount()) { $boolComment = $objResult->fields['comment']; $boolVoting = $objResult->fields['voting']; } // get picture informations $objResult = $objDatabase->Execute("SELECT id, path, link, size_show " . "FROM " . DBPREFIX . "module_gallery_pictures " . "WHERE id={$intPicId}"); $objSubResult = $objDatabase->Execute("SELECT p.name, p.desc FROM " . DBPREFIX . "module_gallery_language_pics p " . "WHERE picture_id={$intPicId} AND lang_id={$this->langId} LIMIT 1"); while (!$objResult->EOF) { $imageReso = getimagesize($this->strImagePath . $objResult->fields['path']); $strImagePath = $this->strImageWebPath . $objResult->fields['path']; $imageName = $objSubResult->fields['name']; $imageDesc = $objSubResult->fields['desc']; //show image size based on the settings of "Show image size" $showImageSize = $this->arrSettings['show_image_size'] == 'on' && $objResult->fields['size_show']; $imageSize = $showImageSize ? round(filesize($this->strImagePath . $objResult->fields['path']) / 1024, 2) : ''; $strImageWebPath = ASCMS_PROTOCOL . '://' . $_SERVER['SERVER_NAME'] . CONTREXX_SCRIPT_PATH . '?section=Gallery' . $this->strCmd . '&cid=' . $intCatId . '&pId=' . $intPicId; $objResult->MoveNext(); } // get pictures of the current category $objResult = $objDatabase->Execute("SELECT id FROM " . DBPREFIX . "module_gallery_pictures " . "WHERE status='1' AND validated='1' AND catid={$intCatId} " . "ORDER BY sorting, id"); if ($objResult && $objResult->RecordCount()) { while (!$objResult->EOF) { array_push($arrPictures, $objResult->fields['id']); $objResult->MoveNext(); } } // get next picture id if (array_key_exists(array_search($intPicId, $arrPictures) + 1, $arrPictures)) { $intPicIdNext = $arrPictures[array_search($intPicId, $arrPictures) + 1]; } else { $intPicIdNext = $arrPictures[0]; } // get previous picture id if (array_key_exists(array_search($intPicId, $arrPictures) - 1, $arrPictures)) { $intPicIdPrevious = $arrPictures[array_search($intPicId, $arrPictures) - 1]; } else { $intPicIdPrevious = end($arrPictures); } $strImageTitle = substr(strrchr($strImagePath, '/'), 1); // chop the file extension if the settings tell us to do so if ($this->arrSettings['show_ext'] == 'off') { $strImageTitle = substr($strImageTitle, 0, strrpos($strImageTitle, '.')); } // set language variables $objTpl->setVariable(array('TXT_CLOSE_WINDOW' => $_ARRAYLANG['TXT_CLOSE_WINDOW'], 'TXT_ZOOM_OUT' => $_ARRAYLANG['TXT_ZOOM_OUT'], 'TXT_ZOOM_IN' => $_ARRAYLANG['TXT_ZOOM_IN'], 'TXT_CHANGE_BG_COLOR' => $_ARRAYLANG['TXT_CHANGE_BG_COLOR'], 'TXT_PRINT' => $_ARRAYLANG['TXT_PRINT'], 'TXT_PREVIOUS_IMAGE' => $_ARRAYLANG['TXT_PREVIOUS_IMAGE'], 'TXT_NEXT_IMAGE' => $_ARRAYLANG['TXT_NEXT_IMAGE'], 'TXT_USER_DEFINED' => $_ARRAYLANG['TXT_USER_DEFINED'])); $imageSize = $showImageSize ? $_ARRAYLANG['TXT_FILESIZE'] . ': ' . $imageSize . ' kB<br />' : ''; // set variables $objTpl->setVariable(array('CONTREXX_CHARSET' => CONTREXX_CHARSET, 'GALLERY_WINDOW_WIDTH' => $imageReso[0] < 420 ? 500 : $imageReso[0] + 80, 'GALLERY_WINDOW_HEIGHT' => $imageReso[1] + 120, 'GALLERY_PICTURE_ID' => $intPicId, 'GALLERY_CATEGORY_ID' => $intCatId, 'GALLERY_TITLE' => $strCategoryComment, 'IMAGE_THIS' => $strImagePath, 'IMAGE_PREVIOUS' => '?section=Gallery' . $this->strCmd . '&cid=' . $intCatId . '&pId=' . $intPicIdPrevious, 'IMAGE_NEXT' => '?section=Gallery' . $this->strCmd . '&cid=' . $intCatId . '&pId=' . $intPicIdNext, 'IMAGE_WIDTH' => $imageReso[0], 'IMAGE_HEIGHT' => $imageReso[1], 'IMAGE_LINK' => $strImageWebPath, 'IMAGE_NAME' => $strImageTitle, 'IMAGE_DESCRIPTION' => $_ARRAYLANG['TXT_IMAGE_NAME'] . ': ' . $imageName . '<br />' . $imageSize . $_ARRAYLANG['TXT_RESOLUTION'] . ': ' . $imageReso[0] . 'x' . $imageReso[1] . ' Pixel', 'IMAGE_DESC' => !empty($imageDesc) ? $imageDesc . '<br /><br />' : '')); $objTpl->setGlobalVariable('CONTREXX_DIRECTORY_INDEX', CONTREXX_DIRECTORY_INDEX); //voting if ($objTpl->blockExists('votingTab')) { if ($this->arrSettings['show_voting'] == 'on' && $boolVoting) { $objTpl->setVariable(array('TXT_VOTING_TITLE' => $_ARRAYLANG['TXT_VOTING_TITLE'], 'TXT_VOTING_STATS_ACTUAL' => $_ARRAYLANG['TXT_VOTING_STATS_ACTUAL'], 'TXT_VOTING_STATS_WITH' => $_ARRAYLANG['TXT_VOTING_STATS_WITH'], 'TXT_VOTING_STATS_VOTES' => $_ARRAYLANG['TXT_VOTING_STATS_VOTES'])); if (isset($_COOKIE["Gallery_Voting_{$intPicId}"])) { $objTpl->hideBlock('showVotingBar'); $objTpl->setVariable(array('TXT_VOTING_ALREADY_VOTED' => $_ARRAYLANG['TXT_VOTING_ALREADY_VOTED'], 'VOTING_ALREADY_VOTED_MARK' => intval($_COOKIE['Gallery_Voting_' . $intPicId]))); } else { $objTpl->setVariable(array('TXT_VOTING_ALREADY_VOTED' => '', 'VOTING_ALREADY_VOTED_MARK' => '')); for ($i = 1; $i <= 10; $i++) { $objTpl->setVariable(array('VOTING_BAR_SRC' => ASCMS_MODULE_WEB_PATH . '/Gallery/View/Media/voting/' . $i . '.gif', 'VOTING_BAR_ALT' => $_ARRAYLANG['TXT_VOTING_RATE'] . ': ' . $i, 'VOTING_BAR_MARK' => $i, 'VOTING_BAR_CID' => $intCatId, 'VOTING_BAR_PICID' => $intPicId)); $objTpl->parse('showVotingBar'); } } $objResult = $objDatabase->Execute("SELECT mark FROM " . DBPREFIX . "module_gallery_votes " . "WHERE picid={$intPicId}"); if ($objResult->RecordCount() > 0) { $intCount = 0; $intMark = 0; while (!$objResult->EOF) { $intCount++; $intMark = $intMark + intval($objResult->fields['mark']); $objResult->MoveNext(); } $objTpl->setVariable(array('VOTING_STATS_MARK' => number_format(round($intMark / $intCount, 1), 1, '.', '\''), 'VOTING_STATS_VOTES' => $intCount)); } else { $objTpl->setVariable(array('VOTING_STATS_MARK' => 0, 'VOTING_STATS_VOTES' => 0)); } } else { $objTpl->hideBlock('votingTab'); } } //comments if ($this->arrSettings['show_comments'] == 'on' && $boolComment) { $objResult = $objDatabase->Execute("SELECT date, name, email, www, comment FROM " . DBPREFIX . "module_gallery_comments " . "WHERE picid={$intPicId} ORDER BY date ASC"); $objTpl->setVariable(array('TXT_COMMENTS_TITLE' => $objResult->RecordCount() . ' ' . $_ARRAYLANG['TXT_COMMENTS_TITLE'], 'TXT_COMMENTS_ADD_TITLE' => $_ARRAYLANG['TXT_COMMENTS_ADD_TITLE'], 'TXT_COMMENTS_ADD_NAME' => $_ARRAYLANG['TXT_COMMENTS_ADD_NAME'], 'TXT_COMMENTS_ADD_EMAIL' => $_ARRAYLANG['TXT_COMMENTS_ADD_EMAIL'], 'TXT_COMMENTS_ADD_HOMEPAGE' => $_ARRAYLANG['TXT_COMMENTS_ADD_HOMEPAGE'], 'TXT_COMMENTS_ADD_TEXT' => $_ARRAYLANG['TXT_COMMENTS_ADD_TEXT'], 'TXT_COMMENTS_ADD_SUBMIT' => $_ARRAYLANG['TXT_COMMENTS_ADD_SUBMIT'])); if ($objResult->RecordCount() == 0) { // no comments, hide the block $objTpl->hideBlock('showComments'); } else { $i = 0; while (!$objResult->EOF) { if ($i % 2 == 0) { $intRowClass = '1'; } else { $intRowClass = '2'; } if ($objResult->fields['www'] != '') { $strWWW = '<a href="' . $objResult->fields['www'] . '"><img alt="' . $objResult->fields['www'] . '" src="' . ASCMS_MODULE_WEB_PATH . '/Gallery/View/Media/www.gif" align="baseline" border="0" /></a>'; } else { $strWWW = '<img src="' . ASCMS_MODULE_WEB_PATH . '/Gallery/View/Media/pixel.gif" width="16" height="16" alt="" align="baseline" border="0" />'; } if ($objResult->fields['email'] != '') { $strEmail = '<a href="mailto:' . $objResult->fields['email'] . '"><img alt="' . $objResult->fields['email'] . '" src="' . ASCMS_MODULE_WEB_PATH . '/Gallery/View/Media/email.gif" align="baseline" border="0" /></a>'; } else { $strEmail = '<img src="' . ASCMS_MODULE_WEB_PATH . '/Gallery/View/Media/pixel.gif" width="16" height="16" alt="" align="baseline" border="0" />'; } $objTpl->setVariable(array('COMMENTS_NAME' => html_entity_decode($objResult->fields['name']), 'COMMENTS_DATE' => date($_ARRAYLANG['TXT_COMMENTS_DATEFORMAT'], $objResult->fields['date']), 'COMMENTS_WWW' => $strWWW, 'COMMENTS_EMAIL' => $strEmail, 'COMMENTS_TEXT' => nl2br($objResult->fields['comment']), 'COMMENTS_ROWCLASS' => $intRowClass)); $objTpl->parse('showComments'); $objResult->MoveNext(); $i++; } } } else { $objTpl->hideBlock('commentTab'); } $objTpl->show(); die; }
/** * Sets up the Country settings page * @return string The page content */ static function settings() { global $_CORELANG; $objTemplateCountry = new \Cx\Core\Html\Sigma(\Env::get('cx')->getCodeBaseCorePath() . '/Country/View/Template/Generic'); $objTemplateCountry->loadTemplateFile('Overview.html'); // Adds messages self::storeSettings(); self::storeFromPost(); $uri = \Html::getRelativeUri(); // Let all links in this tab point here again \Html::replaceUriParameter($uri, 'active_tab=' . \Cx\Core\Setting\Controller\Setting::tab_index()); // Create a copy of the URI for the Paging, as this is passed by // reference and modified $uri_paging = $uri; //DBG::log("URI: $uri"); $objSorting = new Sorting($uri, array('id' => $_CORELANG['TXT_CORE_COUNTRY_ID'], 'active' => $_CORELANG['TXT_CORE_COUNTRY_ACTIVE'], 'ord' => $_CORELANG['TXT_CORE_COUNTRY_ORD'], 'name' => $_CORELANG['TXT_CORE_COUNTRY_NAME'], 'alpha2' => $_CORELANG['TXT_CORE_COUNTRY_ISO2'], 'alpha3' => $_CORELANG['TXT_CORE_COUNTRY_ISO3']), true, 'order_country'); \Cx\Core\Setting\Controller\Setting::init('core', 'country'); $limit = \Cx\Core\Setting\Controller\Setting::getValue('numof_countries_per_page_backend', 'core'); $count = 0; $arrCountries = self::getArray($count, null, $limit, \Paging::getPosition(), $objSorting->getOrder()); if ($arrCountries === false) { return \Message::error($_CORELANG['TXT_CORE_COUNTRY_ERROR_INITIALIZING']); } $objTemplateCountry->setGlobalVariable($_CORELANG + array('CORE_COUNTRY' => $_CORELANG['TXT_CORE_COUNTRY'] . ' ' . sprintf($_CORELANG['TXT_CORE_TOTAL'], $count), 'HEAD_SETTINGS_COUNTRY_ID' => $objSorting->getHeaderForField('id'), 'HEAD_SETTINGS_COUNTRY_ACTIVE' => $objSorting->getHeaderForField('active'), 'HEAD_SETTINGS_COUNTRY_ORD' => $objSorting->getHeaderForField('ord'), 'HEAD_SETTINGS_COUNTRY_NAME' => $objSorting->getHeaderForField('name'), 'HEAD_SETTINGS_COUNTRY_ISO2' => $objSorting->getHeaderForField('alpha2'), 'HEAD_SETTINGS_COUNTRY_ISO3' => $objSorting->getHeaderForField('alpha3'), 'CORE_SETTING_TAB_INDEX' => \Cx\Core\Setting\Controller\Setting::tab_index(), 'SETTINGS_COUNTRY_PAGING' => \Paging::get($uri_paging, '', $count, $limit, true))); // Note: Optionally disable the block 'settings_country_submit' // to disable storing changes $i = 0; foreach ($arrCountries as $country_id => $arrCountry) { $objTemplateCountry->setVariable(array('SETTINGS_COUNTRY_ROWCLASS' => ++$i % 2 + 1, 'SETTINGS_COUNTRY_ID' => $country_id, 'SETTINGS_COUNTRY_ACTIVE' => $arrCountry['active'] ? \Html::ATTRIBUTE_CHECKED : '', 'SETTINGS_COUNTRY_ORD' => $arrCountry['ord'], 'SETTINGS_COUNTRY_NAME' => $arrCountry['name'], 'SETTINGS_COUNTRY_ISO2' => $arrCountry['alpha2'], 'SETTINGS_COUNTRY_ISO3' => $arrCountry['alpha3'], 'SETTINGS_FUNCTIONS' => \Html::getBackendFunctions(array('delete' => 'delete_country_id=' . $country_id), array('delete' => $_CORELANG['TXT_CORE_COUNTRY_CONFIRM_DELETE'] . "\\n" . $_CORELANG['TXT_ACTION_IS_IRREVERSIBLE'])))); $objTemplateCountry->parse('settings_country_row'); } $objTemplateSetting = null; \Cx\Core\Setting\Controller\Setting::show_external($objTemplateSetting, $_CORELANG['TXT_CORE_COUNTRY_EDIT'], $objTemplateCountry->get()); \Cx\Core\Setting\Controller\Setting::show($objTemplateSetting, $uri, $_CORELANG['TXT_CORE_COUNTRY_SETTINGS'], $_CORELANG['TXT_CORE_COUNTRY_SETTINGS']); return $objTemplateSetting->get(); }
/** * Adds the toolbar to the current html structure (after the starting body tag) * * @param ComponentController $componentController */ private function prepareTemplate(\Cx\Core_Modules\FrontendEditing\Controller\ComponentController $componentController) { global $_ARRAYLANG, $objTemplate; // get necessary objects $objInit = \Env::get('init'); $page = $this->cx->getPage(); // init component template object $componentTemplate = new \Cx\Core\Html\Sigma(ASCMS_CORE_MODULE_PATH . '/' . $componentController->getName() . '/View/Template/Generic'); $componentTemplate->setErrorHandling(PEAR_ERROR_DIE); // add div for toolbar after starting body tag $componentTemplate->loadTemplateFile('Toolbar.html'); // @author: Michael Ritter // not used for contrexx 3.1 // global $_CORELANG; // $template = $objTemplate; // $root = $componentTemplate->fileRoot; // $componentTemplate->setRoot(ASCMS_ADMIN_TEMPLATE_PATH); // $objTemplate = $componentTemplate; // \Env::get('ClassLoader')->loadFile(ASCMS_DOCUMENT_ROOT . '/lang/en/backend.php'); // $langCode = \FWLanguage::getLanguageCodeById(FRONTEND_LANG_ID); // if ($langCode != 'en') { // \Env::get('ClassLoader')->loadFile(ASCMS_DOCUMENT_ROOT . '/lang/' . $langCode . '/backend.php'); // } // $_CORELANG = array_merge($_CORELANG, $_ARRAYLANG); // $menu = new \adminMenu('fe'); // $menu->getAdminNavbar(); // $componentTemplate->setRoot($root); // $objTemplate = $template; // end code from Michael Ritter $objUser = $this->cx->getUser()->objUser; $firstname = $objUser->getProfileAttribute('firstname'); $lastname = $objUser->getProfileAttribute('lastname'); $componentTemplate->setGlobalVariable(array('LOGGED_IN_USER' => !empty($firstname) && !empty($lastname) ? $firstname . ' ' . $lastname : $objUser->getUsername(), 'TXT_LOGOUT' => $_ARRAYLANG['TXT_FRONTEND_EDITING_TOOLBAR_LOGOUT'], 'TXT_FRONTEND_EDITING_TOOLBAR_OPEN_CM' => $_ARRAYLANG['TXT_FRONTEND_EDITING_TOOLBAR_OPEN_CM'], 'TXT_FRONTEND_EDITING_HISTORY' => $_ARRAYLANG['TXT_FRONTEND_EDITING_HISTORY'], 'TXT_FRONTEND_EDITING_OPTIONS' => $_ARRAYLANG['TXT_FRONTEND_EDITING_OPTIONS'], 'TXT_FRONTEND_EDITING_ADMINMENU' => $_ARRAYLANG['TXT_FRONTEND_EDITING_ADMINMENU'], 'TXT_FRONTEND_EDITING_CSS_CLASS' => $_ARRAYLANG['TXT_FRONTEND_EDITING_CSS_CLASS'], 'TXT_FRONTEND_EDITING_CUSTOM_CONTENT' => $_ARRAYLANG['TXT_FRONTEND_EDITING_CUSTOM_CONTENT'], 'TXT_FRONTEND_EDITING_THEMES' => $_ARRAYLANG['TXT_FRONTEND_EDITING_THEMES'], 'TXT_FRONTEND_EDITING_TOOLBAR_SAVE_BLOCK' => $_ARRAYLANG['TXT_FRONTEND_EDITING_TOOLBAR_SAVE_BLOCK'], 'SKIN_OPTIONS' => $this->getSkinOptions(), 'LINK_LOGOUT' => $objInit->getUriBy('section', 'logout'), 'LINK_PROFILE' => ASCMS_PATH_OFFSET . '/cadmin/index.php?cmd=Access&act=user&tpl=modify&id=' . $objUser->getId(), 'LINK_CM' => ASCMS_PATH_OFFSET . '/cadmin/index.php?cmd=ContentManager&page=' . $page->getId() . '&tab=content')); $objTemplate->_blocks['__global__'] = preg_replace('/<body[^>]*>/', '\\0' . $componentTemplate->get(), $objTemplate->_blocks['__global__']); }
/** * Set up the detail view of the selected order * @access public * @param \Cx\Core\Html\Sigma $objTemplate The Template, by reference * @param boolean $edit Edit if true, view otherwise * @global ADONewConnection $objDatabase Database connection object * @global array $_ARRAYLANG Language array * @return boolean True on success, * false otherwise * @static * @author Reto Kohli <*****@*****.**> (parts) * @version 3.1.0 */ static function view_detail(&$objTemplate = null, $edit = false) { global $objDatabase, $_ARRAYLANG, $objInit; $backend = $objInit->mode == 'backend'; if ($objTemplate->blockExists('order_list')) { $objTemplate->hideBlock('order_list'); } $have_option = false; // The order total -- in the currency chosen by the customer $order_sum = 0; // recalculated VAT total $total_vat_amount = 0; $order_id = intval($_REQUEST['order_id']); if (!$order_id) { return \Message::error($_ARRAYLANG['TXT_SHOP_ORDER_ERROR_INVALID_ORDER_ID']); } if (!$objTemplate) { $template_name = $edit ? 'module_shop_order_edit.html' : 'module_shop_order_details.html'; $objTemplate = new \Cx\Core\Html\Sigma(\Cx\Core\Core\Controller\Cx::instanciate()->getCodeBaseModulePath() . '/Shop/View/Template/Backend'); //DBG::log("Orders::view_list(): new Template: ".$objTemplate->get()); $objTemplate->loadTemplateFile($template_name); //DBG::log("Orders::view_list(): loaded Template: ".$objTemplate->get()); } $objOrder = Order::getById($order_id); if (!$objOrder) { //DBG::log("Shop::shopShowOrderdetails(): Failed to find Order ID $order_id"); return \Message::error(sprintf($_ARRAYLANG['TXT_SHOP_ORDER_NOT_FOUND'], $order_id)); } // lsv data $query = "\n SELECT `holder`, `bank`, `blz`\n FROM " . DBPREFIX . "module_shop" . MODULE_INDEX . "_lsv\n WHERE order_id={$order_id}"; $objResult = $objDatabase->Execute($query); if (!$objResult) { return self::errorHandler(); } if ($objResult->RecordCount() == 1) { $objTemplate->setVariable(array('SHOP_ACCOUNT_HOLDER' => contrexx_raw2xhtml($objResult->fields['holder']), 'SHOP_ACCOUNT_BANK' => contrexx_raw2xhtml($objResult->fields['bank']), 'SHOP_ACCOUNT_BLZ' => contrexx_raw2xhtml($objResult->fields['blz']))); } $customer_id = $objOrder->customer_id(); if (!$customer_id) { //DBG::log("Shop::shopShowOrderdetails(): Invalid Customer ID $customer_id"); \Message::error(sprintf($_ARRAYLANG['TXT_SHOP_INVALID_CUSTOMER_ID'], $customer_id)); } $objCustomer = Customer::getById($customer_id); if (!$objCustomer) { //DBG::log("Shop::shopShowOrderdetails(): Failed to find Customer ID $customer_id"); \Message::error(sprintf($_ARRAYLANG['TXT_SHOP_CUSTOMER_NOT_FOUND'], $customer_id)); $objCustomer = new Customer(); // No editing allowed! $have_option = true; } Vat::is_reseller($objCustomer->is_reseller()); Vat::is_home_country(\Cx\Core\Setting\Controller\Setting::getValue('country_id', 'Shop') == $objOrder->country_id()); $objTemplate->setGlobalVariable($_ARRAYLANG + array('SHOP_CURRENCY' => Currency::getCurrencySymbolById($objOrder->currency_id()))); //DBG::log("Order sum: ".Currency::formatPrice($objOrder->sum())); $objTemplate->setVariable(array('SHOP_CUSTOMER_ID' => $customer_id, 'SHOP_ORDERID' => $order_id, 'SHOP_DATE' => date(ASCMS_DATE_FORMAT_INTERNATIONAL_DATETIME, strtotime($objOrder->date_time())), 'SHOP_ORDER_STATUS' => $edit ? Orders::getStatusMenu($objOrder->status(), false, null, 'swapSendToStatus(this.value)') : $_ARRAYLANG['TXT_SHOP_ORDER_STATUS_' . $objOrder->status()], 'SHOP_SEND_MAIL_STYLE' => $objOrder->status() == Order::STATUS_CONFIRMED ? 'display: inline;' : 'display: none;', 'SHOP_SEND_MAIL_STATUS' => $edit ? $objOrder->status() != Order::STATUS_CONFIRMED ? \Html::ATTRIBUTE_CHECKED : '' : '', 'SHOP_ORDER_SUM' => Currency::formatPrice($objOrder->sum()), 'SHOP_DEFAULT_CURRENCY' => Currency::getDefaultCurrencySymbol(), 'SHOP_GENDER' => $edit ? Customer::getGenderMenu($objOrder->billing_gender(), 'billing_gender') : $_ARRAYLANG['TXT_SHOP_' . strtoupper($objOrder->billing_gender())], 'SHOP_COMPANY' => $objOrder->billing_company(), 'SHOP_FIRSTNAME' => $objOrder->billing_firstname(), 'SHOP_LASTNAME' => $objOrder->billing_lastname(), 'SHOP_ADDRESS' => $objOrder->billing_address(), 'SHOP_ZIP' => $objOrder->billing_zip(), 'SHOP_CITY' => $objOrder->billing_city(), 'SHOP_COUNTRY' => $edit ? \Cx\Core\Country\Controller\Country::getMenu('billing_country_id', $objOrder->billing_country_id()) : \Cx\Core\Country\Controller\Country::getNameById($objOrder->billing_country_id()), 'SHOP_PHONE' => $objOrder->billing_phone(), 'SHOP_FAX' => $objOrder->billing_fax(), 'SHOP_EMAIL' => $objOrder->billing_email(), 'SHOP_SHIP_GENDER' => $edit ? Customer::getGenderMenu($objOrder->gender(), 'shipPrefix') : $_ARRAYLANG['TXT_SHOP_' . strtoupper($objOrder->gender())], 'SHOP_SHIP_COMPANY' => $objOrder->company(), 'SHOP_SHIP_FIRSTNAME' => $objOrder->firstname(), 'SHOP_SHIP_LASTNAME' => $objOrder->lastname(), 'SHOP_SHIP_ADDRESS' => $objOrder->address(), 'SHOP_SHIP_ZIP' => $objOrder->zip(), 'SHOP_SHIP_CITY' => $objOrder->city(), 'SHOP_SHIP_COUNTRY' => $edit ? \Cx\Core\Country\Controller\Country::getMenu('shipCountry', $objOrder->country_id()) : \Cx\Core\Country\Controller\Country::getNameById($objOrder->country_id()), 'SHOP_SHIP_PHONE' => $objOrder->phone(), 'SHOP_PAYMENTTYPE' => Payment::getProperty($objOrder->payment_id(), 'name'), 'SHOP_CUSTOMER_NOTE' => $objOrder->note(), 'SHOP_COMPANY_NOTE' => $objCustomer->companynote(), 'SHOP_SHIPPING_TYPE' => $objOrder->shipment_id() ? Shipment::getShipperName($objOrder->shipment_id()) : ' ')); if ($backend) { $objTemplate->setVariable(array('SHOP_CUSTOMER_IP' => $objOrder->ip() ? '<a href="index.php?cmd=NetTools&tpl=whois&address=' . $objOrder->ip() . '" title="' . $_ARRAYLANG['TXT_SHOW_DETAILS'] . '">' . $objOrder->ip() . '</a>' : ' ', 'SHOP_CUSTOMER_HOST' => $objOrder->host() ? '<a href="index.php?cmd=NetTools&tpl=whois&address=' . $objOrder->host() . '" title="' . $_ARRAYLANG['TXT_SHOW_DETAILS'] . '">' . $objOrder->host() . '</a>' : ' ', 'SHOP_CUSTOMER_LANG' => \FWLanguage::getLanguageParameter($objOrder->lang_id(), 'name'), 'SHOP_CUSTOMER_BROWSER' => $objOrder->browser() ? $objOrder->browser() : ' ', 'SHOP_LAST_MODIFIED' => $objOrder->modified_on() && $objOrder->modified_on() != '0000-00-00 00:00:00' ? $objOrder->modified_on() . ' ' . $_ARRAYLANG['TXT_EDITED_BY'] . ' ' . $objOrder->modified_by() : $_ARRAYLANG['TXT_ORDER_WASNT_YET_EDITED'])); } else { // Frontend: Order history ONLY. Repeat the Order, go to cart $objTemplate->setVariable(array('SHOP_ACTION_URI_ENCODED' => \Cx\Core\Routing\Url::fromModuleAndCmd('Shop', 'cart'))); } $ppName = ''; $psp_id = Payment::getPaymentProcessorId($objOrder->payment_id()); if ($psp_id) { $ppName = PaymentProcessing::getPaymentProcessorName($psp_id); } $objTemplate->setVariable(array('SHOP_SHIPPING_PRICE' => $objOrder->shipment_amount(), 'SHOP_PAYMENT_PRICE' => $objOrder->payment_amount(), 'SHOP_PAYMENT_HANDLER' => $ppName, 'SHOP_LAST_MODIFIED_DATE' => $objOrder->modified_on())); if ($edit) { // edit order $strJsArrShipment = Shipment::getJSArrays(); $objTemplate->setVariable(array('SHOP_SEND_TEMPLATE_TO_CUSTOMER' => sprintf($_ARRAYLANG['TXT_SEND_TEMPLATE_TO_CUSTOMER'], $_ARRAYLANG['TXT_ORDER_COMPLETE']), 'SHOP_SHIPPING_TYP_MENU' => Shipment::getShipperMenu($objOrder->country_id(), $objOrder->shipment_id(), "calcPrice(0);"), 'SHOP_JS_ARR_SHIPMENT' => $strJsArrShipment, 'SHOP_PRODUCT_IDS_MENU_NEW' => Products::getMenuoptions(null, null, $_ARRAYLANG['TXT_SHOP_PRODUCT_MENU_FORMAT']), 'SHOP_JS_ARR_PRODUCT' => Products::getJavascriptArray($objCustomer->group_id(), $objCustomer->is_reseller()))); } $options = $objOrder->getOptionArray(); if (!empty($options[$order_id])) { $have_option = true; } // Order items $total_weight = $i = 0; $total_net_price = $objOrder->view_items($objTemplate, $edit, $total_weight, $i); // Show VAT with the individual products: // If VAT is enabled, and we're both in the same country // ($total_vat_amount has been set above if both conditions are met) // show the VAT rate. // If there is no VAT, the amount is 0 (zero). //if ($total_vat_amount) { // distinguish between included VAT, and additional VAT added to sum $tax_part_percentaged = Vat::isIncluded() ? $_ARRAYLANG['TXT_TAX_PREFIX_INCL'] : $_ARRAYLANG['TXT_TAX_PREFIX_EXCL']; $objTemplate->setVariable(array('SHOP_TAX_PRICE' => Currency::formatPrice($total_vat_amount), 'SHOP_PART_TAX_PROCENTUAL' => $tax_part_percentaged)); //} else { // No VAT otherwise // remove it from the details overview if empty //$objTemplate->hideBlock('taxprice'); //$tax_part_percentaged = $_ARRAYLANG['TXT_NO_TAX']; //} // Parse Coupon if applicable to this product // Coupon $objCoupon = Coupon::getByOrderId($order_id); if ($objCoupon) { $discount = $objCoupon->discount_amount() != 0 ? $objCoupon->discount_amount() : $total_net_price / 100 * $objCoupon->discount_rate(); $objTemplate->setVariable(array('SHOP_COUPON_NAME' => $_ARRAYLANG['TXT_SHOP_DISCOUNT_COUPON_CODE'], 'SHOP_COUPON_CODE' => $objCoupon->code(), 'SHOP_COUPON_AMOUNT' => Currency::formatPrice(-$discount))); $total_net_price -= $discount; //DBG::log("Order::view_detail(): Coupon: ".var_export($objCoupon, true)); } $objTemplate->setVariable(array('SHOP_ROWCLASS_NEW' => 'row' . (++$i % 2 + 1), 'SHOP_TOTAL_WEIGHT' => Weight::getWeightString($total_weight), 'SHOP_NET_PRICE' => Currency::formatPrice($total_net_price))); $objTemplate->setVariable(array('TXT_PRODUCT_ID' => $_ARRAYLANG['TXT_ID'], 'TXT_TAX_RATE' => Vat::isIncluded() ? $_ARRAYLANG['TXT_TAX_PREFIX_INCL'] : $_ARRAYLANG['TXT_TAX_PREFIX_EXCL'], 'TXT_SHOP_ACCOUNT_VALIDITY' => $_ARRAYLANG['TXT_SHOP_VALIDITY'])); // Disable the "edit" button when there are Attributes if ($backend && !$edit) { if ($have_option) { if ($objTemplate->blockExists('order_no_edit')) { $objTemplate->touchBlock('order_no_edit'); } } else { if ($objTemplate->blockExists('order_edit')) { $objTemplate->touchBlock('order_edit'); } } } return true; }