protected/RISParser/StadtratsfraktionParser.php
<?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(" ", " ", $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();
}
}
}