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') {
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; }