Geo_Map::StoreMapData PHP Method

StoreMapData() public static method

The main dispatcher for ajax based editing of maps
public static StoreMapData ( integer $p_mapId, integer $p_languageId, integer $p_articleNumber, mixed $p_map = '', mixed $p_remove = '', mixed $p_insert = '', mixed $p_locations = '', mixed $p_contents = '', mixed $p_order = '' ) : array
$p_mapId integer
$p_languageId integer
$p_articleNumber integer
$p_map mixed
$p_remove mixed
$p_insert mixed
$p_locations mixed
$p_contents mixed
$p_order mixed
return array
    public static function StoreMapData($p_mapId, $p_languageId, $p_articleNumber, $p_map = '', $p_remove = '', $p_insert = '', $p_locations = '', $p_contents = '', $p_order = '')
    {
        Geo_MapLocation::CleanFound();
        $security_problem = array('status' => '403', 'description' => 'Invalid security token!');
        $unknown_request = array('status' => '404', 'description' => 'Unknown request!');
        $data_wrong = array('status' => '404', 'description' => 'Wrong data.');
        $status = true;
        if ('' != $p_map) {
            $map_data = array();
            try {
                $p_map = str_replace('%2B', '+', $p_map);
                $p_map = str_replace('%2F', '/', $p_map);
                $map_json = base64_decode($p_map);
                $map_data = json_decode($map_json);
            } catch (Exception $exc) {
                $status = false;
            }
            if ($status) {
                $status = Geo_Map::UpdateMap($p_mapId, $p_articleNumber, $map_data);
            }
        }
        if (!$status) {
            return $data_wrong;
        }
        if ('' != $p_remove) {
            $remove_data = array();
            try {
                $p_remove = str_replace('%2B', '+', $p_remove);
                $p_remove = str_replace('%2F', '/', $p_remove);
                $remove_json = base64_decode($p_remove);
                $remove_data = json_decode($remove_json);
            } catch (Exception $exc) {
                $status = false;
            }
            if ($status) {
                $status = Geo_Map::RemovePoints($p_mapId, $remove_data);
            }
        }
        if (!$status) {
            return $data_wrong;
        }
        $new_ids = array();
        if ('' != $p_insert) {
            $insert_data = array();
            try {
                $p_insert = str_replace('%2B', '+', $p_insert);
                $p_insert = str_replace('%2F', '/', $p_insert);
                $insert_json = base64_decode($p_insert);
                $insert_data = json_decode($insert_json);
            } catch (Exception $exc) {
                $status = false;
            }
            if ($status) {
                $status = Geo_Map::InsertPoints($p_mapId, $p_languageId, $p_articleNumber, $insert_data, $new_ids);
            }
        }
        if (!$status) {
            return $data_wrong;
        }
        if ('' != $p_locations) {
            $locations_data = array();
            try {
                $p_locations = str_replace('%2B', '+', $p_locations);
                $p_locations = str_replace('%2F', '/', $p_locations);
                $locations_json = base64_decode($p_locations);
                $locations_data = json_decode($locations_json);
            } catch (Exception $exc) {
                $status = false;
            }
            if ($status) {
                $status = Geo_Location::UpdateLocations($p_mapId, $locations_data);
            }
        }
        if (!$status) {
            return $data_wrong;
        }
        if ('' != $p_contents) {
            $contents_data = array();
            try {
                $p_contents = str_replace('%2B', '+', $p_contents);
                $p_contents = str_replace('%2F', '/', $p_contents);
                $contents_json = base64_decode($p_contents);
                $contents_data = json_decode($contents_json);
            } catch (Exception $exc) {
                $status = false;
            }
            if ($status) {
                $status = Geo_Location::UpdateContents($p_mapId, $contents_data);
            }
        }
        if (!$status) {
            return $data_wrong;
        }
        if ('' != $p_order) {
            $order_data = array();
            try {
                $p_order = str_replace('%2B', '+', $p_order);
                $p_order = str_replace('%2F', '/', $p_order);
                $order_json = base64_decode($p_order);
                $order_data = json_decode($order_json);
            } catch (Exception $exc) {
                $status = false;
            }
            if ($status) {
                $status = Geo_Location::UpdateOrder($p_mapId, $order_data, $new_ids);
            }
        }
        if (!$status) {
            return $data_wrong;
        }
        $geo_map_usage = Geo_Map::ReadMapInfo('map', $p_mapId);
        $poi_count = 0;
        $p_constraints = array();
        $leftOperand = 'as_array';
        $rightOperand = true;
        $operator = new Operator('is', 'php');
        $constraint = new ComparisonOperation($leftOperand, $operator, $rightOperand);
        $p_constraints[] = $constraint;
        $leftOperand = 'preview';
        $rightOperand = false;
        $operator = new Operator('is', 'php');
        $constraint = new ComparisonOperation($leftOperand, $operator, $rightOperand);
        $p_constraints[] = $constraint;
        $leftOperand = 'text_only';
        $rightOperand = false;
        $operator = new Operator('is', 'php');
        $constraint = new ComparisonOperation($leftOperand, $operator, $rightOperand);
        $p_constraints[] = $constraint;
        $leftOperand = 'language';
        $rightOperand = $p_languageId;
        $operator = new Operator('is', 'php');
        $constraint = new ComparisonOperation($leftOperand, $operator, $rightOperand);
        $p_constraints[] = $constraint;
        $leftOperand = 'map';
        $rightOperand = $p_mapId;
        $operator = new Operator('is', 'php');
        $constraint = new ComparisonOperation($leftOperand, $operator, $rightOperand);
        $p_constraints[] = $constraint;
        $found_list = array();
        $found_objs = Geo_MapLocation::GetListExt($p_constraints, (array) null, 0, 0, $poi_count, false, $found_list);
        $res_array = array('status' => '200', 'pois' => $found_list, 'map' => $geo_map_usage);
        return $res_array;
    }