function addProg($prg, $fileid = '') { if (empty($fileid)) { // find a file to listen $fileid = $prg->selectFileToListen(); if (!$fileid) { raiseError("no_file_to_listen"); } } $file = new sotf_NodeObject("sotf_media_files", $fileid); if (!$prg->isLocal()) { raiseError("Currently you can listen only to programmes of local stations"); } if ($prg->get('published') != 't' || $file->get('stream_access') != 't') { raiseError("no_listen_access"); } // add jingle $station = $prg->getStation(); $jfile = $station->getJingle(); if ($jfile) { $this->add(array('path' => $jfile, 'jingle' => 1)); } // add program file $filepath = $prg->getFilePath($file); $this->add(array('path' => $filepath)); // temp: set title $this->name = urlencode($prg->get("title")); // save stats $prg->addStat($file->get('filename'), 'listens'); }
$series->setWithParam('description'); $series->update(); } if ($finish || $finish2) { $page->redirect("closeAndRefresh.php?anchor=series"); } if ($save) { $page->redirect("editSeries.php?seriesid={$seriesid}"); } // manage roles $delrole = sotf_Utils::getParameter('delrole'); if ($delrole) { checkPerm($series->id, "change"); $roleid = sotf_Utils::getParameter('roleid'); $role = new sotf_NodeObject('sotf_object_roles', $roleid); $c = new sotf_Contact($role->get('contact_id')); $role->delete(); //$msg = $page->getlocalizedWithParams("deleted_contact", $c->get('name')); //$page->addStatusMsg($msg, false); $page->redirect("editSeries.php?seriesid={$seriesid}#roles"); exit; } // manage permissions $delperm = sotf_Utils::getParameter('delperm'); if ($delperm) { checkPerm($series->id, "authorize"); $username = sotf_Utils::getParameter('username'); $userid = $user->getUserid($username); if (empty($userid) || !is_numeric($userid)) { raiseError("Invalid username: {$username}"); }
function addProg($prg, $fileid = '') { if (empty($fileid)) { // find a file to listen $fileid = $prg->selectFileToListen(); if (!$fileid) { raiseError("no_file_to_listen"); } } $file = new sotf_NodeObject("sotf_media_files", $fileid); if (!$prg->isLocal()) { $node = sotf_Node::getNodeById($file->getNodeId()); $path = $node->get('url') . "/listen.php?id=" . $prg->id . "&fileid=" . $file->id; $this->add(array('path' => $path, 'url' => $path)); return; } if ($prg->get('published') != 't' || $file->get('stream_access') != 't') { raiseError("no_listen_access"); } $filepath = $prg->getFilePath($file); $index = sotf_AudioCheck::getRequestIndex(new sotf_AudioFile($filepath)); debug("audio index", $index); if (!$index) { $index = '0'; } // add jingle for station (if exists) $station = $prg->getStation(); $jfile = $station->getJingle($index); if ($jfile) { $this->add(array('id' => $station->id, 'path' => $jfile, 'jingle' => 1, 'name' => 'station_jingle')); } // add jingle for series (if exists) $series = $prg->getSeries(); if ($series) { $jfile = $series->getJingle($index); if ($jfile) { $this->add(array('id' => $series->id, 'path' => $jfile, 'jingle' => 1, 'name' => 'series_jingle')); } } // add program file $filepath = $prg->getFilePath($file); $this->add(array('id' => $prg->id, 'path' => $filepath, 'name' => urlencode($prg->get('title')))); // temp: set title $title = $prg->get("title"); $title = preg_replace('/\\s+/', '_', $title); $this->name = urlencode($title); // save stats $prg->addStat($file->get('id'), 'listens'); }
function delFromTopic($id) { global $db; // TODO: ha mar van, akkor ne adja hozza $obj = new sotf_NodeObject('sotf_prog_topics', $id); $topicId = $obj->get('topic_id'); $progId = $obj->get('prog_id'); $obj->delete(); $query = "UPDATE sotf_topics_counter SET number = number-1 WHERE topic_id = '" . $topicId . "'"; $result = $db->query($query); $query = "SELECT supertopic FROM sotf_topic_tree_defs WHERE id = '" . $topicId . "'"; $supertopic = $db->getOne($query); if (!$supertopic) { $supertopic = $topicId; } $query = "UPDATE sotf_topics_counter SET total = total-1 WHERE topic_id = '" . $supertopic . "'"; $result = $db->query($query); }
function deleteFile($fid) { global $repository; $table = $repository->getTable($fid); $file = new sotf_NodeObject($table, $fid); if ($table == 'sotf_media_files' && $file->get('main_content') == 't') { $filepath = $this->getAudioDir() . '/' . $file->get('filename'); } else { $filepath = $this->getOtherFilesDir() . '/' . $file->get('filename'); } $file->delete(); if (unlink($filepath)) { return 0; } else { raiseError("Could not remove file {$filepath}"); } }
function processPortalEvent($event) { debug("processing event", $event); $progId = $event['prog_id']; if ($progId) { if ($this->looksLikeId($progId)) { $prg =& $this->getObject($progId); } if (!$prg) { debug("Invalid prog_id arrived in portal event", $progId); return -1; } } switch ($event['name']) { case 'programme_added': $obj = new sotf_NodeObject('sotf_prog_refs'); $obj->set('prog_id', $event['value']); $obj->set('url', $event['url']); $obj->find(); $obj->set('station_id', $prg->get('station_id')); $obj->set('start_date', $event['timestamp']); $obj->set('portal_name', $event['portal_name']); $obj->save(); break; case 'programme_deleted': $obj = new sotf_NodeObject('sotf_prog_refs'); $obj->set('prog_id', $event['value']); $obj->set('url', $event['url']); $obj->find(); if (!$obj->exists()) { debug("unknown prog ref arrives: " . $event['value'] . ' - ' . $event['url']); $obj->set('portal_name', $event['portal_name']); } $obj->set('station_id', $prg->get('station_id')); $obj->set('end_date', $event['timestamp']); //$obj->set('portal_name', $event['portal_name']); $obj->save(); break; case 'visit': $obj = new sotf_NodeObject('sotf_prog_refs'); $obj->set('prog_id', $event['value']['prog_id']); $obj->set('url', $event['url']); $obj->find(); if (!$obj->exists()) { // TODO: how can this happen? It happens too many times! debug("unknown prog ref arrives: " . $event['value']['prog_id'] . ' - ' . $event['url']); $obj->set('start_date', $event['timestamp']); $obj->set('portal_name', $event['portal_name']); } $obj->set('station_id', $prg->get('station_id')); $obj->set('visits', (int) $obj->get('visits') + 1); // TODO: count unique accesses $obj->save(); break; case 'page_impression': $obj = new sotf_NodeObject('sotf_portals'); $obj->set('url', $event['url']); $obj->find(); $obj->set('name', $event['portal_name']); $obj->set('page_impression', $event['value']); $obj->set('last_access', $event['timestamp']); $obj->save(); break; case 'portal_updated': $obj = new sotf_NodeObject('sotf_portals'); $obj->set('url', $event['url']); $obj->find(); $obj->set('name', $event['portal_name']); $obj->set('last_update', $event['timestamp']); $obj->save(); break; case 'users': $obj = new sotf_NodeObject('sotf_portals'); $obj->set('url', $event['url']); $obj->find(); if (!$obj->exists()) { $obj->set('name', $event['portal_name']); } $obj->set('last_update', $event['timestamp']); $obj->set('reg_users', $event['value']); if (!$obj->get('name') || !$obj->get('url')) { logError("Bad portal even teceived", implode(" | ", $event)); } else { $obj->save(); } break; case 'rating': // first save in prog_refs $obj = new sotf_NodeObject('sotf_prog_refs'); $obj->set('prog_id', $event['value']['prog_id']); $obj->set('url', $event['url']); $obj->find(); if (!$obj->exists()) { debug("unknown prog ref arrives: " . $event['url']); $obj->set('start_date', $event['timestamp']); $obj->set('portal_name', $event['portal_name']); } $obj->set('station_id', $prg->get('station_id')); $obj->set('rating', $event['value']['RATING_VALUE']); $obj->set('raters', $event['value']['RATING_COUNT']); $obj->save(); // TODO second, put into global rating database /* $rating = new sotf_Rating(); $id = $event['value']['prog_id']; $obj = & $this->getObject($id); if($obj->isLocal()) { $data = $event['value']; $rating->setRemoteRating($data); } else { logError("received rating for non-local object!"); } */ break; case 'comment': // first save in prog_refs $obj = new sotf_NodeObject('sotf_prog_refs'); $obj->set('prog_id', $event['value']['prog_id']); $obj->set('url', $event['url']); $obj->find(); if (!$obj->exists()) { logError("unknown prog ref arrives: " . $event['value']['prog_id'] . ' - ' . $event['url']); $obj->set('start_date', $event['timestamp']); $obj->set('portal_name', $event['portal_name']); } $obj->set('station_id', $prg->get('station_id')); $obj->set('comments', (int) $obj->get('comments') + 1); $obj->save(); // save comment $obj = new sotf_Object('sotf_comments'); $obj->set('prog_id', $event['value']['prog_id']); $obj->set('portal', $event['url']); $obj->set('entered', $event['timestamp']); $obj->set('comment_title', $event['value']['title']); $obj->set('comment_text', $event['value']['comment']); $obj->set('from_name', $event['value']['user_name']); $obj->set('from_email', $event['value']['email']); $obj->create(); // TODO forward to authors break; case 'query_added': //debug("query from portal", $event); //debug("query from portal", $event); case 'query_deleted': case 'file_uploaded': // silently ignored break; default: logError("unknown portal event: " . $event['name']); } }
if (empty($id)) { raiseError("Missing parameters!"); } $prg = new sotf_Programme($id); if (empty($fileid)) { // find a file to listen $fileid = $prg->selectFileToListen(); if (!$fileid) { raiseError("no_file_to_listen"); } } $file = new sotf_NodeObject("sotf_media_files", $fileid); if (!$prg->isLocal()) { raiseError("Currently you can listen only to programmes of local stations"); } if ($prg->get('published') != 't' || $file->get('stream_access') != 't') { raiseError("no_listen_access"); } $filepath = $prg->getFilePath($file); $tmpfile = $tmpdir . "/{$id_}{$fileid}.m3u"; //$name = "$id_$fileid"; $name = "{$id_}" . time(); $url = 'http://' . $iceServer . ':' . $icePort . '/' . $name . "\n"; debug("file", $filepath); if (!is_file($filepath)) { raiseError("no_such_file"); } // prepare playlist for streaming into icecast $fp = fopen($tmpfile, 'wb'); /* TODO: add jingle $jinglefile = $repo->getStationJingle($station);