Ejemplo n.º 1
0
        if (strpos($disabled_locations, $_REQUEST['selected_location']) === false && $_REQUEST['status'] != 'A') {
            // disable block
            $query = fn_add_to_set('disabled_locations', $_REQUEST['selected_location']);
            $_action = 'disabled';
        } else {
            // enable block
            $query = fn_remove_from_set('disabled_locations', $_REQUEST['selected_location']);
            $_action = 'enabled';
        }
        db_query("UPDATE ?:blocks SET disabled_locations = ?p WHERE block_id = ?i", $query, $_REQUEST['id']);
        fn_set_notification('N', fn_get_lang_var('notice'), fn_get_lang_var("block_{$_action}"));
        exit;
    }
}
if ($mode == 'manage') {
    $locations = fn_get_block_locations();
    // [Page sections]
    if (!empty($locations)) {
        foreach ($locations as $location => $_location) {
            Registry::set("navigation.tabs.{$location}", array('title' => fn_get_lang_var($location), 'href' => "block_manager.manage?selected_section={$location}"));
        }
    }
    // [/Page sections]
    $selected_section = empty($_REQUEST['selected_section']) ? 'all_pages' : $_REQUEST['selected_section'];
    $view->assign('locations', $locations);
    list($blocks, $object_id) = fn_get_blocks(array('location' => $selected_section, 'all' => true), false, DESCR_SL);
    if ($selected_section !== 'all_pages') {
        list($all_blocks) = fn_get_blocks(array('location' => 'all_pages', 'all' => true, 'block_properties_location' => $selected_section), false);
        $blocks = fn_array_merge($blocks, $all_blocks, true);
    }
    $blocks = fn_sort_blocks($object_id, $selected_section, $blocks);
Ejemplo n.º 2
0
/**
 * The function returns the list of the blocks
 *
 * @param array $params
 * @param string $lang_code
 * @return array of blocks
 */
function fn_get_blocks($params = array(), $allow_sorting = true, $lang_code = CART_LANGUAGE)
{
    $condition = '';
    $_blocks = $block_ids = array();
    $object_id = 0;
    $location_properties = fn_get_block_locations();
    if (empty($params['all'])) {
        $condition .= " AND ?:blocks.status = 'A'";
    }
    $fields = array('?:blocks.*', '?:block_descriptions.description', '?:block_links.item_ids', '?:block_links.enable AS assigned');
    if (!empty($params)) {
        if (!empty($location_properties[$params['location']]) && !empty($params[$location_properties[$params['location']]])) {
            $object_id = (int) $params[$location_properties[$params['location']]];
        }
        if (!empty($params['location']) && $params['location'] == 'checkout' && MODE == 'cart') {
            $params['location'] = 'cart';
        }
        if (AREA == 'A') {
            $condition .= db_quote(" AND ?:blocks.location = ?s", $params['location']);
        } else {
            $condition .= db_quote(" AND ?:blocks.status = 'A'");
            $condition .= db_quote(" AND NOT FIND_IN_SET(?s, ?:blocks.disabled_locations)", $params['location']);
            if (!empty($object_id)) {
                $condition .= db_quote(" AND ((?:blocks.block_type = 'B' AND ?:block_links.enable = 'Y' AND (?:block_links.location = 'all_pages' OR (?:block_links.location = ?s AND (?:block_links.object_id = ?i OR ?:block_links.object_id = '0')))) OR ?:blocks.block_type = 'G')", $params['location'], $object_id);
            } else {
                $condition .= db_quote(" AND ((?:blocks.block_type = 'B' AND ?:block_links.enable = 'Y' AND (?:block_links.location = 'all_pages' OR ?:block_links.location = ?s)) OR ?:blocks.block_type = 'G')", $params['location']);
            }
        }
    }
    if (!empty($params['block_type'])) {
        $condition .= db_quote(" AND ?:blocks.block_type = ?s", $params['block_type']);
    }
    $blocks = db_get_hash_array('SELECT ' . implode(',', $fields) . " FROM ?:blocks LEFT JOIN ?:block_links ON ?:block_links.block_id = ?:blocks.block_id AND (?:block_links.object_id = ?i OR ?:block_links.object_id = '0') LEFT JOIN ?:block_descriptions ON ?:block_descriptions.block_id = ?:blocks.block_id AND ?:block_descriptions.object_type = 'B' AND ?:block_descriptions.lang_code = ?s WHERE 1 ?p", 'block_id', $object_id, $lang_code, $condition);
    if (!empty($blocks)) {
        $block_ids = array_keys($blocks);
    }
    $specific_settings = fn_get_block_specific_settings();
    if (!empty($blocks)) {
        foreach ($blocks as $block_id => $block) {
            if (!empty($block['properties'])) {
                $blocks[$block_id]['properties'] = fn_unserialize_block_properties($block['properties'], !empty($params['block_properties_location']) ? $params['block_properties_location'] : (!empty($params['location']) ? $params['location'] : $blocks[$block_id]['location']), $block['block_type'], $block['text_id']);
            }
        }
        if (AREA == 'A') {
            $assigned = db_get_hash_single_array("SELECT block_id, COUNT(*) as c FROM ?:block_links WHERE block_id IN (?n) AND enable = 'Y' GROUP BY block_id", array('block_id', 'c'), array_keys($blocks));
        }
        foreach ($blocks as $block_id => $block) {
            if (!empty($location_properties[$block['location']])) {
                $blocks[$block_id]['object_id'] = $location_properties[$block['location']];
            }
            if (isset($blocks[$block_id]['properties']['list_object']) && isset($specific_settings['list_object'][$blocks[$block_id]['properties']['list_object']]['settings'])) {
                foreach ($specific_settings['list_object'][$blocks[$block_id]['properties']['list_object']]['settings'] as $property => $value) {
                    if (!is_array($value)) {
                        $val = strtolower(str_replace('%', '', $value));
                        if (isset($blocks[$block_id][$val])) {
                            if (isset($_REQUEST[$blocks[$block_id][$val]])) {
                                $value = $_REQUEST[$blocks[$block_id][$val]];
                            }
                        }
                    }
                    $blocks[$block_id]['properties'][$property] = $value;
                }
            }
            if (AREA == 'A') {
                if (!empty($blocks[$block_id]['properties']['list_object'])) {
                    if (strpos($blocks[$block_id]['properties']['list_object'], '.tpl') === false) {
                        $blocks[$block_id]['items_count'] = empty($block['item_ids']) ? 0 : substr_count($block['item_ids'], ',') + 1;
                        $blocks[$block_id]['properties']['content_name'] = fn_get_lang_var($blocks[$block_id]['properties']['list_object']);
                    } else {
                        $blocks[$block_id]['properties']['content_name'] = fn_get_block_template_description($blocks[$block_id]['properties']['list_object']);
                    }
                }
                if (!fn_check_static_location($block['location'])) {
                    $blocks[$block_id]['assigned_to'] = !empty($assigned[$block_id]) ? $assigned[$block_id] : 0;
                }
            }
        }
    }
    fn_set_hook('get_blocks', $blocks, $params, $lang_code);
    if (AREA == 'A' || AREA != 'A' && !empty($params['product_id'])) {
        fn_get_product_tabs_blocks($object_id, $blocks, $params, $lang_code);
    }
    if (!empty($allow_sorting)) {
        $blocks = fn_sort_blocks($object_id, $params['location'], $blocks);
    }
    return array($blocks, $object_id);
}