public function parseAlle()
 {
     $text = RISTools::load_file("http://www.ris-muenchen.de/RII/RII/ris_referenten_trefferliste.jsp?nav=1");
     $txt = explode("<!-- ergebnisreihen -->", $text);
     $txt = explode("<div class=\"ergebnisfuss\">", $txt[1]);
     preg_match_all("/ris_referenten_detail\\.jsp\\?risid=(?<id>[0-9]+)[\"'& ][^>]*>(?<name>[^<]+)<.*target=\"_blank\">(?<referat>[^<]+)</siU", $txt[0], $matches);
     for ($i = 0; $i < count($matches["name"]); $i++) {
         $name = trim($matches["name"][$i]);
         $name = str_replace("&nbsp;", " ", $name);
         $name = preg_replace("/ *(\n *)+/siu", "\n", $name);
         $x = explode("\n", $name);
         $y = explode(", ", $x[1]);
         $name = trim($x[0]) . " " . trim($y[1]) . " " . trim($y[0]);
         $id = IntVal($matches["id"][$i]);
         $referat_name = $matches["referat"][$i];
         /** @var StadtraetIn $str */
         $str = StadtraetIn::model()->findByPk($id);
         if ($str) {
             if ($str->name != $name) {
                 RISTools::send_email(Yii::app()->params['adminEmail'], "ReferentIn Änderung", $str->name . " => " . $name, null, "system");
                 $str->name = $name;
                 $str->save();
             }
         } else {
             $str = new StadtraetIn();
             $str->name = $name;
             $str->id = $id;
             $str->referentIn = 1;
             $str->save();
         }
         /** @var Referat $referat */
         $referat = Referat::model()->findByAttributes(["name" => $referat_name]);
         if (!$referat) {
             RISTools::send_email(Yii::app()->params['adminEmail'], "Referat nicht gefunden", $referat_name, null, "system");
             return;
         }
         $gefunden = false;
         foreach ($str->stadtraetInnenReferate as $ref) {
             if ($ref->referat_id == $referat->id) {
                 $gefunden = true;
             }
         }
         if (!$gefunden) {
             $zuo = new StadtraetInReferat();
             $zuo->referat_id = $referat->id;
             $zuo->stadtraetIn_id = $str->id;
             $zuo->save();
             RISTools::send_email(Yii::app()->params['adminEmail'], "Neue ReferentInnen/Referat-Zuordnung", $referat_name . " / " . $str->name, null, "system");
         }
     }
 }
 /**
  * @param Dokument|null $dokument
  * @return string
  */
 public function getTitle($dokument = null)
 {
     if (count($this->krits) == 1) {
         switch ($this->krits[0]["typ"]) {
             case "betreff":
                 $such = $this->krits[0]["suchbegriff"];
                 if ($such[0] == "\"" && $such[strlen($such) - 1] == "\"") {
                     return "Dokumente mit " . $this->krits[0]["suchbegriff"] . " im Betreff";
                 }
                 return "Dokumente mit \"" . $such . "\" im Betreff";
             case "antrag_typ":
                 return "Dokumente des Typs \"" . Dokument::$TYPEN_ALLE[$this->krits[0]["suchbegriff"]] . "\"";
             case "volltext":
                 $such = $this->krits[0]["suchbegriff"];
                 if ($such[0] == "\"" && $such[strlen($such) - 1] == "\"") {
                     return "Volltextsuche nach " . $this->krits[0]["suchbegriff"];
                 }
                 return "Volltextsuche nach \"" . $such . "\"";
             case "ba":
                 /** @var Bezirksausschuss $ba */
                 $ba = Bezirksausschuss::model()->findByAttributes(["ba_nr" => $this->krits[0]["ba_nr"]]);
                 return "Bezirksausschuss " . $ba->ba_nr . ": " . $ba->name;
             case "geo":
                 $ort = OrtGeo::findClosest($this->krits[0]["lng"], $this->krits[0]["lat"]);
                 $title = "Dokumente mit Ortsbezug (ungefähr: " . IntVal($this->krits[0]["radius"]) . "m um \"" . $ort->ort . "\")";
                 if ($dokument) {
                     /** @var OrtGeo[] $gefundene_orte */
                     $gefundene_orte = [];
                     foreach ($dokument->orte as $dok_ort_ort) {
                         $dok_ort = $dok_ort_ort->ort;
                         $distance = RISGeo::getDistance($dok_ort->lat, $dok_ort->lon, $this->krits[0]["lat"], $this->krits[0]["lng"]);
                         if ($distance * 1000 <= $this->krits[0]["radius"]) {
                             $gefundene_orte[] = $dok_ort;
                         }
                     }
                     if (count($gefundene_orte) > 0) {
                         $namen = [];
                         foreach ($gefundene_orte as $gef_ort) {
                             $namen[] = $gef_ort->ort;
                         }
                         $title .= ": " . implode(", ", $namen);
                     }
                 }
                 return $title;
             case "referat":
                 /** @var Referat $ref */
                 $ref = Referat::model()->findByPk($this->krits[0]["referat_id"]);
                 return $ref->name;
                 break;
             case "antrag_wahlperiode":
                 return "Dokumente der Wahlperiode " . $this->krits[0]["suchbegriff"];
             case "antrag_nr":
                 return "Antrag Nr. " . str_replace("*", " ", $this->krits[0]["suchbegriff"]);
         }
     }
     if (count($this->krits) > 1) {
         $krits = [];
         foreach ($this->krits as $cr) {
             switch ($cr["typ"]) {
                 case "betreff":
                     $krits[] = "mit \"" . $cr["suchbegriff"] . "\" im Betreff";
                     break;
                 case "antrag_typ":
                     $krits[] = "vom Typ \"" . Dokument::$TYPEN_ALLE[$cr["suchbegriff"]] . "\"";
                     break;
                 case "volltext":
                     $krits[] = "mit dem Suchausdruck \"" . $cr["suchbegriff"] . "\"";
                     break;
                 case "ba":
                     /** @var Bezirksausschuss $ba */
                     $ba = Bezirksausschuss::model()->findByAttributes(["ba_nr" => $cr["ba_nr"]]);
                     $krits[] = "aus dem Bezirksausschuss " . $ba->ba_nr . ": " . $ba->name;
                     break;
                 case "geo":
                     $ort = OrtGeo::findClosest($cr["lng"], $cr["lat"]);
                     $krits[] = "mit einem Ortsbezug (ungefähr: " . IntVal($cr["radius"]) . "m um \"" . $ort->ort . "\")";
                     break;
                 case "antrag_nr":
                     $krits[] = "zum Antrag Nr. " . $cr["suchbegriff"];
                     break;
                 case "referat":
                     /** @var Referat $ref */
                     $ref = Referat::model()->findByPk($cr["referat_id"]);
                     $krits[] = "im Zuständigkeitsbereich des " . $ref->name;
                     break;
                 case "antrag_wahlperiode":
                     $krits[] = "aus der Wahlperiode " . CHtml::encode($cr["suchbegriff"]);
                     break;
                 default:
                     $krits[] = json_encode($cr);
             }
         }
         $text = "Dokumente ";
         for ($i = 0; $i < count($krits) - 1; $i++) {
             $text .= $krits[$i];
             if ($i < count($krits) - 2) {
                 $text .= ", ";
             }
         }
         $text .= " und " . $krits[count($krits) - 1];
         return $text;
     }
     return json_encode($this->krits);
 }
Example #3
0
					<?php 
}
?>
				</select>
			</div>
		</div>

		<div class="form-group">
			<label for="suche_referat" class="col-sm-3 control-label">Zuständiges Referat:</label>

			<div class="col-sm-9">
				<select id="suche_referat" name="referat" size="1" class="form-control">
					<option>- egal -</option>
					<?php 
/** @var Referat[] $referate */
$referate = Referat::model()->findAll();
foreach ($referate as $ref) {
    ?>
						<option value="<?php 
    echo $ref->id;
    ?>
"><?php 
    echo CHtml::encode($ref->name);
    ?>
</option>
					<?php 
}
?>
				</select>
			</div>
		</div>
Example #4
0
 /**
  * @param string $name
  * @return null|Referat
  */
 public static function getByHtmlName($name)
 {
     $name = trim(strip_tags($name));
     $ref = Referat::model()->findByAttributes(["name" => $name]);
     return $ref;
 }
 /**
  *
  */
 public function actionIndex()
 {
     $this->top_menu = "themen";
     $this->render("index", ["referate" => Referat::model()->findAll(), "highlights" => Dokument::getHighlightDokumente(5), "tags" => Tag::getTopTags(10)]);
 }