public function perform() { if (!$this->canPerform()) { return; } $news = $this->getNews(); if (empty($news)) { return; } $urls = array(); foreach ($news as $news) { if (!empty($news->url)) { $urls[$news->buildUrl(array(), false)][] = $news; } } $c = new Connection(array(CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_SSL_VERIFYHOST => 0, CURLOPT_NOBODY => true, CURLOPT_MAXREDIRS => 1)); foreach ($urls as $url => $news) { $c->addRequest(new ConnectionRequest($url)); } $requests = $c->run(); foreach ($requests as $i => $request) { foreach ($urls[$request->url] as $news) { $result = $request->reply->result == 0 ? $request->reply->info['http_code'] : $request->reply->result; /** @var News $news */ if ($news->url_status != $result) { $news->updateByPk($news->id, array('url_status' => $result)); if ($result !== 200) { SMail::sendMail(Yii::app()->params->notifyEmail, 'Новость "' . $news->name . '" не доступна.', 'NewsUrlCheckError', array('news' => $news, 'request' => $request)); } } } } }
public function actionSigninPlatform() { if (!Yii::app()->user->isGuest) { $this->redirect('/'); } $user = new Users('signin'); if (isset($_POST['Users'])) { $user->attributes = $_POST['Users']; } $user->role = Users::ROLE_PLATFORM; $user->status = Users::STATUS_MODERATION; $platform = new Platforms('signin'); if (isset($_POST['Platforms'])) { $platform->attributes = $_POST['Platforms']; } $platform->is_active = 0; if (isset($_POST['Users']) && isset($_POST['Platforms'])) { $user->validate(); $platform->validate(); if (!$user->hasErrors() && !$platform->hasErrors()) { $transaction = $user->getDbConnection()->beginTransaction(); if ($user->save(false)) { $platform->user_id = $user->id; if ($platform->save(false)) { SMail::sendMail(Yii::app()->params['registrationEmail'], 'Регистрация пользователя ' . $user->email, 'SignInRequest', array('user' => $user)); $transaction->commit(); $this->redirect(array('users/signinSuccess')); } } $transaction->rollback(); } } $this->render('signin_platform', array('user' => $user, 'platform' => $platform)); }