function rcl_can_user_edit_post_group($post_id)
{
    global $user_ID;
    $group_id = rcl_get_group_id_by_post($post_id);
    if (!$group_id) {
        return false;
    }
    if (current_user_can('edit_post', $post_id)) {
        return true;
    }
    $rcl_group = rcl_get_group($group_id);
    if ($rcl_group->admin_id == $user_ID) {
        return true;
    }
    if (rcl_get_group_user_status($user_ID, $group_id) == 'moderator') {
        return true;
    }
    return false;
}
示例#2
0
function rcl_apply_group_request()
{
    global $rcl_group, $user_ID;
    $user_id = intval($_POST['user_id']);
    $apply = intval($_POST['apply']);
    $group_id = intval($_POST['group_id']);
    $rcl_group = rcl_get_group($group_id);
    if ($rcl_group->admin_id != $user_ID) {
        return false;
    }
    $requests = rcl_get_group_option($group_id, 'requests_group_access');
    $key = array_search($user_id, $requests);
    if (!$requests || false === $key) {
        return false;
    }
    unset($requests[$key]);
    if ($apply) {
        $subject = __('Request access to the group approved!', 'wp-recall');
        $textmail = '
        <h3>Добро пожаловать в группу "' . $rcl_group->name . '"!</h3>
        <p>Поздравляем, ваш запрос на доступ к приватной группе на сайте "' . get_bloginfo('name') . '" был одобрен.</p>
        <p>Теперь вы можете принимать участие в жизни этой группы как полноценный ее участник.</p>
        <p>Вы можете перейти в группу прямо сейчас, перейдя по ссылке:</p>
        <p>' . get_term_link((int) $group_id, 'groups') . '</p>';
        rcl_group_add_user($user_id, $group_id);
        $log['result'] = '<span class="success">' . __('The request was accepted', 'wp-recall') . '</span>';
    } else {
        $log['result'] = '<span class="error">' . __('Request rejected', 'wp-recall') . '</span>';
        $subject = __('The request to access the group rejected.', 'wp-recall');
        $textmail = '
        <p>Сожалеем, но ваш запрос на доступ к приватной группе "' . $rcl_group->name . '" на сайте "' . get_bloginfo('name') . '" был отклонен ее админом.</p>';
    }
    $user_email = get_the_author_meta('user_email', $user_id);
    rcl_mail($user_email, $subject, $textmail);
    rcl_update_group_option($group_id, 'requests_group_access', $requests);
    $log['user_id'] = $user_id;
    echo json_encode($log);
    exit;
}
function rcl_edit_group_pre_get_posts($query)
{
    global $wpdb, $user_ID, $post, $rcl_group;
    if (!$query->is_main_query()) {
        return $query;
    }
    /*if($query->is_search){
    
    	}*/
    if ($query->is_tax && isset($query->query['groups'])) {
        $rcl_group = rcl_group_init();
    }
    if ($query->is_single && $query->query['post_type'] == 'post-group' && $query->query['name']) {
        if (!$post) {
            $post_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM " . $wpdb->prefix . "posts WHERE post_name='%s'", $query->query['name']));
        } else {
            $post_id = $post->ID;
        }
        $cur_terms = get_the_terms($post_id, 'groups');
        foreach ((array) $cur_terms as $cur_term) {
            if ($cur_term->parent != 0) {
                continue;
            }
            $term_id = $cur_term->term_id;
            break;
        }
        $rcl_group = rcl_get_group($term_id);
    }
    if ($rcl_group) {
        if (isset($_GET['group-tag']) && $_GET['group-tag'] != '') {
            if (!$_GET['search-p']) {
                $query->set('groups', $_GET['group-tag']);
                return $query;
            } else {
                wp_redirect(get_term_link((int) $_GET['search-p'], 'groups') . '/?group-tag=' . $_GET['group-tag']);
                exit;
            }
        }
        if (isset($_GET['group-page']) && $_GET['group-page'] != '') {
            $query->set('posts_per_page', 1);
        }
        if ($rcl_group->admin_id == $user_ID) {
            return $query;
        }
        if (!$rcl_group->current_user && $user_ID) {
            $in_group = rcl_get_group_user_status($user_ID, $rcl_group->term_id);
        } else {
            $in_group = $rcl_group->current_user;
        }
        if ($rcl_group->group_status == 'closed') {
            if (!$in_group || $in_group == 'banned') {
                if ($query->is_single) {
                    global $comments_array;
                    add_filter('the_content', 'rcl_close_group_post_content');
                    add_filter('the_content', 'rcl_get_link_group_tag', 80);
                    add_filter('the_content', 'rcl_add_namegroup', 80);
                    add_filter('comments_array', 'rcl_close_group_comments_content');
                    add_filter('comments_open', 'rcl_close_group_comments', 10);
                    remove_filter('rating_block_content', 'rcl_add_buttons_rating', 10);
                } else {
                    add_filter('the_content', 'rcl_close_group_post_content');
                }
            } else {
            }
        } else {
            if ($in_group == 'banned') {
                if ($query->is_single) {
                    add_filter('comments_open', 'rcl_close_group_comments', 10);
                    remove_filter('rating_block_content', 'rcl_add_buttons_rating', 10);
                }
            }
        }
    }
    return $query;
}