예제 #1
0
 fn_trusted_vars('block', 'block_items');
 $suffix = '';
 if ($mode == 'add') {
     if (!empty($_REQUEST['block'])) {
         $block = $_REQUEST['block'];
         $block['location'] = $_REQUEST['add_selected_section'];
         $bid = fn_update_block($block, $_REQUEST['add_selected_section'], $_REQUEST['add_selected_section']);
         // if the block doesn't require assigning to the one object (product, category etc)
         if (fn_check_static_location($block['location'])) {
             fn_assign_block(array('block_id' => $bid, 'location' => $block['location'], 'status' => 'A'));
         }
     }
     $suffix = "&selected_section={$_REQUEST['add_selected_section']}";
 }
 if ($mode == 'enable_disable' && !empty($_REQUEST['block_id'])) {
     fn_assign_block($_REQUEST);
     exit;
 }
 if ($mode == 'update') {
     fn_update_block($_REQUEST['block'], $_REQUEST['block']['location'], $_REQUEST['redirect_location']);
     $suffix .= "&selected_section={$_REQUEST['redirect_location']}";
 }
 if ($mode == 'update_location') {
     fn_update_location($_REQUEST['block']);
     $suffix .= "&selected_section=" . $_REQUEST['block']['location'];
 }
 if ($mode == 'add_items') {
     fn_add_items_to_block($_REQUEST['block_id'], !empty($_REQUEST['block_items']) ? $_REQUEST['block_items'] : '', !empty($_REQUEST['object_id']) ? $_REQUEST['object_id'] : 0, $_REQUEST['block_location'], empty($_REQUEST['is_manage']), !empty($_REQUEST['page']) ? $_REQUEST['page'] : 0);
     $suffix .= "&selected_section={$_REQUEST['redirect_location']}";
 }
 if ($mode == 'save_layout') {
예제 #2
0
function fn_add_items_to_block($block_id, $objects, $object_id = 0, $location = '', $add_vals = false, $page = 0)
{
    $objects = empty($objects) ? array() : $objects;
    $_objects = array();
    if (!empty($objects['block_data']) && is_array($objects['block_data'])) {
        $option = each($objects['block_data']);
        $_data = array('block_id' => $block_id, 'object_id' => $object_id, 'object_type' => 'P', 'object_text_id' => $option['key'], 'description' => $option['value'], 'lang_code' => DESCR_SL);
        db_query("REPLACE INTO ?:block_descriptions ?e", $_data);
        unset($objects['block_data']);
    }
    $data = array('block_id' => $block_id, 'object_id' => $object_id, 'location' => $location);
    $objects_set = '';
    if (empty($object_id)) {
        $data['location'] = db_get_field('SELECT location FROM ?:blocks WHERE block_id = ?i', $block_id);
    }
    if (!empty($objects)) {
        if (is_array($objects)) {
            $_objects = $objects;
            if ($add_vals == false) {
                asort($_objects);
                $_objects = array_keys($_objects);
            }
            $objects_set = empty($_objects) ? '' : implode(',', $_objects);
        } else {
            $objects_set = $objects;
            $objects = explode(',', $objects);
            $_objects = $objects;
        }
    } else {
        $_objects = array();
    }
    $current_items = db_get_field("SELECT item_ids FROM ?:block_links WHERE block_id = ?i AND object_id = ?i", $block_id, $object_id);
    if (!empty($current_items)) {
        $current_items = explode(',', $current_items);
        $delete_ids = array();
        if (empty($page) && $add_vals == false) {
            $delete_ids = array_diff($current_items, $_objects);
        } elseif (!empty($page)) {
            $items_per_page = !empty($_SESSION['items_per_page']) ? $_SESSION['items_per_page'] : Registry::get('settings.Appearance.admin_elements_per_page');
            $page_items = array_slice($current_items, ($page - 1) * $items_per_page, $items_per_page);
            if (count($page_items) > count($_objects)) {
                $delete_ids = array_diff($page_items, $_objects);
            }
        }
        if (!empty($delete_ids)) {
            $current_items = array_diff($current_items, $delete_ids);
        }
        if ($add_vals == false) {
            $key_items = array();
            foreach ($current_items as $id => $key) {
                $key_items[$key] = ($id + 1) * 10;
            }
            $objects = $objects + $key_items;
            asort($objects);
            $objects = array_keys($objects);
        } else {
            $objects = array_merge($objects, $current_items);
        }
        $objects = array_unique($objects);
        $objects_set = implode(',', $objects);
    }
    $link_id = fn_assign_block($data);
    db_query('UPDATE ?:block_links SET item_ids = ?s WHERE link_id = ?i', $objects_set, $link_id);
    return true;
}