public function boot()
 {
     // Please note the different namespace
     // and please add a \ in front of your classes in the global namespace
     \Event::listen('cron.collectJobs', function () {
         \Cron::add('example1', '* * * * *', function () {
             $this->index();
             return 'No';
         });
         \Cron::add('example2', '*/2 * * * *', function () {
             // Do some crazy things successfully every two minute
             return null;
         });
         \Cron::add('disabled job', '0 * * * *', function () {
             // Do some crazy things successfully every hour
         }, false);
     });
 }
Пример #2
0
 /**
  *  Tests the Cron run route with setting up the security key and with sending the right key
  *
  *  @covers \Liebig\Cron\CronServiceProvider
  */
 public function testRunRouteWithKeyWithCorrectSendKey()
 {
     \Event::listen('cron.collectJobs', function () {
         Cron::add('test1', "* * * * *", function () {
         });
         Cron::add('test2', "* * * * *", function () {
             return 'No';
         });
     });
     if ($this->laravelVersion >= 5) {
         \Config::set('liebigCron.cronKey', 'yT7yt3sa4tg5vtlLWbofF95v65FSWWZ8');
         \Config::set('liebigCron.logOnlyErrorJobsToDatabase', false);
     } else {
         \Config::set('cron::cronKey', 'yT7yt3sa4tg5vtlLWbofF95v65FSWWZ8');
         \Config::set('cron::logOnlyErrorJobsToDatabase', false);
     }
     $response = $this->call('GET', 'cron.php', array('key' => 'yT7yt3sa4tg5vtlLWbofF95v65FSWWZ8'));
     $this->assertEquals(200, $response->getStatusCode());
     $this->assertEquals(1, \Liebig\Cron\Models\Manager::count());
     $this->assertEquals(2, \Liebig\Cron\Models\Job::count());
     $jobs = \Liebig\Cron\Models\Job::all();
     $this->assertEquals(2, count($jobs));
     $this->assertEquals('test1', $jobs[0]->name);
     $this->assertEquals('', $jobs[0]->return);
     $this->assertEquals('test2', $jobs[1]->name);
     $this->assertEquals('No', $jobs[1]->return);
 }
Пример #3
0
*/
App::missing(function ($exception) {
    return Response::view('home.404');
});
App::error(function (Illuminate\Database\Eloquent\ModelNotFoundException $e) {
    return Response::view('home.404');
});
/*
|--------------------------------------------------------------------------
| Require The Filters File
|--------------------------------------------------------------------------
|
| Next we will load the filters file for the application. This gives us
| a nice separate location to store our route and application filter
| definitions instead of putting them all in the main routes file.
|
*/
require app_path() . '/filters.php';
require app_path() . '/config/validators.php';
ini_set('max_execution_time', 60);
DB::disableQueryLog();
//bind hybrid auth to the container
App::bind('Hybrid_Auth', function () {
    return new Hybrid_Auth(app_path() . '/config/hybridauth.php');
});
Event::listen('cron.collectJobs', function () {
    Cron::add('Sitemap', '0 0 2 * *', function () {
        Helpers::createSitemap();
        return null;
    });
});
Пример #4
0
 function add()
 {
     $model = new Cron();
     $model->add();
     $this->redirect('/cron/');
 }
 private function cron()
 {
     \Event::listen('cron.collectJobs', function () {
         /**
          * CRON: Alimentación de cola de producciones
          * DESCRIPCION: Alimenta la cola de producciones que se van a procesar
          * EJECUCION: Cada 3 minutos
          */
         \Cron::add(AutoProcess::CRON_PRODUCTIONS_FEED, '*/3 * * * *', function () {
             if (!AutoProcess::isActived(AutoProcess::CRON_PRODUCTIONS_FEED)) {
                 return "Desactivado";
             }
             $productionFeed = new ProductionFeed();
             //Carga datos de producciones (peliculas) en el repositorio
             $productionFeed->loadRepository();
             //Alimenta la cola de actualizaciones de peliculas
             $productionFeed->feedQueue();
             return count($productionFeed->dataRepository) . " Producciones cargadas en cola";
         });
         /**
          * CRON: Seguimiento de produccion
          * DESCRIPCION: Toma las producciones en cola indicadas y las procesa obtienendo todos los datos de la produccion
          * EJECUCION: Cada minuto
          */
         \Cron::add(AutoProcess::CRON_PRODUCTION_TRACK, '* * * * *', function () {
             if (!AutoProcess::isActived(AutoProcess::CRON_PRODUCTION_TRACK)) {
                 return "Desactivado";
             }
             $queue = QueueProductions::where(QueueProductions::ATTR_DATE_PROCESSED, null)->orderBy(QueueProductions::ATTR_ID, "ASC")->take(1)->get();
             foreach ($queue as $production) {
                 $provider = new ProductionProvider($production->name, $production->link);
                 $production_id = $provider->save();
                 //Indica el registro como procesado. Esto ocasiona que la produccion ya no se vuelva a actualizar, hasta una nueva cola.
                 $production->production_id = $production_id;
                 $production->date_processed = DateUtil::getCurrentTime();
                 $production->save();
                 return $production->name . " Agregado";
             }
             return "Sin cola";
         });
         /**
          * CRON: Seguimiento de persona
          * DESCRIPCION: Toma las personas indicadas y las procesa para obtener todos sus datos
          * EJECUCION: Cada minuto
          */
         \Cron::add(AutoProcess::CRON_PERSON_TRACK, '* * * * *', function () {
             if (!AutoProcess::isActived(AutoProcess::CRON_PERSON_TRACK)) {
                 return "Desactivado";
             }
             $queue = QueuePersons::where(QueuePersons::ATTR_DATE_PROCESSED, null)->orderBy(QueuePersons::ATTR_ID, "DESC")->take(1)->get();
             foreach ($queue as $person) {
                 $provider = new PersonProvider($person->name, $person->link);
                 $provider->save();
                 //Indica el registro como procesado. Esto ocasiona que la produccion ya no se vuelva a actualizar, hasta una nueva cola.
                 $person->date_processed = DateUtil::getCurrentTime();
                 $person->save();
                 return $person->name . " Agregado";
             }
             return "Sin cola";
         });
         /**
          * CRON: Envio de correo de notificacion de producciones disponibles
          * DESCRIPCION: Verifica todos las producciones en seguimientos por parte de los usuarios premium y cuando esten disponibles les envia un correo notificandoles
          * EJECUCION: Cada 12 horas
          */
         \Cron::add(AutoProcess::CRON_USER_PRODUCTION_TRACK_SEND_MAIL, '0 */12 * * *', function () {
             if (!AutoProcess::isActived(AutoProcess::CRON_USER_PRODUCTION_TRACK_SEND_MAIL)) {
                 return "Desactivado";
             }
             //Obtiene todos los usuarios premium
             $users = User::where(User::ATTR_ROLE, User::ROLE_SUSCRIPTOR_PREMIUM)->get();
             foreach ($users as $user) {
                 //Obtiene las producciones que siguen que ya se encuentran disponibles y que no sean notificado por correo
                 $productions = $user->tracks()->wherePivot(User::ATTR_TRACK_PIVOT_MAILED, 0)->where(Production::ATTR_STATE, Production::STATE_ACTIVE)->get();
                 if (count($productions) == 0) {
                     continue;
                 }
                 if (count($productions) > 1) {
                     $description_email = "<p>Este mensaje es para informate que varias producciones que te gustaria ver en nuestra plataforma ya se encuentran disponibles y las puedes ver cuando quieras.</p>" . "<div style='text-align:center;'>" . "<h2>Nuevas producciones disponibles para ti</h2>" . "</div>" . "<div style='text-align:center;'>";
                 } else {
                     $description_email = "<p>Este mensaje es para informate que una producción que te gustaria ver en nuestra plataforma ya se encuentran disponible y la puede ver cuando quieras.</p>" . "<div style='text-align:center;'>" . "<h2>Nueva producción disponible para ti</h2>" . "</div>" . "<div style='text-align:center;'>";
                 }
                 foreach ($productions as $production) {
                     //Notifica las producciones disponibles asociadas
                     $description_email .= "<a href='" . AutoProcess::URL_SITE . "production/" . $production->slug . "'><img width='192px' height='289px' style='margin: 0px 10px;' src='" . $production->image . "'></a>";
                     $production->pivot->mailed = 1;
                     $production->pivot->save();
                 }
                 $description_email .= "</div>";
                 //Envia el correo de notificacion del usuario
                 $email = new Email(count($productions) > 1 ? "¡Hay varias producciones que te gustaria ver que ya estan disponible!" : "¡Una producción que te gustaria ver ya esta disponible!", $user[User::ATTR_EMAIL], [Email::VAR_NAME => $user->name, Email::VAR_DESCRIPTION => $description_email]);
                 $email->queue();
             }
             return "Notificaciones realizadas (Si aplican)";
         });
         /**
          * CRON: Genera el sitemap.xml del sitio
          * EJECUCION: Cada Semana
          */
         \Cron::add(AutoProcess::CRON_GENERATE_SITEMAP, '0 0 * * 0', function () {
             //Url standards del sitio web
             $urls = array(AutoProcess::URL_SITE, AutoProcess::URL_SITE . "doc/terms", AutoProcess::URL_SITE . "doc/privacypolicy", AutoProcess::URL_SITE . "doc/cookies-policy", AutoProcess::URL_SITE . "doc/help", AutoProcess::URL_SITE . "catalogue");
             $file = fopen(public_path("sitemap.xml"), "w");
             fwrite($file, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" . PHP_EOL);
             fwrite($file, "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"> " . PHP_EOL);
             for ($i = 0; $i < count($urls); $i++) {
                 fwrite($file, "<url><loc>" . $urls[$i] . "</loc></url>" . PHP_EOL);
             }
             //Inserta las url de cada persona
             $persons = \App\System\Models\Person::whereNotNull(Person::ATTR_BIOGRAPHY)->get();
             foreach ($persons as $person) {
                 fwrite($file, "<url><loc>" . AutoProcess::URL_SITE . "person/" . $person->slug . "</loc></url>" . PHP_EOL);
             }
             //Inserta las url de todas las producciones
             $productions = Production::all();
             foreach ($productions as $production) {
                 fwrite($file, "<url><loc>" . AutoProcess::URL_SITE . "production/" . $production->slug . "</loc></url>" . PHP_EOL);
             }
             fwrite($file, "</urlset>" . PHP_EOL);
             fclose($file);
             return "Sitemap.xml generado (" . count($persons) . " Personas) (" . count($productions) . " Producciones)";
         });
         /**
          * CRON: Publica automaticamente una produccion programada
          * EJECUCION: Cada hora
          */
         \Cron::add(AutoProcess::CRON_PRODUCTION_AUTO_PUBLISH, '0 */4 * * *', function () {
             $productions = Production::where(Production::ATTR_STATE, Production::STATE_PROGRAMMED)->orderBy(Production::ATTR_UPDATED_AT, "ASC")->take(1)->get();
             foreach ($productions as $production) {
                 $production->state = Production::STATE_ACTIVE;
                 $production->save();
                 return $production->title . " Publicado";
             }
             return "No hay producciones programadas";
         });
     });
 }
Пример #6
0
});
/*
|--------------------------------------------------------------------------
| Require The Filters File
|--------------------------------------------------------------------------
|
| Next we will load the filters file for the application. This gives us
| a nice separate location to store our route and application filter
| definitions instead of putting them all in the main routes file.
|
*/
require app_path() . '/filters.php';
/*
|--------------------------------------------------------------------------
| Lieberg Cron Jobs
|--------------------------------------------------------------------------
|	this will help us excute all our cron job functions
| 	
| 
| 
|
*/
Event::listen('cron.collectJobs', function () {
    Cron::add('update', '* * * * *', function () {
        // Do some crazy things unsuccessfully every minute
        $orders = Order::where('activity', '=', '0')->delete();
        return true;
    });
    Cron::setEnableJob('update');
    $report = Cron::run();
});
Пример #7
0
<?php

Event::listen('cron.collectJobs', function () {
    Cron::add('daily new churches notification', $_ENV['CRON_DAILY'], function () {
        $churches = Church::yesterday();
        if ($churches && $churches->count() > 0) {
            $data['churches'] = $churches;
            Mail::send('emails.dailynewchurches', $data, function ($message) {
                // michhsin@ccea.org.tw
                $message->to('*****@*****.**', '一領一禱告認領同工')->subject('一領一禱告認領:新加入教會通知 ' . date('Y/m/d'))->bcc('*****@*****.**', 'lancetw');
            });
        }
    }, true);
});
/*
|--------------------------------------------------------------------------
| Register The Laravel Class Loader
|--------------------------------------------------------------------------
|
| In addition to using Composer, you may use the Laravel class loader to
| load your controllers and models. This is useful for keeping all of
| your classes in the "global" namespace without Composer updating.
|
*/
ClassLoader::addDirectories(array(app_path() . '/commands', app_path() . '/controllers', app_path() . '/models', app_path() . '/database/seeds'));
/*
|--------------------------------------------------------------------------
| Application Error Logger
|--------------------------------------------------------------------------
|
| Here we will configure the error logger setup for the application which
Пример #8
0
        Sync::sync('StageMove', Config::get('larafuse::syncStageLimit'));
        Sync::sync('JobRecurringInstance', Config::get('larafuse::syncStageLimit'));
        return null;
    });
    Cron::add('Sync Order Group', Config::get('larafuse::syncOrderGroupTime'), function () {
        Sync::syncOrderGroup(Config::get('larafuse::syncOrderLimit'));
        return null;
    });
    Cron::add('Sync One', Config::get('larafuse::syncOneTime'), function () {
        Sync::sync('Referral', Config::get('larafuse::syncOneLimit'));
        Sync::sync('Campaignee', Config::get('larafuse::syncOneLimit'));
        Sync::sync('FileBox', Config::get('larafuse::syncOneLimit'));
        return null;
    });
    Cron::add('Sync Missing', Config::get('larafuse::syncMissingTime'), function () {
        Sync::syncMissing();
        return null;
    });
    $report = Cron::run();
    print_r($report);
});
Route::group(array('prefix' => 'larafuse'), function () {
    Route::get('/test', function () {
        return Fuse::dsQuery('Product', 1, 0, ['Id' => '%'], ['Id', 'ProductName']);
    });
    Route::get('fetch/rowcount', function () {
        return Fetch::getRowCount();
    });
    Route::get('fetch/{table?}', 'Sairiz\\Larafuse\\Controllers\\LarafuseController@fetch');
    Route::get('fetchid/{table}/{Id}', 'Sairiz\\Larafuse\\Controllers\\LarafuseController@fetchId');
    Route::get('fetchtable/{table}/{page?}/{continue?}', 'Sairiz\\Larafuse\\Controllers\\LarafuseController@fetchTable');
    Route::get('syncmissing/{table?}', 'Sairiz\\Larafuse\\Controllers\\LarafuseController@syncMissing');
Пример #9
0
        $files = File::files($directory);
        if (!empty($files)) {
            foreach ($files as $file) {
                $xml = (array) simplexml_load_file($file);
                $save = $doc->updateMetadata($xml, null, true);
            }
        }
    });
    $servers = Server::all();
    foreach ($servers as $server) {
        /**
         * Pull file from remote servers periodically
         * Depends on each server schedule configuration
         */
        Cron::add($server['jobname'], $server['schedule'], function () use($server) {
            exec('rsync -a -e "ssh -p 2222" ' . $server['hostname'] . '@' . $server['address'] . ':' . $server['directory'] . ' ' . $_ENV['SYNC_DIRECTORY']);
        });
        /**
         * Sync metadata.xsd (push)
         */
        // Cron::add("schema", $_ENV['SCHEMA_SYNC_SCHEDULE'], function() use ($server) {
        //   exec('rsync -a -e "ssh -p 2222" '.$_ENV['SYNC_DIRECTORY'].' '.$server['hostname'].'@'.$server['address'].':public');
        // });
    }
});
/*
|--------------------------------------------------------------------------
| Require The Filters File
|--------------------------------------------------------------------------
|
| Next we will load the filters file for the application. This gives us