diff --git a/app/widgets/Bookmark/Bookmark.php b/app/widgets/Bookmark/Bookmark.php index 4ccb61cd9..9054f5d81 100644 --- a/app/widgets/Bookmark/Bookmark.php +++ b/app/widgets/Bookmark/Bookmark.php @@ -59,7 +59,7 @@ class Bookmark extends WidgetBase function onBookmark($arr) { - $i = 0; + //$i = 0; //$sd = new \modl\SubscriptionDAO(); @@ -79,8 +79,10 @@ class Bookmark extends WidgetBase } $i++; }*/ - - array_push($arr, Cache::c('bookmark')); + + Cache::c('bookmark', $arr); + //array_push($arr, Cache::c('bookmark')); + $html = $this->prepareBookmark($arr); RPC::call('movim_fill', 'bookmarks', $html); Notification::appendNotification(t('Bookmarks updated'), 'info'); diff --git a/lib/JingletoSDP.php b/lib/JingletoSDP.php index 0f7b4c0b1..73d3d066b 100644 --- a/lib/JingletoSDP.php +++ b/lib/JingletoSDP.php @@ -1,318 +1,318 @@ - 1, - 'session_version' => 0, - 'nettype' => 'IN', - 'addrtype' => 'IP4', - 'unicast_address' => '0.0.0.0' - ); - - function __construct($jingle) { - $this->jingle = $jingle; - - $this->action = (string)$this->jingle->attributes()->action; - } - - function getSessionId(){ - $s = Session::start('movim'); - if($sid = $s->get('jingleSid')){ - return $sid; - } - else{ - $sessid = $this->jingle->attributes()->sid; - return substr(base_convert($sessid, 30, 10), 0, 6); - } - } - - function generate() { - if($this->jingle->attributes()->initiator) { - $username = explode('@', (string)$this->jingle->attributes()->initiator); - $username = $username[0]; - } else - $username = '-'; - - $this->values['session_id'] = $this->getSessionId(); - - $sdp_version = - 'v=0'; - - $sdp_origin = - 'o='. - $username.' '. - $this->values['session_id'].' '. - $this->values['session_version'].' '. - $this->values['nettype'].' '. - $this->values['addrtype'].' '. - $this->values['unicast_address']; - - $sdp_session_name = - 's=SIP Call'; // Use the sessid ? - - $sdp_timing = - 't=0 0'; - - $sdp_medias = ''; - - foreach($this->jingle->children() as $content) { - - if($content->getName() != 'content') - break; - - $media_header_ids = array(); - $media_header_first_port = null; - $media_header_last_ip = null; - - $sdp_media = ''; - - if(isset($content->transport->attributes()->ufrag)) - $sdp_media .= "\na=ice-ufrag:".$content->transport->attributes()->ufrag; - - if(isset($content->transport->attributes()->pwd)) - $sdp_media .= "\na=ice-pwd:".$content->transport->attributes()->pwd; - - if(isset($content->description)) { - foreach($content->description->children() as $payload) { - switch($payload->getName()) { - case 'rtp-hdrext': - $sdp_media .= - "\na=extmap:". - $payload->attributes()->id; - - if(isset($payload->attributes()->senders)) - $sdp_media .= ' '.$payload->attributes()->senders; - - $sdp_media .= ' '.$payload->attributes()->uri; - break; - - case 'rtcp-mux': - $sdp_media .= - "\na=rtcp-mux"; - - case 'encryption': - if(isset($payload->crypto)) { - $sdp_media .= - "\na=crypto:". - $payload->crypto->attributes()->tag.' '. - $payload->crypto->attributes()->{'crypto-suite'}.' '. - $payload->crypto->attributes()->{'key-params'}; - - // TODO session params ? - } - break; - - case 'payload-type': - $sdp_media .= - "\na=rtpmap:". - $payload->attributes()->id; - - array_push($media_header_ids, $payload->attributes()->id); - - if(isset($payload->attributes()->name)) { - $sdp_media .= ' '.$payload->attributes()->name; - - if(isset($payload->attributes()->clockrate)) { - $sdp_media .= '/'.$payload->attributes()->clockrate; - - if(isset($payload->attributes()->channels)) { - $sdp_media .= '/'.$payload->attributes()->channels; - } - } - } - - $first_fmtp = true; - - foreach($payload->children() as $param) { - switch($param->getName()) { - case 'rtcp-fb' : - $sdp_media .= - "\na=rtcp-fb:". - $param->attributes()->id.' '. - $param->attributes()->type; - - if(isset($param->attributes()->subtype)) { - $sdp_media .= ' '.$param->attributes()->subtype; - } - - break; - // http://xmpp.org/extensions/xep-0167.html#format - case 'parameter' : - if($first_fmtp) { - $sdp_media .= - "\na=fmtp:". - $payload->attributes()->id. - ' '; - } else { - $sdp_media .= '; '; - } - - if(isset($param->attributes()->name)) { - $sdp_media .= - $param->attributes()->name. - '='; - } - - $sdp_media .= - $param->attributes()->value; - - $first_fmtp = false; - - break; - } - - // TODO rtcp_fb_trr_int ? - } - - break; - - case 'source': - foreach($payload->children() as $s) { - $sdp_media .= - "\na=ssrc:".$payload->attributes()->id.' '. - $s->attributes()->name.':'. - $s->attributes()->value; - } - break; - } - // TODO sendrecv ? - } - } - - if(isset($content->description) - && isset($content->description->attributes()->ptime)) { - $sdp_media .= - "\na=ptime:".$content->description->attributes()->ptime; - } - - if(isset($content->description) - && isset($content->description->attributes()->maxptime)) { - $sdp_media .= - "\na=maxptime:".$content->description->attributes()->maxptime; - } - - foreach($content->transport->children() as $payload) { - switch($payload->getName()) { - case 'fingerprint': - if(isset($content->transport->fingerprint->attributes()->hash)) { - $sdp_media .= - "\na=fingerprint:". - $content->transport->fingerprint->attributes()->hash. - ' '. - $content->transport->fingerprint; - } - - if(isset($content->transport->fingerprint->attributes()->setup)) { - $sdp_media .= - "\na=setup:". - $content->transport->fingerprint->attributes()->setup; - } - break; - - // http://xmpp.org/extensions/inbox/jingle-dtls.html - case 'sctpmap': - $sdp_media .= - "\na=sctpmap:". - $payload->attributes()->number.' '. - $payload->attributes()->protocol.' '. - $payload->attributes()->streams.' ' - ; - - - array_push($media_header_ids, $payload->attributes()->number); - - break; - - case 'candidate': - $sdp_media .= - "\na=candidate:". - $payload->attributes()->foundation.' '. - $payload->attributes()->component.' '. - $payload->attributes()->protocol.' '. - $payload->attributes()->priority.' '. - $payload->attributes()->ip.' '. - $payload->attributes()->port.' '. - 'typ '.$payload->attributes()->type; - - if(isset($payload->attributes()->{'rel-addr'}) - && isset($payload->attributes()->{'rel-port'})) { - $sdp_media .= - ' raddr '.$payload->attributes()->{'rel-addr'}. - ' rport '.$payload->attributes()->{'rel-port'}; - - if($media_header_first_port == null) - $media_header_first_port = $payload->attributes()->port; - } - if(isset($payload->attributes()->generation)) { - $sdp_media .= - ' generation '.$payload->attributes()->generation. - ' network '.$payload->attributes()->network. - ' id '.$payload->attributes()->id; - } - - $media_header_last_ip = $payload->attributes()->ip; - - break; - } - } - - if($media_header_first_port == null) - $media_header_first_port = 1; - - if($media_header_last_ip == null) - $media_header_last_ip = '0.0.0.0'; - - if(isset($content->description)) - $this->media = (string)$content->description->attributes()->media; - else - $this->media = (string)$content->attributes()->name; - - if($this->action != 'transport-info') { - $sdp_media_header = - "\nm=".$this->media. - ' '.$media_header_first_port.' '; - - if(isset($content->transport->sctpmap)) { - $sdp_media_header .= 'DTLS/SCTP'; - } elseif(isset($content->description->crypto) - || isset($content->transport->fingerprint)) { - $sdp_media_header .= 'RTP/SAVPF'; - } else { - $sdp_media_header .= 'RTP/AVP'; - } - - - $sdp_media_header = $sdp_media_header.' '.implode(' ', $media_header_ids); - - $sdp_medias .= - $sdp_media_header. - "\nc=IN IP4 ".$media_header_last_ip. - $sdp_media; - //"\na=sendrecv"; - } else { - $sdp_medias = $sdp_media; - } - } - - if($this->action != 'transport-info') { - $this->sdp .= "\n".$sdp_version; - $this->sdp .= "\n".$sdp_origin; - $this->sdp .= "\n".$sdp_session_name; - $this->sdp .= "\n".$sdp_timing; - } - - $this->sdp .= $sdp_medias; - - //$this->sdp = (string)$this->jingle->sdp; - - return $this->sdp."\n"; - } -} + 1, + 'session_version' => 0, + 'nettype' => 'IN', + 'addrtype' => 'IP4', + 'unicast_address' => '0.0.0.0' + ); + + function __construct($jingle) { + $this->jingle = $jingle; + + $this->action = (string)$this->jingle->attributes()->action; + } + + function getSessionId(){ + $s = Session::start('movim'); + if($sid = $s->get('jingleSid')){ + return $sid; + } + else{ + $sessid = $this->jingle->attributes()->sid; + return substr(base_convert($sessid, 30, 10), 0, 6); + } + } + + function generate() { + if($this->jingle->attributes()->initiator) { + $username = explode('@', (string)$this->jingle->attributes()->initiator); + $username = $username[0]; + } else + $username = '-'; + + $this->values['session_id'] = $this->getSessionId(); + + $sdp_version = + 'v=0'; + + $sdp_origin = + 'o='. + $username.' '. + $this->values['session_id'].' '. + $this->values['session_version'].' '. + $this->values['nettype'].' '. + $this->values['addrtype'].' '. + $this->values['unicast_address']; + + $sdp_session_name = + 's=SIP Call'; // Use the sessid ? + + $sdp_timing = + 't=0 0'; + + $sdp_medias = ''; + + foreach($this->jingle->children() as $content) { + + if($content->getName() != 'content') + break; + + $media_header_ids = array(); + $media_header_first_port = null; + $media_header_last_ip = null; + + $sdp_media = ''; + + if(isset($content->transport->attributes()->ufrag)) + $sdp_media .= "\r\na=ice-ufrag:".$content->transport->attributes()->ufrag; + + if(isset($content->transport->attributes()->pwd)) + $sdp_media .= "\r\na=ice-pwd:".$content->transport->attributes()->pwd; + + if(isset($content->description)) { + foreach($content->description->children() as $payload) { + switch($payload->getName()) { + case 'rtp-hdrext': + $sdp_media .= + "\r\na=extmap:". + $payload->attributes()->id; + + if(isset($payload->attributes()->senders)) + $sdp_media .= ' '.$payload->attributes()->senders; + + $sdp_media .= ' '.$payload->attributes()->uri; + break; + + case 'rtcp-mux': + $sdp_media .= + "\r\na=rtcp-mux"; + + case 'encryption': + if(isset($payload->crypto)) { + $sdp_media .= + "\r\na=crypto:". + $payload->crypto->attributes()->tag.' '. + $payload->crypto->attributes()->{'crypto-suite'}.' '. + $payload->crypto->attributes()->{'key-params'}; + + // TODO session params ? + } + break; + + case 'payload-type': + $sdp_media .= + "\r\na=rtpmap:". + $payload->attributes()->id; + + array_push($media_header_ids, $payload->attributes()->id); + + if(isset($payload->attributes()->name)) { + $sdp_media .= ' '.$payload->attributes()->name; + + if(isset($payload->attributes()->clockrate)) { + $sdp_media .= '/'.$payload->attributes()->clockrate; + + if(isset($payload->attributes()->channels)) { + $sdp_media .= '/'.$payload->attributes()->channels; + } + } + } + + $first_fmtp = true; + + foreach($payload->children() as $param) { + switch($param->getName()) { + case 'rtcp-fb' : + $sdp_media .= + "\r\na=rtcp-fb:". + $param->attributes()->id.' '. + $param->attributes()->type; + + if(isset($param->attributes()->subtype)) { + $sdp_media .= ' '.$param->attributes()->subtype; + } + + break; + // http://xmpp.org/extensions/xep-0167.html#format + case 'parameter' : + if($first_fmtp) { + $sdp_media .= + "\r\na=fmtp:". + $payload->attributes()->id. + ' '; + } else { + $sdp_media .= '; '; + } + + if(isset($param->attributes()->name)) { + $sdp_media .= + $param->attributes()->name. + '='; + } + + $sdp_media .= + $param->attributes()->value; + + $first_fmtp = false; + + break; + } + + // TODO rtcp_fb_trr_int ? + } + + break; + + case 'source': + foreach($payload->children() as $s) { + $sdp_media .= + "\r\na=ssrc:".$payload->attributes()->id.' '. + $s->attributes()->name.':'. + $s->attributes()->value; + } + break; + } + // TODO sendrecv ? + } + } + + if(isset($content->description) + && isset($content->description->attributes()->ptime)) { + $sdp_media .= + "\r\na=ptime:".$content->description->attributes()->ptime; + } + + if(isset($content->description) + && isset($content->description->attributes()->maxptime)) { + $sdp_media .= + "\r\na=maxptime:".$content->description->attributes()->maxptime; + } + + foreach($content->transport->children() as $payload) { + switch($payload->getName()) { + case 'fingerprint': + if(isset($content->transport->fingerprint->attributes()->hash)) { + $sdp_media .= + "\r\na=fingerprint:". + $content->transport->fingerprint->attributes()->hash. + ' '. + $content->transport->fingerprint; + } + + if(isset($content->transport->fingerprint->attributes()->setup)) { + $sdp_media .= + "\r\na=setup:". + $content->transport->fingerprint->attributes()->setup; + } + break; + + // http://xmpp.org/extensions/inbox/jingle-dtls.html + case 'sctpmap': + $sdp_media .= + "\r\na=sctpmap:". + $payload->attributes()->number.' '. + $payload->attributes()->protocol.' '. + $payload->attributes()->streams.' ' + ; + + + array_push($media_header_ids, $payload->attributes()->number); + + break; + + case 'candidate': + $sdp_media .= + "\r\na=candidate:". + $payload->attributes()->foundation.' '. + $payload->attributes()->component.' '. + $payload->attributes()->protocol.' '. + $payload->attributes()->priority.' '. + $payload->attributes()->ip.' '. + $payload->attributes()->port.' '. + 'typ '.$payload->attributes()->type; + + if(isset($payload->attributes()->{'rel-addr'}) + && isset($payload->attributes()->{'rel-port'})) { + $sdp_media .= + ' raddr '.$payload->attributes()->{'rel-addr'}. + ' rport '.$payload->attributes()->{'rel-port'}; + + if($media_header_first_port == null) + $media_header_first_port = $payload->attributes()->port; + } + if(isset($payload->attributes()->generation)) { + $sdp_media .= + ' generation '.$payload->attributes()->generation. + ' network '.$payload->attributes()->network. + ' id '.$payload->attributes()->id; + } + + $media_header_last_ip = $payload->attributes()->ip; + + break; + } + } + + if($media_header_first_port == null) + $media_header_first_port = 1; + + if($media_header_last_ip == null) + $media_header_last_ip = '0.0.0.0'; + + if(isset($content->description)) + $this->media = (string)$content->description->attributes()->media; + else + $this->media = (string)$content->attributes()->name; + + if($this->action != 'transport-info') { + $sdp_media_header = + "\r\nm=".$this->media. + ' '.$media_header_first_port.' '; + + if(isset($content->transport->sctpmap)) { + $sdp_media_header .= 'DTLS/SCTP'; + } elseif(isset($content->description->crypto) + || isset($content->transport->fingerprint)) { + $sdp_media_header .= 'RTP/SAVPF'; + } else { + $sdp_media_header .= 'RTP/AVP'; + } + + + $sdp_media_header = $sdp_media_header.' '.implode(' ', $media_header_ids); + + $sdp_medias .= + $sdp_media_header. + "\r\nc=IN IP4 ".$media_header_last_ip. + $sdp_media; + //"\r\na=sendrecv"; + } else { + $sdp_medias = $sdp_media; + } + } + + if($this->action != 'transport-info') { + $this->sdp .= "\r\n".$sdp_version; + $this->sdp .= "\r\n".$sdp_origin; + $this->sdp .= "\r\n".$sdp_session_name; + $this->sdp .= "\r\n".$sdp_timing; + } + + $this->sdp .= $sdp_medias; + + //$this->sdp = (string)$this->jingle->sdp; + + return $this->sdp."\r\n"; + } +}