public function posts_where($where, $query)
 {
     $post_type = '';
     if (isset($query->query_vars['post_type'])) {
         $post_type = $query->query_vars['post_type'];
     }
     if (empty($post_type)) {
         if ($query->is_page) {
             $post_type = 'page';
         } else {
             $post_type = 'post';
         }
     }
     if ($post_type !== 'any' && $post_type !== $this->type) {
         return $where;
     }
     $user = wp_get_current_user();
     $user_roles = array();
     if (!is_user_logged_in() || $user->ID === 0) {
         $user_roles[] = self::$GUEST_ROLE_KEY;
     } elseif (empty($user->roles)) {
         return $where;
     } else {
         $user_roles = $user->roles;
     }
     if (in_array(self::ADMINISTRATOR_ROLE_KEY, $user_roles)) {
         return $where;
     }
     $entity = new WPFront_User_Role_Editor_Entity_Post_Type_Permissions();
     $table_name = $entity->table_name();
     global $wpdb;
     $roles = array();
     foreach ($user_roles as $role) {
         $roles[] = $wpdb->prepare('%s', $role);
     }
     $count = count($roles);
     $roles = implode(',', $roles);
     return $where . " AND {$wpdb->posts}.id NOT IN (" . "SELECT post_id FROM {$table_name} " . "WHERE role IN ({$roles}) " . "AND enable_permissions = 1 " . "AND has_read = 0 " . "GROUP BY post_id " . "HAVING COUNT(*) = {$count}" . ") ";
 }