/** * @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; } }
public function run($args) { /** @var Antrag[] $antraege */ $antraege = Antrag::model()->findAll(["order" => "id", "offset" => 40000, "limit" => 10000]); for ($i = 0; $i < count($antraege); $i++) { echo $i . " / " . count($antraege) . ": " . $antraege[$i]->id . "\n"; $antraege[$i]->resetPersonen(); } }
public function run($args) { foreach ($GLOBALS["TESTS"] as $test) { /** @var Antrag $antrag */ $antrag = Antrag::model()->findByPk($test["antrag_id"]); $diffs = array(); /** @var array|AntragAbsatz[] $pars */ $pars = $antrag->getParagraphs(); $diffs[$test["absatz_nr"]] = DiffUtils::renderBBCodeDiff2HTML($pars[$test["absatz_nr"]]->str_bbcode, $test["text_neu"], false, 0, "", true, true); var_dump($diffs); } }
public function run($args) { if (!isset($args[0]) || $args[0] != "alle" && $args[0] != "ohnereferat" && $args[0] <= 1) { die("./yiic reindex_ba_initiative [BA-Initiative-ID]|alle\n"); } $parser = new BAInitiativeParser(); if ($args[0] == "ohnereferat") { /** @var Antrag[] $antraege */ $antraege = Antrag::model()->findAllByAttributes(["typ" => Antrag::$TYP_BA_INITIATIVE, "referat_id" => null]); foreach ($antraege as $antrag) { $parser->parse($antrag->id); } } elseif ($args[0] == "alle") { $parser->parseAlle(); } elseif ($args[0] > 0) { $parser->parse($args[0]); } }
/** * @param int $id */ public function actionAnzeigen($id) { $this->performLoginActions(); /** @var Antrag $antrag */ $antrag = Antrag::model()->findByPk($id); if (!$antrag) { $this->render('/index/error', ["code" => 404, "message" => "Der Antrag wurde nicht gefunden"]); return; } if (AntiXSS::isTokenSet("abonnieren")) { $this->requireLogin($this->createUrl("antraege/anzeigen", ["id" => $id])); $antrag->getVorgang()->abonnieren($this->aktuelleBenutzerIn()); } if (AntiXSS::isTokenSet("deabonnieren")) { $this->requireLogin($this->createUrl("antraege/anzeigen", ["id" => $id])); $antrag->getVorgang()->deabonnieren($this->aktuelleBenutzerIn()); } if (AntiXSS::isTokenSet("tag_add") && $this->aktuelleBenutzerIn()) { $tags = explode(",", $_REQUEST["tags_neu"]); foreach ($tags as $tag_name) { if (mb_strlen(trim($tag_name)) > 0) { try { $tag_name = trim($tag_name); $tag = Tag::model()->findByAttributes(["name" => $tag_name]); if (!$tag) { $tag = new Tag(); $tag->name = $tag_name; $tag->angelegt_benutzerIn_id = $this->aktuelleBenutzerIn()->id; $tag->angelegt_datum = new CDbExpression('NOW()'); $tag->reviewed = $this->binContentAdmin() ? 1 : 0; $tag->save(); if (count($tag->getErrors()) > 0) { $this->render('/index/error', ["code" => 500, "message" => "Ein Fehler beim Anlegen des Schlagworts trat auf"]); } } Yii::app()->db->createCommand()->insert("antraege_tags", ["antrag_id" => $antrag->id, "tag_id" => $tag->id, "zugeordnet_datum" => date("Y-m-d H:i:s"), "zugeordnet_benutzerIn_id" => $this->aktuelleBenutzerIn()->id]); } catch (Exception $e) { // Sind hauptsächlich doppelte Einträge -> ignorieren } } } } $this->render("anzeige", ["antrag" => $antrag, "tag_mode" => isset($_REQUEST["tag_mode"]) && $_REQUEST["tag_mode"] == "1"]); }
/** * @param Veranstaltung $veranstaltung * @param int $limit * @return array|AenderungsantragKommentar[] */ public static function holeNeueste($veranstaltung, $limit = 0) { $antrag_ids = array(); /** @var array|Antrag[] $antraege */ $antraege = Antrag::model()->findAllByAttributes(array("veranstaltung_id" => $veranstaltung->id)); foreach ($antraege as $a) { $antrag_ids[] = $a->id; } if (count($antrag_ids) == 0) { return array(); } $condition = array("order" => "datum DESC"); if ($limit > 0) { $condition["limit"] = $limit; } $unsichtbar = $veranstaltung->getAntragUnsichtbarStati(); $arr = AenderungsantragKommentar::model()->with(array("aenderungsantrag" => array("condition" => "aenderungsantrag.status NOT IN (" . implode(", ", $unsichtbar) . ") AND aenderungsantrag.antrag_id IN (" . implode(", ", $antrag_ids) . ")")))->findAllByAttributes(array("status" => AenderungsantragKommentar::$STATUS_FREI), $condition); return $arr; }
public function actionFraktionantraege($fraktion_id, $limit = 30, $offset = 0) { Header("Content-Type: application/json; charset=UTF-8"); /** @var Fraktion $fraktion */ $fraktion = Fraktion::model()->findByPk($fraktion_id); $strIds = []; foreach ($fraktion->stadtraetInnenFraktionen as $strFrakt) { $strIds[] = $strFrakt->stadtraetIn_id; } $strIds = implode(", ", array_map("IntVal", $strIds)); $SQL = "SELECT a.id FROM antraege a JOIN antraege_stadtraetInnen b ON a.id = b.antrag_id " . "WHERE b.stadtraetIn_id IN ({$strIds}) GROUP BY a.id ORDER BY a.gestellt_am DESC"; if ($limit > 0 || $offset > 0) { $SQL .= " LIMIT " . IntVal($offset) . "," . IntVal($limit); } $antragIds = Yii::app()->db->createCommand($SQL)->queryAll(); $return = []; foreach ($antragIds as $antragId) { /** @var StadtraetInFraktion[] $strs */ $antrag = Antrag::model()->findByPk($antragId); $antragData = ['id' => IntVal($antrag->id), 'typ' => $antrag->antrag_typ, 'betreff' => RISTools::korrigiereTitelZeichen($antrag->betreff), 'gestellt_von' => $antrag->gestellt_von, 'gestellt_am' => $antrag->gestellt_am, 'erledigt_am' => $antrag->erledigt_am, 'bearbeitungsfrist' => $antrag->bearbeitungsfrist, 'registriert_am' => $antrag->registriert_am, 'fristverlaengerung' => $antrag->fristverlaengerung, 'referat' => $antrag->referat_id, 'referent' => $antrag->referent, 'antrags_nr' => $antrag->antrags_nr, 'status' => $antrag->status, 'stadtraetInnen' => [], 'initiatorInnen' => [], 'dokumente' => []]; foreach ($antrag->antraegePersonen as $person) { if ($person->person->stadtraetIn) { $arr = ['id' => $person->person->stadtraetIn->id, 'name' => $person->person->stadtraetIn->name]; } else { $arr = ['id' => null, 'name' => $person->person->name]; } if ($person->typ == AntragPerson::$TYP_GESTELLT_VON) { $antragData['stadtraetInnen'][] = $arr; } if ($person->typ == AntragPerson::$TYP_INITIATORIN) { $antragData['initiatorInnen'][] = $arr; } } foreach ($antrag->dokumente as $dokument) { $antragData['dokumente'][] = ['id' => IntVal($dokument->id), 'pdf' => $dokument->getOriginalLink(), 'datum' => $dokument->datum_dokument, 'titel' => $dokument->name_title]; } $return[] = $antragData; } echo json_encode($return); Yii::app()->end(); }
public function run($args) { if (count($args) == 0) { die("./yii reindex_stadtrat_antrag [Antrags-ID|alle]\n"); } $parser = new StadtratsantragParser(); if ($args[0] == "ohnereferat") { /** @var Antrag[] $antraege */ $antraege = Antrag::model()->findAllByAttributes(["typ" => Antrag::$TYP_STADTRAT_ANTRAG, "referat_id" => null]); foreach ($antraege as $antrag) { $parser->parse($antrag->id); } } elseif ($args[0] == "alle") { $parser->parseAlle(); } else { $parser->parse($args[0]); /** @var Antrag $a */ $a = Antrag::model()->findByPk($args[0]); $a->resetPersonen(); } }
public function actionReferat($referat_url) { /** @var Referat $ref */ $ref = Referat::model()->findByAttributes(["urlpart" => $referat_url]); if (!$ref) { die("Nicht gefunden"); } $this->top_menu = "themen"; $von = date("Y-m-d H:i:s", time() - 3600 * 24 * 30); $bis = date("Y-m-d H:i:s", time()); $antraege_referat = Antrag::model()->neueste_stadtratsantragsdokumente_referat($ref->id, $von, $bis)->findAll(); $text = Text::model()->findByAttributes(["typ" => 2, "titel" => $ref->name]); $my_url = Yii::app()->createUrl("/themen/referat/" . $referat_url); if ($this->binContentAdmin() && AntiXSS::isTokenSet("save")) { if (strlen($_REQUEST["text"]) == 0) { die("Kein Text angegeben"); } $text->text = $_REQUEST["text"]; $text->save(); $this->msg_ok = "Gespeichert."; } $this->render("referat", ["referat" => $ref, "antraege_referat" => $antraege_referat, "text" => $text, "my_url" => $my_url]); }
public function run($args) { if (!isset($args[0])) { echo "./yiic rebuild_vorgaenge [id|alle]\n"; die; } if ($args[0] == "alle") { $sql = Yii::app()->db->createCommand(); //$sql->select("id")->from("antraege")->where("id < 1245865 AND (seiten_anzahl = 0 OR seiten_anzahl = 9)")->order("id"); $sql->select("id")->from("antraege")->where("id < 10561")->order("id DESC"); $data = $sql->queryColumn(["id"]); foreach ($data as $id) { echo $id . "\n"; /** @var Antrag $antrag */ $antrag = Antrag::model()->findByPk($id); $antrag->rebuildVorgaenge(); } } else { /** @var Antrag $antrag */ $antrag = Antrag::model()->findByPk($args[0]); $antrag->rebuildVorgaenge(); } }
/** * @param int $date_ts * @return array */ private function getStadtratsDokumenteByDate($date_ts) { $heute = date("Y-m-d", $date_ts) == date("Y-m-d"); if ($heute) { $i = 1; } else { $i = 0; } $rus = []; do { if ($heute) { $datum_von = date("Y-m-d", $date_ts - 3600 * 24 * $i) . " 00:00:00"; $datum_bis = date("Y-m-d H:i:s"); if ($i == 1) { $ru = Rathausumschau::model()->findByAttributes(["datum" => date("Y-m-d")]); if ($ru) { $rus[] = $ru; } } } else { $datum_von = date("Y-m-d", $date_ts - 3600 * 24 * $i) . " 00:00:00"; $datum_bis = date("Y-m-d", $date_ts - 3600 * 24 * $i) . " 23:59:59"; } $ru = Rathausumschau::model()->findByAttributes(["datum" => date("Y-m-d", $date_ts - 3600 * 24 * $i)]); if ($ru) { $rus[] = $ru; } /** @var array|Antrag[] $antraege */ $antraege = Antrag::model()->neueste_stadtratsantragsdokumente(null, $datum_von, $datum_bis)->findAll(); $antraege_stadtrat = $antraege_sonstige = []; foreach ($antraege as $ant) { if ($ant->ba_nr === null) { $antraege_stadtrat[] = $ant; } else { $antraege_sonstige[] = $ant; } } $i++; } while (count($antraege) == 0 && $i < 10); return [$antraege, $antraege_stadtrat, $antraege_sonstige, $rus, $datum_von, $datum_bis]; }
/* @var $this AenderungsantraegeController */ /* @var $model Aenderungsantrag */ $this->breadcrumbs = array(Yii::t('app', 'Administration') => $this->createUrl('/admin/index'), $model->label(2) => array('index'), "Durchsuchen"); $this->menu = array(array('label' => $model->label(2), 'url' => array('index'), "icon" => "home")); Yii::app()->clientScript->registerScript('search', "\n\$('.search-button').click(function(){\n\t\$('.search-form').toggle();\n\treturn false;\n});\n\$('.search-form form').submit(function(){\n\t\$.fn.yiiGridView.update('aenderungsantrag-grid', {\n\t\tdata: \$(this).serialize()\n\t});\n\treturn false;\n});\n"); ?> <h1><?php echo GxHtml::encode($model->label(2)) . ' ' . Yii::t('app', 'Manage'); ?> </h1> <p> <?php Yii::t('app', 'You may optionally enter a comparison operator (<, <=, >, >=, <> or =) at the beginning of each of your search values to specify how the comparison should be done.'); ?> </p> <?php echo GxHtml::link(Yii::t('app', 'Advanced Search'), '#', array('class' => 'search-button')); ?> <div class="search-form"> <?php $this->renderPartial('_search', array('model' => $model)); ?> </div><!-- search-form --> <?php $this->widget('zii.widgets.grid.CGridView', array('id' => 'aenderungsantrag-grid', 'dataProvider' => $model->search($this->veranstaltung->id), 'filter' => $model, 'columns' => array('id', array('name' => 'antrag_id', 'value' => 'GxHtml::valueEx($data->antrag)', 'filter' => GxHtml::listDataEx(Antrag::model()->findAllAttributes("name", true), "id", "name")), 'aenderung_text', 'aenderung_begruendung', array('class' => 'CButtonColumn', 'template' => '{update}'))));
/** * @return array */ public function zugeordneteAntraegeHeuristisch() { $betreff = str_replace(["\n", "\r"], [" ", " "], $this->top_betreff); preg_match_all("/[0-9]{2}\\-[0-9]{2} ?\\/ ?[A-Z] ?[0-9]+/su", $betreff, $matches); $antraege = []; foreach ($matches[0] as $match) { /** @var Antrag $antrag */ $antrag = Antrag::model()->findByAttributes(["antrags_nr" => Antrag::cleanAntragNr($match)]); if ($antrag) { $antraege[] = $antrag; } else { $antraege[] = "Nr. " . $match; } } return $antraege; }
<?php /** * @var AntraegeController $this * @var Antrag[] $antraege * @var int|null $status_curr * @var $suche AdminAntragFilterForm $suche */ $this->breadcrumbs = array(Yii::t('app', 'Administration') => $this->createUrl('/admin/index'), Antrag::label(2)); /** @var CWebApplication $app */ $app = Yii::app(); $app->getClientScript()->registerScriptFile($this->getAssetsBase() . '/js/typeahead/typeahead.bundle.js'); echo '<h1>' . GxHtml::encode(Antrag::label(2)) . '</h1>'; $action = $this->createUrl('/admin/antraege/index'); echo '<form method="GET" action="' . CHtml::encode($action) . '" style="padding: 20px;">'; echo $suche->getFilterFormFields(); echo '<div style="float: left;"><br><button type="submit" class="btn btn-success">Suchen</button></div>'; echo '</form><br style="clear: both;">'; $this->widget('zii.widgets.CListView', array('dataProvider' => new CArrayDataProvider($antraege), 'itemView' => '_list'));
public function parse($antrag_id) { $antrag_id = IntVal($antrag_id); if (SITE_CALL_MODE != "cron") { echo "- Initiative {$antrag_id}\n"; } if ($antrag_id == 0) { RISTools::send_email(Yii::app()->params['adminEmail'], "Fehler BAInitiativeParser", "Initiative-ID 0\n" . print_r(debug_backtrace(), true), null, "system"); return; } $html_details = RISTools::load_file("http://www.ris-muenchen.de/RII/BA-RII/ba_initiativen_details.jsp?Id={$antrag_id}"); $html_dokumente = RISTools::load_file("http://www.ris-muenchen.de/RII/BA-RII/ba_initiativen_dokumente.jsp?Id={$antrag_id}"); //$html_ergebnisse = load_file("http://www.ris-muenchen.de/RII/RII/ris_antrag_ergebnisse.jsp?risid=" . $antrag_id); $daten = new Antrag(); $daten->id = $antrag_id; $daten->datum_letzte_aenderung = new CDbExpression('NOW()'); $daten->typ = Antrag::$TYP_BA_INITIATIVE; $dokumente = []; //$ergebnisse = array(); preg_match("/<h3.*>.* +(.*)<\\/h3/siU", $html_details, $matches); if (count($matches) == 2) { $daten->antrags_nr = Antrag::cleanAntragNr($matches[1]); } $dat_details = explode("<h3 class=\"introheadline\">BA-Initiativen-Nummer", $html_details); $dat_details = explode("<div class=\"formularcontainer\">", $dat_details[1]); preg_match_all("/class=\"detail_row\">.*detail_label\">(.*)<\\/d.*detail_div\">(.*)<\\/div/siU", $dat_details[0], $matches); $betreff_gefunden = false; for ($i = 0; $i < count($matches[1]); $i++) { switch (trim($matches[1][$i])) { case "Betreff:": $betreff_gefunden = true; $daten->betreff = html_entity_decode($this->text_simple_clean($matches[2][$i]), ENT_COMPAT, "UTF-8"); break; case "Status:": $daten->status = $this->text_simple_clean($matches[2][$i]); break; case "Bearbeitung:": $daten->bearbeitung = trim(strip_tags($matches[2][$i])); break; } } if (!$betreff_gefunden) { RISTools::send_email(Yii::app()->params['adminEmail'], "Fehler BAInitiativeParser", "Kein Betreff\n" . $html_details, null, "system"); throw new Exception("Betreff nicht gefunden"); } $dat_details = explode("<div class=\"detailborder\">", $html_details); $dat_details = explode("<!-- seitenfuss -->", $dat_details[1]); preg_match_all("/<span class=\"itext\">(.*)<\\/span.*detail_div_(left|right|left_long)\">(.*)<\\/div/siU", $dat_details[0], $matches); for ($i = 0; $i < count($matches[1]); $i++) { if ($matches[3][$i] != " ") { switch ($matches[1][$i]) { case "Zuständiges Referat:": $daten->referat = $matches[3][$i]; break; case "Gestellt am:": $daten->gestellt_am = $this->date_de2mysql($matches[3][$i]); break; case "Wahlperiode:": $daten->wahlperiode = $matches[3][$i]; break; case "Bearbeitungsfrist:": $daten->bearbeitungsfrist = $this->date_de2mysql($matches[3][$i]); break; case "Registriert am:": $daten->registriert_am = $this->date_de2mysql($matches[3][$i]); break; case "Bezirksausschuss:": $daten->ba_nr = IntVal($matches[3][$i]); break; case "Typ:": $daten->antrag_typ = strip_tags($matches[3][$i]); break; case "TO aufgenommen am:": $daten->initiative_to_aufgenommen = $this->date_de2mysql($matches[3][$i]); break; } } } if ($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]]; } /* $dat_ergebnisse = explode("<!-- tabellenkopf -->", $html_ergebnisse); $dat_ergebnisse = explode("<!-- tabellenfuss -->", $dat_ergebnisse[1]); preg_match_all("<tr>.*bghell tdborder\"><a.*\">(.*)<\/a>.* http://www.ris-muenchen.de/RII/RII/ris_antrag_ergebnisse.jsp?risid=6127 */ if ($daten->ba_nr == 0) { echo "BA-Initiative {$antrag_id}: " . "Keine BA-Angabe"; $GLOBALS["RIS_PARSE_ERROR_LOG"][] = "Keine BA-Angabe (Initiative): {$antrag_id}"; return; } $aenderungen = ""; /** @var Antrag $alter_eintrag */ $alter_eintrag = Antrag::model()->findByPk($antrag_id); $changed = true; if ($alter_eintrag) { $changed = false; if ($alter_eintrag->betreff != $daten->betreff) { $aenderungen .= "Betreff: " . $alter_eintrag->betreff . " => " . $daten->betreff . "\n"; } if ($alter_eintrag->bearbeitungsfrist != $daten->bearbeitungsfrist) { $aenderungen .= "Bearbeitungsfrist: " . $alter_eintrag->bearbeitungsfrist . " => " . $daten->bearbeitungsfrist . "\n"; } if ($alter_eintrag->status != $daten->status) { $aenderungen .= "Status: " . $alter_eintrag->status . " => " . $daten->status . "\n"; } if ($alter_eintrag->fristverlaengerung != $daten->fristverlaengerung) { $aenderungen .= "Fristverlängerung: " . $alter_eintrag->fristverlaengerung . " => " . $daten->fristverlaengerung . "\n"; } if ($alter_eintrag->initiative_to_aufgenommen != $daten->initiative_to_aufgenommen) { $aenderungen .= "In TO Aufgenommen: " . $alter_eintrag->initiative_to_aufgenommen . " => " . $daten->initiative_to_aufgenommen . "\n"; } if ($aenderungen != "") { $changed = true; } if ($alter_eintrag->wahlperiode == "") { $alter_eintrag->wahlperiode = "?"; } } if ($changed) { if ($aenderungen == "") { $aenderungen = "Neu angelegt\n"; } echo "BA-Initiative {$antrag_id}: Verändert: " . $aenderungen . "\n"; if ($alter_eintrag) { $alter_eintrag->copyToHistory(); $alter_eintrag->setAttributes($daten->getAttributes()); if (!$alter_eintrag->save()) { var_dump($alter_eintrag->getErrors()); die("Fehler"); } $daten = $alter_eintrag; } else { if (!$daten->save()) { var_dump($daten->getErrors()); die("Fehler"); } } $daten->resetPersonen(); } foreach ($dokumente as $dok) { $aenderungen .= Dokument::create_if_necessary(Dokument::$TYP_BA_INITIATIVE, $daten, $dok); } if ($aenderungen != "") { $aend = new RISAenderung(); $aend->ris_id = $daten->id; $aend->ba_nr = $daten->ba_nr; $aend->typ = RISAenderung::$TYP_BA_INITIATIVE; $aend->datum = new CDbExpression("NOW()"); $aend->aenderungen = $aenderungen; $aend->save(); /** @var Antrag $antrag */ $antrag = Antrag::model()->findByPk($antrag_id); $antrag->datum_letzte_aenderung = new CDbExpression('NOW()'); // Auch bei neuen Dokumenten $antrag->save(); $antrag->rebuildVorgaenge(); } }
/** * @param string $veranstaltungsreihe_id * @param string $veranstaltung_id * @param int $adoptInitiators */ public function actionNeu($veranstaltungsreihe_id = "", $veranstaltung_id, $adoptInitiators = 0) { $this->layout = '//layouts/column2'; /** @var Veranstaltung $veranstaltung */ $this->veranstaltung = $veranstaltung = $this->loadVeranstaltung($veranstaltungsreihe_id, $veranstaltung_id); $this->testeWartungsmodus(); $model = new Antrag(); $model->status = Antrag::$STATUS_EINGEREICHT_UNGEPRUEFT; $model->typ = isset($_REQUEST["typ"]) ? IntVal($_REQUEST["typ"]) : Antrag::$TYP_ANTRAG; $model->veranstaltung_id = $veranstaltung->id; $model->veranstaltung = $veranstaltung; $model->text_unveraenderlich = $this->veranstaltung->getEinstellungen()->admins_duerfen_aendern ? 0 : 1; if (!$veranstaltung->getPolicyAntraege()->checkCurUserHeuristically()) { Yii::app()->user->setFlash("error", "Es kann kein Antrag angelegt werden."); $this->redirect($this->createUrl("veranstaltung/index")); } $unterstuetzerInnen = array(); $tags_pre = array(); if (AntiXSS::isTokenSet("antragneu")) { $model->attributes = $_REQUEST["Antrag"]; if ($veranstaltung->getEinstellungen()->antrag_begruendungen) { if ($this->veranstaltung->getEinstellungen()->begruendung_in_html && isset($_REQUEST["Antrag"]["begruendung_html"])) { $model->begruendung_html = 1; $model->begruendung = HtmlBBcodeUtils::html_normalize($_REQUEST["Antrag"]["begruendung"]); } else { $model->begruendung_html = 0; $model->begruendung = HtmlBBcodeUtils::bbcode_normalize($_REQUEST["Antrag"]["begruendung"]); } } $model->text = HtmlBBcodeUtils::bbcode_normalize($model->text); $model->datum_einreichung = new CDbExpression('NOW()'); $model->status = Antrag::$STATUS_UNBESTAETIGT; $model->revision_name = ""; if ($model->text2) { $model->text2 = HtmlBBcodeUtils::bbcode_normalize($model->text2); } $goon = true; if (!$this->veranstaltung->getPolicyAntraege()->checkAntragSubmit()) { Yii::app()->user->setFlash("error", "Keine Berechtigung zum Anlegen von Anträgen."); $goon = false; } if ($goon) { if ($model->save()) { $this->veranstaltung->getPolicyAntraege()->submitAntragsstellerInView_Antrag($model); /* $next_status = $_REQUEST["Antrag"]["status"] */ if ($this->veranstaltung->getEinstellungen()->antrag_hat_mehrere_tags) { if (isset($_REQUEST["tags"])) { foreach ($_REQUEST["tags"] as $tag_id) { foreach ($this->veranstaltung->tags as $tag) { if ($tag->id == $tag_id) { Yii::app()->db->createCommand()->insert("antrag_tags", array("antrag_id" => $model->id, "tag_id" => $tag_id)); } } } } } else { if (isset($_REQUEST["tag"])) { foreach ($this->veranstaltung->tags as $tag) { if ($tag->id == $_REQUEST["tag"]) { Yii::app()->db->createCommand()->insert("antrag_tags", array("antrag_id" => $model->id, "tag_id" => IntVal($_REQUEST["tag"]))); } } } } $next_status = Antrag::$STATUS_EINGEREICHT_UNGEPRUEFT; $this->redirect($this->createUrl("antrag/neuConfirm", array("antrag_id" => $model->id, "next_status" => $next_status, "from_mode" => "neu"))); } else { foreach ($model->getErrors() as $key => $val) { foreach ($val as $val2) { Yii::app()->user->setFlash("error", "Antrag konnte nicht angelegt werden: {$key}: " . $val2); } } } } } $hiddens = array(); $js_protection = Yii::app()->user->isGuest; if ($js_protection) { $hiddens["form_token"] = AntiXSS::createToken("antragneu"); } else { $hiddens[AntiXSS::createToken("antragneu")] = "1"; } if (Yii::app()->user->isGuest || $this->veranstaltung->isAdminCurUser()) { $antragstellerIn = new Person(); $antragstellerIn->typ = Person::$TYP_PERSON; } else { $antragstellerIn = Person::model()->findByAttributes(array("auth" => Yii::app()->user->id)); } if ($adoptInitiators > 0 && $this->veranstaltung->isAdminCurUser()) { $templateMotion = $this->veranstaltung->getMotion($adoptInitiators); if ($templateMotion) { $model->typ = $templateMotion->typ; foreach ($templateMotion->antragUnterstuetzerInnen as $unt) { if ($unt->rolle == AntragUnterstuetzerInnen::$ROLLE_INITIATORIN) { $antragstellerIn = $unt->person; } if ($unt->rolle == AntragUnterstuetzerInnen::$ROLLE_UNTERSTUETZERIN) { $unterstuetzerInnen[] = $unt->person; } } } } $force_type = null; if (isset($_REQUEST["typ"])) { if (isset(Antrag::$TYPEN[$_REQUEST["typ"]]) && !in_array($_REQUEST["typ"], $this->veranstaltung->getEinstellungen()->antrags_typen_deaktiviert)) { $force_type = IntVal($_REQUEST["typ"]); } } $this->render('bearbeiten_form', array("mode" => "neu", "model" => $model, "force_type" => $force_type, "antragstellerIn" => $antragstellerIn, "unterstuetzerInnen" => $unterstuetzerInnen, "veranstaltung" => $veranstaltung, "hiddens" => $hiddens, "tags_pre" => $tags_pre, "js_protection" => $js_protection, "login_warnung" => false, "sprache" => $model->veranstaltung->getSprache())); }
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(); } }
/** * @param Antrag $antrag */ public function benachrichtigenAntrag($antrag) { $betreff = "[Antragsgrün] Neuer Antrag: " . $antrag->nameMitRev(); $text = "Es wurde ein neuer Antrag eingereicht:\nAnlass: " . $antrag->veranstaltung->name . "\nName: " . $antrag->nameMitRev() . "\nLink: " . $antrag->getLink(true); $this->benachrichtigen($antrag->veranstaltung, $betreff, $text); }
/** * @param string $veranstaltungsreihe_id * @param string $veranstaltung_id * @param int $antrag_id * @param int $adoptInitiators */ public function actionNeu($veranstaltungsreihe_id = "", $veranstaltung_id, $antrag_id, $adoptInitiators = 0) { $this->layout = '//layouts/column2'; $this->testeWartungsmodus(); $antrag_id = IntVal($antrag_id); /** @var Antrag $antrag */ $antrag = Antrag::model()->findByPk($antrag_id); $this->loadVeranstaltung($veranstaltungsreihe_id, $veranstaltung_id, $antrag); if (!$antrag->veranstaltung->getPolicyAenderungsantraege()->checkCurUserHeuristically()) { $msg = $antrag->veranstaltung->getPolicyAenderungsantraege()->getPermissionDeniedMsg(); Yii::app()->user->setFlash("error", "Es kann kein Änderungsantrag werden: " . $msg); $this->redirect($this->createUrl("antrag/anzeige", array("antrag_id" => $antrag->id))); } $aenderungsantrag = new Aenderungsantrag(); $aenderungsantrag->aenderung_first_line_cache = -1; $aenderungsantrag->antrag = $antrag; $aenderungsantrag->antrag_id = $antrag->id; $aenderungsantrag->status = Aenderungsantrag::$STATUS_UNBESTAETIGT; $aenderungsantrag->status_string = ""; $unterstuetzerInnen = array(); $changed = false; if (AntiXSS::isTokenSet("antragneu")) { $aenderungsantrag->name_neu = $_REQUEST["Aenderungsantrag"]["name_neu"]; $aenderungsantrag->begruendung_neu = ""; $aenderungsantrag->aenderung_metatext = HtmlBBcodeUtils::html_normalize($_REQUEST["ae_metatext"]); if ($aenderungsantrag->antrag->veranstaltung->getEinstellungen()->begruendung_in_html && isset($_REQUEST["ae_begruendung_html"])) { $aenderungsantrag->aenderung_begruendung_html = 1; $aenderungsantrag->aenderung_begruendung = HtmlBBcodeUtils::html_normalize($_REQUEST["ae_begruendung"]); } else { $aenderungsantrag->aenderung_begruendung_html = 0; $aenderungsantrag->aenderung_begruendung = HtmlBBcodeUtils::bbcode_normalize($_REQUEST["ae_begruendung"]); } if ($aenderungsantrag->name_neu != $antrag->name) { $changed = true; } if (trim($aenderungsantrag->aenderung_metatext) != "") { $changed = true; } $orig_absaetze = $antrag->getParagraphs(); $neue_absaetze = array(); $neuer_text = ""; for ($i = 0; $i < count($orig_absaetze); $i++) { /** @var AntragAbsatz $abs */ $abs = $orig_absaetze[$i]; if (isset($_REQUEST["change_text"][$i])) { $abs_text = HtmlBBcodeUtils::bbcode_normalize($_REQUEST["neu_text"][$i]); $neue_absaetze[$i] = $abs_text; $neuer_text .= $abs_text . "\n\n"; $changed = true; } else { $neue_absaetze[$i] = ""; $neuer_text .= $abs->str_bbcode . "\n\n"; } } if ($changed) { $aenderungsantrag->setDiffParagraphs($neue_absaetze); $diff = DiffUtils::getTextDiffMitZeilennummern($antrag->text, $neuer_text, $antrag->veranstaltung->getEinstellungen()->zeilenlaenge); $diff_text = ""; if ($aenderungsantrag->name_neu != $antrag->name) { $diff_text .= "Neuer Titel des Antrags:\n[QUOTE]" . $aenderungsantrag->name_neu . "[/QUOTE]\n\n"; } if (trim($aenderungsantrag->aenderung_metatext) != "") { $diff_text = $aenderungsantrag->aenderung_metatext . "\n\n"; } $diff_text .= DiffUtils::diff2text($diff, $antrag->getFirstLineNo()); $aenderungsantrag->aenderung_text = $diff_text; $aenderungsantrag->datum_einreichung = new CDbExpression('NOW()'); } else { Yii::app()->user->setFlash("error", "Es wurde nichts am Text geändert."); } if (!$this->veranstaltung->getPolicyAenderungsantraege()->checkAenderungsantragSubmit()) { Yii::app()->user->setFlash("error", "Keine Berechtigung zum Anlegen von Änderungsanträgen."); $changed = false; } } $hiddens = array("antrag_id" => $antrag->id); $js_protection = Yii::app()->user->isGuest; if ($js_protection) { $hiddens["form_token"] = AntiXSS::createToken("antragneu"); } else { $hiddens[AntiXSS::createToken("antragneu")] = "1"; } if ($changed) { if (!$aenderungsantrag->save()) { foreach ($aenderungsantrag->getErrors() as $val) { foreach ($val as $val2) { Yii::app()->user->setFlash("error", "Änderungsantrag konnte nicht angelegt werden: " . $val2); } } $antragstellerIn = Yii::app()->user->isGuest ? null : Person::model()->findByAttributes(array("auth" => Yii::app()->user->id)); if ($antragstellerIn === null) { $antragstellerIn = new Person(); } $this->render('bearbeiten_form', array("mode" => "neu", "antrag" => $antrag, "aenderungsantrag" => $aenderungsantrag, "antragstellerIn" => $antragstellerIn, "unterstuetzerInnen" => $unterstuetzerInnen, "hiddens" => $hiddens, "js_protection" => $js_protection, "sprache" => $aenderungsantrag->antrag->veranstaltung->getSprache())); return; } $this->veranstaltung->getPolicyAenderungsantraege()->submitAntragsstellerInView_Aenderungsantrag($aenderungsantrag); $this->redirect($this->createUrl("aenderungsantrag/neuConfirm", array("antrag_id" => $antrag_id, "aenderungsantrag_id" => $aenderungsantrag->id))); } else { if (Yii::app()->user->isGuest || $this->veranstaltung->isAdminCurUser()) { $antragstellerIn = new Person(); $antragstellerIn->typ = Person::$TYP_PERSON; } else { $antragstellerIn = Person::model()->findByAttributes(array("auth" => Yii::app()->user->id)); } if ($adoptInitiators > 0 && $this->veranstaltung->isAdminCurUser()) { $templateAmendment = $this->veranstaltung->getAmendment($adoptInitiators); if ($templateAmendment) { foreach ($templateAmendment->aenderungsantragUnterstuetzerInnen as $unt) { if ($unt->rolle == AenderungsantragUnterstuetzerInnen::$ROLLE_INITIATORIN) { $antragstellerIn = $unt->person; } if ($unt->rolle == AenderungsantragUnterstuetzerInnen::$ROLLE_UNTERSTUETZERIN) { $unterstuetzerInnen[] = $unt->person; } } } } $aenderungsantrag->name_neu = $antrag->name; $this->render('bearbeiten_form', array("mode" => "neu", "antrag" => $antrag, "aenderungsantrag" => $aenderungsantrag, "antragstellerIn" => $antragstellerIn, "unterstuetzerInnen" => $unterstuetzerInnen, "hiddens" => $hiddens, "js_protection" => $js_protection, "sprache" => $aenderungsantrag->antrag->veranstaltung->getSprache())); } }
$row = 1; foreach ($kommentare as $kommentar) { $row++; $timestamp = strtotime($kommentar->datum); $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, PHPExcel_Shared_Date::PHPToExcel($timestamp)); $objPHPExcel->getActiveSheet()->getStyle('A' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY); $verfasserIn = $kommentar->verfasserIn->name; if ($kommentar->verfasserIn->email != "") { $verfasserIn .= " (" . $kommentar->verfasserIn->email . ")"; } $objPHPExcel->getActiveSheet()->SetCellValue('B' . $row, $verfasserIn); $absatz_zeilen = ""; $objPHPExcel->getActiveSheet()->getStyle('C' . $row)->getAlignment()->setWrapText(true); if (is_a($kommentar, "AntragKommentar")) { /** @var AntragKommentar $kommentar */ $antrag = Antrag::model()->findByPk($kommentar->antrag_id); if ($this->veranstaltung->getEinstellungen()->revision_name_verstecken) { $objPHPExcel->getActiveSheet()->SetCellValue('C' . $row, $kommentar->antrag->name); } else { $objPHPExcel->getActiveSheet()->SetCellValue('C' . $row, $kommentar->antrag->revision_name . " " . $kommentar->antrag->name); } /** @var Antrag $antrag */ $absaetze = $antrag->getParagraphs(); if (isset($absaetze[$kommentar->absatz])) { $html = $absaetze[$kommentar->absatz]->str_html; preg_match_all("/<span class='zeilennummer'>([0-9]+)<\\/span>/siu", $html, $matches); $zeile_von = isset($matches[1][0]) ? IntVal($matches[1][0]) : "????"; $zeile_bis = isset($matches[1]) ? $matches[1][count($matches[1]) - 1] : "???"; $absatz_zeilen = $kommentar->absatz + 1 . " / Z. {$zeile_von} - {$zeile_bis}"; } else { $absatz_zeilen = "???";
$app = Yii::app(); $app->getClientScript()->registerScriptFile($this->getAssetsBase() . '/js/ckeditor/ckeditor.js'); $app->getClientScript()->registerScriptFile($this->getAssetsBase() . '/js/bbcode/plugin.js'); $form = $this->beginWidget('GxActiveForm', array('id' => 'antrag-form', 'enableAjaxValidation' => true)); ?> <?php echo $form->errorSummary($model); ?> <div> <?php echo $form->labelEx($model, 'abgeleitet_von'); ?> <?php echo $form->dropDownList($model, 'abgeleitet_von', GxHtml::listDataEx(Antrag::model()->findAllAttributes(null, true)), array("empty" => "-")); ?> <?php echo $form->error($model, 'abgeleitet_von'); ?> </div> <!-- row --> <div> <?php echo $form->labelEx($model, 'typ'); ?> <?php echo $form->dropDownList($model, "typ", Antrag::$TYPEN); ?> <?php echo $form->error($model, 'typ');
/** * @param int $veranstaltung_id * @param string $suchbegriff * @return array|Aenderungsantrag[] */ public static function suche($veranstaltung_id, $suchbegriff) { $ids = array(); /** @var array|Antrag[] $antraege */ $antraege = Antrag::model()->findAllByAttributes(array("veranstaltung_id" => $veranstaltung_id)); foreach ($antraege as $ant) { $ids[] = $ant->id; } if (count($ids) == 0) { return array(); } return Aenderungsantrag::model()->findAll("(`aenderung_text` LIKE '%" . addslashes($suchbegriff) . "%' OR `aenderung_text2` LIKE '%" . addslashes($suchbegriff) . "%' OR `aenderung_begruendung` LIKE '%" . addslashes($suchbegriff) . "%') AND status NOT IN (" . implode(", ", IAntrag::$STATI_UNSICHTBAR) . ") AND antrag_id IN (" . implode(", ", $ids) . ")"); }
public function parseUpdate() { echo "Updates: Stadtratsvorlagen\n"; $loaded_ids = []; for ($i = static::$MAX_OFFSET_UPDATE; $i >= 0; $i -= 10) { $ids = $this->parseSeite($i, false); $loaded_ids = array_merge($loaded_ids, array_map("IntVal", $ids)); } $crit = new CDbCriteria(); $crit->condition = "typ='" . addslashes(Antrag::$TYP_STADTRAT_VORLAGE) . "' AND status NOT IN ('Endgültiger Beschluss', 'abgeschlossen') AND gestellt_am > NOW() - INTERVAL 2 YEAR"; if (count($loaded_ids) > 0) { $crit->addNotInCondition("id", $loaded_ids); } /** @var array|Antrag[] $antraege */ $antraege = Antrag::model()->findAll($crit); foreach ($antraege as $antrag) { $this->parse($antrag->id); } }
<span class="caret"></span></a> <ul class="dropdown-menu"> <?php foreach ($uebergruppe->getDokumente() as $dok) { echo "<li>" . CHtml::link($dok->getName(), $dok->getLinkZumDokument()) . "</li>\n"; } ?> </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>"; } } } }
</a> </li> <li style="margin-top: 10px; font-weight: bold;"> <a href="<?php echo $this->createUrl("admin/index/antragsliste"); ?> ">Anträge und Änderungsanträge</a> </li> <li style="margin-top: 10px; font-weight: bold;"><a href="<?php echo $this->createUrl("admin/antraege"); ?> "><?php echo Antrag::label(2); ?> </a></li> <li style="margin-left: 20px;"> <?php if ($this->veranstaltung->getPolicyAntraege()->checkCurUserHeuristically()) { ?> <a href="<?php echo $this->createUrl("/antrag/neu"); ?> ">Neuen Antrag anlegen</a> <?php } else { ?> Neuen Antrag anlegen: <em><?php echo CHtml::encode($this->veranstaltung->getPolicyAntraege()->getPermissionDeniedMsg());
/** * @param string $veranstaltungsreihe_id * @param string $veranstaltung_id */ public function actionSuche($veranstaltungsreihe_id = "", $veranstaltung_id = "") { $this->layout = '//layouts/column2'; $veranstaltung = $this->loadVeranstaltung($veranstaltungsreihe_id, $veranstaltung_id); $this->testeWartungsmodus(); $neueste_aenderungsantraege = Aenderungsantrag::holeNeueste($veranstaltung, 5); $neueste_antraege = Antrag::holeNeueste($veranstaltung, 5); $neueste_kommentare = AntragKommentar::holeNeueste($veranstaltung, 3); $suchbegriff = $_REQUEST["suchbegriff"]; $antraege = Antrag::suche($veranstaltung->id, $suchbegriff); $aenderungsantraege = Aenderungsantrag::suche($veranstaltung->id, $suchbegriff); $this->render('suche', array("veranstaltung" => $veranstaltung, "neueste_antraege" => $neueste_antraege, "neueste_kommentare" => $neueste_kommentare, "neueste_aenderungsantraege" => $neueste_aenderungsantraege, "suche_antraege" => $antraege, "suche_aenderungsantraege" => $aenderungsantraege, "suchbegriff" => $suchbegriff, "sprache" => $veranstaltung->getSprache())); }
<div> <?php echo $form->label($model, 'id'); ?> <?php echo $form->textField($model, 'id'); ?> </div> <div> <?php echo $form->label($model, 'antrag_id'); ?> <?php echo $form->dropDownList($model, 'antrag_id', GxHtml::listDataEx(Antrag::model()->findAllAttributes(null, true)), array('prompt' => Yii::t('app', 'All'))); ?> </div> <div> <?php echo $form->label($model, 'text_neu'); ?> <?php echo $form->textArea($model, 'text_neu'); ?> </div> <div> <?php echo $form->label($model, 'begruendung_neu');
public function parseUpdate() { echo "Updates: BA-Anträge\n"; $loaded_ids = []; $anz = static::$MAX_OFFSET_UPDATE; for ($i = $anz; $i >= 0; $i -= 10) { $ids = $this->parseSeite($i, false); $loaded_ids = array_merge($loaded_ids, array_map("IntVal", $ids)); } $crit = new CDbCriteria(); $crit->condition = "typ='" . addslashes(Antrag::$TYP_BA_ANTRAG) . "' AND status != 'erledigt' AND gestellt_am > NOW() - INTERVAL 2 YEAR AND ((TO_DAYS(bearbeitungsfrist)-TO_DAYS(CURRENT_DATE()) < 14 AND TO_DAYS(bearbeitungsfrist)-TO_DAYS(CURRENT_DATE()) > -14) OR ((TO_DAYS(CURRENT_DATE()) - TO_DAYS(gestellt_am)) % 3) = 0)"; if (count($loaded_ids) > 0) { $crit->addNotInCondition("id", $loaded_ids); } /** @var array|Antrag[] $antraege */ $antraege = Antrag::model()->findAll($crit); foreach ($antraege as $antrag) { $this->parse($antrag->id); } }
/* @var $this AntraegeController */ /* @var $model Antrag */ $this->breadcrumbs = array(Yii::t('app', 'Administration') => $this->createUrl('/admin/index'), $model->label(2) => array('index'), "Durchsuchen"); $this->menu = array(array('label' => $model->label(2), 'url' => array('index'), "icon" => "home")); Yii::app()->clientScript->registerScript('search', "\n\$('.search-button').click(function(){\n\t\$('.search-form').toggle();\n\treturn false;\n});\n\$('.search-form form').submit(function(){\n\t\$.fn.yiiGridView.update('antrag-grid', {\n\t\tdata: \$(this).serialize()\n\t});\n\treturn false;\n});\n"); ?> <h1><?php echo GxHtml::encode($model->label(2)) . ' ' . Yii::t('app', 'Manage'); ?> </h1> <p> <?php Yii::t('app', 'You may optionally enter a comparison operator (<, <=, >, >=, <> or =) at the beginning of each of your search values to specify how the comparison should be done.'); ?> </p> <?php echo GxHtml::link(Yii::t('app', 'Advanced Search'), '#', array('class' => 'search-button')); ?> <div class="search-form"> <?php $this->renderPartial('_search', array('model' => $model)); ?> </div><!-- search-form --> <?php $this->widget('zii.widgets.grid.CGridView', array('id' => 'antrag-grid', 'dataProvider' => $model->search(), 'filter' => $model, 'columns' => array('id', array('name' => 'veranstaltung', 'value' => 'GxHtml::valueEx($data->veranstaltung)', 'filter' => GxHtml::listDataEx(Veranstaltung::model()->findAllAttributes(null, true))), array('name' => 'abgeleitet_von', 'value' => 'GxHtml::valueEx($data->abgeleitetVon)', 'filter' => GxHtml::listDataEx(Antrag::model()->findAllAttributes(null, true))), 'typ', 'name', 'revision_name', array('class' => 'CButtonColumn', 'template' => '{update}'))));
/** * @param int $veranstaltung_id * @param string $suchbegriff * @return array|Antrag[] */ public static function suche($veranstaltung_id, $suchbegriff) { return Antrag::model()->findAll("(`name` LIKE '%" . addslashes($suchbegriff) . "%' OR `text` LIKE '%" . addslashes($suchbegriff) . "%' OR `text2` LIKE '%" . addslashes($suchbegriff) . "%' OR `begruendung` LIKE '%" . addslashes($suchbegriff) . "%') AND status NOT IN (" . implode(", ", IAntrag::$STATI_UNSICHTBAR) . ") AND veranstaltung_id = " . IntVal($veranstaltung_id)); }