public function handle() { $url = $this->location !== null ? $this->location : URLHelper::fromTitle($this->page->getSite(), $this->prefix, $this->page->getTitle()); $url = URLFacade::create($url, $this->page, true); Bus::dispatch(new MakeURLPrimary($url)); return $url; }
public function handle(PageTitleWasChanged $event) { if ($this->urlShouldBeChanged($event)) { $page = $event->getPage(); Bus::dispatch(new CreatePagePrimaryUri($page, $this->getPrefix($page))); } }
public function store(Request $request, Site $site) { $job = new CreatePerson($request->input('email'), $request->input('name')); $person = Bus::dispatch($job); $person->addSite($site); return $person; }
protected function doDelete(Page $page) { $children = PageFacade::findByParentId($page->getId()); foreach ($children as $child) { $this->doDelete($child); Bus::dispatch(new DeletePage($child)); } }
/** * Handle the event. * * @param EmailUpdatedEvent $event * @return void */ public function handle(EmailUpdatedEvent $event) { EmailVerification::create(["user_id" => $event->user()->id]); $user = $event->user(); $user->verified = false; $user->save(); Bus::dispatch(new SendVerificationEmail($user)); }
protected function reassignURLs() { $redirectTo = PageFacade::find($this->options['redirectTo']); if ($redirectTo !== null) { foreach ($this->page->getUrls() as $url) { Bus::dispatch(new ReassignURL($url, $redirectTo)); } } }
/** * Create a new user instance after a valid registration. * * @param array $data * @return User */ public function create(array $data) { $bDaySplit = explode('.', $data['birth_date']); $user = User::create(['username' => $data['name'], 'first_name' => $data['first_name'], 'last_name' => $data['last_name'], 'password' => bcrypt($data['password']), 'birth_date' => Carbon::createFromDate($bDaySplit[2], $bDaySplit[1], $bDaySplit[0]), 'gender' => $data['gender']]); $email = VerifiedEmail::create(['email' => $data['email'], 'user_id' => $user->id]); Bus::dispatch(new EmailCreated($email)); Bus::dispatch(new CreateSettings($user)); Bus::dispatch(new CreateVerifiedPhoneNumber($user, $data['phonefield'], $data['phonefield_country'])); return $user; }
/** @test */ public function un_submitting_does_not_delete_conference() { $user = Factory::create('user'); $conference = Factory::create('conference'); $talk = Factory::create('talk', ['author_id' => $user->id]); $revision = Factory::create('talkRevision'); $talk->revisions()->save($revision); Bus::dispatch(new CreateSubmission($conference->id, $revision->id)); Bus::dispatch(new DestroySubmission($conference->id, $revision->id)); $this->assertEquals(1, Conference::find($conference->id)->count()); }
public function store(Request $request) { $emails = $request->input('emails'); $emails = explode(',', $emails); $emails = array_map(function ($email) { return trim($email); }, $emails); $this->validate($request, ['file_key' => 'required', 'password' => 'required|confirmed', 'file_name' => 'required']); $this->files->create(['file_name' => $request['file_name'], 'file_key' => $request['file_key'], 'password' => bcrypt($request['password'])]); Bus::dispatch(new EmailDownloadDetailsCommand($emails, $request->all())); return redirect('files'); }
public function testChildrenAreDeletedIfNotReparented() { $options = [['reparentChildrenTo' => null], ['reparentChildrenTo' => 0], []]; foreach ($options as $o) { $page = $this->validPage(); $job = new Jobs\DeletePage($page, $o); Page::shouldReceive('delete')->zeroOrMoreTimes(); Event::shouldReceive('fire')->zeroOrMoreTimes(); Bus::shouldReceive('dispatch')->once()->with(m::type(Jobs\DeletePageChildren::class)); $job->handle(); } }
public static function sendTicket(Ticket $ticket) { Bus::dispatch(new SendEmail($ticket)); }
public function add() { Bus::dispatch(new CreatePerson(['email' => $this->request->input('email'), 'name' => $this->request->input('name')], $this->request->input('groups') ?: [])); }
/** * Save the order of child pages. * * @param Request $request * @param Page $page */ public function postSortChildren(Request $request, Page $page) { $this->authorize('editChildrenBasic', $page); Bus::dispatch(new ReorderChildPages($page, $request->input('sequences'))); }
/** * @param $entry * @param $game * @param $pvp * @param $regular */ private function gamePlayerSetup($data, $entry, &$game, $pvp, $regular = true) { $player = new GamePlayer(); $player->game_id = $game->instanceId; $player->membershipId = $entry['player']['destinyUserInfo']['membershipId']; $player->account_id = Account::getAccountIdViaDestiny($player->membershipId); // check if we have player if ($this->checkCacheForGamertag($entry['player']['destinyUserInfo']['displayName']) == false && $regular) { Bus::dispatch(new UpdateGamertag($entry['player']['destinyUserInfo']['displayName'], $entry['player']['destinyUserInfo']['membershipType'])); if ($player->account_id == null) { // we are re-running this, because an Account doesnt exist yet so the previous check is NULL // this is technically a bug-fix for a RACE condition, where we cant create a Player // without an AccountId which doesn't exist till after the Event is dispatched. $player->account_id = Account::getAccountIdViaDestiny($player->membershipId); } } $player->characterId = $entry['characterId']; $player->level = $entry['player']['characterLevel']; $player->class = $entry['player']['characterClass']; $player->emblem = $entry['player']['destinyUserInfo']['iconPath']; $player->assists = $entry['values']['assists']['basic']['value']; $player->deaths = $entry['values']['deaths']['basic']['value']; $player->kills = $entry['values']['kills']['basic']['value']; $player->completed = boolval($entry['values']['completed']['basic']['value']); // PVP games don't seem to have secondsPlayed or averageLifespan if (isset($entry['values']['secondsPlayed']['basic']['value'])) { $player->secondsPlayed = $entry['values']['secondsPlayed']['basic']['value']; } if (isset($entry['extended']['values']['averageLifespan']['basic']['value'])) { $player->averageLifespan = $entry['extended']['values']['averageLifespan']['basic']['value']; } if (isset($entry['values']['score']['basic']['value'])) { $player->score = $entry['values']['score']['basic']['value']; } if (isset($entry['values']['standing']['basic']['values'])) { $player->standing = $entry['values']['standing']['basic']['value']; } // Check for team or rumble if (isset($entry['values']['team']['basic']['value'])) { $player->team = $entry['values']['team']['basic']['value']; } // Check for revives given/received if (isset($entry['extended']['values']['resurrectionsPerformed']['basic']['value'])) { $player->revives_given = $entry['extended']['values']['resurrectionsPerformed']['basic']['value']; } if (isset($entry['extended']['values']['resurrectionsReceived']['basic']['value'])) { $player->revives_taken = $entry['extended']['values']['resurrectionsReceived']['basic']['value']; } if (isset($entry['extended']['values']['medalsActivityCompleteVictoryMercy']['basic']['value'])) { $game->mercy = true; $game->save(); } // Don't save if 0/0 if ($player->score == 0 && $player->deaths == 0 && $player->kills == 0) { return; } else { $player->save(); $duration = $entry['values']['activityDurationSeconds']['basic']['value']; if (isset($data['Response']['data']['activityDetails']['mode']) && Gametype::isPVP($data['Response']['data']['activityDetails']['mode'])) { // We need to figure out which "team" is PandaLove via checking the players if ($player->account->isPandaLove()) { if ($entry['standing'] == 0) { $pvp->pandaId = $pvp->winnerId; } else { $pvp->pandaId = $pvp->loserId; } $pvp->save(); } } } return isset($duration) ? $duration : null; }
/** * Execute the command. * * @return void */ public function handle() { $verification = Verification::create(['user_id' => $this->user->id]); Bus::dispatch(new CreateVerificationPicture($this->picture, $verification)); return $verification; }
/** * <h1>Описание</h1> * <pre> * Провести авторизацию и выполнить команду * </pre> * <h1>Что возвращает</h1> * <pre> * - JSON-массив: * * [ * "status" // Статус результата выполнения команды * "timestamp" // Timestamp прихода запроса от клиента * "data" // Данные * ] * </pre> * <h1>Какие статусы бывают, зависимость data от статуса</h1> * <pre> * 0 // Команда выполнена успешно. В data результаты её выполненя. * -1 // Нет доступа. В data строка-сообщение об этом. * -2 // Команда завершилась с ошибкой. В data текст ошибки. * </pre> * <h1>Примеры использования</h1> * <pre> * * 1. Синхронное выполнение * * 1.1. Простой синхронный запуск * runcommand('\M1\Commands\C1_parseapp'); * * 1.2. С передачей данных * runcommand('\M1\Commands\C1_parseapp', ['key1'=>'value1','key2'=>'value2']); * * 1.3. С авторизацией по ID текущего пользователя (ID == "15" в примере) * runcommand('\M1\Commands\C1_parseapp', [], 15); * * 2. Добавление в очередь задач * * 2.1. Без дополнительной отсрочки выполнения * runcommand('\M1\Commands\C1_parseapp', [], "", ['on'=>true, 'delaysecs'=>'']); * * 2.2. С дополнительной отсрочкой выполнения в 10 секунд * runcommand('\M1\Commands\C1_parseapp', [], "", ['on'=>true, 'delaysecs'=>'10']); * * </pre> * * @param mixed $command * @param array $data * @param mixed $userid * @param mixed $queue * * @return mixed */ function runcommand($command, $data = [], $userid = 0, $queue = ['on' => false, 'delaysecs' => '', 'name' => 'default']) { // 1. Провести exec-авторизацию, если она включена if (config("M5.authorize_exec_ison") == true) { // 1.1. Если $userid == -1 // - Вернуть ответ со статусом -1 (доступ запрещён) if ($userid == -1) { return ["status" => -1, "data" => $command]; } else { $validator = r4_validate(['userid' => $userid], ["userid" => ["required", "regex:/^[0-9]+\$/ui"]]); if ($validator['status'] == -1) { return ["status" => -1, "data" => $command]; } } // 1.3. Если $userid !== 0, то провести exec-авторизацию if ($userid !== 0) { // 1] Извлечь из сессии значение по ключу "authorize_exec" $authorize_exec = session('authorize_exec'); // 2] Провести валидацию $authorize_exec $is_authorize_exec_valid = call_user_func(function () use($authorize_exec) { // 2.1] Если $authorize_exec пусто, вернуть false if (empty($authorize_exec)) { return false; } // 2.2] Если $authorize_exec не массив строк, вернуть false $validator = r4_validate(['authorize_exec' => $authorize_exec], ["authorize_exec" => ["required", "array"], "authorize_exec.*" => ["string"]]); if ($validator['status'] == -1) { return false; } // 2.3] Вернуть true return true; }); // 3] Искать $command в $authorize_exec // - Если $authorize_exec не пусто и валидно. // - Если права нет, вернуть статус -1 (доступ запрещён). if ($is_authorize_exec_valid) { if (!in_array($command, $authorize_exec)) { return ["status" => -1, "data" => $command]; } } else { // 4.1] Получить коллекцию всех команд, которые $userid может выполнять $commands = call_user_func(function () use($userid) { // 4.1.1] Попробовать найти пользователя $userid // - Если найти его не удастся, вернуть пустую коллекцию. $user = \M5\Models\MD1_users::find($userid); if (empty($user)) { return collect([]); } // 4.1.2] Получить коллекцию всех exec-прав, связанных с $user $privileges = call_user_func(function () use($user) { // 1) Состоит ли $user в любой административной группе? $admingroup = \M5\Models\MD2_groups::where('isadmin', 1)->whereHas('users', function ($query) use($user) { $query->where('id', $user->id); })->first(); // 2) Если состоит, вернуть все exec-права if (!empty($admingroup)) { return \M5\Models\MD3_privileges::whereHas('privtypes', function ($query) { $query->where('name', 'exec'); })->get(); } else { return \M5\Models\MD3_privileges::whereHas('privtypes', function ($query) { $query->where('name', 'exec'); })->where(function ($query) use($user) { // Права, прямо связанные с пользователем $query->whereHas('users', function ($query) use($user) { $query->where('id', $user->id); }); // Права, связанные с группами, с которыми связан пользователь $query->orWhereHas('groups', function ($query) use($user) { $query->whereHas('users', function ($query) use($user) { $query->where('id', $user->id); }); }); // Права, связанные с тегами, с которыми связан пользователь $query->orWhereHas('tags', function ($query) use($user) { $query->whereHas('users', function ($query) use($user) { $query->where('id', $user->id); }); }); // Права, связанные с тегами, связанные с группами, с которыми связан пользователь. $query->orWhereHas('tags', function ($query) use($user) { $query->whereHas('groups', function ($query) use($user) { $query->whereHas('users', function ($query) use($user) { $query->where('id', $user->id); }); }); }); })->get(); } }); // 4.1.3] Если у модели MD5_commands в M1 нет связи m5_privileges // - Вернуть пустую коллекцию. if (!r1_rel_exists("m1", "md5_commands", "m5_privileges")) { return collect([]); } // 4.1.4] В противном случае, вернуть коллекцию соотв.команд $commands = r1_query(function () use($privileges) { return \M1\Models\MD5_commands::with(['packages'])->where(function ($query) use($privileges) { $query->whereHas('m5_privileges', function ($query) use($privileges) { $query->whereIn('id', $privileges->pluck('id')); }); })->get(); }); if (!$commands) { return collect([]); } else { return $commands; } }); // 4.2] Превратить $commands в массив полн.квалиф.команд $commands_final = call_user_func(function () use($commands) { // 4.2.1] Если $commands эта пустая коллекция, вернуть пустой массив if (count($commands) == 0) { return []; } // 4.2.2] Подготовить массив для результата $result = []; // 4.2.3] Пробежаться по $commands и наполнить $result $commands->each(function ($item) use(&$result) { array_push($result, "\\" . $item->packages[0]->id_inner . "\\Commands\\" . $item->name); }); // 4.2.n] Вернуть результат return $result; }); // 4.3] Перезаписать в сессии кэш authorize_exec session(['authorize_exec' => $commands_final]); // 4.4] Если $command не в $commands_final // - Вернуть статус -1 (нет доступа). if (!in_array($command, $commands_final)) { return ["status" => -1, "data" => $command]; } } } } // 2. Выполнить команду $command // - Передав ей данные $data // 2.1. Синхронно, если иное не указано в 4-м аргументе runcommand if ($queue['on'] == false) { $result = Bus::dispatch(new $command($data)); } else { // 1] Без задержки if (empty($queue['delaysecs'])) { Queue::push(new $command($data), [], $queue['name']); } else { Queue::later($queue['delaysecs'], new $command($data), [], $queue['name']); } } // 3. Подготовить массив с ответом, и вернуть // 3.1. Если команда выполняется синхронно if ($queue['on'] == false) { $response = ["status" => $result['status'], "data" => $result['data']]; if (array_key_exists('timestamp', $data)) { $response['timestamp'] = $data['timestamp']; } return $response; } // 3.2. Если команда выполняется асинхронно if ($queue['on'] == true) { $response = ["status" => 0, "data" => ""]; if (array_key_exists('timestamp', $data)) { $response['timestamp'] = $data['timestamp']; } return $response; } }
public function postMove() { Bus::dispatch(new ReassignURL($this->url, $this->page)); }
public function sort_children() { parent::children(); Bus::dispatch(new ReorderChildPages($this->page, $this->request->input('sequences'))); }
/** * Confirm's the user's email change request. * * @param $token * @return mixed */ public function changeEmailConfirm($token) { $request = EmailChangeRequest::where('token', $token); if ($request->exists()) { $change = $request->first(); Bus::dispatch(new ChangeEmailAddress($change->user(), $change->new_email)); Event::fire(new EmailUpdatedEvent($change->user())); $request->delete(); return true; } return false; }
/** * Execute the command. * * @param ProfilerContract $profiler */ public function handle(ProfilerContract $profiler) { $profile = UserProfile::create(['user_id' => $this->user->id]); Bus::dispatch(new UpdateUserProfile($profile, $this->data)); return $profile; }
/** * Get a default bus value, if any is available * * @return Dispatcher|null A default bus value or Null if no default value is available */ public function getDefaultBus() { return Bus::getFacadeRoot(); }
/** * Handle the event. * * @param PasswordUpdatedEvent $event * @return void */ public function handle(PasswordUpdatedEvent $event) { if (!$event->internal()) { Bus::dispatch(new SendPasswordUpdateEmail($event->user())); } }