/** * [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); }