예제 #1
0
 /**
  * Retrieves a unique array of Singular IDs in the database, within specific term IDs.
  *
  * Only returns Singular IDs that are within the ``$terms`` passed through this function.
  *
  * @package s2Member\Utilities
  * @since 110912
  *
  * @param array $terms Required. An array of term IDs.
  * @return array Unique array of all Singular IDs *(as integers)* within the ``$terms`` passed through this function.
  */
 public static function get_singular_ids_in_terms($terms = FALSE)
 {
     global $wpdb;
     // Need this global DB object reference here.
     if (!empty($terms) && is_array($terms) && is_array($singular_ids = $wpdb->get_col("SELECT `object_id` FROM `" . $wpdb->term_relationships . "` WHERE `term_taxonomy_id` IN (SELECT `term_taxonomy_id` FROM `" . $wpdb->term_taxonomy . "` WHERE `term_id` IN('" . implode("','", $terms) . "'))"))) {
         $singular_ids = c_ws_plugin__s2member_utils_arrays::force_integers($singular_ids);
     }
     return !empty($singular_ids) && is_array($singular_ids) ? array_unique($singular_ids) : array();
 }
예제 #2
0
 /**
  * Forces integer values on each array value *(also supports multi-dimensional arrays)*.
  *
  * @package s2Member\Utilities
  * @since 111101
  *
  * @param array $array An input array.
  * @return array Returns the ``$array`` after having forced it to set of integer values.
  */
 public static function force_integers($array = FALSE)
 {
     $array = (array) $array;
     foreach ($array as &$value) {
         if (is_array($value)) {
             $value = c_ws_plugin__s2member_utils_arrays::force_integers($value);
         } else {
             if (!is_integer($value)) {
                 $value = (int) $value;
             }
         }
     }
     return $array;
 }
 /**
  * Filters ``$cwhere`` query portion.
  *
  * @package s2Member\Queries
  * @since 110912
  *
  * @attaches-to ``add_filter("comment_feed_where");``
  *
  * @param str $cwhere Expects the SQL `WHERE` portion to be passed through by the Filter.
  * @param obj $wp_query Expects ``$wp_query`` by reference, from the Filter.
  * @return str The revised ``$cwhere`` string.
  */
 public static function _query_level_access_coms($cwhere = FALSE, &$wp_query = FALSE)
 {
     global $wpdb;
     /* Need this global DB object reference here. */
     /**/
     if (is_string($cwhere) && is_object($wpdb) && is_object($wp_query) && !$wp_query->get("suppress_filters")) {
         $x_terms = array_merge((array) $wp_query->get("category__not_in"), (array) $wp_query->get("tag__not_in"));
         $x_terms = array_unique(c_ws_plugin__s2member_utils_arrays::force_integers($x_terms));
         $x_singulars = c_ws_plugin__s2member_utils_gets::get_singular_ids_in_terms($x_terms);
         /**/
         $cwhere .= " AND `" . $wpdb->comments . "`.`comment_post_ID` NOT IN('" . implode("','", (array) $wp_query->get("post__not_in")) . "')";
         $cwhere .= " AND `" . $wpdb->comments . "`.`comment_post_ID` NOT IN('" . implode("','", $x_singulars) . "')";
     }
     remove_filter("comment_feed_where", "c_ws_plugin__s2member_querys::_query_level_access_coms", 100, 2);
     return apply_filters("_ws_plugin__s2member_query_level_access_coms", $cwhere, get_defined_vars());
 }
예제 #4
0
 /**
  * Filters WordPress Page queries that use wp_list_pages()
  *
  * @package s2Member\Queries
  * @since 130617
  *
  * @attaches-to ``add_filter("wp_list_pages_excludes");``
  *
  * @return array The array of ``$excludes``.
  */
 public static function _query_level_access_list_pages($excludes = array())
 {
     // Here we need to exclude any Page not available to the current user.
     for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) {
         if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_pages"] === "all" && !current_user_can("access_s2member_level" . $n)) {
             $excludes = array_merge($excludes, c_ws_plugin__s2member_utils_arrays::force_integers(c_ws_plugin__s2member_utils_gets::get_all_page_ids()));
         } else {
             if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_pages"] && !current_user_can("access_s2member_level" . $n)) {
                 $excludes = array_merge($excludes, c_ws_plugin__s2member_utils_arrays::force_integers(preg_split("/[\r\n\t\\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_pages"])));
             }
         }
     }
     return $excludes;
 }
예제 #5
0
 /**
  * Filters WordPress Page queries that use wp_list_pages()
  *
  * @package s2Member\Queries
  * @since 130617
  *
  * @attaches-to ``add_filter('wp_list_pages_excludes');``
  *
  * @param array $excludes An array of any existing excludes.
  *
  * @return array The array of ``$excludes``.
  */
 public static function _query_level_access_list_pages($excludes = array())
 {
     for ($n = $GLOBALS['WS_PLUGIN__']['s2member']['c']['levels']; $n >= 0; $n--) {
         if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['level' . $n . '_pages'] === 'all' && !current_user_can('access_s2member_level' . $n)) {
             $excludes = array_merge($excludes, c_ws_plugin__s2member_utils_arrays::force_integers(c_ws_plugin__s2member_utils_gets::get_all_page_ids()));
         } else {
             if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['level' . $n . '_pages'] && !current_user_can('access_s2member_level' . $n)) {
                 $excludes = array_merge($excludes, c_ws_plugin__s2member_utils_arrays::force_integers(preg_split('/[' . "\r\n\t" . '\\s;,]+/', $GLOBALS['WS_PLUGIN__']['s2member']['o']['level' . $n . '_pages'])));
             }
         }
     }
     return $excludes;
 }
예제 #6
0
 /**
  * Filters WordPress Page queries that use wp_list_pages()
  *
  * @package s2Member\Queries
  * @since 130617
  *
  * @attaches-to ``add_filter('wp_list_pages_excludes');``
  *
  * @param array $excludes An array of any existing excludes.
  *
  * @return array The array of ``$excludes``.
  */
 public static function _query_level_access_list_pages($excludes = array())
 {
     if (!$GLOBALS['WS_PLUGIN__']['s2member']['o']['filter_wp_query'] || !in_array('all', $GLOBALS['WS_PLUGIN__']['s2member']['o']['filter_wp_query']) && !in_array('pages', $GLOBALS['WS_PLUGIN__']['s2member']['o']['filter_wp_query'])) {
         return $excludes;
     }
     // Not applicable.
     $systematics = array();
     // Initialize.
     $systematics[] = $GLOBALS['WS_PLUGIN__']['s2member']['o']['file_download_limit_exceeded_page'];
     if (!is_user_logged_in()) {
         $systematics[] = $GLOBALS['WS_PLUGIN__']['s2member']['o']['login_welcome_page'];
     }
     $systematics = c_ws_plugin__s2member_utils_arrays::force_integers($systematics);
     // Force integer values here.
     $excludes = array_merge($excludes, $systematics);
     for ($n = $GLOBALS['WS_PLUGIN__']['s2member']['c']['levels']; $n >= 0; $n--) {
         if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['level' . $n . '_pages'] === 'all' && !current_user_can('access_s2member_level' . $n)) {
             $excludes = array_merge($excludes, c_ws_plugin__s2member_utils_arrays::force_integers(c_ws_plugin__s2member_utils_gets::get_all_page_ids()));
         } else {
             if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['level' . $n . '_pages'] && !current_user_can('access_s2member_level' . $n)) {
                 $excludes = array_merge($excludes, c_ws_plugin__s2member_utils_arrays::force_integers(preg_split('/[' . "\r\n\t" . '\\s;,]+/', $GLOBALS['WS_PLUGIN__']['s2member']['o']['level' . $n . '_pages'])));
             }
         }
     }
     return apply_filters('_ws_plugin__s2member_query_level_access_list_pages', $excludes, get_defined_vars());
 }