public function getUntertitel($export = false, $links = true, $htmlentities = true) { $text = str_replace('--', '<br/>', CHtml::encode($this->untertitel)); if (Yii::app()->getModule('event')->team) { if (!self::$teamModels) { self::$teamModels = Team::model()->findAll(); } foreach (self::$teamModels as $model) { $alias = array($model->name); if ($htmlentities) { $alias[] = htmlentities($model->name); } else { $alias[] = $model->name; } if ($model->name == 'Milam M. Horn') { $alias[] = 'Milam Horn'; $alias[] = 'Milam'; } if ($model->name == 'Katarina Heidenreich') { $alias[] = 'Katarina'; $alias[] = 'K.Heidenreich'; } foreach ($alias as $name) { if (strpos($text, $name) !== false) { $this->teamLinks[] = $model->key; if ($links) { if ($export) { $text = str_replace($name, CHtml::link(substr($name, 0, 1), Yii::app()->controller->createAbsoluteUrl('//page/team/get', array('key' => $model->key)), array('style' => '#placeholderpersonstyle#', 'title' => 'Teamseite')) . substr($name, 1), $text); } else { $text = str_replace($name, CHtml::link('<i class="glyphicon glyphicon-user"></i>', array('/page/team/get', 'key' => $model->key), array('rel' => 'nofollow')) . " " . $name, $text); } } break; } } } } return $text; }
/** * @param int $ba_nr * @param string $datum_max */ public function actionBa($ba_nr, $datum_max = "") { $this->top_menu = "ba"; $this->load_leaflet_css = true; $this->load_leaflet_draw_css = true; $tage_zukunft = 60; $tage_vergangenheit = 60; $antraege_data = $this->ba_dokumente_nach_datum($ba_nr, $datum_max); $termine = Termin::model()->termine_stadtrat_zeitraum($ba_nr, date("Y-m-d 00:00:00", time() - $tage_vergangenheit * 24 * 3600), date("Y-m-d 00:00:00", time() + $tage_zukunft * 24 * 3600), true)->findAll(['order' => 'termin DESC']); $termin_dokumente = Termin::model()->neueste_ba_dokumente($ba_nr, date("Y-m-d 00:00:00", time() - $tage_vergangenheit * 24 * 3600), date("Y-m-d H:i:s", time()), false)->findAll(); $termine = Termin::groupAppointments($termine); /** @var Termin[] $bvs */ $bvs = Termin::model()->findAllByAttributes(["ba_nr" => $ba_nr, "typ" => Termin::$TYP_BUERGERVERSAMMLUNG], ["order" => "termin DESC"]); $bvs_arr = []; foreach ($bvs as $bv) { $bvs_arr[] = $bv->toArr(); } /** @var Bezirksausschuss $ba */ $ba = Bezirksausschuss::model()->findByPk($ba_nr); $gremien = $ba->gremien; $this->render("ba_startseite", array_merge(["ba" => $ba, "gremien" => $gremien, "termine" => $termine, "termin_dokumente" => $termin_dokumente, "bvs" => $bvs_arr, "tage_vergangenheit" => $tage_vergangenheit, "tage_zukunft" => $tage_zukunft, "tage_vergangenheit_dokumente" => static::$BA_DOKUMENTE_TAGE_PRO_SEITE, "fraktionen" => StadtraetIn::getGroupedByFraktion(date("Y-m-d"), $ba_nr), "explizites_datum" => $datum_max != ""], $antraege_data)); }
/** * @param Termin[] $alle_termine * @param Termin $termin */ function termine_add(&$alle_termine, $termin) { if (isset($alle_termine[$termin->id])) { return; } $alle_termine[$termin->id] = $termin; if ($termin->termin_next_id > 0) { $next = Termin::model()->findByPk($termin->termin_next_id); if ($next) { termine_add($alle_termine, $next); } } if ($termin->termin_prev_id > 0) { $prev = Termin::model()->findByPk($termin->termin_prev_id); if ($prev) { termine_add($alle_termine, $prev); } } }
$VName = $_POST['VName']; $Beschreibung = $_POST['Beschreibung']; $Datum = $_POST['Datum']; $ZeitVon = $_POST['ZeitVon']; $ZeitBis = $_POST['ZeitBis']; $RID = $_POST['RID']; $Ort = $_POST['Ort']; $PID = $_POST['PID']; $GName = $_POST['GName']; $StID = $_POST['StID']; $ZName = $_POST['ZName']; $Sprache = $_POST['Sprache']; $erstellt_am = date('H:i', gmdate('U')); $freigegeben_am = NULL; try { $objTermin = new Termin($VName, $Beschreibung, $Datum, $ZeitVon, $ZeitBis, $RID, $Ort, $PID, $GName, $StID, $ZName, $Sprache, $erstellt_am, $freigegeben_am); //echo "<pre>",print_r(array($objTermin)),"</pre>"; $objTermin->termin_speichern($objTermin, $DBH); $status = "saved"; header("Location: http://localhost/ikvem/index.php"); die; } catch (PDOException $e) { echo "Es gab einen Fehler" . $e->getMessage(); } } // # using the shortcut ->query() method here since there are no variable // # values in the select statement. // $STH = $DBH->query('SELECT * from gruppe'); // # setting the fetch mode // $STH->setFetchMode(PDO::FETCH_ASSOC); // while($row = $STH->fetch()) {
function run($template) { $dbuser = new User(); if (isREQUEST("activate")) { if ($dbuser->activate(REQUEST("activate")) > 0) { $template->add("regsuccess", "Benuter aktiviert"); } else { $template->add("regerror", "Fehler beim aktivieren des Users"); } } if (isREQUEST("logout")) { $dbuser->logout(); } if (isREQUEST("user") && isREQUEST("password")) { $usr = $dbuser->logout()->login(REQUEST("user"), REQUEST("password")); if (!$usr) { $template->add("error", "Login fehlgeschlagen"); } } if (!($usr = $dbuser->logedin())) { $template->view("login"); return; } $t = new Termin(); $template->add("usr", $usr); // für die User Infos oben Rechts $template->add("byuser", $t->allbyuser($usr["id"])); $template->add("bymitglied", $t->allbymitglieder($usr["id"])); $template->view("main"); }
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]); }
// grullist nr5MpjEYAvWnVuY8 require_once "config/config.php"; require_once "libs/get_post.lib.php"; require_once "libs/user.class.php"; require_once "libs/termin.class.php"; $u = new User(); if (isREQUEST("user") && isREQUEST("passwd")) { $u->login(REQUEST("user"), REQUEST("passwd")); } if ($usr = $u->logedin()) { $ret = array(); switch (REQUEST("action", REQUEST("a", ""))) { case "user": $ret = $usr; break; case "dateadd": $t = new Termin(); $ret = $t->dateadd(REQUEST("t"), $usr["id"], REQUEST("z")); break; case "vote": $t = new Termin(); $ret = $t->vote(REQUEST("t"), $usr["id"], REQUEST("z"), REQUEST("v")); break; default: $ret = array("error" => "action: " . (isset($_GET["action"]) ? $_GET["action"] : "undefined")); } echo json_encode($ret); } else { header("HTTP/1.0 401 Unauthorized"); echo json_encode(array("error" => "401")); }
public function actionSaveAll() { $criteria = new CDbCriteria(array('condition' => '`to`>' . (time() - 60 * 30), 'order' => '`from` ASC')); foreach (Termin::model()->findAll($criteria) as $m) { $m->save(); } }
public function actionBuergerInnenversammlungen() { if (!$this->binContentAdmin()) { $this->errorMessageAndDie(403, ""); } $this->top_menu = "admin"; if (AntiXSS::isTokenSet("delete")) { /** @var Termin $termin */ $termin = Termin::model()->findByPk(AntiXSS::getTokenVal("delete")); $termin->delete(); $this->msg_ok = "Gelöscht."; } if (AntiXSS::isTokenSet("save")) { if (isset($_REQUEST["neu"]) && $_REQUEST["neu"]["datum"] != "" && $_REQUEST["neu"]["ba_nr"] > 0) { $result = Yii::app()->db->createCommand("SELECT MIN(id) minid FROM termine")->queryAll(); $id = $result[0]["minid"]; if ($id >= 0) { $id = 0; } $id--; $termin = new Termin(); $termin->id = $id; $termin->ba_nr = IntVal($_REQUEST["neu"]["ba_nr"]); $termin->typ = Termin::$TYP_BUERGERVERSAMMLUNG; $termin->sitzungsort = $_REQUEST["neu"]["ort"]; $termin->termin = $_REQUEST["neu"]["datum"]; $termin->datum_letzte_aenderung = new CDbExpression('NOW()'); if (!$termin->save()) { $this->msg_err = print_r($termin->getErrors(), true); } } if (isset($_REQUEST["termin"])) { foreach ($_REQUEST["termin"] as $id => $save) { /** @var Termin $termin */ $termin = Termin::model()->findByPk($id); $termin->sitzungsort = $save["ort"]; $termin->termin = $save["datum"]; $termin->save(); } } $this->msg_ok = "Gespeichert"; } $termine = Termin::model()->findAllByAttributes(["typ" => Termin::$TYP_BUERGERVERSAMMLUNG], ["order" => "termin DESC"]); $this->render("buergerInnenversammlungen", ["termine" => $termine]); }
public function parse($termin_id) { $termin_id = IntVal($termin_id); if (SITE_CALL_MODE != "cron") { echo "- Termin {$termin_id}\n"; } $html_details = RISTools::load_file("http://www.ris-muenchen.de/RII/BA-RII/ba_sitzungen_details.jsp?Id={$termin_id}"); $html_dokumente = RISTools::load_file("http://www.ris-muenchen.de/RII/BA-RII/ba_sitzungen_dokumente.jsp?Id={$termin_id}"); $html_to = RISTools::load_file("http://www.ris-muenchen.de/RII/BA-RII/ba_sitzungen_tagesordnung.jsp?Id={$termin_id}"); $daten = new Termin(); $daten->typ = Termin::$TYP_AUTO; $daten->id = $termin_id; $daten->datum_letzte_aenderung = new CDbExpression('NOW()'); $daten->gremium_id = NULL; $daten->referat = ""; $daten->referent = ""; $daten->vorsitz = ""; $daten->sitzungsstand = ""; $dokumente = []; if (preg_match("/ba_gremien_details\\.jsp\\?Id=([0-9]+)[\"'& ]/siU", $html_details, $matches)) { $daten->gremium_id = IntVal($matches[1]); } if ($daten->gremium_id) { /** @var Gremium $gr */ $gr = Gremium::model()->findByPk($daten->gremium_id); if (!$gr) { echo "Lege Gremium an: " . $daten->gremium_id . "\n"; $parser = new BAGremienParser(); $parser->parse($daten->gremium_id); } $daten->ba_nr = $gr->ba_nr; } if (preg_match("/Termin:.*detail_div\">([^&<]+)[&<]/siU", $html_details, $matches)) { $termin = $matches[1]; $MONATE = ["januar" => "01", "februar" => "02", "märz" => "03", "april" => "04", "mai" => "05", "juni" => "06", "juli" => "07", "august" => "08", "september" => "09", "oktober" => "10", "november" => "11", "dezember" => "12"]; $x = explode(" ", trim($termin)); $tag = IntVal($x[1]); if ($tag < 10) { $tag = "0" . IntVal($tag); } $jahr = IntVal($x[2]); $y = explode(".", $x[1]); $monat = $MONATE[mb_strtolower($y[1])]; if ($monat < 10) { $monat = "0" . IntVal($monat); } $zeit = $x[3]; $daten->termin = "{$jahr}-{$monat}-{$tag} {$zeit}:00"; } if (preg_match("/Sitzungsort:.*detail_div\">([^<]*)[<]/siU", $html_details, $matches)) { $daten->sitzungsort = html_entity_decode($matches[1], ENT_COMPAT, "UTF-8"); } if (preg_match("/Bezirksausschuss:.*link_bold_noimg\">([0-9]+)[\"'& ]/siU", $html_details, $matches)) { $daten->ba_nr = IntVal($matches[1]); } if (preg_match("/chste Sitzung:.*ba_sitzungen_details\\.jsp\\?Id=([0-9]+)[\"'& ]/siU", $html_details, $matches)) { $daten->termin_next_id = $matches[1]; } if (preg_match("/Letzte Sitzung:.*ba_sitzungen_details\\.jsp\\?Id=([0-9]+)[\"'& ]/siU", $html_details, $matches)) { $daten->termin_prev_id = $matches[1]; } if (preg_match("/Wahlperiode:.*detail_div_left_long\">([^>]*)<\\//siU", $html_details, $matches)) { $daten->wahlperiode = $matches[1]; } if (preg_match("/Status:.*detail_div_left_long\">([^>]*)<\\//siU", $html_details, $matches)) { $daten->status = $matches[1]; } if (trim($daten->wahlperiode) == "") { $daten->wahlperiode = "?"; } preg_match_all("/<li><span class=\"iconcontainer\">.*title=\"([^\"]+)\"[^>]*href=\"(.*)\".*>(.*)<\\/a>/siU", $html_dokumente, $matches); for ($i = 0; $i < count($matches[1]); $i++) { $dokumente[] = ["url" => $matches[2][$i], "name" => $matches[3][$i], "name_title" => $matches[1][$i]]; } $aenderungen = ""; /** @var Termin $alter_eintrag */ $alter_eintrag = Termin::model()->findByPk($termin_id); $changed = true; if ($alter_eintrag) { $changed = false; if ($alter_eintrag->termin != $daten->termin) { $aenderungen .= "Termin: " . $alter_eintrag->termin . " => " . $daten->termin . "\n"; } if ($alter_eintrag->gremium_id != $daten->gremium_id) { $aenderungen .= "Gremium-ID: " . $alter_eintrag->gremium_id . " => " . $daten->gremium_id . "\n"; } if ($alter_eintrag->sitzungsort != $daten->sitzungsort) { $aenderungen .= "Sitzungsort: " . $alter_eintrag->sitzungsort . " => " . $daten->sitzungsort . "\n"; } if ($alter_eintrag->ba_nr != $daten->ba_nr) { $aenderungen .= "BA-Nr.: " . $alter_eintrag->ba_nr . " => " . $daten->ba_nr . "\n"; } if ($alter_eintrag->termin_next_id != $daten->termin_next_id) { $aenderungen .= "Nächster Termin: " . $alter_eintrag->termin_next_id . " => " . $daten->termin_next_id . "\n"; } if ($alter_eintrag->termin_prev_id != $daten->termin_prev_id) { $aenderungen .= "Voriger Termin: " . $alter_eintrag->termin_prev_id . " => " . $daten->termin_prev_id . "\n"; } if ($alter_eintrag->wahlperiode != $daten->wahlperiode) { $aenderungen .= "Wahlperiode: " . $alter_eintrag->wahlperiode . " => " . $daten->wahlperiode . "\n"; } if ($alter_eintrag->status != $daten->status) { $aenderungen .= "Status: " . $alter_eintrag->status . " => " . $daten->status . "\n"; } if ($aenderungen != "") { $changed = true; } } if (!$alter_eintrag) { $daten->save(); } $match_top = "<strong>(?<top>(([0-9\\.]+)|( )))<\\/strong>"; $match_betreff = "<t[hd][^>]*>(?<betreff>.*)<\\/t[hd]>"; $match_vorlage = "<t[hd][^>]*>(?<vorlage_holder>.*)<\\/t[hd]>"; $match_entscheidung = "<td[^>]*>(?<entscheidung>.*)<\\/td>"; preg_match_all("/<tr class=\"ergebnistab_tr\">.*{$match_top}.*{$match_betreff}.*{$match_vorlage}.*{$match_entscheidung}.*<\\/tr>/siU", $html_to, $matches); foreach ($matches["betreff"] as $i => $val) { $matches["betreff"][$i] = static::text_clean_spaces($matches["betreff"][$i]); } $matches["betreff"] = RISTools::makeArrValuesUnique($matches["betreff"]); /** @var Tagesordnungspunkt[] $bisherige_tops */ $bisherige_tops = $alter_eintrag ? $alter_eintrag->tagesordnungspunkte : []; $aenderungen_tops = ""; $abschnitt_nr = ""; $verwendete_top_betreffs = []; for ($i = 0; $i < count($matches["top"]); $i++) { $betreff = $matches["betreff"][$i]; if (mb_stripos($betreff, "<strong>") !== false) { $abschnitt_nr = trim($matches["top"][$i], " \t\n\r\v."); $betreff = str_replace(["<strong>", "</strong>"], ["", ""], $betreff); if ($abschnitt_nr == " ") { if (preg_match("/TOP (?<top>[0-9.]+)+: (?<betreff>.*)/siu", $betreff, $matches2)) { $abschnitt_nr = $matches2["top"]; $betreff = $matches2["betreff"]; } else { $abschnitt_nr = "0"; } } $top_ueberschrift = true; $top_nr = $abschnitt_nr; } else { $top_ueberschrift = false; $top_nr = $abschnitt_nr . "." . $matches["top"][$i]; } $vorlage_holder = trim(str_replace(" ", " ", $matches["vorlage_holder"][$i])); preg_match_all("/risid%3D(?<risid>[0-9]+)%27/siU", $vorlage_holder, $matches2); $vorlage_id = isset($matches2["risid"][0]) ? $matches2["risid"][0] : null; preg_match_all("/ba_antraege_details\\.jsp\\?Id=(?<risid>[0-9]+)\"/siU", $vorlage_holder, $matches2); $baantrag_id = isset($matches2["risid"][0]) ? $matches2["risid"][0] : null; if ($vorlage_id) { $vorlage = Antrag::model()->findByPk($vorlage_id); if (!$vorlage) { echo "Creating: {$vorlage_id}\n"; $p = new StadtratsvorlageParser(); $p->parse($vorlage_id); } } if ($baantrag_id) { $baantrag = Antrag::model()->findByPk($baantrag_id); if (!$baantrag) { echo "Creating: {$baantrag_id}\n"; $p = new BAAntragParser(); $p->parse($baantrag_id); } } $tagesordnungspunkt = new Tagesordnungspunkt(); if ($vorlage_id) { $tagesordnungspunkt->antrag_id = $vorlage_id; } elseif ($baantrag_id) { $tagesordnungspunkt->antrag_id = $baantrag_id; } else { $tagesordnungspunkt->antrag_id = null; } $entscheidung_original = trim(str_replace(" ", " ", $matches["entscheidung"][$i])); $entscheidung = static::text_clean_spaces(preg_replace("/<a[^>]*>[^<]*<\\/a>/siU", "", $entscheidung_original)); $tagesordnungspunkt->datum_letzte_aenderung = new CDbExpression("NOW()"); $tagesordnungspunkt->sitzungstermin_id = $termin_id; $tagesordnungspunkt->sitzungstermin_datum = substr($daten->termin, 0, 10); $tagesordnungspunkt->top_nr = $top_nr; $tagesordnungspunkt->top_ueberschrift = $top_ueberschrift ? 1 : 0; $tagesordnungspunkt->entscheidung = $entscheidung; $tagesordnungspunkt->top_betreff = $betreff; $tagesordnungspunkt->gremium_id = $daten->gremium_id; $tagesordnungspunkt->gremium_name = $daten->gremium->name; $tagesordnungspunkt->beschluss_text = ""; /** @var Tagesordnungspunkt[] $alte_tops */ if ($vorlage_id) { $alte_tops = Tagesordnungspunkt::model()->findAllByAttributes(["sitzungstermin_id" => $termin_id, "antrag_id" => $vorlage_id]); } elseif ($baantrag_id) { $alte_tops = Tagesordnungspunkt::model()->findAllByAttributes(["sitzungstermin_id" => $termin_id, "antrag_id" => $baantrag_id]); } else { $alte_tops = Tagesordnungspunkt::model()->findAllByAttributes(["sitzungstermin_id" => $termin_id, "top_betreff" => $betreff]); } $alter_top = $this->loescheDoppelteTOPs($alte_tops); $tagesordnungspunkt_aenderungen = ""; if ($alter_top) { if ($alter_top->sitzungstermin_id != $tagesordnungspunkt->sitzungstermin_id) { $tagesordnungspunkt_aenderungen .= "Sitzung geändert: " . $alter_top->sitzungstermin_id . " => " . $tagesordnungspunkt->sitzungstermin_id . "\n"; } if ($alter_top->sitzungstermin_datum != $tagesordnungspunkt->sitzungstermin_datum) { $tagesordnungspunkt_aenderungen .= "Sitzungstermin geändert: " . $alter_top->sitzungstermin_datum . " => " . $tagesordnungspunkt->sitzungstermin_datum . "\n"; } if ($alter_top->top_nr != $tagesordnungspunkt->top_nr) { $tagesordnungspunkt_aenderungen .= "Position geändert: " . $alter_top->top_nr . " => " . $tagesordnungspunkt->top_nr . "\n"; } if ($alter_top->top_ueberschrift != $tagesordnungspunkt->top_ueberschrift) { $tagesordnungspunkt_aenderungen .= "Bereich geändert: " . $alter_top->top_ueberschrift . " => " . $tagesordnungspunkt->top_ueberschrift . "\n"; } if ($alter_top->top_betreff != $tagesordnungspunkt->top_betreff) { $tagesordnungspunkt_aenderungen .= "Betreff geändert: " . $alter_top->top_betreff . " => " . $tagesordnungspunkt->top_betreff . "\n"; } if ($alter_top->antrag_id != $tagesordnungspunkt->antrag_id) { $tagesordnungspunkt_aenderungen .= "Antrag geändert: " . $alter_top->antrag_id . " => " . $tagesordnungspunkt->antrag_id . "\n"; } if ($alter_top->gremium_id != $tagesordnungspunkt->gremium_id) { $tagesordnungspunkt_aenderungen .= "Gremium geändert: " . $alter_top->gremium_id . " => " . $tagesordnungspunkt->gremium_id . "\n"; } if ($alter_top->gremium_name != $tagesordnungspunkt->gremium_name) { $tagesordnungspunkt_aenderungen .= "Gremium geändert: " . $alter_top->gremium_name . " => " . $tagesordnungspunkt->gremium_name . "\n"; } if ($alter_top->entscheidung != $tagesordnungspunkt->entscheidung) { $tagesordnungspunkt_aenderungen .= "Entscheidung: " . $alter_top->entscheidung . " => " . $tagesordnungspunkt->entscheidung . "\n"; } if ($alter_top->beschluss_text != $tagesordnungspunkt->beschluss_text) { $tagesordnungspunkt_aenderungen .= "Beschluss: " . $alter_top->beschluss_text . " => " . $tagesordnungspunkt->beschluss_text . "\n"; } if ($tagesordnungspunkt_aenderungen != "") { $aend = new RISAenderung(); $aend->ris_id = $alter_top->id; $aend->ba_nr = NULL; $aend->typ = RISAenderung::$TYP_BA_ERGEBNIS; $aend->datum = new CDbExpression("NOW()"); $aend->aenderungen = $tagesordnungspunkt_aenderungen; if (!$aend->save()) { var_dump($aend->getErrors()); } $alter_top->copyToHistory(); $tagesordnungspunkt->id = $alter_top->id; $alter_top->setAttributes($tagesordnungspunkt->getAttributes(), false); if (!$alter_top->save()) { echo "StadtratAntrag 1\n"; var_dump($alter_eintrag->getErrors()); die("Fehler"); } $tagesordnungspunkt = $alter_top; $aenderungen_tops .= "TOP geändert: " . $tagesordnungspunkt->top_nr . ": " . $tagesordnungspunkt->top_betreff . "\n " . str_replace("\n", "\n ", $tagesordnungspunkt_aenderungen) . "\n"; } } else { $aenderungen_tops .= "Neuer TOP: " . $top_nr . " - " . $betreff . "\n"; $tagesordnungspunkt->save(); } $verwendete_top_betreffs[] = $tagesordnungspunkt->top_betreff; /* if (!is_null($vorlage_id)) { $html_vorlage_ergebnis = RISTools::load_file("http://www.ris-muenchen.de/RII/RII/ris_vorlagen_ergebnisse.jsp?risid=$vorlage_id"); preg_match_all("/ris_sitzung_to.jsp\?risid=" . $termin_id . ".*<\/td>.*<\/td>.*tdborder\">(?<beschluss>.*)<\/td>/siU", $html_vorlage_ergebnis, $matches3); $beschluss = static::text_clean_spaces($matches3["beschluss"][0]); if ($tagesordnungspunkt->beschluss_text != $beschluss) { $aenderungen .= "Beschluss: " . $tagesordnungspunkt->beschluss_text . " => " . $beschluss . "\n"; $tagesordnungspunkt->beschluss_text = $beschluss; } } */ preg_match("/<a title=\"(?<title>[^\"]*)\" [^>]*href=\"(?<url>[^ ]+)\"/siU", $entscheidung_original, $matches2); if (isset($matches2["url"]) && $matches2["url"] != "" && $matches2["url"] != "/RII/RII/DOK/TOP/") { $aenderungen .= Dokument::create_if_necessary(Dokument::$TYP_BA_BESCHLUSS, $tagesordnungspunkt, ["url" => $matches2["url"], "name" => $matches2["title"], "name_title" => ""]); } } foreach ($bisherige_tops as $top) { if (!in_array($top->top_betreff, $verwendete_top_betreffs)) { $aenderungen_tops .= "TOP entfernt: " . $top->top_nr . ": " . $top->top_betreff . "\n"; foreach ($top->dokumente as $dok) { $dok->tagesordnungspunkt_id = null; $dok->save(false); } $top->delete(); } } if ($aenderungen_tops != "") { $changed = true; } if ($changed) { if (!$alter_eintrag) { $aenderungen = "Neu angelegt\n"; } $aenderungen .= $aenderungen_tops; echo "BA-Termin {$termin_id}: Verändert: " . $aenderungen . "\n"; if ($alter_eintrag) { $alter_eintrag->copyToHistory(); $alter_eintrag->setAttributes($daten->getAttributes()); if (!$alter_eintrag->save()) { if (SITE_CALL_MODE != "cron") { echo "BA-Termin 1\n"; } var_dump($alter_eintrag->getErrors()); die("Fehler"); } $daten = $alter_eintrag; } else { if (!$daten->save()) { if (SITE_CALL_MODE != "cron") { echo "BA-Termin 2\n"; } var_dump($daten->getErrors()); die("Fehler"); } } } foreach ($dokumente as $dok) { $aenderungen .= Dokument::create_if_necessary(Dokument::$TYP_BA_TERMIN, $daten, $dok); } if ($aenderungen != "") { $aend = new RISAenderung(); $aend->ris_id = $daten->id; $aend->ba_nr = $daten->ba_nr; $aend->typ = RISAenderung::$TYP_BA_TERMIN; $aend->datum = new CDbExpression("NOW()"); $aend->aenderungen = $aenderungen; $aend->save(); /** @var Termin $termin */ $termin = Termin::model()->findByPk($termin_id); $termin->datum_letzte_aenderung = new CDbExpression('NOW()'); // Auch bei neuen Dokumenten $termin->save(); } }
/** * Performs a calendar-query on the contents of this calendar. * * The calendar-query is defined in RFC4791 : CalDAV. Using the * calendar-query it is possible for a client to request a specific set of * object, based on contents of iCalendar properties, date-ranges and * iCalendar component types (VTODO, VEVENT). * * This method should just return a list of (relative) urls that match this * query. * * The list of filters are specified as an array. The exact array is * documented by Sabre\CalDAV\CalendarQueryParser. * * Note that it is extremely likely that getCalendarObject for every path * returned from this method will be called almost immediately after. You * may want to anticipate this to speed up these requests. * * This method provides a default implementation, which parses *all* the * iCalendar objects in the specified calendar. * * This default may well be good enough for personal use, and calendars * that aren't very large. But if you anticipate high usage, big calendars * or high loads, you are strongly adviced to optimize certain paths. * * The best way to do so is override this method and to optimize * specifically for 'common filters'. * * Requests that are extremely common are: * * requests for just VEVENTS * * requests for just VTODO * * requests with a time-range-filter on either VEVENT or VTODO. * * ..and combinations of these requests. It may not be worth it to try to * handle every possible situation and just rely on the (relatively * easy to use) CalendarQueryValidator to handle the rest. * * Note that especially time-range-filters may be difficult to parse. A * time-range filter specified on a VEVENT must for instance also handle * recurrence rules correctly. * A good example of how to interprete all these filters can also simply * be found in Sabre\CalDAV\CalendarQueryFilter. This class is as correct * as possible, so it gives you a good idea on what type of stuff you need * to think of. * * @param mixed $calendarId * @param array $filters * @return array * @throws DAV\Exception\NotFound */ function calendarQuery($calendarId, array $filters) { /** @var Termin $termin */ $termin = Termin::model()->findByPk($this->termin_id); if (!$termin) { throw new \Sabre\DAV\Exception\NotFound('Calendar not found'); } $alle_termine = $termin->alleTermineDerReihe(); $return = []; foreach ($alle_termine as $termin) { // @TODO Filtern $return[] = $termin->id; } return $return; }
?> </ul> </li> <?php } else { echo "<li>" . CHtml::link($dokument->getName(), $dokument->getLinkZumDokument()) . "</li>\n"; } } if ($dokument != null) { if ($dokument->antrag_id) { dokumentenliste(Antrag::model()->findByPk($dokument->antrag_id), "Antragsseite", $dokument, true); } else { if ($dokument->tagesordnungspunkt_id) { dokumentenliste(Tagesordnungspunkt::model()->findByPk($dokument->tagesordnungspunkt_id), "Ergebnisseite", $dokument, true); } else { if ($dokument->termin_id) { dokumentenliste(Termin::model()->findByPk($dokument->termin_id), "Terminseite", $dokument, true); } else { if ($dokument->vorgang_id) { dokumentenliste(Vorgang::model()->findByPk($dokument->vorgang_id), "Vorgangsseite", $dokument, false); } else { echo "<li class=\"active\">" . CHtml::encode($dokument->getName()) . "</li>"; } } } } } ?> </ul> <div class="pdf_download_holder"><a href="<?php echo CHtml::encode($dokument->getLink()); ?>
public function parse($termin_id) { $termin_id = IntVal($termin_id); if (SITE_CALL_MODE != "cron") { echo "- Termin {$termin_id}\n"; } $html_details = RISTools::load_file("http://www.ris-muenchen.de/RII/RII/ris_sitzung_detail.jsp?risid={$termin_id}"); $html_dokumente = RISTools::load_file("http://www.ris-muenchen.de/RII/RII/ris_sitzung_dokumente.jsp?risid={$termin_id}"); $html_to = RISTools::load_file("http://www.ris-muenchen.de/RII/RII/ris_sitzung_to.jsp?risid={$termin_id}"); $html_to_geheim = RISTools::load_file("http://www.ris-muenchen.de/RII/RII/ris_sitzung_nto.jsp?risid={$termin_id}"); $daten = new Termin(); $daten->typ = Termin::$TYP_AUTO; $daten->id = $termin_id; $daten->datum_letzte_aenderung = new CDbExpression('NOW()'); $daten->gremium_id = NULL; $daten->ba_nr = NULL; $daten->sitzungsstand = ""; $daten->sitzungsort = ""; $daten->referat = ""; $daten->referent = ""; $daten->vorsitz = ""; $daten->wahlperiode = ""; $daten->status = ""; if (preg_match("/ris_gremien_detail\\.jsp\\?risid=([0-9]+)[\"'& ]/siU", $html_details, $matches)) { $daten->gremium_id = IntVal($matches[1]); } if ($daten->gremium_id) { $gr = Gremium::model()->findByPk($daten->gremium_id); if (!$gr) { echo "Lege Gremium an: " . $daten->gremium_id . "\n"; Gremium::parse_stadtrat_gremien($daten->gremium_id); } } $geloescht = false; $sitzungsort_gefunden = false; if (preg_match("/Sitzungsort:.*detail_div\">([^<]*)[<]/siU", $html_details, $matches)) { $sitzungsort_gefunden = true; $daten->sitzungsort = trim(str_replace(" ", "", $matches[1])); } if (preg_match("/Sitzungsstand:.*detail_div\">([^<]*)[<]/siU", $html_details, $matches)) { $sitzungsort_gefunden = true; $daten->sitzungsstand = trim(str_replace(" ", "", $matches[1])); } if (preg_match("/chste Sitzung:.*ris_sitzung_detail\\.jsp\\?risid=([0-9]+)[\"'& ]/siU", $html_details, $matches)) { $daten->termin_next_id = trim(str_replace(" ", "", $matches[1])); } if (preg_match("/Letzte Sitzung:.*ris_sitzung_detail\\.jsp\\?risid=([0-9]+)[\"'& ]/siU", $html_details, $matches)) { $daten->termin_prev_id = trim(str_replace(" ", "", $matches[1])); } if (preg_match("/Wahlperiode:.*detail_div_left_long\">([^>]*)<\\//siU", $html_details, $matches)) { $daten->wahlperiode = trim(str_replace(" ", "", $matches[1])); } if (preg_match("/Status:.*detail_div_left_long\">([^>]*)<\\//siU", $html_details, $matches)) { $daten->status = trim(str_replace(" ", "", $matches[1])); } if (preg_match("/diges Referat:.*detail_div_left_long\">(<a[^>]+>)?([^>]*)<\\//siU", $html_details, $matches)) { $daten->referat = trim(str_replace(" ", "", $matches[2])); } if (preg_match("/Referent\\/in:.*detail_div_left_long\">([^>]*)<\\//siU", $html_details, $matches)) { $daten->referent = trim(str_replace(" ", "", $matches[1])); } if (preg_match("/Vorsitz:.*detail_div_left_long\">([^>]*)<\\//siU", $html_details, $matches)) { $daten->vorsitz = trim(str_replace(" ", "", $matches[1])); } if (preg_match("/Termin:.*detail_div\">([^&<]+)[&<]/siU", $html_details, $matches)) { $termin = $matches[1]; $MONATE = ["januar" => "01", "februar" => "02", "märz" => "03", "april" => "04", "mai" => "05", "juni" => "06", "juli" => "07", "august" => "08", "september" => "09", "oktober" => "10", "november" => "11", "dezember" => "12"]; $x = explode(" ", trim($termin)); if (isset($x[1])) { $tag = IntVal($x[1]); if ($tag < 10) { $tag = "0" . IntVal($tag); } $jahr = IntVal($x[2]); $y = explode(".", $x[1]); $monat = $MONATE[mb_strtolower($y[1])]; if ($monat < 10) { $monat = "0" . IntVal($monat); } $zeit = $x[3]; $daten->termin = "{$jahr}-{$monat}-{$tag} {$zeit}:00"; } else { if ($sitzungsort_gefunden && $daten->gremium === null && $daten->sitzungsort == "" && $daten->status == "") { $geloescht = true; } else { RISTools::send_email(Yii::app()->params['adminEmail'], "Stadtratstermin: Unbekanntes Datum", "ID: {$termin_id}\n" . print_r($matches, true), null, "system"); die; } } } $dokumente = []; preg_match_all("/<li><span class=\"iconcontainer\">.*href=\"(.*)\".*>(.*)<\\/a>/siU", $html_dokumente, $matches); for ($i = 0; $i < count($matches[1]); $i++) { $dokumente[] = ["url" => $matches[1][$i], "name" => $matches[2][$i], "name_title" => ""]; } $aenderungen = ""; /** @var Termin $alter_eintrag */ $alter_eintrag = Termin::model()->findByPk($termin_id); $changed = true; if ($alter_eintrag) { $changed = false; if ($geloescht) { $aenderungen = "gelöscht"; $changed = true; } else { if ($alter_eintrag->termin != $daten->termin) { $aenderungen .= "Termin: " . $alter_eintrag->termin . " => " . $daten->termin . "\n"; } if ($alter_eintrag->gremium_id != $daten->gremium_id) { $aenderungen .= "Gremium-ID: " . $alter_eintrag->gremium_id . " => " . $daten->gremium_id . "\n"; } if ($alter_eintrag->sitzungsort != $daten->sitzungsort) { $aenderungen .= "Sitzungsort: " . $alter_eintrag->sitzungsort . " => " . $daten->sitzungsort . "\n"; } if ($alter_eintrag->termin_next_id != $daten->termin_next_id) { $aenderungen .= "Nächster Termin: " . $alter_eintrag->termin_next_id . " => " . $daten->termin_next_id . "\n"; } if ($alter_eintrag->termin_prev_id != $daten->termin_prev_id) { $aenderungen .= "Voriger Termin: " . $alter_eintrag->termin_prev_id . " => " . $daten->termin_prev_id . "\n"; } if ($alter_eintrag->wahlperiode != $daten->wahlperiode) { $aenderungen .= "Wahlperiode: " . $alter_eintrag->wahlperiode . " => " . $daten->wahlperiode . "\n"; } if ($alter_eintrag->referat != $daten->referat) { $aenderungen .= "Referat: " . $alter_eintrag->referat . " => " . $daten->referat . "\n"; } if ($alter_eintrag->referent != $daten->referent) { $aenderungen .= "Referent: " . $alter_eintrag->referent . " => " . $daten->referent . "\n"; } if ($alter_eintrag->vorsitz != $daten->vorsitz) { $aenderungen .= "Vorsitz: " . $alter_eintrag->vorsitz . " => " . $daten->vorsitz . "\n"; } if ($alter_eintrag->sitzungsstand != $daten->sitzungsstand) { $aenderungen .= "Sitzungsstand: " . $alter_eintrag->sitzungsstand . " => " . $daten->sitzungsstand . "\n"; } if ($aenderungen != "") { $changed = true; } } } if (!$alter_eintrag) { $daten->save(); } $match_top = "tdborder\">(?<top>.*)<\\/t[hd]>"; $match_betreff = "tdborder\">(?<betreff>.*)<\\/t[hd]>"; $match_vorlage = "<t(?<ueberschrift>[hd])[^>]*>(?<vorlage_holder>.*)<\\/t[hd]>"; $match_referentIn = "<t[hd][^>]*>(?<referentIn>.*)<\\/t[hd]>"; $match_entscheidung = "<t[hd][^>]*>(?<entscheidung>.*)<\\/t[hd]>"; preg_match_all("/<tr class=\"ergebnistab_tr\">.*{$match_top}.*{$match_betreff}.*{$match_vorlage}.*{$match_referentIn}.*{$match_entscheidung}.*<\\/tr>/siU", $html_to, $matches); foreach ($matches["betreff"] as $i => $val) { $matches["betreff"][$i] = static::text_clean_spaces($matches["betreff"][$i]); } $matches["betreff"] = RISTools::makeArrValuesUnique($matches["betreff"]); /** @var Tagesordnungspunkt[] $bisherige_tops */ $bisherige_tops = $alter_eintrag ? $alter_eintrag->tagesordnungspunkte : []; $aenderungen_tops = ""; //$verwendete_top_betreffs = array(); $verwendete_top_ids = []; $abschnitt_nr = 0; for ($i = 0; $i < count($matches[0]); $i++) { $top = trim(str_replace([" ", "<strong>", "</strong>"], [" ", "", ""], $matches["top"][$i])); $betreff = $matches["betreff"][$i]; if ($matches["ueberschrift"][$i] == "h") { $abschnitt_nr = $abschnitt_nr + 1; $top_ueberschrift = true; $top_nr = $abschnitt_nr; $betreff = str_replace(["<strong>", "</strong>"], ["", ""], $betreff); } else { if ($abschnitt_nr == 0) { $abschnitt_nr = 1; } $top_ueberschrift = false; $top_nr = $abschnitt_nr . "." . $top; } $vorlage_holder = trim(str_replace(" ", " ", $matches["vorlage_holder"][$i])); preg_match_all("/risid=(?<risid>[0-9]+)>/siU", $vorlage_holder, $matches2); $vorlage_id = isset($matches2["risid"][0]) ? $matches2["risid"][0] : null; if ($vorlage_id) { $vorlage = Antrag::model()->findByPk($vorlage_id); if (!$vorlage) { echo "Creating: {$vorlage_id}\n"; $p = new StadtratsvorlageParser(); $p->parse($vorlage_id); } } $entscheidung_original = trim(str_replace(" ", " ", $matches["entscheidung"][$i])); $entscheidung = trim(preg_replace("/<a[^>]*>[^<]*<\\/a>/siU", "", $entscheidung_original)); $top = new Tagesordnungspunkt(); $top->datum_letzte_aenderung = new CDbExpression("NOW()"); $top->sitzungstermin_id = $termin_id; $top->sitzungstermin_datum = substr($daten->termin, 0, 10); $top->top_nr = $top_nr; $top->antrag_id = $vorlage_id; $top->top_ueberschrift = $top_ueberschrift ? 1 : 0; $top->entscheidung = $entscheidung; $top->top_betreff = $betreff; $top->gremium_id = $daten->gremium_id; $top->gremium_name = $daten->gremium->name; $top->beschluss_text = ""; if (!is_null($vorlage_id)) { $html_vorlage_ergebnis = RISTools::load_file("http://www.ris-muenchen.de/RII/RII/ris_vorlagen_ergebnisse.jsp?risid={$vorlage_id}"); preg_match_all("/ris_sitzung_to.jsp\\?risid=" . $termin_id . ".*<\\/td>.*<\\/td>.*tdborder\">(?<beschluss>.*)<\\/td>/siU", $html_vorlage_ergebnis, $matches3); if (isset($matches3["beschluss"]) && count($matches3["beschluss"]) > 0) { $beschluss = static::text_clean_spaces($matches3["beschluss"][0]); } else { RISTools::send_email(Yii::app()->params["adminEmail"], "StadtratTermin Kein Beschluss", "Termin: {$termin_id}\n" . "http://www.ris-muenchen.de/RII/RII/ris_vorlagen_ergebnisse.jsp?risid={$vorlage_id}\n" . $html_vorlage_ergebnis); $beschluss = ""; } $top->beschluss_text = $beschluss; } /** @var Tagesordnungspunkt $alter_top */ if (is_null($vorlage_id)) { $alter_top = Tagesordnungspunkt::model()->findByAttributes(["sitzungstermin_id" => $termin_id, "top_betreff" => $betreff]); } else { $alter_top = Tagesordnungspunkt::model()->findByAttributes(["sitzungstermin_id" => $termin_id, "antrag_id" => $vorlage_id]); } $top_aenderungen = ""; if ($alter_top) { if ($alter_top->sitzungstermin_id != $top->sitzungstermin_id) { $top_aenderungen .= "Sitzung geändert: " . $alter_top->sitzungstermin_id . " => " . $top->sitzungstermin_id . "\n"; } if ($alter_top->sitzungstermin_datum != $top->sitzungstermin_datum) { $top_aenderungen .= "Sitzungstermin geändert: " . $alter_top->sitzungstermin_datum . " => " . $top->sitzungstermin_datum . "\n"; } if ($alter_top->top_nr != $top->top_nr) { $top_aenderungen .= "TOP geändert: " . $alter_top->top_nr . " => " . $top->top_nr . "\n"; } if ($alter_top->top_ueberschrift != $top->top_ueberschrift) { $top_aenderungen .= "Bereich geändert: " . $alter_top->top_ueberschrift . " => " . $top->top_ueberschrift . "\n"; } if ($alter_top->top_betreff != $top->top_betreff) { $top_aenderungen .= "Betreff geändert: " . $alter_top->top_betreff . " => " . $top->top_betreff . "\n"; } if ($alter_top->antrag_id != $top->antrag_id) { $top_aenderungen .= "Antrag geändert: " . $alter_top->antrag_id . " => " . $top->antrag_id . "\n"; } if ($alter_top->gremium_id != $top->gremium_id) { $top_aenderungen .= "Gremium geändert: " . $alter_top->gremium_id . " => " . $top->gremium_id . "\n"; } if ($alter_top->gremium_name != $top->gremium_name) { $top_aenderungen .= "Gremium geändert: " . $alter_top->gremium_name . " => " . $top->gremium_name . "\n"; } if ($alter_top->entscheidung != $top->entscheidung) { $top_aenderungen .= "Entscheidung: " . $alter_top->entscheidung . " => " . $top->entscheidung . "\n"; } if ($alter_top->beschluss_text != $top->beschluss_text) { $top_aenderungen .= "Beschluss: " . $alter_top->beschluss_text . " => " . $top->beschluss_text . "\n"; } if ($top_aenderungen != "") { $aend = new RISAenderung(); $aend->ris_id = $alter_top->id; $aend->ba_nr = NULL; $aend->typ = RISAenderung::$TYP_STADTRAT_ERGEBNIS; $aend->datum = new CDbExpression("NOW()"); $aend->aenderungen = $top_aenderungen; $aend->save(); $aenderungen_tops .= "TOP geändert: " . $top->top_betreff . "\n " . str_replace("\n", "\n ", $top_aenderungen) . "\n"; $alter_top->copyToHistory(); $top->id = $alter_top->id; $alter_top->setAttributes($top->getAttributes(), false); if (!$alter_top->save()) { echo "StadtratAntrag 1\n"; var_dump($alter_eintrag->getErrors()); die("Fehler"); } } $top = $alter_top; } else { $aenderungen .= "Neuer TOP: " . $top_nr . " - " . $betreff . "\n"; $top->save(); } //$verwendete_top_betreffs[] = $top->top_nr . "-" . $top->top_betreff; $verwendete_top_ids[] = $top->id; preg_match_all("/<a href=(?<url>[^ ]+) title=\"(?<title>[^\"]*)\"/siU", $entscheidung_original, $matches2); if (isset($matches2["url"]) && count($matches2["url"]) > 0) { $aenderungen .= Dokument::create_if_necessary(Dokument::$TYP_STADTRAT_BESCHLUSS, $top, ["url" => $matches2["url"][0], "name" => $matches2["title"][0], "name_title" => ""]); /** @var Dokument $dok */ $dok = Dokument::model()->findByAttributes(["tagesordnungspunkt_id" => $top->id, "url" => $matches2["url"][0], "name" => $matches2["title"][0]]); if ($dok && $dok->tagesordnungspunkt_id != $top->id) { echo "Korrgiere ID\n"; $dok->tagesordnungspunkt_id = $top->id; $dok->save(false); } } } preg_match_all("/<tr class=\"ergebnistab_tr\">.*<strong>(?<top>[0-9]+)\\..*tdborder\">(?<betreff>.*)<\\/td>.*<span[^>]+>(?<vorlage_id>.*)<\\/span>.*valign=\"top\">(?<referent>.*)<\\/td>/siU", $html_to_geheim, $matches); foreach ($matches["betreff"] as $i => $val) { $matches["betreff"][$i] = static::text_clean_spaces($matches["betreff"][$i]); } $matches["betreff"] = RISTools::makeArrValuesUnique($matches["betreff"]); for ($i = 0; $i < count($matches[0]); $i++) { $betreff = $matches["betreff"][$i]; $referent = static::text_clean_spaces($matches["referent"][$i]); /** @var Tagesordnungspunkt $top */ $krits = ["sitzungstermin_id" => $termin_id, "status" => "geheim", "top_betreff" => $betreff]; $top = Tagesordnungspunkt::model()->findByAttributes($krits); if (is_null($top)) { $top = new Tagesordnungspunkt(); $aenderungen .= "Neuer geheimer Tagesordnungspunkt: " . $betreff . "\n"; } $top->sitzungstermin_id = $termin_id; $top->sitzungstermin_datum = $daten->termin; $top->datum_letzte_aenderung = new CDbExpression("NOW()"); $top->antrag_id = null; $top->status = "geheim"; $top->beschluss_text = $matches["vorlage_id"][$i]; $top->top_nr = $matches["top"][$i]; $top->top_betreff = $betreff; $top->entscheidung = $referent; $top->gremium_id = $daten->gremium_id; $top->gremium_name = $daten->gremium->name; $top->save(); //$verwendete_top_betreffs[] = "geheim-" . $top->top_nr . "-" . $top->top_betreff; $verwendete_top_ids[] = $top->id; } foreach ($bisherige_tops as $top) { //$top_key = ($top->status == "geheim" ? "geheim-" : "") . $top->top_nr . "-" . $top->top_betreff; if (!in_array($top->id, $verwendete_top_ids)) { $aenderungen_tops .= "TOP entfernt: " . $top->top_nr . ":" . $top->top_betreff . "\n"; try { $top->delete(); } catch (CDbException $e) { $str = "Vermutlich verwaiste Dokumente (war zuvor: \"" . $top->getName() . "\" in " . $daten->getLink() . ":\n"; /** @var Dokument[] $doks */ $doks = Dokument::model()->findAllByAttributes(["tagesordnungspunkt_id" => $top->id]); foreach ($doks as $dok) { $dok->tagesordnungspunkt_id = null; $dok->save(false); $str .= $dok->getOriginalLink() . "\n"; } RISTools::send_email(Yii::app()->params["adminEmail"], "StadtratTermin Verwaist", $str, null, "system"); $top->delete(); } } } if ($aenderungen_tops != "") { $changed = true; } if ($changed) { if (!$alter_eintrag) { $aenderungen = "Neu angelegt\n"; } $aenderungen .= $aenderungen_tops; echo "StR-Termin {$termin_id}: Verändert: " . $aenderungen . "\n"; if ($alter_eintrag) { $alter_eintrag->copyToHistory(); $alter_eintrag->setAttributes($daten->getAttributes()); if (!$alter_eintrag->save(false)) { RISTools::send_email(Yii::app()->params['adminEmail'], "Stadtratstermin: Nicht gespeichert", "StadtratTerminParser 1\n" . print_r($alter_eintrag->getErrors(), true), null, "system"); die("Fehler"); } $daten = $alter_eintrag; if ($geloescht) { echo "Lösche"; if (!$daten->delete()) { RISTools::send_email(Yii::app()->params['adminEmail'], "Stadtratstermin: Nicht gelöscht", "StadtratTerminParser 2\n" . print_r($daten->getErrors(), true), null, "system"); die("Fehler"); } $aend = new RISAenderung(); $aend->ris_id = $daten->id; $aend->ba_nr = NULL; $aend->typ = RISAenderung::$TYP_STADTRAT_TERMIN; $aend->datum = new CDbExpression("NOW()"); $aend->aenderungen = $aenderungen; $aend->save(); return; } } else { if (!$daten->save()) { RISTools::send_email(Yii::app()->params['adminEmail'], "Stadtratstermin: Nicht gespeichert", "StadtratTerminParser 3\n" . print_r($daten->getErrors(), true), null, "system"); die("Fehler"); } } } foreach ($dokumente as $dok) { /** @var array $dok */ $aenderungen .= Dokument::create_if_necessary(Dokument::$TYP_STADTRAT_TERMIN, $daten, $dok); } if ($aenderungen != "") { $aend = new RISAenderung(); $aend->ris_id = $daten->id; $aend->ba_nr = NULL; $aend->typ = RISAenderung::$TYP_STADTRAT_TERMIN; $aend->datum = new CDbExpression("NOW()"); $aend->aenderungen = $aenderungen; $aend->save(); /** @var Termin $termin */ $termin = Termin::model()->findByPk($termin_id); $termin->datum_letzte_aenderung = new CDbExpression('NOW()'); // Auch bei neuen Dokumenten $termin->save(); } }
/** * @return IRISItem|null */ public function getRISItem() { switch ($this->typ) { case RISAenderung::$TYP_STADTRAT_VORLAGE: case RISAenderung::$TYP_STADTRAT_ANTRAG: case RISAenderung::$TYP_BA_ANTRAG: case RISAenderung::$TYP_BA_INITIATIVE: return Antrag::model()->findByPk($this->ris_id); break; case RISAenderung::$TYP_BA_GREMIUM: case RISAenderung::$TYP_STADTRAT_GREMIUM: return Gremium::model()->findByPk($this->ris_id); break; case RISAenderung::$TYP_STADTRAT_TERMIN: case RISAenderung::$TYP_BA_TERMIN: return Termin::model()->findByPk($this->ris_id); break; case RISAenderung::$TYP_BA_MITGLIED: case RISAenderung::$TYP_STADTRAETIN: return StadtraetIn::model()->findByPk($this->ris_id); break; case RISAenderung::$TYP_RATHAUSUMSCHAU: return null; // @TODO break; case RISAenderung::$TYP_STADTRAT_FRAKTION: return null; // @TODO break; default: return null; } }