Browse Source

- Fix rooms info handling

- Display differently public and anonymous MUC configuration
- Fix fatal error when adding a room
pull/898/head
Timothée Jaussoin 6 years ago
parent
commit
dcb7ccd20f
  1. 1
      app/Conference.php
  2. 20
      app/Info.php
  3. 16
      app/widgets/Chat/_chat.tpl
  4. 16
      app/widgets/Rooms/Rooms.php
  5. 10
      app/widgets/Rooms/_rooms.tpl
  6. 4
      app/widgets/Rooms/locales.ini

1
app/Conference.php

@ -53,6 +53,7 @@ class Conference extends Model
public function info()
{
return $this->hasOne('App\Info', 'server', 'conference')
->where('node', '')
->whereCategory('conference')
->whereType('text');
}

20
app/Info.php

@ -249,21 +249,39 @@ class Info extends Model
case 'muc_public':
$this->mucpublic = true;
break;
case 'muc_hidden':
$this->mucpublic = false;
break;
case 'muc_persistent':
$this->mucpersistent = true;
break;
case 'muc_temporary':
$this->mucpersistent = false;
break;
case 'muc_passwordprotected':
$this->mucpasswordprotected = true;
break;
case 'muc_unsecured':
$this->mucpasswordprotected = false;
break;
case 'muc_membersonly':
$this->mucpasswordprotected = true;
$this->mucmembersonly = true;
break;
case 'muc_open':
$this->mucmembersonly = false;
break;
case 'muc_moderated':
$this->mucmoderated = true;
break;
case 'muc_unmoderated':
$this->mucmoderated = false;
break;
case 'muc_semianonymous':
$this->mucsemianonymous = true;
break;
case 'muc_nonanonymous':
$this->mucsemianonymous = false;
break;
}
array_push($features, (string)$feature->attributes()->var);

16
app/widgets/Chat/_chat.tpl

@ -63,22 +63,34 @@
<p>{$c->__('button.connecting')}…</p>
{elseif="$conference && $conference->subject"}
<p class="line" title="{$conference->subject}">
{if="$conference->info && !$conference->info->mucsemianonymous"}
{if="$conference->info && $conference->info->mucpublic"}
<span title="{$c->__('room.public_muc_text')}">
{$c->__('room.public_muc')} <i class="material-icons">wifi_tethering</i>
</span>
{/if}
{if="$conference->info && !$conference->info->mucsemianonymous"}
<span title="{$c->__('room.nonanonymous_muc_text')}">
{$c->__('room.nonanonymous_muc')} <i class="material-icons">face</i>
</span>
{/if}
{$conference->subject}
</p>
{else}
<p class="line" id="{$jid|cleanupId}-state">
{if="$conference->info && !$conference->info->mucsemianonymous"}
{if="$conference->info && $conference->info->mucpublic"}
<span title="{$c->__('room.public_muc_text')}">
{$c->__('room.public_muc')} <i class="material-icons">wifi_tethering</i>
</span>
{/if}
{if="$conference->info && !$conference->info->mucsemianonymous"}
<span title="{$c->__('room.nonanonymous_muc_text')}">
{$c->__('room.nonanonymous_muc')} <i class="material-icons">face</i>
</span>
{/if}
{$room}
</p>
{/if}

16
app/widgets/Rooms/Rooms.php

@ -211,6 +211,7 @@ class Rooms extends Base
$view = $this->tpl();
$view->assign('info', \App\Info::where('server', $room)
->where('node', '')
->whereCategory('conference')
->first());
$view->assign('mucservice', \App\Info::where('server', 'like', '%'. $this->user->session->host)
@ -481,7 +482,9 @@ class Rooms extends Base
}
$jid = explodeJid($room);
$capability = \App\Info::where('node', $jid['server'])->first();
$capability = \App\Info::where('server', $jid['server'])
->where('node', '')
->first();
if ($capability && ($capability->isMAM() || $capability->isMAM2())) {
$p->enableMAM();
@ -516,7 +519,12 @@ class Rooms extends Base
// We properly exit
$resource = $this->user->session->conferences()
->where('conference', $room)
->first()->presences()
->first();
if (!$resource) return;
$resource = $resource
->presences()
->where('mucjid', $this->user->id)
->first();
@ -525,7 +533,9 @@ class Rooms extends Base
: null;
$jid = explodeJid($room);
$capability = \App\Info::where('node', $jid['server'])->first();
$capability = \App\Info::where('server', $jid['server'])
->where('node', '')
->first();
if (!$capability || !$capability->isMAM()) {
$this->user->messages()->where('jidfrom', $room)->delete();

10
app/widgets/Rooms/_rooms.tpl

@ -85,9 +85,12 @@
class="moderator"
{/if}>
{$count} <i class="material-icons">people</i>
{if="$value->info && !$value->info->mucsemianonymous"}
{if="$value->info && $value->info->mucpublic"}
<i class="material-icons">wifi_tethering</i>
{/if}
{if="$value->info && !$value->info->mucsemianonymous"}
<i class="material-icons">face</i>
{/if}
</span> –
{elseif="isset($info) && $info->occupants > 0"}
<span title="{$c->__('communitydata.sub', $info->occupants)}"
@ -95,9 +98,12 @@
class="moderator"
{/if}>
{$info->occupants} <i class="material-icons">people</i>
{if="$value->info && !$value->info->mucsemianonymous"}
{if="$value->info && $value->info->mucpublic"}
<i class="material-icons">wifi_tethering</i>
{/if}
{if="$value->info && !$value->info->mucsemianonymous"}
<i class="material-icons">face</i>
{/if}
</span> –
{/if}
{if="$servers->has($value->server) && !$servers->get($value->server)->identities->contains('type', 'text')"}

4
app/widgets/Rooms/locales.ini

@ -52,4 +52,6 @@ invite = Invite a contact
invited = Invitation sent
invite_code = Send this link to your contacts
public_muc = Public
public_muc_text = "The participants of this chatroom can see each other's profile"
public_muc_text = This chatroom is publicly discoverable
nonanonymous_muc = Public profiles
nonanonymous_muc_text = "The participants of this chatroom can see each other's profile"
Loading…
Cancel
Save