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; }
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; }
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; }