Browse Source

- Fixed prepareRoster(). Last item was not saved

pull/16/head
Christine Ho 11 years ago
parent
commit
5229284f06
  1. 73
      app/widgets/Roster/Roster.php

73
app/widgets/Roster/Roster.php

@ -214,6 +214,7 @@ class Roster extends WidgetBase
* @returns $result: a json for the contacts and one for the groups
*/
function prepareRoster(){
movim_log(__METHOD__);
//Contacts
$contactdao = new \Modl\ContactDAO();
$contacts = $contactdao->getRoster();
@ -224,53 +225,61 @@ class Roster extends WidgetBase
$farray = array(); //final array
if(isset($contacts)) {
$groupname = '';
$jid = '';
/* Init */
$c = array_shift($contacts);
if($c->groupname == ''){
$c->groupname = $this->__('roster.ungrouped');
}
$jid = $c->jid;
$groupname = $c->groupname;
$ac = $c->toRoster();
$this->prepareContact($ac, $c, $capsarr);
$garray = array(); //group array
$garray['agroup'] = $groupname;
$garray['tombstone'] = false;
$garray['agroupitems'] = array(); //group array of jids
$jarray = array(); //jid array
$jarray['ajiditems'] = array(); //jid array of resources
$jarray['ajid'] = $jid;
$jarray['atruename'] = $ac['rosterview']['name'];
$jarray['aval'] = $ac['value'];
$jarray['tombstone'] = false;
$jarray['ajiditems'] = $ac; //jid array of resources
array_push($garray['agroupitems'], $jarray);
foreach($contacts as &$c) {
if($groupname == '' || $c->groupname == ''){
$c->groupname = $this->__('roster.ungrouped');
$groupname = $c->groupname;
}
$ac = $c->toRoster();
$this->prepareContact($ac, $c, $capsarr);
$jid = $jid == '' ? $ac['jid'] : $jid;
/*jid has changed*/
if($jid != $ac['jid']){
//pack up resources in a jid array
$jarray['ajid'] = $jid;
$jarray['atruename'] = $jarray['ajiditems']['rosterview']['name'];
$jarray['aval'] = $jarray['ajiditems']['value'];
$jarray['tombstone'] = false;
array_push($garray['agroupitems'], $jarray);
if($jid != $c->jid){
if($c->groupname == ''){
$c->groupname = $this->__('roster.ungrouped');
}
$ac = $c->toRoster();
$this->prepareContact($ac, $c, $capsarr);
/*groupname has changed*/
if($ac['groupname'] != $groupname){
//push this group in final array
$garray['agroup'] = $groupname;
$garray['tombstone'] = false;
if($groupname != $c->groupname && $c->groupname != ""){
//close group
array_push($farray, $garray);
//next group
$groupname = $ac['groupname'];
$garray = array();
$garray['agroup'] = $groupname;
$garray['tombstone'] = false;
$garray['agroupitems'] = array();
}
//next jid
//push new jid in group
$jid = $ac['jid'];
$jarray = array();
$jarray['ajiditems'] = array();
$jarray['ajid'] = $jid;
$jarray['atruename'] = $ac['rosterview']['name'];
$jarray['aval'] = $ac['value'];
$jarray['tombstone'] = false;
$jarray['ajiditems'] = $ac; //jid array of resources
array_push($garray['agroupitems'], $jarray);
}
if($c == $contacts[count($contacts)-1]){
array_push($farray, $garray);
}
if(empty($jarray['ajiditems']))
$jarray['ajiditems'] = $ac;
}
}
$result['contacts'] = json_encode($farray);

Loading…
Cancel
Save