Skip to content
Snippets Groups Projects
file_helper.php 1.25 KiB
Newer Older
  • Learn to ignore specific revisions
  • <?php
    /**
     * @copyright  2020 Podlibre
     * @license    https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
     * @link       https://castopod.org/
     */
    
    use JamesHeinrich\GetID3\GetID3;
    
    /**
     * Saves a file to the corresponding podcast folder in `public/media`
     *
     * @param UploadedFile $file
     * @param string $podcast_name
     * @param string $file_name
     *
     * @return string The absolute path of the file
     */
    function save_podcast_media($file, $podcast_name, $file_name)
    {
        $image_storage_folder = 'media/' . $podcast_name . '/';
    
        // overwrite file if already existing
        $file->move($image_storage_folder, $file_name, true);
    
        return $image_storage_folder . $file_name;
    }
    
    /**
     * Gets audio file metadata and ID3 info
     *
     * @param UploadedFile $file
     *
     * @return array
     */
    function get_file_metadata($file)
    {
        if (!$file->isValid()) {
            throw new RuntimeException(
                $file->getErrorString() . '(' . $file->getError() . ')'
            );
        }
    
        $getID3 = new GetID3();
        $FileInfo = $getID3->analyze($file);
    
        return [
            'cover_picture' => $FileInfo['comments']['picture'][0]['data'],
            'filesize' => $FileInfo['filesize'],
            'mime_type' => $FileInfo['mime_type'],
            'playtime_seconds' => $FileInfo['playtime_seconds'],
        ];
    }