// 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
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; }
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); }