public function setUp()
 {
     Carbon::setTestNow(Carbon::createFromTimeStampUTC(123));
     $this->claimFactory = Mockery::mock('Tymon\\JWTAuth\\Claims\\Factory');
     $this->validator = Mockery::mock('Tymon\\JWTAuth\\Validators\\PayloadValidator');
     $this->factory = new PayloadFactory($this->claimFactory, Request::create('/foo', 'GET'), $this->validator);
 }
Example #2
0
 public function setUp()
 {
     Carbon::setTestNow(Carbon::createFromTimeStampUTC(123));
     $claims = [new Subject(1), new Issuer('http://example.com'), new Expiration(123 + 3600), new NotBefore(123), new IssuedAt(123), new JwtId('foo')];
     $this->validator = Mockery::mock('Tymon\\JWTAuth\\Validators\\PayloadValidator');
     $this->validator->shouldReceive('setRefreshFlow->check');
     $this->payload = new Payload($claims, $this->validator);
 }
Example #3
0
 public function setUp()
 {
     Carbon::setTestNow(Carbon::createFromTimeStampUTC(123));
     $this->storage = Mockery::mock('Tymon\\JWTAuth\\Contracts\\Providers\\Storage');
     $this->blacklist = new Blacklist($this->storage);
     $this->validator = Mockery::mock('Tymon\\JWTAuth\\Validators\\PayloadValidator');
     $this->validator->shouldReceive('setRefreshFlow->check');
 }
 public static function getToken($jwt)
 {
     $key = config('jwt.secret');
     $notBefore = config('jwt.nbf');
     $expire = config('jwt.exp') / 60;
     $assets = JWT::decode($jwt, $key, true);
     $issuedAt = Carbon::createFromTimeStampUTC($assets->iat)->toDateTimeString();
     // $assets->iat->diffForHumans();
     if (time() < $assets->nbf) {
         throw new Exception("The Token will begin to be valid {$notBefore} seconds after being issued at {$issuedAt}.");
     }
     if ($assets->exp < time()) {
         throw new Exception("The Token was expired. This token was create at {$issuedAt}, and will be expired after {$expire} minutes.");
     }
     return $assets->data;
 }
 public function setUp()
 {
     Carbon::setTestNow(Carbon::createFromTimeStampUTC(123));
     $this->jws = Mockery::mock('Namshi\\JOSE\\JWS');
     $this->provider = new NamshiAdapter('secret', 'HS256', $this->jws);
 }
 public function setUp()
 {
     Carbon::setTestNow(Carbon::createFromTimeStampUTC(123));
     $this->validator = new PayloadValidator();
 }
Example #7
0
<?php

use Carbon\Carbon;
add_shortcode('post-parent-title', function ($atts) {
    $parent_id = get_post_meta(get_the_ID(), '_wpcf_belongs_publisher_id', true);
    $post = get_post($parent_id);
    return $post->post_title;
});
add_shortcode('post-parent-url', function ($atts) {
    $parent_id = get_post_meta(get_the_ID(), '_wpcf_belongs_publisher_id', true);
    return get_permalink($parent_id);
});
add_shortcode('child-count', function ($atts) {
    $args = array('posts_per_page' => 5, 'post_type' => 'episode', 'meta_query' => array(array('key' => '_wpcf_belongs_publisher_id', 'value' => get_the_ID())));
    $myquery = new WP_Query($args);
    return $myquery->found_posts;
});
add_shortcode('ago', function ($atts) {
    $dt = get_post_meta(get_the_ID(), 'wpcf-episode-publish-date', true);
    $dt = Carbon::createFromTimeStampUTC($dt);
    return $dt->toFormattedDateString();
});
Example #8
0
 /**
  * Get the Carbon instance for the timestamp.
  *
  * @param  int  $timestamp
  * @return \Carbon\Carbon
  */
 public static function timestamp($timestamp)
 {
     return Carbon::createFromTimeStampUTC($timestamp);
 }
Example #9
0
 function publish_date()
 {
     $dt = Carbon::createFromTimeStampUTC($this->_meta('publish_date'));
     return $dt;
 }
Example #10
0
 /**
  * Execute the console command.
  *
  * @return void
  */
 public function handle()
 {
     pcntl_signal(SIGINT, [$this, 'handleInterrupt']);
     $mlpmaPath = Config::get('ponyfm.files_directory') . '/mlpma';
     $tmpPath = Config::get('ponyfm.files_directory') . '/tmp';
     if (!File::exists($tmpPath)) {
         File::makeDirectory($tmpPath);
     }
     $UNKNOWN_GENRE = Genre::firstOrCreate(['name' => 'Unknown', 'slug' => 'unknown']);
     $this->comment('Enumerating MLP Music Archive source files...');
     $files = File::allFiles($mlpmaPath);
     $this->info(sizeof($files) . ' files found!');
     $this->comment('Enumerating artists...');
     $artists = File::directories($mlpmaPath);
     $this->info(sizeof($artists) . ' artists found!');
     $this->comment('Importing tracks...');
     $totalFiles = sizeof($files);
     $fileToStartAt = (int) $this->option('startAt') - 1;
     $this->comment("Skipping {$fileToStartAt} files..." . PHP_EOL);
     $files = array_slice($files, $fileToStartAt);
     $this->currentFile = $fileToStartAt;
     foreach ($files as $file) {
         $this->currentFile++;
         pcntl_signal_dispatch();
         if ($this->isInterrupted) {
             break;
         }
         $this->comment('[' . $this->currentFile . '/' . $totalFiles . '] Importing track [' . $file->getFilename() . ']...');
         if (in_array($file->getExtension(), $this->ignoredExtensions)) {
             $this->comment('This is not an audio file! Skipping...' . PHP_EOL);
             continue;
         }
         // Has this track already been imported?
         $importedTrack = DB::table('mlpma_tracks')->where('filename', '=', $file->getFilename())->first();
         if ($importedTrack) {
             $this->comment('This track has already been imported! Skipping...' . PHP_EOL);
             continue;
         }
         //==========================================================================================================
         // Extract the original tags.
         //==========================================================================================================
         $getId3 = new getID3();
         // all tags read by getID3, including the cover art
         $allTags = $getId3->analyze($file->getPathname());
         // tags specific to a file format (ID3 or Atom), pre-normalization but with cover art removed
         $rawTags = [];
         // normalized tags used by Pony.fm
         $parsedTags = [];
         if (Str::lower($file->getExtension()) === 'mp3') {
             list($parsedTags, $rawTags) = $this->getId3Tags($allTags);
         } elseif (Str::lower($file->getExtension()) === 'm4a') {
             list($parsedTags, $rawTags) = $this->getAtomTags($allTags);
         } elseif (Str::lower($file->getExtension()) === 'ogg') {
             list($parsedTags, $rawTags) = $this->getVorbisTags($allTags);
         } elseif (Str::lower($file->getExtension()) === 'flac') {
             list($parsedTags, $rawTags) = $this->getVorbisTags($allTags);
         } elseif (Str::lower($file->getExtension()) === 'wav') {
             list($parsedTags, $rawTags) = $this->getAtomTags($allTags);
         }
         //==========================================================================================================
         // Determine the release date.
         //==========================================================================================================
         $modifiedDate = Carbon::createFromTimeStampUTC(File::lastModified($file->getPathname()));
         $taggedYear = $parsedTags['year'];
         $this->info('Modification year: ' . $modifiedDate->year);
         $this->info('Tagged year: ' . $taggedYear);
         if ($taggedYear !== null && $modifiedDate->year === $taggedYear) {
             $releasedAt = $modifiedDate;
         } elseif ($taggedYear !== null && Str::length((string) $taggedYear) !== 4) {
             $this->error('This track\'s tagged year makes no sense! Using the track\'s last modified date...');
             $releasedAt = $modifiedDate;
         } elseif ($taggedYear !== null && $modifiedDate->year !== $taggedYear) {
             $this->error('Release years don\'t match! Using the tagged year...');
             $releasedAt = Carbon::create($taggedYear);
         } else {
             // $taggedYear is null
             $this->error('This track isn\'t tagged with its release year! Using the track\'s last modified date...');
             $releasedAt = $modifiedDate;
         }
         // This is later used by the classification/publishing script to determine the publication date.
         $parsedTags['released_at'] = $releasedAt->toDateTimeString();
         //==========================================================================================================
         // Does this track have vocals?
         //==========================================================================================================
         $isVocal = $parsedTags['lyrics'] !== null;
         //==========================================================================================================
         // Fill in the title tag if it's missing.
         //==========================================================================================================
         if (!$parsedTags['title']) {
             $parsedTags['title'] = $file->getBasename('.' . $file->getExtension());
         }
         //==========================================================================================================
         // Determine the genre.
         //==========================================================================================================
         $genreName = $parsedTags['genre'];
         $genreSlug = Str::slug($genreName);
         $this->info('Genre: ' . $genreName);
         if ($genreName && $genreSlug !== '') {
             $genre = Genre::where('name', '=', $genreName)->first();
             if ($genre) {
                 $genreId = $genre->id;
             } else {
                 $genre = new Genre();
                 $genre->name = $genreName;
                 $genre->slug = $genreSlug;
                 $genre->save();
                 $genreId = $genre->id;
                 $this->comment('Created a new genre!');
             }
         } else {
             $genreId = $UNKNOWN_GENRE->id;
             // "Unknown" genre ID
         }
         //==========================================================================================================
         // Determine which artist account this file belongs to using the containing directory.
         //==========================================================================================================
         $this->info('Path to file: ' . $file->getRelativePath());
         $path_components = explode(DIRECTORY_SEPARATOR, $file->getRelativePath());
         $artist_name = $path_components[0];
         $album_name = array_key_exists(1, $path_components) ? $path_components[1] : null;
         $this->info('Artist: ' . $artist_name);
         $this->info('Album: ' . $album_name);
         $artist = User::where('display_name', '=', $artist_name)->first();
         if (!$artist) {
             $artist = new User();
             $artist->display_name = $artist_name;
             $artist->email = null;
             $artist->is_archived = true;
             $artist->slug = Str::slug($artist_name);
             $slugExists = User::where('slug', '=', $artist->slug)->first();
             if ($slugExists) {
                 $this->error('Horsefeathers! The slug ' . $artist->slug . ' is already taken!');
                 $artist->slug = $artist->slug . '-' . Str::random(4);
             }
             $artist->save();
         }
         //==========================================================================================================
         // Extract the cover art, if any exists.
         //==========================================================================================================
         $this->comment('Extracting cover art!');
         $coverId = null;
         if (array_key_exists('comments', $allTags) && array_key_exists('picture', $allTags['comments'])) {
             $image = $allTags['comments']['picture'][0];
             if ($image['image_mime'] === 'image/png') {
                 $extension = 'png';
             } elseif ($image['image_mime'] === 'image/jpeg') {
                 $extension = 'jpg';
             } elseif ($image['image_mime'] === 'image/gif') {
                 $extension = 'gif';
             } else {
                 $this->error('Unknown cover art format!');
             }
             // write temporary image file
             $imageFilename = $file->getFilename() . ".cover.{$extension}";
             $imageFilePath = "{$tmpPath}/" . $imageFilename;
             File::put($imageFilePath, $image['data']);
             $imageFile = new UploadedFile($imageFilePath, $imageFilename, $image['image_mime']);
             $cover = Image::upload($imageFile, $artist);
             $coverId = $cover->id;
         } else {
             $this->comment('No cover art found!');
         }
         //==========================================================================================================
         // Is this part of an album?
         //==========================================================================================================
         $albumId = null;
         $albumName = $parsedTags['album'];
         if ($albumName !== null) {
             $album = Album::where('user_id', '=', $artist->id)->where('title', '=', $albumName)->first();
             if (!$album) {
                 $album = new Album();
                 $album->title = $albumName;
                 $album->user_id = $artist->id;
                 $album->cover_id = $coverId;
                 $album->save();
             }
             $albumId = $album->id;
         }
         //==========================================================================================================
         // Save this track.
         //==========================================================================================================
         // "Upload" the track to Pony.fm
         $this->comment('Transcoding the track!');
         Auth::loginUsingId($artist->id);
         $trackFile = new UploadedFile($file->getPathname(), $file->getFilename(), $allTags['mime_type']);
         Input::instance()->files->add(['track' => $trackFile]);
         $upload = new UploadTrackCommand(true, true);
         $result = $upload->execute();
         if ($result->didFail()) {
             $this->error(json_encode($result->getMessages(), JSON_PRETTY_PRINT));
         } else {
             // Save metadata.
             $track = Track::find($result->getResponse()['id']);
             $track->title = $parsedTags['title'];
             $track->cover_id = $coverId;
             $track->album_id = $albumId;
             $track->genre_id = $genreId;
             $track->track_number = $parsedTags['track_number'];
             $track->released_at = $releasedAt;
             $track->description = $parsedTags['comments'];
             $track->is_downloadable = true;
             $track->lyrics = $parsedTags['lyrics'];
             $track->is_vocal = $isVocal;
             $track->license_id = 2;
             $track->save();
             // If we made it to here, the track is intact! Log the import.
             DB::table('mlpma_tracks')->insert(['track_id' => $result->getResponse()['id'], 'path' => $file->getRelativePath(), 'filename' => $file->getFilename(), 'extension' => $file->getExtension(), 'imported_at' => Carbon::now(), 'parsed_tags' => json_encode($parsedTags), 'raw_tags' => json_encode($rawTags)]);
         }
         echo PHP_EOL . PHP_EOL;
     }
 }