public static function firstVersion($action) { return Version::query()->where('action', 'LIKE', $action)->where('is_active', '=', 1)->orderByRaw('RAND()')->first(); }
/** * 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.'); } } }