Пример #1
0
/**
 * 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;
}
Пример #2
0
/**
 * 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);
}
Пример #3
0
        $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') {
}
Пример #4
0
     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);
 }