/**
  * ЦСКА
  */
 public function actionCskanews()
 {
     $cska = Yii::$app->params['cska'];
     $bot = new BotApi($cska['token']);
     $host = 'https://www.sports.ru';
     $dom = Html::load($cska['html']);
     $divs = $dom->getElementsByTagName('div');
     foreach ($divs as $div) {
         if ($div->getAttribute('class') == 'news') {
             $links = $div->getElementsByTagName('a');
             foreach ($links as $link) {
                 if ($link->getAttribute('class') == 'short-text') {
                     $url = Url::findOne(['channel' => 'cska', 'url' => $host . $link->getAttribute('href')]);
                     if ($url === null) {
                         $message = $link->nodeValue . "\n" . $host . $link->getAttribute('href');
                         try {
                             $bot->sendMessage($cska['chat_id'], $message);
                         } catch (Exception $e) {
                             echo $e->getMessage() . "\n";
                         }
                         $url = new Url(['channel' => 'cska', 'url' => $host . $link->getAttribute('href')]);
                         $url->save();
                     }
                 }
             }
         }
     }
 }
Beispiel #2
0
 /**
  * Возвращает количество оставшихся трансферов
  */
 public function getTransfers()
 {
     $dom = Html::load($this->url);
     $tables = $dom->getElementsByTagName('table');
     foreach ($tables as $table) {
         if ($table->getAttribute('class') == 'profile-table') {
             $trs = $table->getElementsByTagName('tr');
             foreach ($trs as $tr) {
                 if ($tr->getElementsByTagName('th')->item(0)->nodeValue == 'Трансферы в туре') {
                     $transfers = $tr->getElementsByTagName('td')->item(0)->nodeValue;
                 }
             }
         }
     }
     return isset($transfers) ? $transfers : 0;
 }
 /**
  * Обновление дедлайнов турнира
  */
 public function actionDeadlines()
 {
     $tournaments = Tournament::find()->all();
     $month = ['января' => 1, 'февраля' => 2, 'марта' => 3, 'апреля' => 4, 'мая' => 5, 'июня' => 6, 'июля' => 7, 'августа' => 8, 'сентября' => 9, 'октября' => 10, 'ноября' => 11, 'декабря' => 12];
     foreach ($tournaments as $tournament) {
         $team = Team::findOne(['tournament_id' => $tournament->id]);
         if ($team !== null) {
             $dom = Html::load($team->url);
             $tables = $dom->getElementsByTagName('table');
             foreach ($tables as $table) {
                 if ($table->getAttribute('class') == 'profile-table') {
                     $trs = $table->getElementsByTagName('tr');
                     foreach ($trs as $tr) {
                         if ($tr->getElementsByTagName('th')->item(0)->nodeValue == 'Дедлайн') {
                             $deadline = $tr->getElementsByTagName('td')->item(0)->nodeValue;
                             $deadline = str_replace(['|', ':'], ' ', $deadline);
                             $deadline = explode(' ', $deadline);
                             if (count($deadline) == 4) {
                                 $year = date('Y');
                                 $time = mktime($deadline[2], $deadline[3], 0, $month[$deadline[1]], $deadline[0], $year);
                                 $now = time();
                                 if ($time < $now) {
                                     $year++;
                                     $time = mktime($deadline[2], $deadline[3], 0, $month[$deadline[1]], $deadline[0], $year);
                                 }
                                 $deadline = date('Y-m-d H:i:s', $time);
                             }
                         } elseif ($tr->getElementsByTagName('th')->item(0)->nodeValue == 'Трансферы в туре') {
                             $transfers = $tr->getElementsByTagName('td')->item(0)->nodeValue;
                         }
                     }
                 }
             }
             if ($tournament->deadline != $deadline) {
                 $tournament->deadline = $deadline;
                 if (isset($transfers)) {
                     $tournament->checked = false;
                     $tournament->transfers = $transfers;
                 } else {
                     $tournament->checked = true;
                 }
                 $tournament->save();
             }
         }
     }
 }
Beispiel #4
0
 /**
  * Обновляет список команд пользователя
  */
 public function updateTeams()
 {
     if (!empty($this->profile_url)) {
         // Запоминаем старые команды
         $oldTeams = [];
         foreach ($this->teams as $team) {
             $oldTeams[] = $team->url;
         }
         // Получаем список новых команд
         $dom = Html::load($this->profile_url . 'fantasy/');
         $divs = $dom->getElementsByTagName('div');
         $host = 'https://www.sports.ru';
         foreach ($divs as $div) {
             if ($div->getAttribute('class') == 'item user-league') {
                 $links = $div->getElementsByTagName('a');
                 $tournamentUrl = $host . $links->item(1)->getAttribute('href');
                 if (preg_match('/.*\\/fantasy\\/football\\/.*/', $tournamentUrl)) {
                     // Проверяем турнир к которому относится команда
                     $tournament = Tournament::findOne(['url' => $tournamentUrl]);
                     if ($tournament === null) {
                         $tournament = new Tournament(['url' => $tournamentUrl, 'name' => $links->item(1)->nodeValue]);
                         $tournament->save();
                     }
                     // Добавляем команду
                     $teamUrl = $host . $links->item(0)->getAttribute('href');
                     $teamUrl = str_replace('/football/team/', '/football/team/points/', $teamUrl);
                     $team = Team::findOne(['url' => $teamUrl]);
                     if ($team === null) {
                         $team = new Team(['user_id' => $this->id, 'url' => $teamUrl, 'name' => $links->item(0)->nodeValue, 'tournament_id' => $tournament->id]);
                         $team->save();
                     } else {
                         $index = array_search($teamUrl, $oldTeams);
                         array_splice($oldTeams, $index, 1);
                     }
                 }
             }
         }
         // Удаляем старые команды
         foreach ($oldTeams as $url) {
             $team = Team::findOne(['url' => $url]);
             if ($team !== null) {
                 $team->delete();
             }
         }
     }
 }