Agora_Driver::updateModerator PHP Method

updateModerator() public method

Updates forum moderators.
public updateModerator ( string $moderator, integer $forum_id = null, string $action = 'add' )
$moderator string Moderator username.
$forum_id integer Forum to add moderator to.
$action string Action to peform ('add' or 'delete').
    public function updateModerator($moderator, $forum_id = null, $action = 'add')
    {
        if ($forum_id == null) {
            $forum_id = $this->_forum_id;
        }
        switch ($action) {
            case 'add':
                $sql = 'INSERT INTO agora_moderators (forum_id, horde_uid) VALUES (?, ?)';
                break;
            case 'delete':
                $sql = 'DELETE FROM agora_moderators WHERE forum_id = ? AND horde_uid = ?';
                break;
        }
        try {
            $this->_db->execute($sql, array($forum_id, $moderator));
        } catch (Horde_Db_Exception $e) {
            throw new Agora_Exception($e->getMessage());
        }
        /* Update permissions */
        $perm_name = 'agora:forums:' . $this->_scope . ':' . $forum_id;
        $perms = $GLOBALS['injector']->getInstance('Horde_Perms');
        if (!$perms->exists($perm_name)) {
            $forum_perm = $GLOBALS['injector']->getInstance('Horde_Core_Perms')->newPermission($perm_name);
            $perms->addPermission($forum_perm);
        } else {
            $forum_perm = $perms->getPermission($perm_name);
            if ($forum_perm instanceof PEAR_Error) {
                return $forum_perm;
            }
        }
        switch ($action) {
            case 'add':
                $forum_perm->addUserPermission($moderator, Horde_Perms::DELETE, true);
                break;
            case 'delete':
                $forum_perm->removeUserPermission($moderator, Horde_Perms::DELETE, true);
                break;
        }
        $this->_cache->expire('agora_forum_' . $forum_id, $GLOBALS['conf']['cache']['default_lifetime']);
    }