Example #1
0
 /**
  * @param string $name
  * @throws Exception
  * @return OrtGeo|null
  */
 public static function getOrCreate($name)
 {
     /** @var null|OrtGeo */
     $ort = OrtGeo::model()->findByAttributes(["ort" => $name]);
     if ($ort) {
         return $ort;
     }
     $data = RISGeo::addressToGeo("Deutschland", "", "München", $name);
     if (($data === false || $data["lat"] == 0) && mb_strpos($name, "-") !== false) {
         $data = RISGeo::addressToGeo("Deutschland", "", "München", str_replace("-", "", $name));
     }
     if (($data === false || $data["lat"] == 0) && mb_stripos($name, "Str.") !== false) {
         $data = RISGeo::addressToGeo("Deutschland", "", "München", str_ireplace("Str.", "Straße", $name));
     }
     if ($data["lat"] <= 0 || $data["lon"] <= 0) {
         return null;
     }
     $ort = new OrtGeo();
     $ort->ort = $name;
     $ort->lat = $data["lat"];
     $ort->lon = $data["lon"];
     $ort->setzeBA();
     $ort->source = "auto";
     $ort->to_hide = 0;
     $ort->to_hide_kommentar = "";
     $ort->datum = new CDbExpression('NOW()');
     if (!$ort->save()) {
         RISTools::send_email(Yii::app()->params['adminEmail'], "OrtGeo:getOrCreate Error", print_r($ort->getErrors(), true), null, "system");
         throw new Exception("Fehler beim Speichern: Geo");
     }
     return $ort;
 }