예제 #1
0
 public static function firstVersion($action)
 {
     return Version::query()->where('action', 'LIKE', $action)->where('is_active', '=', 1)->orderByRaw('RAND()')->first();
 }
예제 #2
0
파일: Mail.php 프로젝트: frenchfrogs/mail
 /**
  *  Verify view updates for mail Versions
  */
 public static function checkForUpdate()
 {
     // recuperation du path des views de mail
     // @TODO voir pour une constante
     $root = base_path() . '/resources/views/mail/';
     // on récupère les versions active
     $rowset = \DB::table('mail_version')->where('is_active', '=', 1)->get();
     $mail = [];
     foreach ($rowset as $row) {
         $mail[sprintf('%s%s.blade.php', $root, substr(strrchr($row['view_name'], '.'), 1))] = $row;
     }
     // on verifie le hash de chaque fichier pour voir s'il a changé
     foreach ($mail as $file => $data) {
         // on verifie si le fichier existe
         if (file_exists($file)) {
             $hash = md5_file($file);
             $version = \DB::table('mail_version')->where('mail_version_id', '=', $data['mail_version_id']);
             unset($data['created_at'], $data['updated_at']);
             // si le hash est different
             if ($data['view_hash'] != $hash) {
                 $data['view_hash'] = $hash;
                 if (!empty($version->first()['view_hash'])) {
                     // si un hash est déjà en base on le remplace en mettant à jour le numéro de version
                     $data['mail_version_id'] = uuid();
                     $data['version_number'] += 1;
                     Version::create($data);
                     // on met à jour les mail utilisant la version
                     \DB::table('mail')->where('mail_version_id', '=', $version->first()['mail_version_id'])->update(['mail_version_id' => $data['mail_version_id']]);
                     // on désactive l'ancienne version
                     $version->update(['is_active' => 0]);
                 } else {
                     // sinon on l'ajoute simplement
                     \DB::beginTransaction(function () use($data, $version) {
                         $version->update($data);
                     });
                 }
             }
         } else {
             throw new \Exception($file . ' no found.');
         }
     }
 }