Skip to content
Snippets Groups Projects
media_helper.php 1.97 KiB
Newer Older
  • Learn to ignore specific revisions
  • /**
     * @copyright  2020 Podlibre
     * @license    https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
     * @link       https://castopod.org/
     */
    
    /**
     * Saves a file to the corresponding podcast folder in `public/media`
     *
    
     * @param \CodeIgniter\HTTP\Files\UploadedFile|\CodeIgniter\Files\File $file
    
     * @param string $podcast_name
     * @param string $file_name
     *
    
     * @return string The episode's file path in media root
    
     */
    function save_podcast_media($file, $podcast_name, $media_name)
    {
    
        $file_name = $media_name . '.' . $file->getExtension();
    
    
        $mediaRoot = config('App')->mediaRoot;
    
        if (!file_exists($mediaRoot . '/' . $podcast_name)) {
            mkdir($mediaRoot . '/' . $podcast_name, 0777, true);
            touch($mediaRoot . '/' . $podcast_name . '/index.html');
    
    
        // move to media folder and overwrite file if already existing
    
        $file->move($mediaRoot . '/' . $podcast_name . '/', $file_name, true);
    
    
        return $podcast_name . '/' . $file_name;
    }
    
    
    function download_file($fileUrl)
    {
        $tmpFilename =
            time() .
            '_' .
            bin2hex(random_bytes(10)) .
            '.' .
            pathinfo($fileUrl, PATHINFO_EXTENSION);
        $tmpFilePath = WRITEPATH . 'uploads/' . $tmpFilename;
        file_put_contents($tmpFilePath, file_get_contents($fileUrl));
    
        return new \CodeIgniter\Files\File($tmpFilePath);
    }
    
    
    /**
     * Prefixes the root media path to a given uri
     *
     * @param  mixed  $uri      URI string or array of URI segments
     * @return string
     */
    function media_path($uri = ''): string
    {
        // convert segment array to string
        if (is_array($uri)) {
            $uri = implode('/', $uri);
        }
        $uri = trim($uri, '/');
    
        return config('App')->mediaRoot . '/' . $uri;
    }
    
    
    /**
     * Return the media base URL to use in views
     *
     * @param  mixed  $uri      URI string or array of URI segments
     * @param  string $protocol
     * @return string
     */
    function media_url($uri = '', string $protocol = null): string
    {
        return base_url(config('App')->mediaRoot . '/' . $uri, $protocol);
    }