public function connect(\Closure $callback, array $options = []) { $options = array_merge(['logging' => $this->logging, 'loggingOutput' => $this->loggingOutput, 'connectionTimeout' => null, 'connectionOptions' => []], $options); if (!$options['logging']) { Logger::set(new NullLogger()); } if (!$options['loggingOutput']) { ob_start(); } $connection = $this->createConnection($options['connectionOptions']); $connection->once('open', function (ClientSession $session) use($connection, $callback) { call_user_func_array($callback, [$connection, $session]); }); if ($options['connectionTimeout'] !== null) { $loop = $connection->getClient()->getLoop(); $timer = $loop->addTimer($options['connectionTimeout'], function () use($loop) { $loop->stop(); }); $connection->once('close', function () use($timer) { $timer->cancel(); \Yii::warning('WAMP connection closed by timeout.'); }); } $connection->open(); if ($options['logging']) { \Yii::info(ob_get_contents()); } if (!$options['loggingOutput']) { ob_clean(); } }
protected function _run() { try { $form = null; if ($this->form_id) { $this->modelForm = Form2Form::find()->where(['id' => $this->form_id])->one(); if (!$this->modelForm) { throw new ErrorException("Форма не найдена: id=" . $this->form_id); } } else { if ($this->form_code) { $this->modelForm = Form2Form::find()->where(['code' => $this->form_code])->one(); if ($form) { $this->form_id = $form->id; } } if (!$this->modelForm) { throw new ErrorException("Форма не найдена: code=" . $this->form_code); } } } catch (\Exception $e) { \Yii::warning($e->getMessage(), static::className()); } if (!$this->modelForm) { return ""; } return parent::_run(); }
/** * @param ActionData $actionData * * @return void */ public function run(&$actionData) { $monsterContentConfigs = []; foreach ($this->entities as $definition) { if (!isset($definition['entity'], $definition['attributes'])) { continue; } $entity = $definition['entity']; $definition['attributes'] = (array) $definition['attributes']; /** @var yii\base\Model $model */ $models = ArrayHelper::getValue($actionData->entities, $entity, []); $model = is_object($models) ? $models : reset($models); if ($model === null) { Yii::info("Entities list: " . yii\helpers\VarDumper::dumpAsString($actionData->entities)); Yii::info((array) ArrayHelper::getValue($actionData->entities, $entity, [])); Yii::info("Searching for " . $entity); throw new \RuntimeException("Model is empty"); } foreach ($definition['attributes'] as $index => $attribute) { $materials = $model->{$attribute}; if (is_array($materials) || is_object($materials)) { $monsterContentConfigs[] = ['materials' => $materials, 'uniqueContentId' => $model::className() . ":{$index}:" . $model->id]; } else { Yii::warning("Model attribute {$attribute} of entity {$entity} is not array or object"); } } } $content = ''; foreach ($monsterContentConfigs as $index => $config) { $content .= "<!-- MonsterContent::{$index} -->\n" . MonsterContent::widget($config) . "\n\n"; } $actionData->content = $content; }
/** * @param integer $position * @param array $files */ protected function process($position, $files) { $resultFile = sprintf('%s/%s.js', $this->view->minify_path, $this->_getSummaryFilesHash($files)); if (!file_exists($resultFile)) { $js = ''; foreach ($files as $file => $html) { $file = $this->getAbsoluteFilePath($file); $content = ''; if (!file_exists($file)) { \Yii::warning(sprintf('Asset file not found `%s`', $file), __METHOD__); } elseif (!is_readable($file)) { \Yii::warning(sprintf('Asset file not readable `%s`', $file), __METHOD__); } else { $content .= file_get_contents($file) . ';' . "\n"; } $js .= $content; } $this->removeJsComments($js); if ($this->view->minifyJs) { $js = (new \JSMin($js))->min(); } file_put_contents($resultFile, $js); if (false !== $this->view->file_mode) { @chmod($resultFile, $this->view->file_mode); } } $file = $this->prepareResultFile($resultFile); $this->view->jsFiles[$position][$file] = Html::jsFile($file); }
/** * @param string $parentPath * @return void */ public function process($parentPath = '') { $this->loadManifest(); if ($this->namespace === '' || $this->namespace === null) { $this->namespace = 'unknown'; } if (empty($this->name)) { $this->name = $this->id; } if (empty($this->name)) { $this->name = basename($this->getFsLocation()); } $this->fullPath = $this->namespace . '.' . $this->id; $groupsDirectories = $this->getChildrenDirectories(); $this->groups = []; foreach ($groupsDirectories as $directory) { $group = $this->newChild($directory); try { $group->process($this->fullPath); if ($group->id === null) { Yii::error("Group for path {$directory} is in unknown format(no id or bad manifest)" . " - bundle: {$this->id}"); unset($group); continue; } $this->groups[$group->id] = $group; } catch (\RuntimeException $e) { Yii::warning($e); } } }
/** * Lists all ClientEmployee models. * @return mixed */ public function actionIndex() { $searchModel = new ClientEmployeeSearch(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); if (isset($_GET['download'])) { $datetime_start = str_replace('\'', '', $_GET['datetime_start']); $datetime_end = str_replace('\'', '', $_GET['datetime_end']); $filename = Yii::$app->getRuntimePath() . "/员工会员推广排行榜-" . $datetime_start . '到' . $datetime_end . '.csv'; $fh = fopen($filename, 'w'); fprintf($fh, "排名,会员推广数量,员工姓名,电话,营业厅" . PHP_EOL); $i = 1; \Yii::warning('yjhu:' . $datetime_start); $rows = \app\models\MUser::getMemberPromotionTopList(0, 5000, $datetime_start . ' 00:00:00', $datetime_end . ' 23:59:59'); foreach ($rows as $row) { $staff = \app\models\MStaff::findOne(['scene_id' => $row['scene_pid']]); fprintf($fh, $i++ . ','); fprintf($fh, $row['members'] . ','); fprintf($fh, $staff->name . ','); fprintf($fh, $staff->mobile . ','); fprintf($fh, (empty($staff->office) ? '' : $staff->office->title) . PHP_EOL); } fclose($fh); Yii::$app->response->sendFile($filename); return; } return $this->render('index', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider]); }
/** * @inheritdoc */ public function apply($model) { if ($this->isDue() && in_array($model->ClassID, [6, 12])) { $userID = $model->contractor->id; \Yii::info('Проверка и применение акции "' . self::$name . '"' . "({$this->getModel()->id})" . ' для пользователя ' . Html::a($userID, ['/user/admin/update', 'id' => $userID]), 'info'); $settings = $this->getModel()->parseSettings(); if (empty($settings['attributes'])) { return false; } ArrayHelper::multisort($settings['attributes'], 'payment', SORT_DESC); $account = $model->contractor->account; foreach ($settings['attributes'] as $attributes) { $discount = $this->getModel()->getDiscount(); $discount->setAttributes($attributes); if ($model->CashSum >= $discount->payment && $discount->bonus !== null) { \Yii::warning('Применение акции с атрибутами: ' . Json::encode($attributes), 'info'); $account->Bonuses = $account->Bonuses + $discount->bonus; $account->ChargedBonuses = $account->ChargedBonuses + $discount->bonus; if ($account->save(false, ['Bonuses', 'ChargedBonuses'])) { $finance = new FinanceRecord(); $finance->CashSum = $discount->bonus; $finance->Coins = $discount->bonus; $finance->ClassID = 18; $finance->ContractorID = $model->ContractorID; $finance->Comment = $this->getDescription(); return $finance->save(); } } } } else { // var_export(in_array($model->ClassID, [6, 12])); } return false; }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = ClientEmployee::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); \Yii::warning('yjhu_debugging: ' . \yii\helpers\Json::encode($params)); \Yii::warning('yjhu_debugging: ' . \yii\helpers\Json::encode($this)); $this->load($params); \Yii::warning('yjhu_debugging: ' . \yii\helpers\Json::encode($this)); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query = $query->joinWith('organizations'); $query->andFilterWhere(['employee_id' => $this->employee_id, 'client_id' => $this->client_id]); $query->andFilterWhere(['like', 'name', $this->name]); $root_org = ClientOrganization::findOne(['organization_id' => $this->organization_id]); if (empty($root_org)) { $this->organization_id = 1; $root_org = ClientOrganization::findOne(['organization_id' => 1]); } $query->andFilterWhere(['client_organization.organization_id' => $root_org->getSubordinateIdArray()]); if (!empty($this->search_keyword)) { $query->leftJoin('client_employee_mobile', 'client_employee_mobile.employee_id = client_employee.employee_id'); $query->andFilterWhere(['like', 'name', $this->search_keyword]); $query->orFilterWhere(['like', 'client_employee_mobile.mobile', $this->search_keyword]); } return $dataProvider; }
/** @inheritdoc */ public function saveCopy(callable $callback, $body = true) { $tos = $this->getTo(); $froms = $this->getFrom(); $to = empty($tos) ? null : array_keys($tos); $from = empty($froms) ? null : array_keys($froms); $inserted = $callback($this->getId(), $to[0], $from[0], $this->getSubject(), $body ? $this->getContent() : null, $this->mailer->getService()); if ($inserted === 0) { \Yii::warning("Can not insert email copy of [{$this->getSubject()}|{$to}]"); } }
/** * Initializing XHProf */ public function init() { if (extension_loaded('xhprof')) { parent::init(); require_once $this->includeLibrary; require_once $this->includeRuns; xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); $this->isInitialized = true; } else { \Yii::warning('PHP extension [xhprof] was not loaded.', 'XHProf'); } }
/** * (non-PHPdoc) * @see \yii\db\BaseActiveRecord::afterDelete() */ public function afterDelete() { $filename_utf8 = \Yii::$app->mycfg->library->directory . $this->filename; $filename_encoded = \Yii::$app->mycfg->Encode($filename_utf8); if (\Yii::$app->mycfg->library->sync) { if (!file_exists($filename_encoded)) { \Yii::warning("file '{$filename_utf8}' was removed before record deletion with sync enabled"); } else { unlink($filename_encoded); } } parent::afterDelete(); }
/** * @param array $files */ protected function process(array $files) { $resultFile = $this->view->minify_path . DIRECTORY_SEPARATOR . $this->_getSummaryFilesHash($files) . '.css'; if (!file_exists($resultFile)) { $css = ''; foreach ($files as $file => $html) { $path = dirname($file); $file = $this->getAbsoluteFilePath($file); $content = ''; if (!file_exists($file)) { \Yii::warning(sprintf('Asset file not found `%s`', $file), __METHOD__); } elseif (!is_readable($file)) { \Yii::warning(sprintf('Asset file not readable `%s`', $file), __METHOD__); } else { $content = file_get_contents($file); } $result = []; preg_match_all('|url\\(([^)]+)\\)|is', $content, $m); if (!empty($m[0])) { foreach ($m[0] as $k => $v) { if (in_array(strpos($m[1][$k], 'data:'), [0, 1], true)) { continue; } $url = str_replace(['\'', '"'], '', $m[1][$k]); if ($this->isUrl($url)) { $result[$m[1][$k]] = $url; } else { $result[$m[1][$k]] = $path . '/' . $url; } } $content = strtr($content, $result); } $css .= $content; } $this->expandImports($css); $this->removeCssComments($css); if ($this->view->minifyCss) { $css = (new \CSSmin())->run($css, $this->view->css_linebreak_pos); } $charsets = false !== $this->view->force_charset ? '@charset "' . (string) $this->view->force_charset . '";' . "\n" : $this->collectCharsets($css); $imports = $this->collectImports($css); $fonts = $this->collectFonts($css); file_put_contents($resultFile, $charsets . $imports . $fonts . $css); if (false !== $this->view->file_mode) { @chmod($resultFile, $this->view->file_mode); } } $file = $this->prepareResultFile($resultFile); $this->view->cssFiles[$file] = Html::cssFile($file); }
/** * @param string $level * @param string $msg */ public function log($level, $msg) { switch ($level) { default: case 'INFO': \Yii::info($msg, static::LOG_CATEGORY); break; case 'WARNING': \Yii::warning($msg, static::LOG_CATEGORY); break; case 'ERROR': \Yii::error($msg, static::LOG_CATEGORY); break; } }
public function beforeValidate() { try { if ($this->isNewRecord && empty($this->created_at)) { $this->created_at = self::createDateTime(); } else { if (!$this->isNewRecord) { $this->updated_at = self::createDateTime(); } } } catch (\Exception $e) { \Yii::warning($e->getMessage(), __METHOD__); } return parent::beforeValidate(); }
public function GetSearch($search_string) { try { $result = $this->client->GetSearch(['KEY1' => $this->key1, 'KEY2' => $this->key2, 'TEXT' => $search_string]); } catch (\SoapFault $exception) { \Yii::warning($exception->getMessage(), 'rossko_api'); return false; } catch (\Exception $e) { \Yii::warning($e->getMessage(), 'rossko_api'); return false; } if ($result->SearchResults->SearchResult->Success) { return $result->SearchResults->SearchResult->PartsList->Part; } else { return false; } }
/** * @return bool */ public function save() { $Client = $this->Client; \Yii::warning($Client->isNewRecord); $Client->name = $this->name; $Client->email = $this->email; $Client->phone = $this->phone; $result = $Client->validate() && $Client->save(); if ($Client->hasErrors()) { $this->populateErrors($Client, 'name'); } if (AuthManager() instanceof \yii\rbac\DbManager) { AuthManager()->invalidateCache(); } $this->Client = $Client; return $result; }
/** * Job processing body * * @param $job array * * @return boolean */ protected function doJob($job) { $pid_file = $this->getPidPath($job['daemon']); \Yii::trace('Check daemon ' . $job['daemon']); if (file_exists($pid_file)) { $pid = file_get_contents($pid_file); if ($this->isProcessRunning($pid)) { if ($job['enabled']) { \Yii::trace('Daemon ' . $job['daemon'] . ' running and working fine'); return true; } else { \Yii::warning('Daemon ' . $job['daemon'] . ' running, but disabled in config. Send SIGTERM signal.'); if (isset($job['hardKill']) && $job['hardKill']) { posix_kill($pid, SIGKILL); } else { posix_kill($pid, SIGTERM); } return true; } } } \Yii::error('Daemon pid not found.'); if ($job['enabled']) { \Yii::trace('Try to run daemon ' . $job['daemon'] . '.'); $command_name = $job['daemon'] . DIRECTORY_SEPARATOR . 'index'; //flush log before fork $this->flushLog(true); //run daemon $pid = pcntl_fork(); if ($pid === -1) { $this->halt(self::EXIT_CODE_ERROR, 'pcntl_fork() returned error'); } elseif ($pid === 0) { $this->cleanLog(); \Yii::$app->requestedRoute = $command_name; \Yii::$app->runAction("{$command_name}", ['demonize' => 1]); $this->halt(0); } else { $this->initLogger(); \Yii::trace('Daemon ' . $job['daemon'] . ' is running with pid ' . $pid); } } \Yii::trace('Daemon ' . $job['daemon'] . ' is checked.'); return true; }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = ClientOutlet::find(); $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => 24]]); \Yii::warning(__METHOD__ . \yii\helpers\Json::encode($params)); \Yii::warning(__METHOD__ . \yii\helpers\Json::encode($this)); $this->load($params); \Yii::warning(__METHOD__ . \yii\helpers\Json::encode($this)); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['outlet_id' => $this->outlet_id, 'client_id' => $this->client_id, 'supervision_organization_id' => $this->supervision_organization_id, 'category' => $this->category, 'longitude' => $this->longitude, 'latitude' => $this->latitude, 'original_office_id' => $this->original_office_id]); $query->andFilterWhere(['like', 'title', $this->title])->andFilterWhere(['like', 'address', $this->address])->andFilterWhere(['like', 'telephone', $this->telephone])->andFilterWhere(['like', 'pics', $this->pics]); $query->andFilterWhere(['supervision_organization_id' => ClientOrganization::findOne(['organization_id' => $this->msc_id])->getMscIdArray()]); \Yii::warning(__METHOD__ . \yii\helpers\Json::encode($query)); return $dataProvider; }
/** * Job processing body * * @param $job array * @return boolean */ protected function doJob($job) { $pidfile = \Yii::getAlias($this->pidDir) . DIRECTORY_SEPARATOR . $job['className']; \Yii::trace('Check daemon ' . $job['className']); if (file_exists($pidfile)) { $pid = file_get_contents($pidfile); if ($this->isProcessRunning($pid)) { if ($job['enabled']) { \Yii::trace('Daemon ' . $job['className'] . ' running and working fine'); return true; } else { \Yii::warning('Daemon ' . $job['className'] . ' running, but disabled in config. Send SIGTERM signal.'); if (isset($job['hardKill']) && $job['hardKill']) { posix_kill($pid, SIGKILL); } else { posix_kill($pid, SIGTERM); } return true; } } } \Yii::trace('Daemon pid not found.'); if ($job['enabled']) { \Yii::trace('Try to run daemon ' . $job['className'] . '.'); $command_name = $this->getCommandNameBy($job['className']); //flush log before fork \Yii::$app->getLog()->getLogger()->flush(true); //run daemon $pid = pcntl_fork(); if ($pid == -1) { $this->halt(self::EXIT_CODE_ERROR, 'pcntl_fork() returned error'); } elseif (!$pid) { $this->initLogger(); \Yii::trace('Daemon ' . $job['className'] . ' is running.'); } else { $this->halt(0 === \Yii::$app->runAction("{$command_name}", ['demonize' => 1]) ? self::EXIT_CODE_NORMAL : self::EXIT_CODE_ERROR); } } \Yii::trace('Daemon ' . $job['className'] . ' is checked.'); return true; }
/** * Connects to redis sentinel **/ protected function open() { if ($this->_socket !== null) { return; } $connection = $this->unixSocket ?: $this->hostname . ':' . $this->port; Yii::trace('Opening redis sentinel connection: ' . $connection, __METHOD__); Yii::beginProfile("Connect to sentinel", __CLASS__); $this->_socket = @stream_socket_client($this->unixSocket ? 'unix://' . $this->unixSocket : 'tcp://' . $this->hostname . ':' . $this->port, $errorNumber, $errorDescription, $this->connectionTimeout ? $this->connectionTimeout : ini_get("default_socket_timeout"), STREAM_CLIENT_CONNECT); Yii::endProfile("Connect to sentinel", __CLASS__); if ($this->_socket) { if ($this->connectionTimeout !== null) { stream_set_timeout($this->_socket, $timeout = (int) $this->connectionTimeout, (int) (($this->connectionTimeout - $timeout) * 1000000)); } return true; } else { \Yii::warning('Failed opening redis sentinel connection: ' . $connection, __METHOD__); $this->_socket = false; return false; } }
/** * Initializes asset bundle with optional CSS/LESS development settings * * If `APP_ASSET_FORCE_PUBLISH` is set, touch the asset folder with the highest mtime * of all contained files. * This will create a new folder in web/assets for every change and request made to the app assets. */ public function init() { parent::init(); if (getenv('APP_ASSET_FORCE_PUBLISH')) { $path = \Yii::getAlias($this->sourcePath); if (!$path) { \Yii::warning('Empty path', __METHOD__); return; } $files = FileHelper::findFiles($path); $mtimes = []; foreach ($files as $file) { $mtimes[] = filemtime($file); } try { touch($path, max($mtimes)); \Yii::info('Touched path', __METHOD__); } catch (ErrorException $e) { \Yii::warning([$path, $e->getMessage()], __METHOD__); } } }
/** * @inheritdoc */ public function init() { parent::init(); if ((int) ini_get('upload_max_filesize') < $this->maxUploadFileSize) { \Yii::warning(sprintf('The parameter `%s` in php.ini must be equal to`%s`', 'upload_max_filesize', $this->maxUploadFileSize . 'M'), __METHOD__); } if ((int) ini_get('post_max_size') < $this->maxUploadFileSize) { \Yii::warning(sprintf('The parameter `%s` in php.ini must be equal to`%s`', 'post_max_size', $this->maxUploadFileSize . 'M'), __METHOD__); } $this->uploadWebPath = \Yii::getAlias($this->uploadWebPath); $this->uploadPath = \Yii::getAlias($this->uploadPath); $this->storageWebPath = \Yii::getAlias($this->storageWebPath); $this->storagePath = \Yii::getAlias($this->storagePath); if (empty($this->uploadPath)) { throw new \yii\base\InvalidConfigException(\Yii::t('cookyii.media', 'Unable to determine the path to the upload directory (Media::$uploadPath).')); } if (empty($this->storagePath)) { throw new \yii\base\InvalidConfigException(\Yii::t('cookyii.media', 'Unable to determine the path to the storage directory (Media::$storagePath).')); } if (!file_exists($this->uploadPath) || !is_dir($this->uploadPath)) { FileHelper::createDirectory($this->uploadPath); } if (!file_exists($this->storagePath) || !is_dir($this->storagePath)) { FileHelper::createDirectory($this->storagePath); } if (!is_readable($this->uploadPath)) { throw new \RuntimeException(\Yii::t('cookyii.media', 'Upload directory not available for reading (Media::$uploadPath).')); } if (!is_writable($this->uploadPath)) { throw new \RuntimeException(\Yii::t('cookyii.media', 'Upload directory not available for writing (Media::$uploadPath).')); } if (!is_readable($this->storagePath)) { throw new \RuntimeException(\Yii::t('cookyii.media', 'Storage directory not available for reading (Media::$storagePath).')); } if (!is_writable($this->storagePath)) { throw new \RuntimeException(\Yii::t('cookyii.media', 'Storage directory not available for writing (Media::$storagePath).')); } }
public function callback(AMQPMessage $msg) { $routingKey = $msg->delivery_info['routing_key']; $method = 'read' . Inflector::camelize($routingKey); if (!isset($this->interpreters[$this->queue])) { $interpreter = $this; } elseif (class_exists($this->interpreters[$this->queue])) { $interpreter = new $this->interpreters[$this->queue](); if (!$interpreter instanceof AmqpInterpreter) { throw new Exception(sprintf("Class '%s' is not correct interpreter class.", $this->interpreters[$this->queue])); } } else { throw new Exception(sprintf("Interpreter class '%s' was not found.", $this->interpreters[$this->queue])); } if (method_exists($interpreter, $method)) { $info = ['exchange' => $msg->get('exchange'), 'queue' => $this->queue, 'routing_key' => $msg->get('routing_key'), 'reply_to' => $msg->has('reply_to') ? $msg->get('reply_to') : null]; try { $interpreter->{$method}(Json::decode($msg->body, true), $info); } catch (\Exception $exc) { $error_info = "consumer fail:" . $exc->getMessage() . PHP_EOL . "info:" . print_r($info, true) . PHP_EOL . "body:" . PHP_EOL . print_r($msg->body, true) . PHP_EOL . $exc->getTraceAsString(); \Yii::warning($error_info, __METHOD__); $format = [Console::FG_RED]; Console::stdout(Console::ansiFormat($error_info . PHP_EOL, $format)); Console::stdout(Console::ansiFormat($exc->getTraceAsString() . PHP_EOL, $format)); } } else { if (!isset($this->interpreters[$this->queue])) { $interpreter = new AmqpInterpreter(); } $error_info = "Unknown routing key '{$routingKey}' for exchange '{$this->queue}'."; $error_info .= PHP_EOL . $msg->body; \Yii::warning($error_info, __METHOD__); $interpreter->log(sprintf("Unknown routing key '%s' for exchange '%s'.", $routingKey, $this->queue), $interpreter::MESSAGE_ERROR); // debug the message $interpreter->log(print_r(Json::decode($msg->body, true), true), $interpreter::MESSAGE_INFO); } }
public function actionIndex() { \Yii::$app->response->format = Response::FORMAT_JSON; // content of $params should look like here: https://developer.github.com/v3/activity/events/types/#issuesevent $params = \Yii::$app->request->bodyParams; $event = \Yii::$app->request->headers->get('X-Github-Event'); if (!$event) { \Yii::warning('event request without X-Github-Event header.'); throw new BadRequestHttpException('Event request without X-Github-Event header.'); } Yii::$app->github->verifyRequest(Yii::$app->request->rawBody); if ($event === 'ping') { return ['success' => true, 'action' => 'pong']; } if ($event !== 'issues') { throw new BadRequestHttpException('Only issues events should be deployed here.'); } if ($params['sender']['login'] === Yii::$app->params['github_username']) { \Yii::warning('ignoring event triggered by myself.'); return ['success' => true, 'action' => 'ignored']; } switch ($params['action']) { case 'labeled': // if label is added, check for actions if (isset($params['label'])) { foreach (\Yii::$app->params['actions'] as $action) { if ($params['label']['name'] == $action['label']) { $this->performAction($action, $params); } } } return ['success' => true, 'action' => 'processed']; break; } return ['success' => true, 'action' => 'ignored']; }
/** * Trims duration to 30 days (2592000 seconds). * @param integer $duration the number of seconds * @return int the duration */ protected function trimDuration($duration) { if ($duration > 2592000) { \Yii::warning('Duration has been truncated to 30 days due to Memcache/Memcached limitation.', __METHOD__); return 2592000; } if ($duration < 0) { return 0; } return $duration; }
/** * parse the mandrill response and returns false if any message was either invalid or rejected * * @param array $mandrillResponse * @return boolean */ private function wasMessageSentSuccesfully($mandrillResponse) { $this->_mandrillResponse = $mandrillResponse; $return = true; foreach ($mandrillResponse as $recipient) { switch ($recipient['status']) { case self::STATUS_INVALID: $return = false; \Yii::warning('the email for "' . $recipient['email'] . '" has not been sent: status "' . $recipient['status'] . '"', self::LOG_CATEGORY); break; case self::STATUS_QUEUED: \Yii::info('the email for "' . $recipient['email'] . '" is now in a queue waiting to be sent.', self::LOG_CATEGORY); break; case self::STATUS_REJECTED: $return = false; \Yii::warning('the email for "' . $recipient['email'] . '" has been rejected: reason "' . $recipient['reject_reason'] . '"', self::LOG_CATEGORY); break; case self::STATUS_SCHEDULED: \Yii::info('the email submission for "' . $recipient['email'] . '" has been scheduled.', self::LOG_CATEGORY); break; case self::STATUS_SENT: \Yii::info('the email for "' . $recipient['email'] . '" has been sent.', self::LOG_CATEGORY); break; } } return $return; }
/** * Tries to read, verify, validate and return a JWT claims stored in the identity cookie. * * @param int $currentTime * @param string $audience * * @return array|false * @since 1.1 */ protected function getTokenClaims($currentTime = null, $audience = null) { $jwt = \Yii::$app->getRequest()->getCookies()->getValue($this->identityCookie['name']); if (!isset($jwt)) { return false; } try { $token = (new Parser())->parse($jwt); if (!$token->verify(new Sha256(), $this->token)) { throw new InvalidValueException('Invalid signature'); } if (!$token->validate($this->initClaims(new ValidationData($currentTime), null, $audience))) { throw new InvalidValueException('Invalid claims'); } $claims = []; foreach (array_keys($token->getClaims()) as $name) { $claims[$name] = $token->getClaim($name); } return $claims; } catch (\Exception $e) { $error = $e->getMessage(); } $ip = \Yii::$app->getRequest()->getUserIP(); \Yii::warning("Invalid JWT cookie from {$ip}: {$error}.", __METHOD__); \Yii::$app->getResponse()->getCookies()->remove(new Cookie($this->identityCookie)); return false; }
/** * Returns the next line from an open file handle or a string * @param $data * @return bool|string * @deprecated * @codeCoverageIgnore */ private function get_line(&$data) { \Yii::warning(sprintf('You are using an deprecated method `%s`.', 'get_line')); return $this->getLine($data); }
public function init() { parent::init(); \Yii::warning(sprintf('You are using an deprecated class `%s`.', __CLASS__)); }
<?php /** * Configuration file for the "backend" test (web/admin-test.php) web application */ return yii\helpers\ArrayHelper::merge(require __DIR__ . '/backend.php', ['bootstrap' => [function () { if (isset($_SERVER['REMOTE_ADDR']) && !empty($GLOBALS['developerIPs'])) { $ip = $_SERVER['REMOTE_ADDR']; $allowedIPs = $GLOBALS['developerIPs']; foreach ($allowedIPs as $filter) { if ($filter === '*' || $filter === $ip || ($pos = strpos($filter, '*')) !== false && !strncmp($ip, $filter, $pos)) { return; } } Yii::warning('Access to Test Application is denied due to IP address restriction. The requested IP is ' . $ip); die('You are not allowed to access this file.'); } }], 'components' => ['urlManager' => ['showScriptName' => true]]]);