Inheritance: extends DatabaseObject, implements IGeoMapLocationContent
Example #1
0
 /**
  * Updates the point text content, the COW way
  *
  * @param int $p_mapId
  * @param array $p_contents
  *
  * @return bool
  */
 public static function UpdateContents($p_mapId, $p_contents)
 {
     global $g_ado_db;
     foreach ($p_contents as $poi_obj) {
         $poi = get_object_vars($poi_obj);
         if ($poi['icon_changed']) {
             self::UpdateIcon($poi);
         }
         if ($poi['state_changed']) {
             Geo_MapLocationContent::UpdateState($poi);
         }
         if ($poi['image_changed']) {
             Geo_Multimedia::UpdateMedia($poi, 'image');
         }
         if ($poi['video_changed']) {
             Geo_Multimedia::UpdateMedia($poi, 'video');
         }
         if ($poi['text_changed']) {
             Geo_MapLocationContent::UpdateText($poi);
         }
     }
     return true;
 }
Example #2
0
 /**
  * Inserts points (with locations and other contents) into the map.
  * NB: The result indices are used at the point order updating, since that order-updating
  * would not know id's of the new points otherwise.
  *
  * @param int $p_mapId
  * @param int $p_languageId
  * @param int $p_articleNumber
  * @param array $p_insertion
  * @param array $p_indices
  *
  * @return array
  */
 public static function InsertPoints($p_mapId, $p_languageId, $p_articleNumber, $p_insertion, &$p_indices)
 {
     global $g_ado_db;
     global $g_user;
     Geo_MapLocation::CleanFound();
     // this should not happen
     if (0 == $p_mapId) {
         return array();
     }
     /*
         A)
             1) given article_number, language_id, map_id, list of new data
             2) read languages of the article
     
         B)
             cycle:
                 1) insert into Locations the new position
                 2) get inserted id as location_id
                 3) insert into LocationContents the most of the new data,
                 4) get inserted id as content_id
                 5) insert into MapLocations (map_id, location_id, data:style, rank=0)
                 6) get inserted id as maplocation_id
                 7) insert into MapLocationLanguages (maplocation_id, language_id, content_id, data:display)
                 ad 7) this for all languages, with display=false for the other ones
     */
     // ad B 1)
     $queryStr_loc_in = 'INSERT INTO Locations (poi_location, poi_type, poi_type_style, poi_center, poi_radius, IdUser) VALUES (';
     $queryStr_loc_in .= "GeomFromText('POINT(? ?)'), 'point', 0, PointFromText('POINT(? ?)'), 0, %%user_id%%";
     $queryStr_loc_in .= ')';
     // ad B 3)
     // ad B 5)
     $queryStr_maploc = 'INSERT INTO MapLocations (fk_map_id, fk_location_id, poi_style, rank) ';
     $queryStr_maploc .= 'VALUES (?, ?, ?, 0)';
     // ad B 7)
     $queryStr_maploclan = 'INSERT INTO MapLocationLanguages (fk_maplocation_id, fk_language_id, fk_content_id, poi_display) ';
     $queryStr_maploclan .= 'VALUES (?, ?, ?, ?)';
     if ($p_articleNumber) {
         $languages = Geo_Map::ReadLanguagesByArticle($p_articleNumber);
     } else {
         $languages = Geo_Map::ReadLanguagesByMap($p_mapId);
     }
     foreach ($p_insertion as $poi) {
         if (is_object($poi)) {
             $poi = get_object_vars($poi);
         }
         $loc_id = null;
         $new_loc = array();
         $new_loc[] = array('latitude' => $poi['latitude'], 'longitude' => $poi['longitude']);
         $new_cen = array('latitude' => $poi['latitude'], 'longitude' => $poi['longitude']);
         $new_style = 0;
         $new_radius = 0;
         $reuse_id = Geo_Location::FindLocation($new_loc, 'point', $new_style, $new_cen, $new_radius);
         if ($reuse_id && 0 < $reuse_id) {
             $loc_id = $reuse_id;
         } else {
             // ad B 1)
             $loc_in_params = array();
             $loc_in_params[] = $poi['latitude'];
             $loc_in_params[] = $poi['longitude'];
             $loc_in_params[] = $poi['latitude'];
             $loc_in_params[] = $poi['longitude'];
             // the POI itself insertion
             $queryStr_loc_in = str_replace('%%user_id%%', $g_user->getUserId(), $queryStr_loc_in);
             $success = $g_ado_db->Execute($queryStr_loc_in, $loc_in_params);
             // ad B 2)
             // taking its ID for the next processing
             $loc_id = $g_ado_db->Insert_ID();
         }
         // ad B 3/4)
         $con_id = Geo_MapLocationContent::InsertContent($poi);
         // ad B 5)
         $maploc_params = array();
         $maploc_params[] = $p_mapId;
         $maploc_params[] = $loc_id;
         $maploc_params[] = '' . $poi['style'];
         // the map-point link insertion
         $success = $g_ado_db->Execute($queryStr_maploc, $maploc_params);
         // ad B 6)
         $maploc_id = $g_ado_db->Insert_ID();
         Geo_Multimedia::InsertMultimedia($maploc_id, $poi);
         // ad B 7)
         $maploclan_params = array();
         $maploclan_params[] = $maploc_id;
         $maploclan_params[] = 0 + $p_languageId;
         $maploclan_params[] = $con_id;
         $maploclan_params[] = 0 + $poi['display'];
         // the map-point link insertion
         $success = $g_ado_db->Execute($queryStr_maploclan, $maploclan_params);
         $poi_index = $poi['index'];
         $p_indices[$poi_index] = array('maploc' => $maploc_id);
         // insert the POI content for the other article's languages
         foreach ($languages as $one_lang) {
             if ($one_lang == $p_languageId) {
                 continue;
             }
             $maploclan_params[1] = $one_lang;
             $maploclan_params[3] = 0;
             // false; // display;
             $success = $g_ado_db->Execute($queryStr_maploclan, $maploclan_params);
         }
         // if a new POI, then that's all for it here
         continue;
     }
     return $p_indices;
 }
Example #3
0
    /**
     * Updates the point text content, the COW way
     *
     * @param int $p_mapId
     * @param array $p_contents
     *
     * @return bool
     */
	public static function UpdateContents($p_mapId, $p_contents)
    {
		global $g_ado_db;

        foreach ($p_contents as $poi_obj)
        {
            $poi = get_object_vars($poi_obj);

            if ($poi["icon_changed"])
            {
                self::UpdateIcon($poi);
            }
            if ($poi["state_changed"])
            {
                Geo_MapLocationContent::UpdateState($poi);
            }
            if ($poi["image_changed"])
            {
                Geo_Multimedia::UpdateMedia($poi, "image");
            }
            if ($poi["video_changed"])
            {
                Geo_Multimedia::UpdateMedia($poi, "video");
            }

            if ($poi["text_changed"])
            {
                Geo_MapLocationContent::UpdateText($poi);
            }

        }

        ;
        return true;
    } // fn UpdateContents