/**
  * @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;
 }
 /**
  * @param string $veranstaltungsreihe_id
  * @param string $veranstaltung_id
  * @param int $antrag_id
  * @param int $aenderungsantrag_id
  * @param int $kommentar_id
  */
 public function actionAnzeige($veranstaltungsreihe_id = "", $veranstaltung_id, $antrag_id, $aenderungsantrag_id, $kommentar_id = 0)
 {
     $aenderungsantrag = $this->getValidatedParamObjects($veranstaltungsreihe_id, $veranstaltung_id, $antrag_id, $aenderungsantrag_id);
     $this->layout = '//layouts/column2';
     if (!$aenderungsantrag) {
         Yii::app()->user->setFlash("error", "Eine ungültige URL wurde aufgerufen");
         $this->redirect($this->createUrl("veranstaltung/veranstaltung"));
     }
     $this->performAnzeigeActions($aenderungsantrag, $kommentar_id);
     $kommentare_offen = array();
     if (AntiXSS::isTokenSet("kommentar_schreiben") && $aenderungsantrag->antrag->veranstaltung->darfEroeffnenKommentar()) {
         $zeile = IntVal($_REQUEST["absatz_nr"]);
         $person = $_REQUEST["Person"];
         $person["typ"] = Person::$TYP_PERSON;
         if ($aenderungsantrag->antrag->veranstaltung->getEinstellungen()->kommentar_neu_braucht_email && trim($person["email"]) == "") {
             Yii::app()->user->setFlash("error", "Bitte gib deine E-Mail-Adresse an.");
             $this->redirect($this->createUrl("aenderungsantrag/anzeige", array("antrag_id" => $aenderungsantrag->antrag_id, "aenderungsantrag_id" => $aenderungsantrag->id)));
         }
         $model_person = static::getCurrenPersonOrCreateBySubmitData($person, Person::$STATUS_UNCONFIRMED, false);
         $kommentar = new AenderungsantragKommentar();
         $kommentar->attributes = $_REQUEST["AenderungsantragKommentar"];
         $kommentar->absatz = $zeile;
         $kommentar->datum = new CDbExpression('NOW()');
         $kommentar->verfasserIn = $model_person;
         $kommentar->verfasserIn_id = $model_person->id;
         $kommentar->aenderungsantrag = $aenderungsantrag;
         $kommentar->aenderungsantrag_id = $aenderungsantrag_id;
         $kommentar->status = $this->veranstaltung->getEinstellungen()->freischaltung_kommentare ? IKommentar::$STATUS_NICHT_FREI : IKommentar::$STATUS_FREI;
         $kommentare_offen[] = $zeile;
         if ($kommentar->save()) {
             $add = $this->veranstaltung->getEinstellungen()->freischaltung_kommentare ? " Er wird nach einer kurzen Prüfung freigeschaltet und damit sichtbar." : "";
             Yii::app()->user->setFlash("success", "Der Kommentar wurde gespeichert." . $add);
             if ($this->veranstaltung->admin_email != "" && $kommentar->status == IKommentar::$STATUS_NICHT_FREI) {
                 $kommentar_link = $kommentar->getLink(true);
                 $mails = explode(",", $this->veranstaltung->admin_email);
                 $from_name = veranstaltungsspezifisch_email_from_name($this->veranstaltung);
                 $mail_text = "Es wurde ein neuer Kommentar zum Änderungsantrag \"" . $aenderungsantrag->revision_name . " zu " . $aenderungsantrag->antrag->revision_name . " - " . $aenderungsantrag->antrag->name . "\" verfasst (nur eingeloggt sichtbar):\n" . "Link: " . $kommentar_link;
                 foreach ($mails as $mail) {
                     if (trim($mail) != "") {
                         AntraegeUtils::send_mail_log(EmailLog::$EMAIL_TYP_ANTRAG_BENACHRICHTIGUNG_ADMIN, trim($mail), null, "Neuer Kommentar - bitte freischalten.", $mail_text, $from_name);
                     }
                 }
             }
             if ($kommentar->status == IKommentar::$STATUS_FREI) {
                 $benachrichtigt = array();
                 foreach ($aenderungsantrag->antrag->veranstaltung->veranstaltungsreihe->veranstaltungsreihenAbos as $abo) {
                     if ($abo->kommentare && !in_array($abo->person_id, $benachrichtigt)) {
                         $abo->person->benachrichtigenKommentar($kommentar);
                         $benachrichtigt[] = $abo->person_id;
                     }
                 }
             }
             $this->redirect($kommentar->getLink());
         } else {
             foreach ($kommentar->getErrors() as $key => $val) {
                 foreach ($val as $val2) {
                     Yii::app()->user->setFlash("error", "Kommentar konnte nicht angelegt werden: {$key}: {$val2}");
                 }
             }
             foreach ($model_person->getErrors() as $key => $val) {
                 foreach ($val as $val2) {
                     Yii::app()->user->setFlash("error", "Kommentar konnte nicht angelegt werden: {$key}: {$val2}");
                 }
             }
         }
     }
     if ($kommentar_id > 0) {
         if ($aenderungsantrag->kommentar_legacy) {
             $abs = $aenderungsantrag->getAntragstextParagraphs_flat();
             foreach ($abs as $ab) {
                 /** @var AntragAbsatz $ab */
                 foreach ($ab->kommentare as $komm) {
                     if ($komm->id == $kommentar_id) {
                         $kommentare_offen[] = $ab->absatz_nr;
                     }
                 }
             }
         } else {
             $abs2 = $aenderungsantrag->getAntragstextParagraphs_diff();
             foreach ($abs2 as $i => $ab2) {
                 if ($ab2 === null) {
                     continue;
                 }
                 /** @var AenderungsantragAbsatz $ab2 */
                 foreach ($ab2->kommentare as $komm) {
                     if ($komm->id == $kommentar_id) {
                         $kommentare_offen[] = $i;
                     }
                 }
             }
         }
     }
     $hiddens = array();
     $js_protection = Yii::app()->user->isGuest;
     if ($js_protection) {
         $hiddens["form_token"] = AntiXSS::createToken("kommentar_schreiben");
     } else {
         $hiddens[AntiXSS::createToken("kommentar_schreiben")] = "1";
     }
     if (Yii::app()->user->isGuest) {
         $kommentar_person = new Person();
     } else {
         $kommentar_person = Person::model()->findByAttributes(array("auth" => Yii::app()->user->id));
     }
     $kommentar_person->setEmailRequired($aenderungsantrag->antrag->veranstaltung->getEinstellungen()->kommentar_neu_braucht_email);
     $support_status = "";
     if (!Yii::app()->user->isGuest) {
         foreach ($aenderungsantrag->aenderungsantragUnterstuetzerInnen as $unt) {
             if ($unt->person->id == Yii::app()->user->getState("person_id")) {
                 $support_status = $unt->rolle;
             }
         }
     }
     $anzeige_opts = array("aenderungsantrag" => $aenderungsantrag, "edit_link" => $aenderungsantrag->binInitiatorIn(), "admin_edit" => $this->veranstaltung->isAdminCurUser() ? $this->createUrl("/admin/aenderungsantraege/update", array("id" => $aenderungsantrag_id)) : null, "kommentare_offen" => $kommentare_offen, "kommentar_person" => $kommentar_person, "komm_del_link" => $this->createUrl("aenderungsantrag/anzeige", array("antrag_id" => $antrag_id, "aenderungsantrag_id" => $aenderungsantrag_id, AntiXSS::createToken("komm_del") => "#komm_id#")), "hiddens" => $hiddens, "js_protection" => $js_protection, "support_status" => $support_status, "sprache" => $aenderungsantrag->antrag->veranstaltung->getSprache());
     if ($aenderungsantrag->kommentar_legacy) {
         $this->render("anzeige_legacy", $anzeige_opts);
     } else {
         $this->render("anzeige", $anzeige_opts);
     }
 }
Пример #3
0
 public function actionIndex($veranstaltungsreihe_id = "", $veranstaltung_id = "")
 {
     $this->loadVeranstaltung($veranstaltungsreihe_id, $veranstaltung_id);
     if (!$this->veranstaltung->isAdminCurUser()) {
         $this->redirect($this->createUrl("/veranstaltung/login", array("back" => yii::app()->getRequest()->requestUri)));
     }
     $todo = array();
     if (!is_null($this->veranstaltung)) {
         $standardtexte = $this->veranstaltung->getHTMLStandardtextIDs();
         foreach ($standardtexte as $text) {
             $st = Texte::model()->findByAttributes(array("veranstaltung_id" => $this->veranstaltung->id, "text_id" => $text));
             if ($st == null) {
                 $todo[] = array("Text anlegen:", $text, array("admin/texte/create", array("key" => $text)), null);
             }
         }
         /** @var array|Antrag[] $antraege */
         $antraege = Antrag::model()->findAllByAttributes(array("veranstaltung_id" => $this->veranstaltung->id, "status" => Antrag::$STATUS_EINGEREICHT_UNGEPRUEFT));
         foreach ($antraege as $antrag) {
             $von = $antrag->getAntragstellerInnenStr();
             $todo[] = array("Antrag prüfen:", $antrag->revision_name . " " . $antrag->name, array("admin/antraege/update", array("id" => $antrag->id)), $von);
         }
         /** @var array|Aenderungsantrag[] $aenderungs */
         $aenderungs = Aenderungsantrag::model()->with(array("antrag" => array("alias" => "antrag", "condition" => "antrag.veranstaltung_id = " . IntVal($this->veranstaltung->id))))->findAllByAttributes(array("status" => Aenderungsantrag::$STATUS_EINGEREICHT_UNGEPRUEFT));
         foreach ($aenderungs as $ae) {
             $von = $ae->getAntragstellerInnenStr();
             $todo[] = array("Änderungsanträge prüfen:", $ae->revision_name . " zu " . $ae->antrag->revision_name . " " . $ae->antrag->name, array("admin/aenderungsantraege/update", array("id" => $ae->id)), $von);
         }
         /** @var AntragKommentar[] $kommentare */
         $kommentare = AntragKommentar::model()->with(array("antrag" => array("alias" => "antrag", "condition" => "antrag.veranstaltung_id = " . IntVal($this->veranstaltung->id))))->findAllByAttributes(array("status" => AntragKommentar::$STATUS_NICHT_FREI));
         foreach ($kommentare as $komm) {
             $von = $komm->verfasserIn->name;
             $todo[] = array("Kommentar prüfen:", $komm->verfasserIn->name . " zu " . $komm->antrag->revision_name, array("antrag/anzeige", array("antrag_id" => $komm->antrag_id, "kommentar_id" => $komm->id, "#" => "komm" . $komm->id)), $von);
         }
         /** @var AenderungsantragKommentar[] $kommentare */
         $kommentare = AenderungsantragKommentar::model()->with(array("aenderungsantrag" => array("alias" => "aenderungsantrag"), "aenderungsantrag.antrag" => array("alias" => "antrag", "condition" => "antrag.veranstaltung_id = " . IntVal($this->veranstaltung->id))))->findAllByAttributes(array("status" => AntragKommentar::$STATUS_NICHT_FREI));
         foreach ($kommentare as $komm) {
             $von = $komm->verfasserIn->name;
             $todo[] = array("Kommentar prüfen:", $komm->verfasserIn->name . " zu " . $komm->aenderungsantrag->revision_name, array("aenderungsantrag/anzeige", array("aenderungsantrag_id" => $komm->aenderungsantrag->id, "antrag_id" => $komm->aenderungsantrag->antrag_id, "kommentar_id" => $komm->id, "#" => "komm" . $komm->id)), $von);
         }
     }
     $this->render('index', array("todo" => $todo, "sprache" => $this->veranstaltung->getSprache()));
 }