public function retrieveEvents() { $url = NEFUB_ROOT . '/../pages/default.asp?subject_id=20'; $postData = array('category_id' => 205); $html = $this->getNefubContents($url, 2, $postData); if (!$html) { $this->retrieveLog->successfully = 0; } else { $this->retrieveLog->successfully = 1; } $this->retrieveLog->finish_time = date('Y-m-d H:i:s'); $this->retrieveLog->total_time = $this->retrieveLog->getDuration(); $this->retrieveLog->finished = 1; $this->retrieveLog->save(); $pattern = '|<td width=\\"100\\" valign=top class=\\"kalender_subtitle\\">(.*){4,16}<td valign=top class=\\"kalender_subtitle\\">([^<]{4,})<br|U'; $result = array(); preg_match_all($pattern, $html, $result, PREG_SET_ORDER); $aEvents = array(); foreach ($result as $event) { /* [35]: Array [35][0]: <td width="100" valign=top class="kalender_subtitle">za. 12.04.2014</td><td valign=top class="kalender_subtitle"> NeFUB Competitie ronde 15 <br [35][1]: za. 12.04.2014</td> [35][2]: NeFUB Competitie ronde 15 */ $nefubName = utf8_encode(trim($event[2])); $lowerName = strtolower($nefubName); $oGenre = null; $oGender = null; $oGender2 = null; if (strpos($lowerName, 'jeugd') !== false) { $oGenre = Genre::getByNefubName(GENRE_JEUGD_NEFUB_NAME); $oGender = Gender::getByNefubName(GENDER_MIXED_NEFUB_NAME); } elseif (strpos($lowerName, 'mixed') !== false) { $oGenre = Genre::getByNefubName(GENRE_COMPETITIE_NEFUB_NAME); $oGender = Gender::getByNefubName(GENDER_MIXED_NEFUB_NAME); } else { if (strpos($lowerName, 'heren') !== false) { $oGender = Gender::getByNefubName(GENDER_HEREN_NEFUB_NAME); } elseif (strpos($lowerName, 'dames') !== false) { $oGender = Gender::getByNefubName(GENDER_DAMES_NEFUB_NAME); } else { $oGender = Gender::getByNefubName(GENDER_HEREN_NEFUB_NAME); $oGender2 = Gender::getByNefubName(GENDER_DAMES_NEFUB_NAME); } if (strpos($lowerName, 'cup') !== false || strpos($lowerName, 'beker') !== false) { $oGenre = Genre::getByNefubName(GENRE_BEKER_NEFUB_NAME); } else { $oGenre = Genre::getByNefubName(GENRE_COMPETITIE_NEFUB_NAME); } } $date = str_replace('</td>', '', $event[1]); $date = array_pop(explode(' ', $date)); $dates = explode('-', $date); if (count($dates) > 1) { if (count($dates) == 2) { $lastDate = array_pop($dates); list($lastDay, $month, $year) = explode('.', trim($lastDate)); $firstDay = $dates[0]; $firstDate = $year . '-' . $month . '-' . $firstDay; $oEvent = self::convertEvent($nefubName, $firstDate, $oGenre, $oGender); $eventIds[] = $oEvent->getId(); if ($oGender2) { $oEvent = self::convertEvent($nefubName, $firstDate, $oGenre, $oGender2); $eventIds[] = $oEvent->getId(); } $lastDate = $year . '-' . $month . '-' . $lastDay; $oEvent = self::convertEvent($nefubName, $lastDate, $oGenre, $oGender); $eventIds[] = $oEvent->getId(); if ($oGender2) { $oEvent = self::convertEvent($nefubName, $firstDate, $oGenre, $oGender2); $eventIds[] = $oEvent->getId(); } self::put("Event " . $nefubName . " toegevoegd"); } else { self::put("Event " . $nefubName . " niet toegevoegd, ongeldige data:"); self::put($date); } } else { list($day, $month, $year) = explode('.', $date); $formattedDate = $year . '-' . $month . '-' . $day; $oEvent = self::convertEvent($nefubName, $formattedDate, $oGenre, $oGender); $eventIds[] = $oEvent->getId(); if ($oGender2) { $oEvent = self::convertEvent($nefubName, $formattedDate, $oGenre, $oGender2); $eventIds[] = $oEvent->getId(); } self::put("Event " . $nefubName . " toegevoegd"); } if (count($eventIds)) { $query = 'DELETE FROM Event WHERE id NOT IN (' . implode(', ', $eventIds) . ') AND season_nefub_id = ' . Season::getInstance()->nefub_id; Database::query($query); } else { Database::delete_rows('Event', array('season_nefub_id' => Season::getInstance()->nefub_id)); } } }
/** * @param string $genre * * return Genre */ protected function convertGenre($genre) { $oGenre = Genre::getByNefubName($genre); if (!$oGenre) { $oGenre = new Genre(); $oGenre->name = ucfirst($genre); $oGenre->nefub_name = $genre; $oGenre->save(); self::put('Nieuw genre ' . $oGender->Name . ' toegevoegd'); $this->addedNefubObject($oGenre); } return $oGenre; }