UpdateLocations() public static method

Updates the location, the COW way
public static UpdateLocations ( integer $p_mapId, array $p_locations ) : boolean
$p_mapId integer
$p_locations array
return boolean
Example #1
0
 /**
  * The main dispatcher for ajax based editing of maps
  *
  * @param int $p_mapId
  * @param int $p_languageId
  * @param int $p_articleNumber
  * @param mixed $p_map
  * @param mixed $p_remove
  * @param mixed $p_insert
  * @param mixed $p_locations
  * @param mixed $p_contents
  * @param mixed $p_order
  *
  * @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;
 }
Example #2
0
    /**
     * The main dispatcher for ajax based editing of maps
     *
     * @param int $p_mapId
     * @param int $p_languageId
     * @param int $p_articleNumber
     * @param mixed $p_map
     * @param mixed $p_remove
     * @param mixed $p_insert
     * @param mixed $p_locations
     * @param mixed $p_contents
     * @param mixed $p_order
     *
     * @return array
     */
	public static function StoreMapData($p_mapId, $p_languageId, $p_articleNumber, $p_map = "", $p_remove = "", $p_insert = "", $p_locations = "", $p_contents = "", $p_order = "")
	{
        $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);


        $found_list = Geo_Map::ReadMapPoints($p_mapId, $p_languageId);

        $res_array = array("status" => "200", "pois" => $found_list, "map" => $geo_map_usage);

        return $res_array;
    } // fn StoreMapData