function fn_mve_update_page_post(&$page_data, &$page_id, &$lang_code, &$create, &$old_page_data) { if (empty($page_data['page'])) { return false; } if (!$create) { //update page $page_childrens = db_get_fields("SELECT page_id FROM ?:pages WHERE id_path LIKE ?l AND parent_id != 0", '%' . $page_id . '%'); if (!empty($page_childrens)) { //update childrens company if we update company for root page. if ($page_data['parent_id'] == 0 || $old_page_data['parent_id'] == 0) { fn_change_page_company($page_id, $page_data['company_id']); } } } }
function fn_update_page($page_data, $page_id = 0, $lang_code = CART_LANGUAGE) { if (!empty($page_data['avail_from_timestamp'])) { $page_data['avail_from_timestamp'] = fn_parse_date($page_data['avail_from_timestamp']); } else { $page_data['avail_from_timestamp'] = 0; } if (!empty($page_data['avail_till_timestamp'])) { $page_data['avail_till_timestamp'] = fn_parse_date($page_data['avail_till_timestamp']) + 86399; } else { $page_data['avail_till_timestamp'] = 0; } if (isset($page_data['usergroup_ids'])) { $page_data['usergroup_ids'] = empty($page_data['usergroup_ids']) ? '' : implode(',', $page_data['usergroup_ids']); } $_data = $page_data; if (isset($page_data['timestamp'])) { $_data['timestamp'] = fn_parse_date($page_data['timestamp']); } if (isset($_data['localization'])) { $_data['localization'] = empty($_data['localization']) ? '' : fn_implode_localizations($_data['localization']); } fn_set_company_id($_data); if (empty($page_id)) { // page title required if (empty($page_data['page'])) { return false; } // add new page $_data['page_id'] = $page_id = db_query('INSERT INTO ?:pages ?e', $_data); foreach ((array) Registry::get('languages') as $_data['lang_code'] => $v) { db_query('INSERT INTO ?:page_descriptions ?e', $_data); } // now we need to update 'id_path' field, as we know $page_id /* Generate id_path for page */ $parent_id = intval($_data['parent_id']); if ($parent_id == 0) { $id_path = $page_id; } else { $id_path = db_get_row("SELECT id_path FROM ?:pages WHERE page_id = ?i", $parent_id); $id_path = $id_path['id_path'] . '/' . $page_id; } db_query('UPDATE ?:pages SET ?u WHERE page_id = ?i', array('id_path' => $id_path), $page_id); } else { if (!fn_check_company_id('pages', 'page_id', $page_id)) { fn_company_access_denied_notification(); return false; } $old_company_id = fn_get_company_id('pages', 'page_id', $page_id); if ($_data['company_id'] != $old_company_id) { fn_change_page_company($page_id, $_data['company_id']); } // page title is not updated if (empty($page_data['page'])) { unset($page_data['page']); } // update existing page db_query('UPDATE ?:pages SET ?u WHERE page_id = ?i', $_data, $page_id); db_query('UPDATE ?:page_descriptions SET ?u WHERE page_id = ?i AND lang_code = ?s', $_data, $page_id, $lang_code); // regenerate id_path for child pages if (isset($page_data['parent_id'])) { fn_change_page_parent($page_id, $page_data['parent_id']); } } if (!empty($page_data['block_id'])) { fn_add_items_to_block($page_data['block_id'], $page_data['add_items'], $page_id, 'pages'); } fn_set_hook('update_page', $page_data, $page_id, $lang_code); return $page_id; }
function fn_ult_update_page_post(&$page_data, &$page_id, &$lang_code, &$create, &$old_page_data) { if (empty($page_data['page'])) { return false; } if ($create) { //create new page if (!empty($page_data['parent_id'])) { $parent_page_companies = db_get_fields("SELECT share_company_id FROM ?:ult_objects_sharing WHERE share_object_type = 'pages' AND share_object_id = ?i", $page_data['parent_id']); foreach ($parent_page_companies as $parent_page_company_id) { db_query("REPLACE INTO ?:ult_objects_sharing (share_object_id, share_company_id, share_object_type) VALUES (?i, ?i, 'pages')", $page_id, $parent_page_company_id); } } } else { //update page $page_childrens = db_get_fields("SELECT page_id FROM ?:pages WHERE id_path LIKE ?l AND parent_id != 0", '%' . $page_id . '%'); $root_pages = explode('/', db_get_field("SELECT id_path FROM ?:pages WHERE page_id = ?i", $page_id)); $share_pages = array_merge($page_childrens, $root_pages); $share_objects_count = !empty($_REQUEST['share_objects']['pages']) ? count($_REQUEST['share_objects']['pages']) : 0; $old_share_objects_count = !empty($_REQUEST['selected_companies_count']) ? $_REQUEST['selected_companies_count'] : 0; if ($page_data['parent_id'] != 0 && $old_page_data['parent_id'] == 0) { $parent_page_companies = db_get_fields("SELECT share_company_id FROM ?:ult_objects_sharing WHERE share_object_type = 'pages' AND share_object_id = ?i", $page_data['parent_id']); fn_ult_share_page((array) $page_id, $parent_page_companies); } $page_companies = db_get_fields("SELECT share_company_id FROM ?:ult_objects_sharing WHERE share_object_type = 'pages' AND share_object_id = ?i", $page_id); if ($page_data['parent_id'] != 0) { if ($share_objects_count < $old_share_objects_count) { //companies was deleted from sharing, we should update only childrens fn_ult_share_page($page_childrens, $page_companies); } else { fn_ult_share_page($share_pages, $page_companies); } } else { fn_ult_share_page($share_pages, $page_companies); } if (!empty($page_childrens)) { //update childrens company if we update company for root page. if ($page_data['parent_id'] == 0 || $old_page_data['parent_id'] == 0) { // db_query("UPDATE ?:pages SET company_id = ?i WHERE page_id IN (?n)", $page_data['company_id'], $page_childrens); fn_change_page_company($page_id, $page_data['company_id']); } } } }