Beispiel #1
0
 /**
  * [s2Drip] Shortcode.
  *
  * @package s2Member\Shortcodes
  * @since 140328
  *
  * @attaches-to ``add_shortcode("s2Drip");``
  *
  * @param array $attr An array of Attributes.
  * @param str   $content Content inside the Shortcode.
  * @param str   $shortcode The actual Shortcode name itself.
  *
  * @return inner Return-value of inner routine.
  */
 public static function shortcode($attr = FALSE, $content = FALSE, $shortcode = FALSE)
 {
     foreach (array_keys(get_defined_vars()) as $__v) {
         $__refs[$__v] =& ${$__v};
     }
     do_action("ws_plugin__s2member_pro_before_sc_drip", get_defined_vars());
     unset($__refs, $__v);
     if (current_user_can("administrator")) {
         $drip = TRUE;
     } else {
         $drip = FALSE;
         $attr = shortcode_atts(array("level" => "0", "from_day" => "0", "to_day" => ""), $attr, $shortcode);
         $attr["level"] = abs((int) $attr["level"]);
         if (current_user_can("access_s2member_level" . $attr["level"])) {
             $level_time = 0;
             if ($attr["level"] === 0) {
                 $level_time = c_ws_plugin__s2member_registration_times::registration_time();
             } else {
                 $paid_times = get_user_option("s2member_paid_registration_times");
                 if (is_array($paid_times)) {
                     foreach ($paid_times as $_level => $_time) {
                         $_level = (int) str_ireplace("level", "", $_level);
                         // The `level` index becomes `0` here ^; all others become integers >= 1.
                         if ($_level && $_level >= $attr["level"] && (!$level_time || $_time < $level_time)) {
                             $level_time = $_time;
                         }
                     }
                     unset($_level, $_time);
                 }
             }
             if ($level_time) {
                 $time = time();
                 if ($time > $level_time + max(0, $attr["from_day"] - 1) * 86400) {
                     $drip = TRUE;
                     if (!empty($attr["to_day"]) && $attr["to_day"] > 1) {
                         if ($time > $level_time + $attr["to_day"] * 86400) {
                             $drip = FALSE;
                         }
                     }
                 }
             }
         }
     }
     return apply_filters("ws_plugin__s2member_pro_sc_drip_content", $drip ? $content : "", get_defined_vars());
 }
 /**
  * Gets access capability times.
  *
  * @package s2Member\CCAPS
  * @since 140514
  *
  * @param integer $user_id WP User ID.
  * @param array   $access_caps Optional. If not passed, this returns all times for all caps.
  *    If passed, please pass an array of specific access capabilities to get the times for.
  *    If removal times are desired, you should add a `-` prefix.
  *    e.g., `array('ccap_music','level2','-ccap_video')`
  *
  * @return array An array of all access capability times.
  *    Keys are UTC timestamps (w/ microtime precision), values are the capabilities (including `-` prefixed removals).
  *    e.g., `array('1234567890.0001' => 'ccap_music', '1234567890.0002' => 'level2', '1234567890.0003' => '-ccap_video')`
  */
 public static function get_access_cap_times($user_id, $access_caps = array())
 {
     $ac_times = array();
     if ($user_id = (int) $user_id) {
         $ac_times = get_user_option('s2member_access_cap_times', $user_id);
         if (!is_array($ac_times)) {
             $ac_times = array();
         }
         /* ------- Begin back compat. with `s2member_paid_registration_times`. */
         // $update_ac_times = empty($ac_times) ? FALSE : TRUE;
         $ac_times_min = !empty($ac_times) ? min(array_keys($ac_times)) : 0;
         if (($r_time = c_ws_plugin__s2member_registration_times::registration_time($user_id)) && (empty($ac_times_min) || $r_time < $ac_times_min)) {
             $ac_times[number_format($r_time += 0.0001, 4, '.', '')] = 'level0';
         }
         if (is_array($pr_times = get_user_option('s2member_paid_registration_times', $user_id))) {
             $role_objects = $GLOBALS['wp_roles']->role_objects;
             foreach ($pr_times as $_level => $_time) {
                 if (isset($role_objects['s2member_' . $_level]) && (empty($ac_times_min) || $_time < $ac_times_min)) {
                     foreach (array_keys($role_objects['s2member_' . $_level]->capabilities) as $_cap) {
                         if (strpos($_cap, 'access_s2member_') === 0) {
                             $ac_times[number_format($_time += 0.0001, 4, '.', '')] = substr($_cap, 16);
                         }
                     }
                 }
             }
             unset($_level, $_time, $_cap);
         }
         /* ------- End back compat. with `s2member_paid_registration_times`. */
         if ($access_caps) {
             $ac_times = array_intersect($ac_times, (array) $access_caps);
         }
         ksort($ac_times, SORT_NUMERIC);
         //if($update_ac_times)
         //	update_user_option($user_id, 's2member_access_cap_times', $ac_times);
     }
     return apply_filters('ws_plugin__s2member_get_access_cap_times', $ac_times, get_defined_vars());
 }
 function s2member_paid_registration_time($level = false, $user_id = false)
 {
     return c_ws_plugin__s2member_registration_times::paid_registration_time($level, $user_id);
 }