Exemple #1
0
 public function index($id = 0, $params = array())
 {
     $lang_code = $this->safeGet($params, 'lang_code', DEFAULT_LANGUAGE);
     if (!empty($id)) {
         $data = fn_get_page_data($id, $lang_code, false, $this->area);
         if ($data) {
             $status = Response::STATUS_OK;
         } else {
             $status = Response::STATUS_NOT_FOUND;
         }
     } else {
         $items_per_page = $this->safeGet($params, 'items_per_page', Registry::get('settings.Appearance.admin_pages_per_page'));
         if (empty($params['page_type'])) {
             $params['full_search'] = true;
         }
         list($pages, $search) = fn_get_pages($params, $items_per_page, $lang_code);
         $data = array('pages' => array_values($pages), 'params' => $search);
         $status = Response::STATUS_OK;
     }
     return array('status' => $status, 'data' => $data);
 }
Exemple #2
0
function fn_se_get_pages_data($pages_ids = array(), $company_id = 0, $lang_code)
{
    list($pages, ) = fn_get_pages(array('status' => 'A', 'item_ids' => join(',', $pages_ids)), 0, $lang_code);
    $data = array();
    foreach ($pages as $page) {
        $page_id = $page['page_id'];
        $data[] = array('id' => $page_id, 'link' => $page['page_type'] == PAGE_TYPE_LINK ? fn_url($page['link']) : fn_url('pages.view?page_id=' . $page_id, 'C', 'http', $lang_code), 'title' => $page['page'], 'summary' => $page['description']);
    }
    return $data;
}
Exemple #3
0
     list($fields, $join, $condition, $group_by, $sorting, $limit) = fn_get_categories(array('get_conditions' => true));
     $general_stats['categories']['total_categories'] = db_get_field('SELECT COUNT(*) FROM ?:categories WHERE 1 ?p', $condition);
 }
 /* Storefronts */
 if (fn_check_view_permissions('companies.manage', 'GET')) {
     $general_stats['companies'] = array();
     if (Registry::get('runtime.company_id')) {
         $general_stats['companies']['total_companies'] = 1;
     } else {
         $general_stats['companies']['total_companies'] = db_get_field('SELECT COUNT(*) FROM ?:companies');
     }
 }
 /* Pages */
 if (fn_check_view_permissions('pages.manage', 'GET')) {
     $general_stats['pages'] = array();
     list($fields, $join, $condition) = fn_get_pages(array('get_conditions' => true));
     $general_stats['pages']['total_pages'] = db_get_field('SELECT COUNT(*) FROM ?:pages ' . $join . ' WHERE ' . $condition);
 }
 /* Order */
 $orders_stat = array();
 if (fn_check_view_permissions('orders.manage', 'GET') || fn_check_view_permissions('sales_reports.view', 'GET') || fn_check_view_permissions('taxes.manage', 'GET')) {
     $params = array('period' => 'C', 'time_from' => $time_from, 'time_to' => $time_to);
     list($orders_stat['orders'], $search_params, $orders_stat['orders_total']) = fn_get_orders($params, 0, true);
     $time_difference = $time_to - $time_from;
     $params = array('period' => 'C', 'time_from' => $time_from - $time_difference, 'time_to' => $time_to - $time_difference);
     list($orders_stat['prev_orders'], $search_params, $orders_stat['prev_orders_total']) = fn_get_orders($params, 0, true);
     $orders_stat['diff']['orders_count'] = count($orders_stat['orders']) - count($orders_stat['prev_orders']);
     $orders_stat['diff']['sales'] = fn_calculate_differences($orders_stat['orders_total']['totally_paid'], $orders_stat['prev_orders_total']['totally_paid']);
 }
 /* Abandoned carts */
 $company_condition = '';
Exemple #4
0
    $tag = '';
    if (!empty($_REQUEST['tag'])) {
        if (Registry::get('addons.tags.tags_for_products') == 'Y') {
            $params = $_REQUEST;
            $params['extend'] = array('description');
            list($products, $search) = fn_get_products($params, Registry::get('settings.Appearance.products_per_page'));
            fn_gather_additional_products_data($products, array('get_icon' => true, 'get_detailed' => true, 'get_options' => true, 'get_discounts' => true));
            $selected_layout = fn_get_products_layout($params);
            Registry::get('view')->assign('selected_layout', $selected_layout);
            Registry::get('view')->assign('products', $products);
            Registry::get('view')->assign('search', $search);
        }
        if (Registry::get('addons.tags.tags_for_pages') == 'Y') {
            $page_types = fn_get_page_object_by_type();
            $params = $_REQUEST;
            $params['page_type'] = array_keys($page_types);
            $params['status'] = array('A');
            $params['simple'] = true;
            list($pages, $params) = fn_get_pages($params);
            Registry::get('view')->assign('pages', $pages);
            Registry::get('view')->assign('page_types', $page_types);
        }
        $tag = $_REQUEST['tag'];
    }
    $title = __('items_marked_by_tag', array('[tag]' => $tag));
    Registry::get('view')->assign('page_title', $title);
    fn_add_breadcrumb($title);
    if (!empty($products) || !empty($pages)) {
        Registry::get('view')->assign('tag_objects_exist', true);
    }
}
Exemple #5
0
/**
 * Form top menu
 *
 * @param array $top_menu top menu data from the database
 * @param int $level current menu level
 * @param boolean $active - menu item active flag, returned by reference to set tree branch as active
 * @return array formed top menu
 */
function fn_top_menu_form($top_menu, $level = 0, &$active = NULL)
{
    $_active = false;
    foreach ($top_menu as $k => $v) {
        if (!empty($v['param_3'])) {
            // get extra items
            list($type, $id, $use_name) = fn_explode(':', $v['param_3']);
            if ($type == 'C') {
                // categories
                $cats = fn_get_categories_tree($id, true);
                $v['subitems'] = fn_array_merge(fn_top_menu_standardize($cats, 'category_id', 'category', 'subcategories', 'categories.view?category_id='), !empty($v['subitems']) ? $v['subitems'] : array(), false);
                if ($use_name == 'Y' && !empty($id)) {
                    $v['descr'] = fn_get_category_name($id);
                    $v['param'] = 'categories.view?category_id=' . $id;
                }
            } elseif ($type == 'A') {
                // pages
                $params = array('from_page_id' => $id, 'get_tree' => 'multi_level', 'status' => 'A');
                list($pages) = fn_get_pages($params);
                $v['subitems'] = fn_array_merge(fn_top_menu_standardize($pages, 'page_id', 'page', 'subpages', 'pages.view?page_id='), !empty($v['subitems']) ? $v['subitems'] : array(), false);
                if ($use_name == 'Y' && !empty($id)) {
                    $page_data = fn_get_page_data($id);
                    $v['descr'] = $page_data['page'];
                    $v['param'] = !empty($page_data['link']) ? $page_data['link'] : 'pages.view?page_id=' . $id;
                }
            } else {
                // for addons
                fn_set_hook('top_menu_form', $v, $type, $id, $use_name);
            }
        }
        if (!empty($v['param']) && fn_top_menu_is_current_url($v['param'], $v['param_2'])) {
            $top_menu[$k]['active'] = true;
            // Store active value
            $_active = true;
        }
        if (!empty($v['subitems'])) {
            $top_menu[$k]['subitems'] = fn_top_menu_form($v['subitems'], $level + 1, $active);
            // If active status was returned fron children
            if ($active) {
                $top_menu[$k]['active'] = $active;
                // Strore fo return and reset activity status for athother elements on this level
                // Because in one level may be only one active item
                $_active = true;
                $active = false;
            }
        }
        $top_menu[$k]['item'] = $v['descr'];
        $top_menu[$k]['href'] = $v['param'];
        $top_menu[$k]['level'] = $level;
        unset($top_menu[$k]['descr'], $top_menu[$k]['param']);
    }
    $active = $_active;
    return $top_menu;
}
Exemple #6
0
 if ($sitemap_settings['show_cats'] == 'Y') {
     if ($sitemap_settings['show_rootcats_only'] == 'Y') {
         $categories = fn_get_plain_categories_tree(0, true);
         $sitemap['categories'] = array();
         foreach ($categories as $c) {
             if ($c['level'] == 0) {
                 $sitemap['categories'][] = $c;
             }
         }
     } else {
         $sitemap['categories_tree'] = fn_get_plain_categories_tree(0, true);
     }
 }
 if ($sitemap_settings['show_site_info'] == 'Y') {
     $_params = array('get_tree' => 'plain', 'status' => 'A', 'simple' => true);
     list($sitemap['pages_tree']) = fn_get_pages($_params);
 }
 $section_fields = array('s.*', '?:common_descriptions.object as section');
 $section_tables = array('?:sitemap_sections AS s');
 $section_left_joins = array(db_quote('?:common_descriptions ON s.section_id = ?:common_descriptions.object_id AND ?:common_descriptions.object_holder = "sitemap_sections" AND ?:common_descriptions.lang_code = ?s', CART_LANGUAGE));
 $section_conditions = array(db_quote('status = ?s', 'A'));
 $section_orders = array('s.position');
 fn_set_hook('sitemap_get_sections', $section_fields, $section_tables, $section_left_joins, $section_conditions, $section_orders);
 $custom_sections = db_get_array('SELECT ' . implode(', ', $section_fields) . ' FROM ' . implode(', ', $section_tables) . ' LEFT JOIN ' . implode(', ', $section_left_joins) . ' WHERE ' . implode(' AND ', $section_conditions) . ' ORDER BY ' . implode(', ', $section_orders));
 foreach ($custom_sections as $k => $section) {
     $links = db_get_array("SELECT link_id, link_href, section_id, status, position, link_type, description, object as link FROM ?:sitemap_links LEFT JOIN ?:common_descriptions ON ?:common_descriptions.object_id = ?:sitemap_links.link_id AND ?:common_descriptions.object_holder = 'sitemap_links' AND ?:common_descriptions.lang_code = ?s WHERE section_id = ?i ORDER BY position, link", CART_LANGUAGE, $section['section_id']);
     if (!empty($links)) {
         foreach ($links as $key => $link) {
             $sitemap['custom'][$section['section']][$key]['link'] = $link['link'];
             $sitemap['custom'][$section['section']][$key]['link_href'] = $link['link_href'];
             $sitemap['custom'][$section['section']][$key]['description'] = $link['description'];
Exemple #7
0
/**
 * Form top menu
 *
 * @param array $top_menu Top menu data from the database
 * @param int $level Current menu level
 * @param boolean $active Menu item active flag, returned by reference to set tree branch as active
 *
 * @return array Formed top menu
 */
function fn_top_menu_form($top_menu, $level = 0, &$active = NULL)
{
    /**
     * Modifies top menu forming parameters
     *
     * @param array $top_menu Top menu data from the database
     * @param int $level Current menu level
     * @param boolean $active Menu item active flag
     */
    fn_set_hook('top_menu_form_pre', $top_menu, $level, $active);
    $_active = false;
    foreach ($top_menu as $k => $v) {
        if (!empty($v['param_3'])) {
            // get extra items
            list($type, $id, $use_name) = fn_explode(':', $v['param_3']);
            if ($type == 'C') {
                // categories
                $cats = fn_get_categories_tree($id, true);
                $v['subitems'] = fn_array_merge(fn_top_menu_standardize($cats, 'category_id', 'category', 'subcategories', 'categories.view?category_id='), !empty($v['subitems']) ? $v['subitems'] : array(), false);
                if ($use_name == 'Y' && !empty($id)) {
                    $v['descr'] = fn_get_category_name($id);
                    $v['param'] = 'categories.view?category_id=' . $id;
                }
                //Should add this checking because the same pages can have different request parameters and the next checking
                //with fn_top_menu_is_current_url function could return incorrect result.
                //For example: categories.view?category_id=165 and categories.view?category_id=165&currency=EUR should have the same active elements.
                if (fn_check_is_active_menu_item(array('category_id' => $id), 'categories')) {
                    $top_menu[$k]['active'] = true;
                }
            } elseif ($type == 'A') {
                // pages
                $params = array('from_page_id' => $id, 'get_tree' => 'multi_level', 'status' => 'A');
                list($pages) = fn_get_pages($params);
                $v['subitems'] = fn_array_merge(fn_top_menu_standardize($pages, 'page_id', 'page', 'subpages', 'pages.view?page_id='), !empty($v['subitems']) ? $v['subitems'] : array(), false);
                if ($use_name == 'Y' && !empty($id)) {
                    $page_data = fn_get_page_data($id);
                    $v['descr'] = $page_data['page'];
                    $v['param'] = !empty($page_data['link']) ? $page_data['link'] : 'pages.view?page_id=' . $id;
                }
                if (fn_check_is_active_menu_item(array('page_id' => $id), 'pages')) {
                    $top_menu[$k]['active'] = true;
                }
            } else {
                // for addons
                /**
                 * Deprecated since 4.3.6, use top_menu_form_post instead
                 */
                fn_set_hook('top_menu_form', $v, $type, $id, $use_name);
            }
        }
        if (!empty($v['param']) && fn_top_menu_is_current_url($v['param'], $v['param_2'])) {
            $top_menu[$k]['active'] = true;
            // Store active value
            $_active = true;
        }
        if (!empty($v['subitems'])) {
            $top_menu[$k]['subitems'] = fn_top_menu_form($v['subitems'], $level + 1, $active);
            // If active status was returned fron children
            if ($active) {
                $top_menu[$k]['active'] = $active;
                // Strore fo return and reset activity status for athother elements on this level
                // Because in one level may be only one active item
                $_active = true;
                $active = false;
            }
        }
        $top_menu[$k]['item'] = $v['descr'];
        $top_menu[$k]['href'] = $v['param'];
        $top_menu[$k]['level'] = $level;
        unset($top_menu[$k]['descr'], $top_menu[$k]['param']);
    }
    $active = $_active;
    /**
     * Modifies top menu items
     *
     * @param array $top_menu Top menu data from the database
     * @param int $level Current menu level
     * @param boolean $active Menu item active flag
     */
    fn_set_hook('top_menu_form_post', $top_menu, $level, $active);
    return $top_menu;
}
Exemple #8
0
/**
 * Form top menu
 *
 * @param array $top_menu top menu data from the database
 * @return array formed top menu
 */
function fn_top_menu_form($top_menu)
{
    foreach ($top_menu as $k => $v) {
        if (!empty($v['param_3'])) {
            // get extra items
            list($type, $id, $use_name) = fn_explode(':', $v['param_3']);
            if ($type == 'C') {
                // categories
                $cats = fn_get_categories_tree($id, true);
                $v['subitems'] = fn_array_merge(fn_top_menu_standardize($cats, 'category_id', 'category', 'subcategories', 'categories.view?category_id=', $v['param_4']), !empty($v['subitems']) ? $v['subitems'] : array(), false);
                if ($use_name == 'Y' && !empty($id)) {
                    $v['descr'] = fn_get_category_name($id);
                    $v['param'] = 'categories.view?category_id=' . $id;
                }
            } elseif ($type == 'A') {
                // pages
                $params = array('from_page_id' => $id, 'get_tree' => 'multi_level', 'status' => 'A');
                list($pages) = fn_get_pages($params);
                $v['subitems'] = fn_array_merge(fn_top_menu_standardize($pages, 'page_id', 'page', 'subpages', 'pages.view?page_id=', $v['param_4']), !empty($v['subitems']) ? $v['subitems'] : array(), false);
                if ($use_name == 'Y' && !empty($id)) {
                    $v['descr'] = fn_get_page_name($id);
                    $v['param'] = 'pages.view?page_id=' . $id;
                }
            } else {
                // for addons
                fn_set_hook('top_menu_form', $v, $type, $id, $use_name);
            }
        }
        if (!empty($v['subitems'])) {
            $top_menu[$k]['subitems'] = fn_top_menu_form($v['subitems']);
        }
        $top_menu[$k]['item'] = $v['descr'];
        $top_menu[$k]['href'] = $v['param'];
        unset($top_menu[$k]['descr'], $top_menu[$k]['param']);
    }
    return $top_menu;
}
Exemple #9
0
function fn_get_pages_plain_list()
{
    $params = array('get_tree' => 'plain');
    list($pages) = fn_get_pages($params);
    return $pages;
}
Exemple #10
0
         if (defined('AJAX_REQUEST')) {
             Registry::get('view')->assign('parent_id', $params['parent_id']);
             Registry::get('view')->assign('hide_header', true);
         }
         Registry::get('view')->assign('hide_show_all', true);
     }
     if ($total < PAGE_SHOW_ALL) {
         Registry::get('view')->assign('expand_all', true);
     }
 } else {
     // search page
     $items_per_page = Registry::get('settings.Appearance.admin_pages_per_page');
 }
 $params['add_root'] = !empty($_REQUEST['root']) ? $_REQUEST['root'] : '';
 $params['simple'] = true;
 list($pages, $params) = fn_get_pages($params, $items_per_page);
 Registry::get('view')->assign('pages_tree', $pages);
 Registry::get('view')->assign('search', $params);
 if (empty($params['full_search'])) {
     Registry::get('view')->assign('page_types', fn_get_page_type_filter($page_type));
 } else {
     Registry::get('view')->assign('page_types', fn_get_page_object_by_type());
 }
 Registry::get('view')->assign('is_exclusive_page_type', fn_is_exclusive_page_type($page_type));
 if (!empty($_REQUEST['except_id'])) {
     Registry::get('view')->assign('except_id', $_REQUEST['except_id']);
 }
 if (fn_show_picker('pages', PAGE_THRESHOLD) == false) {
     $params = array('page_type' => fn_is_exclusive_page_type($page_type) ? $page_type : '');
     Registry::get('view')->assign('parent_pages', fn_get_pages_plain_list($params));
 }
Exemple #11
0
* and use this program.                                                    *
*                                                                          *
****************************************************************************
* PLEASE READ THE FULL TEXT  OF THE SOFTWARE  LICENSE   AGREEMENT  IN  THE *
* "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE.            *
****************************************************************************/
use Tygh\Registry;
if (!defined('BOOTSTRAP')) {
    die('Access denied');
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    return;
}
if ($mode == 'view') {
    $page_data = Tygh::$app['view']->getTemplateVars('page');
    if ($page_data['page_type'] == PAGE_TYPE_PROJECTS) {
        list($subpages, $search) = fn_get_pages(array('parent_id' => $page_data['page_id'], 'page' => !empty($_REQUEST['page']) ? $_REQUEST['page'] : 0, 'page_type' => PAGE_TYPE_PROJECTS, 'get_image' => true, 'status' => 'A', 'sort_by' => 'timestamp', 'sort_order' => 'desc'), Registry::get('settings.Appearance.elements_per_page'));
        if (!empty($subpages)) {
            foreach ($subpages as &$subpage) {
                $subpage['discussion'] = fn_get_discussion($subpage['page_id'], 'A', true);
                //fn_print_die($subpage['page_id'],$discussion);
            }
        } else {
            $page_data['discussion'] = fn_get_discussion($page_data['page_id'], 'A', true);
        }
        //fn_print_die($discussion,$page_data,$subpages);
        Tygh::$app['view']->assign('page', $page_data);
        Tygh::$app['view']->assign('subpages', $subpages);
        Tygh::$app['view']->assign('search', $search);
    }
}
Exemple #12
0
/**
 * Creates condition for page search
 *
 * @param array $params List of search parameters
 * @param string $lang_code 2-letter language code
 * @return array Prepared data
 */
function fn_create_pages_condition($params, $lang_code = CART_LANGUAGE)
{
    /**
     * Modify search parameters defined in fn_search_register_object
     *
     * @param array  $params    List of search parameters
     * @param string $lang_code 2-letter language code
     */
    fn_set_hook('create_pages_condition_pre', $params, $lang_code);
    $params['get_conditions'] = true;
    if (AREA != 'A') {
        $params['status'] = 'A';
    }
    list($fields, $join, $condition) = fn_get_pages($params, $lang_code);
    if (fn_allowed_for('ULTIMATE') && AREA == 'C' && Registry::get('runtime.company_id')) {
        $condition .= db_quote(' AND ?:pages.company_id = ?i', Registry::get('runtime.company_id'));
    }
    $data = array('fields' => $fields, 'join' => $join, 'condition' => $condition, 'table' => '?:pages', 'key' => 'page_id', 'sort' => '?:page_descriptions.page', 'sort_table' => 'page_descriptions');
    /**
     * Modify prepared data
     *
     * @param array  $params    List of search parameters
     * @param string $lang_code 2-letter language code
     * @param array  $data      Result search scheme
     */
    fn_set_hook('create_pages_condition_post', $params, $lang_code, $data);
    return $data;
}
Exemple #13
0
 /**
  * @param array  $search Request search params
  * @param string $query  SQL query
  * @dataProvider getPagesQueries
  */
 public function testGetPagesFunc($search, $query)
 {
     $this->app['db.driver']->expects($this->once())->method('query')->with($query);
     fn_get_pages($search);
 }
Exemple #14
0
function fn_google_sitemap_get_content($map_page = 0)
{
    $sitemap_settings = Registry::get('addons.google_sitemap');
    $location = fn_get_storefront_url(fn_get_storefront_protocol());
    $lmod = date("Y-m-d", TIME);
    // HEAD SECTION
    $simple_head = <<<HEAD
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
            http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">


HEAD;
    $simple_foot = <<<FOOT

</urlset>
FOOT;
    $index_map_url = <<<HEAD
    <url>
        <loc>{$location}/</loc>
        <lastmod>{$lmod}</lastmod>
        <changefreq>{$sitemap_settings['site_change']}</changefreq>
        <priority>{$sitemap_settings['site_priority']}</priority>
    </url>

HEAD;
    // END HEAD SECTION
    $parts = 0;
    if ($sitemap_settings['include_categories'] == "Y") {
        $parts++;
        $get_categories = true;
    }
    if ($sitemap_settings['include_products'] == "Y") {
        $parts++;
        $get_products = true;
    }
    if ($sitemap_settings['include_pages'] == "Y") {
        $parts++;
        $get_pages = true;
    }
    if ($sitemap_settings['include_extended'] == "Y") {
        $parts++;
        $get_features = true;
    }
    if (fn_allowed_for('MULTIVENDOR') && $sitemap_settings['include_companies'] == 'Y') {
        $parts++;
        $get_companies = true;
    }
    fn_set_progress('parts', $parts);
    // SITEMAP CONTENT
    $link_counter = 1;
    $file_counter = 1;
    $sitemap_path = fn_get_files_dir_path(false) . 'google_sitemap/';
    fn_rm($sitemap_path);
    fn_mkdir($sitemap_path);
    $file = fopen($sitemap_path . 'sitemap' . $file_counter . '.xml', "wb");
    fwrite($file, $simple_head . $index_map_url);
    $languages = db_get_hash_single_array("SELECT lang_code, name FROM ?:languages WHERE status = 'A'", array('lang_code', 'name'));
    if (!empty($get_categories)) {
        $categories = db_get_fields("SELECT category_id FROM ?:categories WHERE FIND_IN_SET(?i, usergroup_ids) AND status = 'A' ?p", USERGROUP_ALL, fn_get_google_sitemap_company_condition('?:categories.company_id'));
        fn_set_progress('step_scale', count($categories));
        //Add the all active categories
        foreach ($categories as $category) {
            $links = fn_google_sitemap_generate_link('category', $category, $languages);
            $item = fn_google_sitemap_print_item_info($links, $lmod, $sitemap_settings['categories_change'], $sitemap_settings['categories_priority']);
            fn_google_sitemap_check_counter($file, $link_counter, $file_counter, $links, $simple_head, $simple_foot, 'categories');
            fwrite($file, $item);
        }
    }
    if (!empty($get_products)) {
        $total = ITEMS_PER_PAGE;
        $i = 0;
        $params = $_REQUEST;
        $params['custom_extend'] = array('categories');
        $params['sort_by'] = 'null';
        $params['only_short_fields'] = true;
        // NEEDED ONLY FOR NOT TO LOAD UNNECESSARY FIELDS FROM DB
        $params['area'] = 'C';
        $original_auth = $_SESSION['auth'];
        $_SESSION['auth'] = fn_fill_auth(array(), array(), false, 'C');
        fn_set_progress('step_scale', db_get_field("SELECT COUNT(*) FROM ?:products WHERE status = 'A'"));
        while ($params['pid'] = db_get_fields("SELECT product_id FROM ?:products WHERE status = 'A' ORDER BY product_id ASC LIMIT {$i}, {$total}")) {
            $i += $total;
            list($products) = fn_get_products($params, ITEMS_PER_PAGE);
            foreach ($products as $product) {
                $links = fn_google_sitemap_generate_link('product', $product['product_id'], $languages);
                $item = fn_google_sitemap_print_item_info($links, $lmod, $sitemap_settings['products_change'], $sitemap_settings['products_priority']);
                fn_google_sitemap_check_counter($file, $link_counter, $file_counter, $links, $simple_head, $simple_foot, 'products');
                fwrite($file, $item);
            }
        }
        unset($products);
        $_SESSION['auth'] = $original_auth;
    }
    if (!empty($get_pages)) {
        $page_types = fn_get_page_object_by_type();
        unset($page_types[PAGE_TYPE_LINK]);
        list($pages) = fn_get_pages(array('simple' => true, 'status' => 'A', 'page_type' => array_keys($page_types)));
        fn_set_progress('step_scale', count($pages));
        //Add the all active pages
        foreach ($pages as $page) {
            $links = fn_google_sitemap_generate_link('page', $page['page_id'], $languages, $page);
            $item = fn_google_sitemap_print_item_info($links, $lmod, $sitemap_settings['pages_change'], $sitemap_settings['pages_priority']);
            fn_google_sitemap_check_counter($file, $link_counter, $file_counter, $links, $simple_head, $simple_foot, 'pages');
            fwrite($file, $item);
        }
    }
    if (!empty($get_features)) {
        $vars = db_get_fields("SELECT ?:product_feature_variants.variant_id FROM ?:product_feature_variants " . "LEFT JOIN ?:product_features ON (?:product_feature_variants.feature_id = ?:product_features.feature_id) " . "WHERE ?:product_features.feature_type = ?s AND ?:product_features.status = 'A'", ProductFeatures::EXTENDED);
        fn_set_progress('step_scale', count($vars));
        //Add the all active extended features
        foreach ($vars as $var) {
            $links = fn_google_sitemap_generate_link('extended', $var, $languages);
            $item = fn_google_sitemap_print_item_info($links, $lmod, $sitemap_settings['extended_change'], $sitemap_settings['extended_priority']);
            fn_google_sitemap_check_counter($file, $link_counter, $file_counter, $links, $simple_head, $simple_foot, 'features');
            fwrite($file, $item);
        }
    }
    if (!empty($get_companies)) {
        $companies = db_get_fields("SELECT company_id FROM ?:companies WHERE status = 'A' ?p", fn_get_google_sitemap_company_condition('?:companies.company_id'));
        fn_set_progress('step_scale', count($companies));
        if (!empty($companies)) {
            foreach ($companies as $company_id) {
                $links = fn_google_sitemap_generate_link('companies', $company_id, $languages);
                $item = fn_google_sitemap_print_item_info($links, $lmod, $sitemap_settings['companies_change'], $sitemap_settings['companies_priority']);
                fn_google_sitemap_check_counter($file, $link_counter, $file_counter, $links, $simple_head, $simple_foot, 'companies');
                fwrite($file, $item);
            }
        }
    }
    fn_set_hook('sitemap_item', $sitemap_settings, $file, $lmod, $link_counter, $file_counter);
    fwrite($file, $simple_foot);
    fclose($file);
    if ($file_counter == 1) {
        fn_rename($sitemap_path . 'sitemap' . $file_counter . '.xml', $sitemap_path . 'sitemap.xml');
    } else {
        // Make a map index file
        $maps = '';
        $seo_enabled = Registry::get('addons.seo.status') == 'A' ? true : false;
        for ($i = 1; $i <= $file_counter; $i++) {
            if ($seo_enabled) {
                $name = $location . '/sitemap' . $i . '.xml';
            } else {
                $name = fn_url('xmlsitemap.view?page=' . $i, 'C', fn_get_storefront_protocol());
            }
            $name = htmlentities($name);
            $maps .= <<<MAP
    <sitemap>
        <loc>{$name}</loc>
        <lastmod>{$lmod}</lastmod>
    </sitemap>

MAP;
        }
        $index_map = <<<HEAD
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
            http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">

{$maps}
</sitemapindex>
HEAD;
        $file = fopen($sitemap_path . 'sitemap.xml', "wb");
        fwrite($file, $index_map);
        fclose($file);
    }
    fn_set_notification('N', __('notice'), __('google_sitemap.map_generated'));
    exit;
}
Exemple #15
0
function fn_create_pages_condition($params, $lang_code = CART_LANGUAGE)
{
    $params['get_conditions'] = true;
    if (AREA != 'A') {
        $params['status'] = 'A';
    }
    list($fields, $join, $condition) = fn_get_pages($params, $lang_code);
    $data = array('fields' => $fields, 'join' => $join, 'condition' => $condition, 'table' => '?:pages', 'key' => 'page_id', 'sort' => '?:page_descriptions.page', 'sort_table' => 'page_descriptions');
    return $data;
}
Exemple #16
0
/**
 * Creates condition for page search
 *
 * @param array $params List of search parameters
 * @param string $lang_code 2-letter language code
 * @return array Prepared data
 */
function fn_create_pages_condition($params, $lang_code = CART_LANGUAGE)
{
    /**
     * Modify search parameters defined in fn_search_register_object
     *
     * @param array  $params    List of search parameters
     * @param string $lang_code 2-letter language code
     */
    fn_set_hook('create_pages_condition_pre', $params, $lang_code);
    $params['get_conditions'] = true;
    if (AREA != 'A') {
        $params['status'] = 'A';
    }
    list($fields, $join, $condition) = fn_get_pages($params, $lang_code);
    $data = array('fields' => $fields, 'join' => $join, 'condition' => $condition, 'table' => '?:pages', 'key' => 'page_id', 'sort' => '?:page_descriptions.page', 'sort_table' => 'page_descriptions');
    /**
     * Modify prepared data
     *
     * @param array  $params    List of search parameters
     * @param string $lang_code 2-letter language code
     * @param array  $data      Result search scheme
     */
    fn_set_hook('create_pages_condition_post', $params, $lang_code, $data);
    return $data;
}