function setGroup($uid, $gid, $member, $rid = '') { if ($rid) { if (!$member) { $o = new sotf_Object('sotf_user_groups', $rid); $o->delete(); } return; } $o = new sotf_Object('sotf_user_groups'); $o->set('user_id', $uid); $o->set('group_id', $gid); $o->find(); debug("EXISTS", $o->exists()); debug("MEM", $member); if ($member) { if (!$o->exists()) { $o->create(); } } else { if ($o->exists()) { $o->delete(); } } }
$x->set('name', $name); $x->create(); $id = $x->getID(); } if ($topic_name != "") { $x = new sotf_NodeObject("sotf_topics"); $x->set('topic_id', $topic_id); $x->set('language', "en"); $x->set('topic_name', $topic_name); $x->create(); $id = $x->getID(); print $id; } if ($topic_counter != "") { $x = new sotf_Object("sotf_topics_counter"); $x->set('topic_id', $topic_id); $x->set('number', $topic_counter); $x->create(); $id = $x->getID(); print $id; } $query = "SELECT sotf_topic_tree_defs.*, sotf_topics.topic_name, sotf_topics_counter.number from sotf_topic_tree_defs" . " LEFT JOIN sotf_topics ON sotf_topics.topic_id = sotf_topic_tree_defs.id" . " LEFT JOIN sotf_topics_counter ON sotf_topics_counter.topic_id = sotf_topic_tree_defs.id"; $result = $db->getAll($query); usort($result, "SORTIT"); $parentid; $counter = 0; $max = count($result); for ($i = 0; $i < $max; $i++) { if ($result[$i]["supertopic"] == 0) { if ($i != 0) { $result[$parentid]["numberall"] = $counter;
function addStat($fileId, $type) { global $db, $user; sotf_Statistics::addStat($this, $fileId, $type); if ($user) { $hist = new sotf_Object('sotf_user_history'); $hist->set('user_id', $user->id); $hist->set('object_id', $this->id); $hist->set('action', $type); $hist->set('action_date', $db->getTimestampTz()); $hist->create(); } }
$vocabularies->addToTopic($id, $value); // doesnt work: print("<script type=\"text/javascript\">window.opener.opener.reload();</script>"); print "success"; } elseif ($name == "editorpub") { $x = new sotf_Programme($id); if ($value == 'true') { $x->publish(); } elseif ($value == 'false') { $x->withdraw(); } else { print "<script type=\"text/javascript\" language=\"javascript1.1\">error();</script>"; } print "success"; } elseif ($name == "editorflag") { $x = new sotf_Object("sotf_user_progs"); $x->set('user_id', $user->id); $x->set('prog_id', $id); $x->find(); $x->set('flags', $value); if ($x->id) { if ($value == "none") { $x->delete(); } else { $x->update(); } } else { $x->create(); } // else print("<script type=\"text/javascript\" language=\"javascript1.1\">error();</script>"); print "success"; } elseif ($name == "addplaylist") {
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']); } }