The rest of the things necessary to make group block work
Link to the group block form. Hide join button if the current user is blocked.
This commit is contained in:
parent
d3a0c524cc
commit
1c87532912
|
@ -180,7 +180,7 @@ class GroupMemberListItem extends ProfileListItem
|
|||
$user = common_current_user();
|
||||
|
||||
if (!empty($user) && $user->id != $this->profile->id && $user->isAdmin($this->group)) {
|
||||
$bf = new GroupBlockForm($this->out, $this->profile,
|
||||
$bf = new GroupBlockForm($this->out, $this->profile, $this->group,
|
||||
array('action' => 'groupmembers',
|
||||
'nickname' => $this->group->nickname));
|
||||
$bf->show();
|
||||
|
|
|
@ -96,6 +96,11 @@ class JoingroupAction extends Action
|
|||
return false;
|
||||
}
|
||||
|
||||
if (Group_block::isBlocked($this->group, $cur->getProfile())) {
|
||||
$this->clientError(_('You have been blocked from that group by the admin.'), 403);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -283,7 +283,7 @@ class ShowgroupAction extends Action
|
|||
if ($cur->isMember($this->group)) {
|
||||
$lf = new LeaveForm($this, $this->group);
|
||||
$lf->show();
|
||||
} else {
|
||||
} else if (!Group_block::isBlocked($this->group, $cur->getProfile())) {
|
||||
$jf = new JoinForm($this, $this->group);
|
||||
$jf->show();
|
||||
}
|
||||
|
|
|
@ -1,10 +1,29 @@
|
|||
<?php
|
||||
/**
|
||||
* Table Definition for group_block
|
||||
*
|
||||
* Laconica - a distributed open-source microblogging tool
|
||||
* Copyright (C) 2008, Controlez-Vous, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
require_once 'classes/Memcached_DataObject';
|
||||
|
||||
class Group_block extends Memcached_DataObject
|
||||
if (!defined('LACONICA')) { exit(1); }
|
||||
|
||||
require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
|
||||
|
||||
class Group_block extends Memcached_DataObject
|
||||
{
|
||||
###START_AUTOCODE
|
||||
/* the code below is auto generated do not remove the above tag */
|
||||
|
@ -20,4 +39,57 @@ class Group_block extends Memcached_DataObject
|
|||
|
||||
/* the code above is auto generated do not remove the tag below */
|
||||
###END_AUTOCODE
|
||||
|
||||
function &pkeyGet($kv)
|
||||
{
|
||||
return Memcached_DataObject::pkeyGet('Group_block', $kv);
|
||||
}
|
||||
|
||||
static function isBlocked($group, $profile)
|
||||
{
|
||||
$block = Group_block::pkeyGet(array('group_id' => $group->id,
|
||||
'blocked' => $profile->id));
|
||||
return !empty($block);
|
||||
}
|
||||
|
||||
static function blockProfile($group, $profile, $blocker)
|
||||
{
|
||||
// Insert the block
|
||||
|
||||
$block = new Group_block();
|
||||
|
||||
$block->query('BEGIN');
|
||||
|
||||
$block->group_id = $group->id;
|
||||
$block->blocked = $profile->id;
|
||||
$block->blocker = $blocker->id;
|
||||
|
||||
$result = $block->insert();
|
||||
|
||||
if (!$result) {
|
||||
common_log_db_error($block, 'INSERT', __FILE__);
|
||||
return null;
|
||||
}
|
||||
|
||||
// Delete membership if any
|
||||
|
||||
$member = new Group_member();
|
||||
|
||||
$member->group_id = $group->id;
|
||||
$member->profile_id = $profile->id;
|
||||
|
||||
if ($member->find(true)) {
|
||||
$result = $member->delete();
|
||||
if (!$result) {
|
||||
common_log_db_error($member, 'DELETE', __FILE__);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// Commit, since both have been done
|
||||
|
||||
$block->query('COMMIT');
|
||||
|
||||
return $block;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -137,4 +137,9 @@ class User_group extends Memcached_DataObject
|
|||
common_debug(common_log_objstring($this));
|
||||
return $this->update($orig);
|
||||
}
|
||||
|
||||
function getBestName()
|
||||
{
|
||||
return ($this->fullname) ? $this->fullname : $this->nickname;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -166,7 +166,7 @@ class GroupList extends Widget
|
|||
if ($user->isMember($this->group)) {
|
||||
$lf = new LeaveForm($this->out, $this->group);
|
||||
$lf->show();
|
||||
} else {
|
||||
} else if (!Group_block::isBlocked($this->group, $user->getProfile())) {
|
||||
$jf = new JoinForm($this->out, $this->group);
|
||||
$jf->show();
|
||||
}
|
||||
|
|
|
@ -101,7 +101,7 @@ class Router
|
|||
$main = array('login', 'logout', 'register', 'subscribe',
|
||||
'unsubscribe', 'confirmaddress', 'recoverpassword',
|
||||
'invite', 'favor', 'disfavor', 'sup',
|
||||
'block', 'subedit');
|
||||
'block', 'subedit', 'groupblock');
|
||||
|
||||
foreach ($main as $a) {
|
||||
$m->connect('main/'.$a, array('action' => $a));
|
||||
|
@ -164,10 +164,10 @@ class Router
|
|||
array('action' => 'newnotice'),
|
||||
array('replyto' => '[A-Za-z0-9_-]+'));
|
||||
|
||||
$m->connect('notice/:notice/file',
|
||||
array('action' => 'file'),
|
||||
$m->connect('notice/:notice/file',
|
||||
array('action' => 'file'),
|
||||
array('notice' => '[0-9]+'));
|
||||
|
||||
|
||||
$m->connect('notice/:notice',
|
||||
array('action' => 'shownotice'),
|
||||
array('notice' => '[0-9]+'));
|
||||
|
|
Loading…
Reference in New Issue
Block a user