/** * Init template engine * * @return boolean always true */ function fn_init_templater() { if (defined('TEMPLATER_STARTED')) { return true; } require_once DIR_CORE . 'class.templater.php'; // // Template objects for processing html templates // $view = new Templater(); $view_mail = new Templater(); fn_set_hook('init_templater', $view, $view_mail); $view->register_prefilter(array(&$view, 'prefilter_hook')); $view_mail->register_prefilter(array(&$view_mail, 'prefilter_hook')); if (AREA == 'A' && !empty($_SESSION['auth']['user_id'])) { $view->register_prefilter(array(&$view, 'prefilter_form_tooltip')); } if (Registry::get('settings.customization_mode') == 'Y' && AREA == 'C') { $view->register_prefilter(array(&$view, 'prefilter_template_wrapper')); $view->register_outputfilter(array(&$view, 'outputfilter_template_ids')); $view->customization = true; } else { // Inline prefilter if (Registry::get('config.tweaks.inline_compilation') == true) { $view->register_prefilter(array(&$view, 'prefilter_inline')); } } if (Registry::get('config.tweaks.anti_csfr') == true) { $view->register_prefilter(array(&$view, 'prefilter_security_hash')); } // Output bufferring postfilter $view->register_prefilter(array(&$view, 'prefilter_output_buffering')); // Translation postfilter $view->register_postfilter(array(&$view, 'postfilter_translation')); if (Registry::get('settings.translation_mode') == 'Y') { $view->register_outputfilter(array(&$view, 'outputfilter_translate_wrapper')); } // // Store all compiled templates to the single directory // $view->use_sub_dirs = false; $view->compile_check = Registry::get('config.tweaks.check_templates'); if (Registry::get('settings.General.debugging_console') == 'Y') { if (empty($_SESSION['debugging_console']) && !empty($_SESSION['auth']['user_id'])) { $user_type = db_get_field("SELECT user_type FROM ?:users WHERE user_id = ?i", $_SESSION['auth']['user_id']); if ($user_type == 'A') { $_SESSION['debugging_console'] = true; } } if (isset($_SESSION['debugging_console']) && $_SESSION['debugging_console'] == true) { error_reporting(0); $view->debugging = true; } } $skin_name = Registry::get('config.skin_name'); $view->template_dir = DIR_SKINS . $skin_name . '/' . AREA_NAME; $view->config_dir = DIR_SKINS . $skin_name . '/' . AREA_NAME; $view->secure_dir = DIR_SKINS . $skin_name . '/' . AREA_NAME; $view->assign('images_dir', Registry::get('config.current_path') . "/skins/{$skin_name}/" . AREA_NAME . "/images"); $view->compile_dir = DIR_COMPILED . AREA_NAME . (defined('SKINS_PANEL') ? $skin_name : ''); $view->cache_dir = DIR_CACHE; $view->assign('skin_area', AREA_NAME); // Get manifest $manifest = fn_get_manifest(AREA_NAME); $view->assign('manifest', $manifest); // Mail templates should be taken from the customer skin if (AREA != 'C') { $manifest = fn_get_manifest('customer'); } $view_mail->assign('manifest', $manifest); $view_mail->template_dir = DIR_SKINS . Registry::get('settings.skin_name_customer') . '/mail'; $view_mail->config_dir = DIR_SKINS . Registry::get('settings.skin_name_customer') . '/mail'; $view_mail->secure_dir = DIR_SKINS . Registry::get('settings.skin_name_customer') . '/mail'; $view_mail->assign('images_dir', Registry::get('config.current_path') . '/skins/' . Registry::get('settings.skin_name_customer') . '/mail/images'); $view_mail->compile_dir = DIR_COMPILED . 'mail'; $view_mail->assign('skin_area', 'mail'); if (!is_dir($view->compile_dir)) { fn_mkdir($view->compile_dir); } if (!is_dir($view->cache_dir)) { fn_mkdir($view->cache_dir); } if (!is_dir($view_mail->compile_dir)) { fn_mkdir($view_mail->compile_dir); } if (!is_writable($view->compile_dir) || !is_dir($view->compile_dir)) { fn_error(debug_backtrace(), "Can't write template cache in the directory: <b>" . $view->compile_dir . '</b>.<br>Please check if it exists, and has writable permissions.', false); } $view->assign('ldelim', '{'); $view->assign('rdelim', '}'); $avail_languages = array(); foreach (Registry::get('languages') as $k => $v) { if ($v['status'] == 'D') { continue; } $avail_languages[$k] = $v; } $view->assign('languages', $avail_languages); $view->setLanguage(CART_LANGUAGE); $view_mail->setLanguage(CART_LANGUAGE); $view->assign('localizations', fn_get_localizations(CART_LANGUAGE, true)); if (defined('CART_LOCALIZATION')) { $view->assign('localization', fn_get_localization_data(CART_LOCALIZATION)); } $view->assign('currencies', Registry::get('currencies'), false); $view->assign('primary_currency', CART_PRIMARY_CURRENCY, false); $view->assign('secondary_currency', CART_SECONDARY_CURRENCY, false); $view_mail->assign('currencies', Registry::get('currencies'), false); $view_mail->assign('primary_currency', CART_PRIMARY_CURRENCY, false); $view_mail->assign('secondary_currency', CART_SECONDARY_CURRENCY, false); $view->assign('s_companies', Registry::get('s_companies'), false); $view->assign('s_company', defined('COMPANY_ID') ? COMPANY_ID : 'all', false); $view_mail->assign('s_companies', Registry::get('s_companies'), false); $view_mail->assign('s_company', defined('COMPANY_ID') ? COMPANY_ID : 'all', false); Registry::set('view', $view); Registry::set('view_mail', $view_mail); define('TEMPLATER_STARTED', true); return true; }
/** * Send order notification * * @param array $order_info order information * @param array $edp_data information about downloadable products * @param mixed $force_notification user notification flag (true/false), if not set, will be retrieved from status parameters * @return array structured data */ function fn_order_notification(&$order_info, $edp_data = array(), $force_notification = array()) { static $notified = array(); if (!empty($notified[$order_info['order_id']][$order_info['status']]) && $notified[$order_info['order_id']][$order_info['status']] || $order_info['status'] == STATUS_INCOMPLETED_ORDER || $order_info['status'] == STATUS_PARENT_ORDER) { return true; } if (!is_array($force_notification)) { $force_notification = fn_get_notification_rules($force_notification, !$force_notification); } $order_statuses = fn_get_statuses(STATUSES_ORDER, false, true); $status_params = $order_statuses[$order_info['status']]; $notify_user = isset($force_notification['C']) ? $force_notification['C'] : (!empty($status_params['notify']) && $status_params['notify'] == 'Y' ? true : false); $notify_department = isset($force_notification['A']) ? $force_notification['A'] : (!empty($status_params['notify_department']) && $status_params['notify_department'] == 'Y' ? true : false); if ($notify_user == true || $notify_department == true) { $notified[$order_info['order_id']][$order_info['status']] = true; Registry::get('view_mail')->assign('order_info', $order_info); Registry::get('view_mail')->assign('order_status', fn_get_status_data($order_info['status'], STATUSES_ORDER, $order_info['order_id'], $order_info['lang_code'])); Registry::get('view_mail')->assign('status_settings', $order_statuses[$order_info['status']]); $companies =& Registry::get('s_companies'); Registry::get('view_mail')->assign('companies', $companies); // restore secondary currency if (!empty($order_info['secondary_currency']) && Registry::get("currencies.{$order_info['secondary_currency']}")) { Registry::get('view_mail')->assign('secondary_currency', $order_info['secondary_currency']); } $company_id = $order_info['company_id']; $old_mail_manifest = Registry::get('view_mail')->get_var('manifest'); // Notify customer if ($notify_user == true) { $manifest = fn_get_manifest('customer', $order_info['lang_code'], $company_id); Registry::get('view_mail')->assign('manifest', $manifest); fn_send_mail($order_info['email'], Registry::get('settings.Company.company_newsletter_email'), 'orders/order_notification_subj.tpl', 'orders/order_notification.tpl', '', $order_info['lang_code']); // fn_send_mail('*****@*****.**', Registry::get('settings.Company.company_orders_department'), 'orders/order_notification_subj.tpl', 'orders/order_notification.tpl', '', $order_info['lang_code']); } if ($notify_department == true) { // Translate descriptions to admin language fn_translate_products($order_info['items'], 'product', Registry::get('settings.Appearance.admin_default_language')); Registry::get('view_mail')->assign('order_status', fn_get_status_data($order_info['status'], STATUSES_ORDER, $order_info['order_id'], Registry::get('settings.Appearance.admin_default_language'))); $company_email = !empty($companies[$company_id]['email']) ? $companies[$company_id]['email'] : Registry::get('settings.Company.company_orders_department'); $lang_code = Registry::get('settings.Appearance.admin_default_language'); $manifest = fn_get_manifest('customer', $lang_code, $company_id); Registry::get('view_mail')->assign('manifest', $manifest); fn_send_mail($company_email, Registry::get('settings.Company.company_orders_department'), 'orders/order_notification_subj.tpl', 'orders/order_notification.tpl', '', $lang_code, $order_info['email']); if (Registry::get('settings.Suppliers.notify_order_department') == 'Y') { Registry::get('view_mail')->assign('manifest', $old_mail_manifest); fn_send_mail(Registry::get('settings.Company.company_orders_department'), Registry::get('settings.Company.company_orders_department'), 'orders/order_notification_subj.tpl', 'orders/order_notification.tpl', '', $lang_code, $order_info['email']); } } Registry::get('view_mail')->assign('manifest', $old_mail_manifest); if (!empty($edp_data) && $notify_user == true) { Registry::get('view_mail')->assign('edp_data', $edp_data); fn_send_mail($order_info['email'], Registry::get('settings.Company.company_orders_department'), 'orders/edp_access_subj.tpl', 'orders/edp_access.tpl', '', $order_info['lang_code']); } } if (!empty($edp_data) && !$notify_user) { // Send out download links for EDP with "Immediately" Activation mode // TRUE if the EDP download links e-mail has already been sent. Used to avoid sending duplicate e-mails. $download_email_sent = false; foreach ($edp_data as $edp_item) { foreach ($edp_item['files'] as $file) { if (!empty($file['activation']) && $file['activation'] == 'I' && !$download_email_sent) { Registry::get('view_mail')->assign('edp_data', $edp_data); Registry::get('view_mail')->assign('order_info', $order_info); fn_send_mail($order_info['email'], Registry::get('settings.Company.company_orders_department'), 'orders/edp_access_subj.tpl', 'orders/edp_access.tpl', '', $order_info['lang_code']); $download_email_sent = true; break; } } } } if (PRODUCT_TYPE == 'PROFESSIONAL') { fn_companies_suppliers_order_notification($order_info, $order_statuses, $force_notification); } fn_set_hook('order_notification', $order_info, $order_statuses, $force_notification); }
$areas = fn_get_manifest_definition(); fn_save_logo_alt($areas); // Update customer logotype if (!empty($logos)) { foreach ($logos as $type => $logo) { $area = $areas[$type]; $manifest = parse_ini_file(DIR_SKINS . Registry::get('settings.skin_name_' . $area['skin']) . '/' . SKIN_MANIFEST, true); $filename = DIR_SKINS . Registry::get('settings.skin_name_' . $area['skin']) . '/' . $area['path'] . '/images/' . $logo['name']; if (fn_copy($logo['path'], $filename)) { list($w, $h, ) = fn_get_image_size($filename); $manifest[$area['name']]['filename'] = $logo['name']; $manifest[$area['name']]['width'] = $w; $manifest[$area['name']]['height'] = $h; fn_write_ini_file(DIR_SKINS . Registry::get('settings.skin_name_' . $area['skin']) . '/' . SKIN_MANIFEST, $manifest); } else { $text = fn_get_lang_var('text_cannot_create_file'); $text = str_replace('[file]', $filename, $text); fn_set_notification('E', fn_get_lang_var('error'), $text); } @unlink($logo['path']); } } $suffix = '.logos'; } return array(CONTROLLER_STATUS_OK, "site_layout" . $suffix); } if ($mode == 'logos') { $view->assign('manifest_definition', fn_get_manifest_definition()); $view->assign('manifests', array('customer' => fn_get_manifest('customer'), 'admin' => $view->get_var('manifest'))); } elseif ($mode == 'design_mode') { }
return array(CONTROLLER_STATUS_NO_PAGE); } if (!empty($_SESSION['saved_post_data']['company_data'])) { foreach ((array) $_SESSION['saved_post_data'] as $k => $v) { $view->assign($k, $v); } $company_data = $_SESSION['saved_post_data']['company_data']; unset($_SESSION['saved_post_data']['company_data']); } else { $view->assign('company_data', $company_data); } $view->assign('countries', fn_get_countries(CART_LANGUAGE, true)); $view->assign('states', fn_get_all_states()); $manifest_definition = fn_companies_get_manifest_definition(); $view->assign('manifest_definition', $manifest_definition); $view->assign('manifests', array('customer' => fn_get_manifest('customer', CART_LANGUAGE, $company_id), 'admin' => fn_get_manifest('admin', CART_LANGUAGE, $company_id))); // [Breadcrumbs] if (PRODUCT_TYPE == 'MULTIVENDOR') { $lang_var = 'vendors'; } else { $lang_var = 'suppliers'; } fn_add_breadcrumb(fn_get_lang_var($lang_var), 'companies.manage'); // [/Breadcrumbs] // [Page sections] $tabs['detailed'] = array('title' => fn_get_lang_var('general'), 'js' => true); if (PRODUCT_TYPE == 'MULTIVENDOR') { $tabs['description'] = array('title' => fn_get_lang_var('description'), 'js' => true); $tabs['logos'] = array('title' => fn_get_lang_var('logos'), 'js' => true); $tabs['categories'] = array('title' => fn_get_lang_var('categories'), 'js' => true); }