Просмотр поста

.
Koenig
(\/)____o_O____(\/)

ramzes, тебе отдельно код для теста

методы (+/-)

protected function mp3Player($mp3) {
        return '<span class="green"><audio controls><source src="' . $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['SERVER_NAME'] . '/files/mp3/' . basename($mp3) . '"></audio></span>';
    }
    
    protected function downloadMp3($mp3) 
    {
        $dir = ROOT_PATH . 'files/mp3';
        if (!is_dir($dir)) {
            mkdir($dir, '0777', 1);
        } 
        
        $headers = get_headers($mp3, 1);
        $newfile = md5($mp3) . '.mp3'; // START_TIME
        
        if (!file_exists($dir . DIRECTORY_SEPARATOR . $newfile)) {
            if ($headers['Content-Type'] == 'audio/mpeg') {
                $uploadfil = new \SplFileObject($mp3, 'rb');
                $file = new \SplFileObject($dir . DIRECTORY_SEPARATOR . $newfile, 'w');
                $file->setFlags(\SplFileObject::SKIP_EMPTY);
                if ($file->flock(LOCK_EX)) { 
                    $file->ftruncate(0);
                    while (!$uploadfil->eof()) {
                        $file->fwrite($uploadfil->fgets());
                    }
                } 
                $file->flock(LOCK_UN);
            }
        }
        
        return (file_exists($dir . DIRECTORY_SEPARATOR . $newfile) ? $dir . DIRECTORY_SEPARATOR . $newfile : false);
    }
    
    protected function mp3($var) 
    {
        return preg_replace_callback(
            '#\[mp3](.+?)\[/mp3]#is',
            function ($matches) {
                $path = $this->downloadMp3(trim($matches[1]));
                return $path ? $this->mp3Player($path) : false;
            }, 
            $var,
            3
        );
    }