示例#1
0
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']);
            }
        }
    }
}
示例#2
0
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']);
            }
        }
    }
}