/** * check membership rebill status * @todo should only run on users who are using a payment module with rebill support * add _mgm_module_has_rebill_status_check='Y' in usermeta */ function mgm_check_membership_rebill_status() { global $wpdb; // flag $paged_fetch = false; // check user with meta only // if( ($a_users = mgm_get_users_with_meta('_mgm_module_has_rebill_status_check','Y')) === FALSE ){ // // old fetch // // $a_users = mgm_get_users_for_rebill_status_check('fetch'); // $a_users = mgm_get_users_for_cron_check('fetch', 'rebill_status'); // // flag // $paged_fetch = true; // } // fetch on meta, with rebill check module only $a_users = mgm_get_users_with_meta('_mgm_module_has_rebill_status_check', 'Y'); // current time $current_date = mgm_get_current_datetime('Y-m-d H:i:s'); // with time part #1023 issue // log // mgm_log($a_users, __FUNCTION__); // loop if ($a_users) { // objects $spacks_obj = mgm_get_class('subscription_packs'); // $mtypes_obj = mgm_get_class('membership_types'); $duration_exprs = $spacks_obj->get_duration_exprs(); $checked = $offset = 0; // define if (!defined('DOING_QUERY_REBILL_STATUS')) { define('DOING_QUERY_REBILL_STATUS', 'cron'); } // loop foreach ($a_users as $user) { // set limit @set_time_limit(300); //300s @ini_set('memory_limit', 134217728); // 128M // get member $member = mgm_get_member($user->ID); // get rebill cycle if ((int) $member->pack_id > 0) { // get member subscribed pack $pack = $spacks_obj->get_pack($member->pack_id); // member pack cycle $num_cycles = isset($member->active_num_cycles) && !empty($member->active_num_cycles) ? (int) $member->active_num_cycles : (int) $pack['num_cycles']; // lifetime ongoing/fixed cycle ongoing if ($num_cycles == 0 || $num_cycles > 1 && (int) $member->rebilled < (int) $num_cycles) { // 100 to dynamic // when current date is later than expire date, we will run rebill check after expire date, not before // payment status available after scheduled transaction date if (strtotime($current_date['date']) > strtotime($member->expire_date)) { // check already run if (!isset($member->last_payment_check_date) || isset($member->last_payment_check_date) && $current_date['date'] != $member->last_payment_check_date) { // apply rebill filter if (apply_filters('mgm_module_rebill_status', $user->ID, $member)) { // success $checked++; } } // update type mgm_update_payment_check_state($user->ID, 'cron'); } } } // unset unset($member); // increase $offset $offset++; } } // update if ($paged_fetch) { // mgm_get_users_for_rebill_status_check('update', $offset); mgm_get_users_for_cron_check('update', 'rebill_status', $offset); } }
function users() { global $wpdb; extract($_POST); // data $data = array(); // coupon $data['coupon'] = $wpdb->get_row($wpdb->prepare("SELECT * FROM `" . TBL_MGM_COUPON . "` WHERE id=%d", $id)); //user $meta_query = array(array('key' => '_mgm_user_register_coupon', 'value' => $id, 'compare' => '=', 'type' => 'UNSIGNED'), array('key' => '_mgm_user_upgrade_coupon', 'value' => $id, 'compare' => '=', 'type' => 'UNSIGNED'), array('key' => '_mgm_user_extend_coupon', 'value' => $id, 'compare' => '=', 'type' => 'UNSIGNED'), array('key' => $id . '_mgm_user_upgrade_coupon', 'value' => $id, 'compare' => '=', 'type' => 'UNSIGNED'), array('key' => $id . '_mgm_user_extend_coupon', 'value' => $id, 'compare' => '=', 'type' => 'UNSIGNED')); //users $data['users'] = array(); //check foreach ($meta_query as $key) { $data['users'] = array_merge($data['users'], mgm_get_users_with_meta(array($key), null, null, null)); //'OR' ); } // load template view $this->load->template('coupons/users', array('data' => $data)); }
/** * get user by rss token * * @param string token * @return mixed wp user or false * @since 1.0 */ function mgm_get_user_by_token($token) { $meta_exists = true; // get users by meta : $a_users = mgm_get_users_with_meta('_mgm_user_rss_token', $token); // fetch all users - paginated way if (empty($a_users)) { $a_users = mgm_get_all_userids(); $meta_exists = false; } // default $user_id = false; // loop foreach ($a_users as $user) { // $user will be ID if returned from paginated array, otherwise object $uid = is_numeric($user) ? $user : $user->ID; // member object $member = mgm_get_member($uid); // match if ($member->rss_token == $token) { // set $user_id = $uid; // update usermeta for next time if (!$meta_exists) { update_user_option($user_id, '_mgm_user_rss_token', $member->rss_token, true); } // exit break; } // unset unset($member); } // set user if ($user_id) { return new WP_User($user_id); } // error return false; }