示例#1
0
 // rights sections
 $smarty->assign('RIGHTS', $prg->getAssociatedObjects('sotf_rights', 'start_time'));
 // audio files
 $audioFiles = $prg->getAssociatedObjects('sotf_media_files', 'main_content DESC, filename');
 $to = count($audioFiles);
 for ($i = 0; $i < $to; $i++) {
     if ($prg->isLocal()) {
         // if local, we check if file disappeared in the meantime
         $path = $prg->getFilePath($audioFiles[$i]);
         if (!is_readable($path)) {
             debug("DISAPPEARED FILE", $path);
             unset($audioFiles[$i]);
             continue;
         }
     }
     $audioFiles[$i] = array_merge($audioFiles[$i], sotf_AudioFile::decodeFormatFilename($audioFiles[$i]['format']));
     $audioFiles[$i]['playtime_string'] = strftime('%M:%S', $audioFiles[$i]['play_length']);
 }
 $smarty->assign('AUDIO_FILES', $audioFiles);
 // other files
 $otherFiles = $prg->getAssociatedObjects('sotf_other_files', 'filename');
 $smarty->assign('OTHER_FILES', $otherFiles);
 // links
 $smarty->assign('LINKS', $prg->getAssociatedObjects('sotf_links', 'caption'));
 // referencing portals
 $smarty->assign('REFS', $prg->getRefs());
 // statistics
 $smarty->assign('STATS', $prg->getStats());
 // add this visit to statistics
 $prg->addStat('', "visits");
 // rating
示例#2
0
function selectAudioVideo(&$prg)
{
    global $config;
    $files = $prg->listAudioFiles('TRUE', 'kbps DESC');
    if (is_array($files)) {
        foreach ($files as $f) {
            if ($f['download_access'] == 't') {
                /* sun 8.2.06 added to format properly the enclosure url --rama */
                $station = sotf_Utils::makeValidName($prg->get('station'), 23);
                $series = sotf_Utils::makeValidName($prg->get('series'), 23);
                $title = sotf_Utils::makeValidName($prg->get('title'), 30);
                if ($station != "" && $series != "" && $title != "") {
                    $fname = "{$station}-{$series}-{$title}";
                } elseif ($station != "" && $title != "") {
                    $fname = "{$station}-{$title}";
                } elseif ($title != "") {
                    $fname = $title;
                }
                /* end properly format enclosure url */
                //$f['url'] = $config['rootUrl'] . '/getFile.php/' . $f['filename'] . '?audio=1&id=' . $prg->id . '&filename=' . $f['filename'];
                //$f['url'] = $config['rootUrl'] . '/getFile.php?audio=1&id=' . $prg->id . '&filename=' . $f['filename'];
                $baseUrl = sotf_Node::getHomeNodeRootUrl($prg);
                //$f['url'] = $baseUrl . '/getFile.php/fid__' . $f['id'].".mp3"; // wreutz: very dirty hack for ipooder to work on os x
                //MODIFIED BY Martin Schmidt
                $f = array_merge($f, sotf_AudioFile::decodeFormatFilename($f['format']));
                if ($prg->isVideoPrg() && $f['format'] == "mp4") {
                    //echo "drinnen";
                    $f['url'] = $baseUrl . '/getFile.php/' . 'fid__' . $f['id'] . '__' . $fname . ".mp4";
                    return $f;
                } else {
                    if ($prg->isAudioPrg()) {
                        $f['url'] = $baseUrl . '/getFile.php/' . 'fid__' . $f['id'] . '__' . $fname . ".mp3";
                        //rjankowski changed order to get parsed by getFile.php
                        return $f;
                    }
                }
                //////////////////////////
                // rama: included $fname as formatted name $station-$series-$title
            }
        }
    }
    /*
    if(!$retval and is_array($files)) {
    	 foreach($files as $f) {
    		if($f['stream_access']=='t') {
    		  $f['url'] = $config['rootUrl'] . '/listen.php?id=' . $prg->id . '&fileid=' . $f['id'];
    		  return $f;
    		}
    	 }
    }
    */
    return NULL;
}
 function saveFileInfo($filepath, $mainContent = false)
 {
     global $db;
     // convert boolean into pgsql format
     if ($mainContent) {
         $mainContent = 'true';
     } else {
         $mainContent = 'false';
     }
     // get audio properties of file
     $file = new sotf_AudioFile($filepath);
     // find if this is an existing file
     if ($file->isAudio()) {
         $fileInfo = new sotf_NodeObject('sotf_media_files');
     } else {
         $fileInfo = new sotf_NodeObject('sotf_other_files');
     }
     $fileInfo->set("prog_id", $this->id);
     $fileInfo->set("filename", $file->name);
     $fileInfo->find();
     // save file info into database
     if ($file->isAudio()) {
         $fileInfo->set('play_length', round($file->duration));
         $fileInfo->set('type', $file->type);
         if (is_numeric($file->bitrate)) {
             // constant bitrate
             $fileInfo->set('kbps', round($file->bitrate));
             $fileInfo->set('vbr', 'f');
         } else {
             // variable bitrate
             $fileInfo->set('kbps', round($file->average_bitrate));
             $fileInfo->set('vbr', 't');
         }
         $fileInfo->set('format', $file->getFormatFilename());
         $fileInfo->set('main_content', $mainContent);
     }
     $fstat = stat($filepath);
     $fileInfo->set('filesize', $fstat['size']);
     $fileInfo->set('last_modified', $db->getTimestampTz($fstat['mtime']));
     $fileInfo->set('mime_type', $file->mimetype);
     $success = $fileInfo->save();
     //if(!$success)
     //	raiseError("could not write into database");
     // change id3 tags in file
     $this->saveID3($file);
     return $fileInfo->id;
 }
 /**
  * Sets jingle of the station.
  * @use	$config['audioFormats']
  */
 function setJingle($filename, $copy = false)
 {
     global $config, $page;
     $source = $filename;
     if (!is_file($source)) {
         raiseError("no such file: {$source}");
     }
     $srcFile = new sotf_AudioFile($source);
     $target = $this->getMetaDir() . '/jingle_' . $srcFile->getFormatFilename();
     debug("jingle file", $target);
     if ($srcFile->type != 'audio') {
         raiseError("this is not an audio file");
     }
     if (is_file($target)) {
         raiseError($page->getlocalized('format_already_present'));
     }
     if ($copy) {
         $success = copy($source, $target);
     } else {
         $success = rename($source, $target);
     }
     if (!$success) {
         raiseError("could not copy/move {$source}");
     }
     return true;
     //TODO? save into database
 }
 function saveFileInfo($filepath, $mainContent = false)
 {
     global $db;
     // convert boolean into pgsql format
     if ($mainContent) {
         $mainContent = 'true';
     } else {
         $mainContent = 'false';
     }
     // get audio properties of file
     $file = new sotf_AudioFile($filepath);
     //ADDED BY BUDDHAFLY 06-02-20
     if ($file->isVideo()) {
         $file = new sotf_VideoFile($filepath);
     }
     //--------------------------
     // find if this is an existing file
     if ($file->isAudio() || $file->isVideo()) {
         //CHANGED BY BUDDHAFLY 06-02-20
         $fileInfo = new sotf_NodeObject('sotf_media_files');
     } else {
         $fileInfo = new sotf_NodeObject('sotf_other_files');
     }
     $fileInfo->set("prog_id", $this->id);
     $fileInfo->set("filename", $file->name);
     $fileInfo->find();
     // save file info into database
     //ADDED BY BUDDHAFLY 06-02-20
     if ($file->isVideo()) {
         $fileInfo->set('play_length', round($file->duration));
         $fileInfo->set('type', $file->type);
         if (is_numeric($file->bitrate)) {
             // constant bitrate
             $fileInfo->set('kbps', round($file->bitrate));
             $fileInfo->set('vbr', 'f');
         } else {
             // variable bitrate
             $fileInfo->set('kbps', round($file->average_bitrate));
             $fileInfo->set('vbr', 't');
         }
         $fileInfo->set('format', $file->getFormatFilename());
         $fileInfo->set('main_content', $mainContent);
         $fileInfo->set('codec', $file->codec);
         $fileInfo->set('frame_rate', $file->frame_rate);
         $fileInfo->set('resolution_x', $file->resolution_x);
         $fileInfo->set('resolution_y', $file->resolution_y);
         $fileInfo->set('pixel_aspect_ratio', $file->pixel_aspect_ratio);
         //manage access rights for video
         $fileInfo->set('download_access', 't');
         $fileInfo->set('stream_access', 'f');
     } else {
         if ($file->isAudio()) {
             $fileInfo->set('play_length', round($file->duration));
             $fileInfo->set('type', $file->type);
             if (is_numeric($file->bitrate)) {
                 // constant bitrate
                 $fileInfo->set('kbps', round($file->bitrate));
                 $fileInfo->set('vbr', 'f');
             } else {
                 // variable bitrate
                 $fileInfo->set('kbps', round($file->average_bitrate));
                 $fileInfo->set('vbr', 't');
             }
             $fileInfo->set('format', $file->getFormatFilename());
             $fileInfo->set('main_content', $mainContent);
         }
     }
     $fstat = stat($filepath);
     $fileInfo->set('filesize', $fstat['size']);
     $fileInfo->set('last_modified', $db->getTimestampTz($fstat['mtime']));
     $fileInfo->set('mime_type', $file->mimetype);
     $success = $fileInfo->save();
     //if(!$success)
     //	raiseError("could not write into database");
     // change id3 tags in file
     $this->saveID3($file);
     return $fileInfo->id;
 }
示例#6
0
function addItem(&$rss, &$prog)
{
    global $config;
    $rss .= "\n\n<item>";
    writeTag($rss, "title", $prog->get('title'));
    writeTag($rss, "link", $config['rootUrl'] . "/get.php?id=" . $prog->id);
    writeTag($rss, "pubDate", toW3CDate($prog->get('entry_date')));
    writeTag($rss, "description", $prog->get('abstract'));
    writeTag($rss, "guid", $prog->get('id'));
    writeTag($rss, "sotf:episodesequence", $prog->get('episode_sequence'));
    writeTag($rss, "sotf:episodetitle", $prog->get('episode_title'));
    writeTag($rss, "sotf:broadcastdate", $prog->get('broadcast_date'));
    $files = $prog->getAssociatedObjects('sotf_media_files', 'main_content DESC, filename');
    for ($i = 0; $i < count($files); $i++) {
        $files[$i] = array_merge($files[$i], sotf_AudioFile::decodeFormatFilename($files[$i]['format']));
        $files[$i]['playtime_string'] = strftime('%M:%S', $fFiles[$i]['play_length']);
    }
    if ($files) {
        $rss .= "\n<sotf:mediafiles>";
        foreach ($files as $f) {
            if ($f['stream_access'] = 't') {
                #$rss .= "\n<sotf:mediafileitem>";
                #writeTag($rss, "sotf:mediafileurl", $config['rootUrl']."/listen.php/audio.m3u?id=".$prog->get('id'));
                #writeTag($rss, "sotf:mediafileimage", $config['rootUrl']."/static/listen.gif");
                #writeTag($rss, "sotf:mediafiletype", "audio");
                #writeTag($rss, "sotf:mediafilebitrate", $f['bitrate']);
                #writeTag($rss, "sotf:mediafileformat", $f['format']);
                #$rss .= "\n</sotf:mediafileitem>";
                $rss .= "\n<sotf:mediafileitem url=\"" . $config['rootUrl'] . "/listen.php/audio.m3u?id=" . $prog->get('id') . "\" image=\"" . $config['rootUrl'] . "/static/listen.gif\" type=\"audiostream\" bitrate=\"" . $f['bitrate'] . "\" format=\"" . $f['format'] . "\" />";
            }
            if ($f['download_access'] = 't') {
                #$rss .= "\n<sotf:mediafileitem>";
                #writeTag($rss, "sotf:mediafileurl", $config['rootUrl']."/getFile.php/".$f['filename']."?audio=1&id=".$prog->get('id')."&filename=".$f['filename']);
                #writeTag($rss, "sotf:mediafileimage", $config['rootUrl']."/static/download.gif");
                #writeTag($rss, "sotf:mediafiletype", "audio");
                #writeTag($rss, "sotf:mediafilebitrate", $f['bitrate']);
                #writeTag($rss, "sotf:mediafileformat", $f['format']);
                #$rss .= "\n</sotf:mediafileitem>";
                $rss .= "\n<sotf:mediafileitem url=\"" . $config['rootUrl'] . "/getFile.php/fid__" . $f['id'] . "\" image=\"" . $config['rootUrl'] . "/static/download.gif\" type=\"audiofile\" bitrate=\"" . $f['bitrate'] . "\" format=\"" . $f['format'] . "\" />";
            }
        }
        $rss .= "\n</sotf:mediafiles>";
    }
    $rss .= "\n</item>";
}
 function setAudio($filename, $copy = false)
 {
     global $user;
     $filename = sotf_Utils::getFileFromPath($filename);
     $source = $user->getUserDir() . '/' . $filename;
     if (!is_file($source)) {
         raiseError("no such file: {$source}");
     }
     $srcFile = new sotf_AudioFile($source);
     $target = $this->getAudioDir() . '/' . 'prg_' . $srcFile->getFormatFilename();
     if ($srcFile->type == audio) {
         if ($copy) {
             $success = copy($source, $target);
         } else {
             $success = rename($source, $target);
         }
         if (!$success) {
             raiseError("could not copy/move {$source}");
         }
         return true;
     }
     return false;
     //$this->audioFiles->add($target);
 }