示例#1
0
 /**
  * Retrieves a unique array of all Singular IDs that require Specific Post/Page Access.
  *
  * @package s2Member\Utilities
  * @since 111101
  *
  * @param bool $exclude_conflicts Optional. Defaults to false. If true, return ONLY those which are NOT in conflict with any other Restriction Types.
  * 	The ``$exclude_conflicts`` argument should be used whenever we introduce a list of option values to a site owner. Helping them avoid mishaps.
  * 	Please note, the ``$exclude_conflicts`` argument implements a resource-intensive processing routine.
  * @return array Unique array of all Singular IDs *(as integers)* that require Specific Post/Page Access.
  */
 public static function get_all_singular_ids_with_sp($exclude_conflicts = FALSE)
 {
     if (is_array($singular_ids = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["specific_ids"] && is_array($singular_ids = preg_split("/[\r\n\t\\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["specific_ids"])) ? $singular_ids : array())) {
         $singular_ids = c_ws_plugin__s2member_utils_arrays::force_integers($singular_ids);
     }
     if (!empty($singular_ids) && is_array($singular_ids) && $exclude_conflicts) {
         $x_ids = array($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"], $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"], $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["file_download_limit_exceeded_page"]);
         $x_ids = array_merge($x_ids, c_ws_plugin__s2member_utils_gets::get_all_singular_ids_with_ccaps());
         for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++) {
             if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"] === "all") {
                 $catgs = c_ws_plugin__s2member_utils_gets::get_all_category_ids();
                 $x_ids = array_merge($x_ids, c_ws_plugin__s2member_utils_gets::get_singular_ids_in_terms($catgs));
                 continue;
                 // Continue. The `all` specification is absolute. There's nothing more.
             }
             foreach ($catgs = preg_split("/[\r\n\t\\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"]) as $catg) {
                 $catgs = array_merge($catgs, c_ws_plugin__s2member_utils_gets::get_all_child_category_ids($catg));
             }
             $x_ids = array_merge($x_ids, c_ws_plugin__s2member_utils_gets::get_singular_ids_in_terms($catgs));
             unset($catgs, $catg);
         }
         for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++) {
             if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"] === "all") {
                 $tags = c_ws_plugin__s2member_utils_gets::get_all_tag_ids();
                 $x_ids = array_merge($x_ids, c_ws_plugin__s2member_utils_gets::get_singular_ids_in_terms($tags));
                 continue;
                 // Continue. The `all` specification is absolute. There's nothing more.
             }
             $tags = c_ws_plugin__s2member_utils_gets::get_tags_converted_to_ids($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"]);
             $x_ids = array_merge($x_ids, c_ws_plugin__s2member_utils_gets::get_singular_ids_in_terms($tags));
             unset($tags);
         }
         for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++) {
             if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_posts"] === "all") {
                 $x_ids = array_merge($x_ids, c_ws_plugin__s2member_utils_gets::get_all_post_ids());
                 continue;
                 // Continue. The `all` specification is absolute. There's nothing more.
             }
             foreach ($posts = preg_split("/[\r\n\t\\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_posts"]) as $p) {
                 if (strpos($p, "all-") === 0 && preg_match("/^all-(.+)\$/", $p, $m)) {
                     if ((is_array($p_of_type = c_ws_plugin__s2member_utils_gets::get_all_post_ids($m[1])) || substr($m[1], -1) === "s" && is_array($_p_of_type = c_ws_plugin__s2member_utils_gets::get_all_post_ids(substr($m[1], 0, -1)))) && !empty($p_of_type)) {
                         $x_ids = array_merge($x_ids, $p_of_type);
                     }
                 }
             }
             $x_ids = array_merge($x_ids, $posts);
             unset($posts, $p, $m, $p_of_type);
         }
         for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++) {
             if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_pages"] === "all") {
                 $x_ids = array_merge($x_ids, c_ws_plugin__s2member_utils_gets::get_all_page_ids());
                 continue;
                 // Continue. The `all` specification is absolute. There's nothing more.
             }
             $pages = preg_split("/[\r\n\t\\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_pages"]);
             $x_ids = array_merge($x_ids, $pages);
             unset($pages);
         }
         $x_ids = array_unique(c_ws_plugin__s2member_utils_arrays::force_integers($x_ids));
         $singular_ids = array_diff($singular_ids, $x_ids);
     }
     return !empty($singular_ids) && is_array($singular_ids) ? array_unique($singular_ids) : array();
 }
示例#2
0
 /**
  * Retrieves a unique array of all Singular IDs that require Specific Post/Page Access.
  *
  * @package s2Member\Utilities
  * @since 111101
  *
  * @param bool $exclude_conflicts Optional. Defaults to false. If true, return ONLY those which are NOT in conflict with any other Restriction Types.
  *   The ``$exclude_conflicts`` argument should be used whenever we introduce a list of option values to a site owner. Helping them avoid mishaps.
  *   Please note, the ``$exclude_conflicts`` argument implements a resource-intensive processing routine.
  *
  * @return array Unique array of all Singular IDs *(as integers)* that require Specific Post/Page Access.
  */
 public static function get_all_singular_ids_with_sp($exclude_conflicts = FALSE)
 {
     if (is_array($singular_ids = $GLOBALS['WS_PLUGIN__']['s2member']['o']['specific_ids'] && is_array($singular_ids = preg_split('/[' . "\r\n\t" . '\\s;,]+/', $GLOBALS['WS_PLUGIN__']['s2member']['o']['specific_ids'])) ? $singular_ids : array())) {
         $singular_ids = c_ws_plugin__s2member_utils_arrays::force_integers($singular_ids);
     }
     if (!empty($singular_ids) && is_array($singular_ids) && $exclude_conflicts) {
         $x_ids = array($GLOBALS['WS_PLUGIN__']['s2member']['o']['login_welcome_page'], $GLOBALS['WS_PLUGIN__']['s2member']['o']['membership_options_page'], $GLOBALS['WS_PLUGIN__']['s2member']['o']['file_download_limit_exceeded_page']);
         $x_ids = array_merge($x_ids, c_ws_plugin__s2member_utils_gets::get_all_singular_ids_with_ccaps());
         for ($n = 0; $n <= $GLOBALS['WS_PLUGIN__']['s2member']['c']['levels']; $n++) {
             if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['level' . $n . '_catgs'] === 'all') {
                 $catgs = c_ws_plugin__s2member_utils_gets::get_all_category_ids();
                 $x_ids = array_merge($x_ids, c_ws_plugin__s2member_utils_gets::get_singular_ids_in_terms($catgs));
                 continue;
                 // Continue. The `all` specification is absolute. There's nothing more.
             }
             foreach ($catgs = preg_split('/[' . "\r\n\t" . '\\s;,]+/', $GLOBALS['WS_PLUGIN__']['s2member']['o']['level' . $n . '_catgs']) as $catg) {
                 $catgs = array_merge($catgs, c_ws_plugin__s2member_utils_gets::get_all_child_category_ids($catg));
             }
             $x_ids = array_merge($x_ids, c_ws_plugin__s2member_utils_gets::get_singular_ids_in_terms($catgs));
             unset($catgs, $catg);
             // Just a little housekeeping here.
         }
         for ($n = 0; $n <= $GLOBALS['WS_PLUGIN__']['s2member']['c']['levels']; $n++) {
             if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['level' . $n . '_ptags'] === 'all') {
                 $tags = c_ws_plugin__s2member_utils_gets::get_all_tag_ids();
                 $x_ids = array_merge($x_ids, c_ws_plugin__s2member_utils_gets::get_singular_ids_in_terms($tags));
                 continue;
                 // Continue. The `all` specification is absolute. There's nothing more.
             }
             $tags = c_ws_plugin__s2member_utils_gets::get_tags_converted_to_ids($GLOBALS['WS_PLUGIN__']['s2member']['o']['level' . $n . '_ptags']);
             $x_ids = array_merge($x_ids, c_ws_plugin__s2member_utils_gets::get_singular_ids_in_terms($tags));
             unset($tags);
             // Just a little housekeeping here.
         }
         for ($n = 0; $n <= $GLOBALS['WS_PLUGIN__']['s2member']['c']['levels']; $n++) {
             if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['level' . $n . '_posts'] === 'all') {
                 $x_ids = array_merge($x_ids, c_ws_plugin__s2member_utils_gets::get_all_post_ids());
                 continue;
                 // Continue. The `all` specification is absolute. There's nothing more.
             }
             foreach ($posts = preg_split('/[' . "\r\n\t" . '\\s;,]+/', $GLOBALS['WS_PLUGIN__']['s2member']['o']['level' . $n . '_posts']) as $p) {
                 if (strpos($p, 'all-') === 0 && preg_match('/^all-(.+)$/', $p, $m)) {
                     if ((is_array($p_of_type = c_ws_plugin__s2member_utils_gets::get_all_post_ids($m[1])) || substr($m[1], -1) === 's' && is_array($_p_of_type = c_ws_plugin__s2member_utils_gets::get_all_post_ids(substr($m[1], 0, -1)))) && !empty($p_of_type)) {
                         $x_ids = array_merge($x_ids, $p_of_type);
                     }
                 }
             }
             // Merge all Posts of this Post Type.
             $x_ids = array_merge($x_ids, $posts);
             // Merge together.
             unset($posts, $p, $m, $p_of_type);
             // Just a little housekeeping here.
         }
         for ($n = 0; $n <= $GLOBALS['WS_PLUGIN__']['s2member']['c']['levels']; $n++) {
             if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['level' . $n . '_pages'] === 'all') {
                 $x_ids = array_merge($x_ids, c_ws_plugin__s2member_utils_gets::get_all_page_ids());
                 continue;
                 // Continue. The `all` specification is absolute. There's nothing more.
             }
             $pages = preg_split('/[' . "\r\n\t" . '\\s;,]+/', $GLOBALS['WS_PLUGIN__']['s2member']['o']['level' . $n . '_pages']);
             $x_ids = array_merge($x_ids, $pages);
             // Merge.
             unset($pages);
             // Just a little housekeeping here.
         }
         $x_ids = array_unique(c_ws_plugin__s2member_utils_arrays::force_integers($x_ids));
         $singular_ids = array_diff($singular_ids, $x_ids);
     }
     return !empty($singular_ids) && is_array($singular_ids) ? array_unique($singular_ids) : array();
 }