public function run($args) { if (count($args) == 0) { die("./yii recalc_ort2ba [Orts-ID|alle]\n"); } if ($args[0] == "alle") { /** @var OrtGeo[] $orte */ $orte = OrtGeo::model()->findAll(["order" => "id"]); } else { /** @var OrtGeo[] $orte */ $orte = OrtGeo::model()->findAll(["condition" => "id = " . IntVal($args[0])]); } /** @var Bezirksausschuss[] $bas */ $bas = Bezirksausschuss::model()->findAll(); foreach ($orte as $ort) { $found_ba = null; foreach ($bas as $ba) { if ($ba->pointInBA($ort->lon, $ort->lat)) { echo $ort->id . " - " . $ort->ort . ": " . $ba->ba_nr . "\n"; $found_ba = $ba->ba_nr; } } if ($found_ba) { $ort->ba_nr = $found_ba; $ort->save(); } } }
public function getAssetsBase() { if ($this->_assetsBase === null) { /** @var CWebApplication $app */ $app = Yii::app(); $this->_assetsBase = $app->assetManager->publish(Yii::getPathOfAlias('application.assets'), false, -1, defined('YII_DEBUG') && YII_DEBUG); $path = getcwd() . $this->_assetsBase . "/"; if (!file_exists($path . "ba_grenzen_geojson.js")) { $BAGrenzenGeoJSON = []; /** @var array|Bezirksausschuss[] $BAs */ $BAs = Bezirksausschuss::model()->findAll(); foreach ($BAs as $ba) { $BAGrenzenGeoJSON[] = $ba->toGeoJSONArray(); } file_put_contents($path . "ba_grenzen_geojson.js", "BA_GRENZEN_GEOJSON = " . json_encode($BAGrenzenGeoJSON) . ";"); } } return $this->_assetsBase; }
public function actionBaListe() { $this->render('ba_liste', ["bas" => Bezirksausschuss::model()->findAll()]); }
public function setzeBA() { /** @var Bezirksausschuss[] $bas */ $bas = Bezirksausschuss::model()->findAll(); $this->ba_nr = null; foreach ($bas as $ba) { if ($this->ba_nr === null && $ba->pointInBA($this->lon, $this->lat)) { $this->ba_nr = $ba->ba_nr; } } }
public function actionBaTermineAlle($ba_nr) { /** @var Termin[] $termine */ $termine = Termin::model()->findAllByAttributes(["ba_nr" => $ba_nr], ["order" => "termin DESC"]); $termin_arr = []; foreach ($termine as $t) { $termin_arr[] = $t->toArr(); } /** @var Bezirksausschuss $ba */ $ba = Bezirksausschuss::model()->findByPk($ba_nr); $this->render("ba_termine_alle", ["ba" => $ba, "termine" => $termin_arr]); }
public function parse($ba_nr) { $ba_nr = IntVal($ba_nr); if (SITE_CALL_MODE != "cron") { echo "- BA {$ba_nr}\n"; } /** @var Bezirksausschuss $ba */ $ba = Bezirksausschuss::model()->findByPk($ba_nr); $ba_details = RISTools::load_file("http://www.ris-muenchen.de/RII/BA-RII/ba_bezirksausschuesse_details.jsp?Id=" . $ba->ris_id); preg_match("/Wahlperiode.*detail_div\">(?<wahlperiode>[^<]*)</siuU", $ba_details, $matches); $wahlperiode = $matches["wahlperiode"]; $x = explode('<!-- tabellenkopf -->', $ba_details); $x = explode('<!-- seitenfuss -->', $x[1]); $gefundene_fraktionen = []; preg_match_all("/ba_mitglieder_details_mitgliedschaft\\.jsp\\?Id=(?<mitglied_id>[0-9]+)&Wahlperiode=(?<wahlperiode>[0-9]+)[\"'& ]>(?<name>[^<]*)<.*tdborder\">(?<mitgliedschaft>[^<]*)<\\/td>.*tdborder[^>]*>(?<fraktion>[^<]*) *<\\/td>.*notdborder[^>]*>(?<funktion>[^<]*) *<\\/td.*<\\/tr/siU", $x[0], $matches); for ($i = 0; $i < count($matches[1]); $i++) { $fraktion_name = trim(html_entity_decode($matches["fraktion"][$i])); $name = str_replace(" ", " ", $matches["name"][$i]); $name = trim(str_replace(["Herr", "Frau"], [" ", " "], $name)); if ($fraktion_name == "") { $fraktion_name = "Parteifrei"; } /** @var StadtraetIn $strIn */ $strIn = StadtraetIn::model()->findByPk($matches["mitglied_id"][$i]); if (!$strIn) { echo "Neu anlegen: " . $matches["mitglied_id"][$i] . " - " . $name . " (" . $fraktion_name . ")\n"; $strIn = new StadtraetIn(); $strIn->name = $name; $strIn->id = $matches["mitglied_id"][$i]; $strIn->referentIn = 0; $x = explode(".", $matches["mitgliedschaft"][$i]); $strIn->gewaehlt_am = $x[2] . "-" . $x[1] . "-" . $x[0]; $strIn->save(); } /** @var Fraktion|null $fraktion */ $fraktion = Fraktion::model()->findByAttributes(["ba_nr" => $ba_nr, "name" => $fraktion_name]); if (!$fraktion) { echo "Lege an: " . $fraktion_name . "\n"; $min = Yii::app()->db->createCommand()->select("MIN(id)")->from("fraktionen")->queryColumn()[0] - 1; if ($min > 0) { $min = -1; } $fraktion = new Fraktion(); $fraktion->id = $min; $fraktion->name = $fraktion_name; $fraktion->ba_nr = $ba_nr; $fraktion->save(); } $gefunden = false; foreach ($strIn->stadtraetInnenFraktionen as $strfrakt) { if ($strfrakt->fraktion_id == $fraktion->id) { $gefunden = true; $von_pre = $strfrakt->datum_von; $bis_pre = $strfrakt->datum_bis; if (preg_match("/^von (?<von_tag>[0-9]+)\\.(?<von_monat>[0-9]+)\\.(?<von_jahr>[0-9]+) bis (?<bis_tag>[0-9]+)\\.(?<bis_monat>[0-9]+)\\.(?<bis_jahr>[0-9]+)\$/", $matches["mitgliedschaft"][$i], $mitgliedschaft_matches)) { $strfrakt->datum_von = $mitgliedschaft_matches["von_jahr"] . "-" . $mitgliedschaft_matches["von_monat"] . "-" . $mitgliedschaft_matches["von_tag"]; $strfrakt->datum_bis = $mitgliedschaft_matches["bis_jahr"] . "-" . $mitgliedschaft_matches["bis_monat"] . "-" . $mitgliedschaft_matches["bis_tag"]; } elseif (preg_match("/^seit (?<von_tag>[0-9]+)\\.(?<von_monat>[0-9]+)\\.(?<von_jahr>[0-9]+)\$/", $matches["mitgliedschaft"][$i], $mitgliedschaft_matches)) { $strfrakt->datum_von = $mitgliedschaft_matches["von_jahr"] . "-" . $mitgliedschaft_matches["von_monat"] . "-" . $mitgliedschaft_matches["von_tag"]; $strfrakt->datum_bis = null; } if ($von_pre != $strfrakt->datum_von || $bis_pre != $strfrakt->datum_bis) { $strfrakt->save(); echo $strIn->getName() . ": " . $von_pre . "/" . $bis_pre . " => " . $strfrakt->datum_von . "/" . $strfrakt->datum_bis . "\n"; } } } if (!$gefunden) { $strfrakt = new StadtraetInFraktion(); $strfrakt->fraktion_id = $fraktion->id; $strfrakt->stadtraetIn_id = $strIn->id; $strfrakt->wahlperiode = $wahlperiode; $strfrakt->mitgliedschaft = $matches["mitgliedschaft"][$i]; if (preg_match("/^von (?<von_tag>[0-9]+)\\.(?<von_monat>[0-9]+)\\.(?<von_jahr>[0-9]+) bis (?<bis_tag>[0-9]+)\\.(?<bis_monat>[0-9]+)\\.(?<bis_jahr>[0-9]+)\$/", $matches["mitgliedschaft"][$i], $mitgliedschaft_matches)) { $strfrakt->datum_von = $mitgliedschaft_matches["von_jahr"] . "-" . $mitgliedschaft_matches["von_monat"] . "-" . $mitgliedschaft_matches["von_tag"]; $strfrakt->datum_bis = $mitgliedschaft_matches["bis_jahr"] . "-" . $mitgliedschaft_matches["bis_monat"] . "-" . $mitgliedschaft_matches["bis_tag"]; } elseif (preg_match("/^seit (?<von_tag>[0-9]+)\\.(?<von_monat>[0-9]+)\\.(?<von_jahr>[0-9]+)\$/", $matches["mitgliedschaft"][$i], $mitgliedschaft_matches)) { $strfrakt->datum_von = $mitgliedschaft_matches["von_jahr"] . "-" . $mitgliedschaft_matches["von_monat"] . "-" . $mitgliedschaft_matches["von_tag"]; $strfrakt->datum_bis = null; } $strfrakt->save(); } if (!isset($gefundene_fraktionen[$matches["mitglied_id"][$i]])) { $gefundene_fraktionen[$matches["mitglied_id"][$i]] = []; } $gefundene_fraktionen[$matches["mitglied_id"][$i]][] = $fraktion->id; } foreach ($gefundene_fraktionen as $strIn => $fraktionen) { //SELECT a.* FROM `fraktionen` a JOIN stadtraetInnen_fraktionen b ON a.id = b.fraktion_id WHERE b.stadtraetIn_id = 3314069 AND a.ba_nr = 18 AND b.fraktion_id NOT IN (-88) $sql = 'DELETE FROM b USING `fraktionen` a JOIN `stadtraetInnen_fraktionen` b ON a.id = b.fraktion_id WHERE '; $frakts = implode(", ", array_map('IntVal', $fraktionen)); $sql .= 'b.stadtraetIn_id = ' . IntVal($strIn) . ' AND a.ba_nr = ' . IntVal($ba_nr) . ' AND b.fraktion_id NOT IN (' . $frakts . ')'; if (Yii::app()->db->createCommand($sql)->execute() > 0) { echo 'Fraktionen gelöscht bei: ' . $strIn . "\n"; } } }
* @var array $geodata_overflow * @var Antrag[] $antraege_stadtrat * @var Antrag[] $antraege_sonstige * @var string $datum * @var bool $explizites_datum * @var string $neuere_url_ajax * @var string $neuere_url_std * @var string $aeltere_url_ajax * @var string $aeltere_url_std * @var array $statistiken * @var Rathausumschau[] $rathausumschauen */ $this->pageTitle = Yii::app()->name; $ba_links = []; /** @var Bezirksausschuss[] $bas */ $bas = Bezirksausschuss::model()->findAll(); foreach ($bas as $ba) { $ba_links["ba_" . $ba->ba_nr] = $ba->getLink(); } ?> <section class="well"> <h1 class="sr-only"><?php echo CHtml::encode($this->pageTitle); ?> </h1> <?php $this->renderPartial("/index/map", array("ortsbezugszahlgrenze" => 10, "geodata_overflow" => $geodata_overflow)); ?>
/** * @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); }
" onclick="return confirm('Wirklich löschen?');" style="color: red;">löschen</a> </td> </tr> <?php } ?> <tr> <th colspan="3" style="font-size: 16px; padding-top: 50px;">Neuen Eintrag anlegen</th> </tr> <tr> <td style="padding: 5px;"><select name="neu[ba_nr]" size="1" style="max-width: 200px;"> <option value=""></option> <?php /** @var Bezirksausschuss[] $bas */ $bas = Bezirksausschuss::model()->findAll(array("order" => "ba_nr")); foreach ($bas as $ba) { echo '<option value="' . $ba->ba_nr . '">BA ' . $ba->ba_nr . ': ' . CHtml::encode($ba->name) . '</option>' . "\n"; } ?> </select></td> <td style="padding: 5px;"> <input type="text" name="neu[datum]" placeholder="YYYY-MM-DD HH:II:SS" size="20"> </td> <td style="padding: 5px;"> <textarea cols="50" rows="3" name="neu[ort]"></textarea> </td> <td style="padding: 5px;"></td> </tr> </tbody> </table>