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)));
     }
 }
示例#3
0
 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));
 }
示例#6
0
 protected function reassignURLs()
 {
     $redirectTo = PageFacade::find($this->options['redirectTo']);
     if ($redirectTo !== null) {
         foreach ($this->page->getUrls() as $url) {
             Bus::dispatch(new ReassignURL($url, $redirectTo));
         }
     }
 }
示例#7
0
 /**
  * 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;
 }
示例#8
0
 /** @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');
 }
示例#10
0
 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();
     }
 }
示例#11
0
 public static function sendTicket(Ticket $ticket)
 {
     Bus::dispatch(new SendEmail($ticket));
 }
示例#12
0
 public function add()
 {
     Bus::dispatch(new CreatePerson(['email' => $this->request->input('email'), 'name' => $this->request->input('name')], $this->request->input('groups') ?: []));
 }
示例#13
0
 /**
  * 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')));
 }
示例#14
0
 /**
  * @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;
 }
示例#16
0
 /**
  *  <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;
     }
 }
示例#17
0
 public function postMove()
 {
     Bus::dispatch(new ReassignURL($this->url, $this->page));
 }
示例#18
0
 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;
 }
示例#21
0
 /**
  * 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()));
     }
 }