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;
}
Ejemplo n.º 2
0
function rcl_get_link_group_tag($content)
{
    global $post, $user_ID, $rcl_group;
    if ($post->post_type != 'post-group') {
        return $content;
    }
    $group_data = get_the_terms($post->ID, 'groups');
    foreach ((array) $group_data as $data) {
        if ($data->parent == 0) {
            $group_id = $data->term_id;
        } else {
            $tag = $data;
        }
    }
    if (!$tag) {
        return $content;
    }
    if (doing_filter('the_excerpt')) {
        if (!$rcl_group) {
            $rcl_group = rcl_get_group($group_id);
        }
        if ($rcl_group->group_status == 'closed') {
            if ($rcl_group->admin_id != $user_ID) {
                $user_status = rcl_get_group_user_status($user_ID, $rcl_group->term_id);
                if (!$user_status) {
                    $content = rcl_close_group_post_content();
                }
            }
        }
    }
    $cat = '<p><i class="fa fa-folder"></i>' . __('Category in the group', 'wp-recall') . ': <a href="' . get_term_link((int) $group_id, 'groups') . '?group-tag=' . $tag->slug . '">' . $tag->name . '</a></p>';
    return $cat . $content;
}
Ejemplo n.º 3
0
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;
}