* * @version 1.0 * @date 20 October 2010 * * Copyright (C)2010 MOVIM project * * See COPYING for licensing information. */ use Moxl\Xec\Action\Pubsub\GetItems; use Moxl\Xec\Action\Pubsub\Subscribe; use Moxl\Xec\Action\Pubsub\Unsubscribe; use Moxl\Xec\Action\Pubsub\GetAffiliations; use Moxl\Xec\Action\Pubsub\GetMetadata; use Moxl\Xec\Action\Pubsub\GetSubscriptions; class Node extends WidgetCommon { private $role; private $_feedsize = 10; function load() { /*$this->registerEvent('post', 'onStream'); $this->registerEvent('stream', 'onStream'); $this->registerEvent('nostream', 'onStream');*/ $this->registerEvent('pubsubaffiliations', 'onPubsubAffiliations'); $this->registerEvent('pubsubsubscribed', 'onPubsubSubscribed'); $this->registerEvent('pubsubmetadata', 'onPubsubMetadata'); $this->registerEvent('pubsubsubscribederror', 'onPubsubSubscribedError'); $this->registerEvent('pubsubunsubscribed', 'onPubsubUnsubscribed'); } function display() { if(isset($_GET['s']) && isset($_GET['n'])) { $this->view->assign('server', $_GET['s']); $this->view->assign('node', $_GET['n']); $this->view->assign('refresh', $this->call('ajaxGetItems', "'".$_GET['s']."'", "'".$_GET['n']."'")); $this->view->assign('getaffiliations', $this->call('ajaxGetAffiliations', "'".$_GET['s']."'", "'".$_GET['n']."'")); $this->view->assign('getmetadata', $this->call('ajaxGetMetadata', "'".$_GET['s']."'", "'".$_GET['n']."'")); $this->view->assign('hash', md5($_GET['s'].$_GET['n'])); $this->view->assign('items', $this->prepareNode($_GET['s'], $_GET['n'])); $this->view->assign('metadata', $this->prepareMetadata($_GET['s'], $_GET['n'])); $nd = new modl\ItemDAO(); $node = $nd->getItem($_GET['s'], $_GET['n']); if($node != null) $title = $node->getName(); else $title = $groupid; $this->view->assign('title', $title); $this->view->assign('formpublish', $this->prepareSubmitForm($_GET['s'], $_GET['n'])); } } function onPubsubSubscribed($params) { $html = $this->prepareNode($params[0], $params[1]); RPC::call('setBookmark'); RPC::call('movim_fill', 'node', $html); RPC::call('movim_reload_this'); } function onPubsubSubscribedError($params) { $this->onPubsubSubscribed($params); } function onPubsubUnsubscribed($params) { $this->onPubsubSubscribed($params); } function onPubsubAffiliations($params) { foreach($params[0] as $r) { if($r[0] == $this->user->getLogin()) $this->role = (string)$r[1]; } if($this->searchSubscription($params[1], $params[2]) && ($this->role == 'owner' || $this->role == 'publisher')) { RPC::call('movim_toggle_display', '#formpublish'); RPC::call('movim_toggle_display', '#configbutton'); } } function onPubsubMetadata($params) { $html = $this->prepareMetadata($params[0], $params[1]); RPC::call('movim_fill', 'metadata', $html); } /*function onStream($payload) { $html = $this->prepareNode($payload['from'], $payload['node']); if($html == '') $html = __('post.no_load'); RPC::call('movim_fill', md5($payload['from'].$payload['node']), $html); }*/ function ajaxGetItems($server, $node) { $pd = new \Modl\PostnDAO(); $pd->deleteNode($server, $node); $r = new GetItems; $r->setTo($server) ->setNode($node) ->request(); } function ajaxSubscribe($data, $server, $node) { $g = new Subscribe; $g->setTo($server) ->setNode($node) ->setFrom($this->user->getLogin()) ->setData($data) ->request(); } function ajaxUnsubscribe($server, $node) { $sd = new \Modl\SubscriptionDAO(); foreach($sd->get($server, $node) as $s) { $g = new Unsubscribe; $g->setTo($server) ->setNode($node) ->setSubid($s->subid) ->setFrom($this->user->getLogin()) ->request(); } } function ajaxGetSubscriptions($server, $node) { $r = new GetSubscriptions; $r->setTo($server) ->setNode($node) ->setSync() ->request(); } function ajaxGetAffiliations($server, $node){ $r = new GetAffiliations; $r->setTo($server)->setNode($node) ->request(); } function ajaxGetMetadata($server, $node){ $r = new GetMetadata; $r->setTo($server)->setNode($node) ->request(); } function prepareNode($serverid, $groupid) { $nodeview = $this->tpl(); $nodeview->assign('serverid', $serverid); $nodeview->assign('groupid', $groupid); $nodeview->assign('subscribed', $this->searchSubscription($serverid, $groupid)); $nodeview->assign('role', $this->role); $nodeview->assign('refresh', $this->call('ajaxGetItems', "'".$serverid."'", "'".$groupid."'")); $nodeview->assign('getsubscription',$this->call('ajaxGetSubscriptions', "'".$serverid."'", "'".$groupid."'")); $nodeview->assign('subscribe', $this->call('ajaxSubscribe', "movim_parse_form('groupsubscribe')", "'".$serverid."'", "'".$groupid."'")); $nodeview->assign('unsubscribe', $this->call('ajaxUnsubscribe', "'".$serverid."'", "'".$groupid."'")); $nodeview->assign('submitform', ''); $nodeview->assign('posts', $this->preparePostsNode($serverid, $groupid, -1)); $html = $nodeview->draw('_node_content', true); return $html; } function prepareNext($start, $html = '', $posts, $function = 'ajaxGetPostsNode', $serverid, $groupid) { $next = $start + $this->_feedsize; $nexthtml = ''; if(sizeof($posts) > $this->_feedsize-1 && $html != '') { $nexthtml = '