Вход Регистрация
Файл: gapps/vendor/cartalyst/sentinel/src/Reminders/IlluminateReminderRepository.php
Строк: 131
<?php

/**
 * Part of the Sentinel package.
 *
 * NOTICE OF LICENSE
 *
 * Licensed under the 3-clause BSD License.
 *
 * This source file is subject to the 3-clause BSD License that is
 * bundled with this package in the LICENSE file.
 *
 * @package    Sentinel
 * @version    2.0.15
 * @author     Cartalyst LLC
 * @license    BSD License (3-clause)
 * @copyright  (c) 2011-2017, Cartalyst LLC
 * @link       http://cartalyst.com
 */

namespace CartalystSentinelReminders;

use 
CarbonCarbon;
use 
CartalystSentinelUsersUserInterface;
use 
CartalystSentinelUsersUserRepositoryInterface;
use 
CartalystSupportTraitsRepositoryTrait;

class 
IlluminateReminderRepository implements ReminderRepositoryInterface
{
    use 
RepositoryTrait;

    
/**
     * The user repository.
     *
     * @var CartalystSentinelUsersUserRepositoryInterface
     */
    
protected $users;

    
/**
     * The Eloquent reminder model name.
     *
     * @var string
     */
    
protected $model 'CartalystSentinelRemindersEloquentReminder';

    
/**
     * The expiration time in seconds.
     *
     * @var int
     */
    
protected $expires 259200;

    
/**
     * Create a new Illuminate reminder repository.
     *
     * @param  CartalystSentinelUsersUserRepositoryInterface  $users
     * @param  string  $model
     * @param  int  $expires
     * @return void
     */
    
public function __construct(UserRepositoryInterface $users$model null$expires null)
    {
        
$this->users $users;

        if (isset(
$model)) {
            
$this->model $model;
        }

        if (isset(
$expires)) {
            
$this->expires $expires;
        }
    }

    
/**
     * {@inheritDoc}
     */
    
public function create(UserInterface $user)
    {
        
$reminder $this->createModel();

        
$code $this->generateReminderCode();

        
$reminder->fill([
            
'code'      => $code,
            
'completed' => false,
        ]);

        
$reminder->user_id $user->getUserId();

        
$reminder->save();

        return 
$reminder;
    }

    
/**
     * {@inheritDoc}
     */
    
public function exists(UserInterface $user$code null)
    {
        
$expires $this->expires();

        
$reminder $this
            
->createModel()
            ->
newQuery()
            ->
where('user_id'$user->getUserId())
            ->
where('completed'false)
            ->
where('created_at''>'$expires);

        if (
$code) {
            
$reminder->where('code'$code);
        }

        return 
$reminder->first() ?: false;
    }

    
/**
     * {@inheritDoc}
     */
    
public function complete(UserInterface $user$code$password)
    {
        
$expires $this->expires();

        
$reminder $this
            
->createModel()
            ->
newQuery()
            ->
where('user_id'$user->getUserId())
            ->
where('code'$code)
            ->
where('completed'false)
            ->
where('created_at''>'$expires)
            ->
first();

        if (
$reminder === null) {
            return 
false;
        }

        
$credentials compact('password');

        
$valid $this->users->validForUpdate($user$credentials);

        if (
$valid === false) {
            return 
false;
        }

        
$this->users->update($user$credentials);

        
$reminder->fill([
            
'completed'    => true,
            
'completed_at' => Carbon::now(),
        ]);

        
$reminder->save();

        return 
true;
    }

    
/**
     * {@inheritDoc}
     */
    
public function removeExpired()
    {
        
$expires $this->expires();

        return 
$this
            
->createModel()
            ->
newQuery()
            ->
where('completed'false)
            ->
where('created_at''<'$expires)
            ->
delete();
    }

    
/**
     * Returns the expiration date.
     *
     * @return CarbonCarbon
     */
    
protected function expires()
    {
        return 
Carbon::now()->subSeconds($this->expires);
    }

    
/**
     * Returns a random string for a reminder code.
     *
     * @return string
     */
    
protected function generateReminderCode()
    {
        return 
str_random(32);
    }
}
Онлайн: 1
Реклама