codeformunich/Muenchen-Transparent

View on GitHub
protected/RISParser/StadtratsfraktionParser.php

Summary

Maintainability
A
2 hrs
Test Coverage
<?php

class StadtratsfraktionParser
{

    public function parse($fraktion_id, $wahlperiode_id)
    {

        $fraktion_id    = IntVal($fraktion_id);
        $wahlperiode_id = IntVal($wahlperiode_id);

        if (SITE_CALL_MODE != "cron") echo "- Fraktion $fraktion_id\n";

        $html_details = RISTools::load_file(RIS_BASE_URL . "ris_fraktionen_detail.jsp?risid=${fraktion_id}&periodeid=${wahlperiode_id}");

        $daten     = new Fraktion();
        $daten->id = $fraktion_id;
        $daten->website = '';

        if (preg_match("/introheadline\">(.*)<\/h3/siU", $html_details, $matches)) {
            var_dump($matches);
            $daten->name = trim(str_replace("&nbsp;", " ", $matches[1]));
        }

        $aenderungen = "";

        /** @var Fraktion $alter_eintrag */
        $alter_eintrag = Fraktion::model()->findByPk($fraktion_id);
        $changed       = true;
        if ($alter_eintrag) {
            $changed = false;
            if ($alter_eintrag->name != $daten->name) $aenderungen .= "Name: " . $alter_eintrag->name . " => " . $daten->name . "\n";
            if ($aenderungen != "") $changed = true;
        }

        if ($changed) {
            if ($aenderungen == "") $aenderungen = "Neu angelegt\n";
        }

        if ($alter_eintrag) {
            $alter_eintrag->setAttributes($daten->getAttributes(), false);
            if (!$alter_eintrag->save()) {
                echo "Fraktion 1\n";
                var_dump($alter_eintrag->getErrors());
                die("Fehler");
            }
            $daten = $alter_eintrag;
        } else {
            if (!$daten->save()) {
                echo "Fraktion 2\n";
                var_dump($daten->getErrors());
                die("Fehler");
            }
        }

        if ($aenderungen != "") echo "Fraktion $fraktion_id: Verändert: " . $aenderungen . "\n";

        if ($aenderungen != "") {
            $aend              = new RISAenderung();
            $aend->ris_id      = $daten->id;
            $aend->ba_nr       = null;
            $aend->typ         = RISAenderung::TYP_STADTRAT_FRAKTION;
            $aend->datum       = new CDbExpression("NOW()");
            $aend->aenderungen = $aenderungen;
            $aend->save();
        }

    }

}