function _update_member_object($member, $pack, $data, $insert = true) { $arr_resp = array('status' => true); $duration_exprs = mgm_get_class('subscription_packs')->get_duration_exprs(); $arr_status = array(MGM_STATUS_NULL, MGM_STATUS_ACTIVE, MGM_STATUS_EXPIRED, MGM_STATUS_PENDING, MGM_STATUS_TRIAL_EXPIRED, MGM_STATUS_CANCELLED, MGM_STATUS_ERROR, MGM_STATUS_AWAITING_CANCEL); // if trial on if ($pack['trial_on']) { $member->trial_on = !empty($data['trial_on']) ? $data['trial_on'] : (isset($member->trial_on) && $member->trial_on ? $member->trial_on : $pack['trial_on']); $member->trial_cost = !empty($data['trial_cost']) ? $data['trial_cost'] : (isset($member->trial_cost) && $member->trial_cost ? $member->trial_cost : $pack['trial_cost']); $member->trial_duration = !empty($data['trial_duration']) ? $data['trial_duration'] : (isset($member->trial_duration) && $member->trial_duration ? $member->trial_duration : $pack['trial_duration']); $member->trial_duration_type = !empty($data['trial_duration_type']) ? $data['trial_duration_type'] : (isset($member->trial_duration_type) && $member->trial_duration_type ? $member->trial_duration_type : $pack['trial_duration_type']); $member->trial_num_cycles = !empty($data['trial_num_cycles']) ? $data['trial_num_cycles'] : (isset($member->trial_num_cycles) ? $member->trial_num_cycles : $pack['trial_num_cycles']); } // duration if (!empty($data['duration'])) { if (is_numeric($data['duration'])) { $member->duration = $data['duration']; } else { $arr_resp['status'] = false; $arr_resp['error'][] = __('Invalid Duration', 'mgm'); } } elseif ($insert) { $member->duration = $pack['duration']; } //duration type: if (!empty($data['duration_type'])) { if (in_array($data['duration_type'], array('d', 'w', 'm', 'y', 'l', 'dr'))) { $member->duration_type = $data['duration_type']; } else { $arr_resp['status'] = false; $arr_resp['error'][] = __('Invalid Duration Type', 'mgm'); } } elseif ($insert) { $member->duration_type = $pack['duration_type']; } //duration type: if (!empty($data['amount'])) { if (is_numeric($data['amount'])) { $member->amount = number_format($data['amount'], 2, '.', ''); } else { $arr_resp['status'] = false; $arr_resp['error'][] = __('Invalid Amount', 'mgm'); } } elseif ($insert) { $member->amount = $pack['cost']; } //amount: if (!empty($data['hide_old_content'])) { $member->hide_old_content = $data['hide_old_content']; } elseif ($insert) { $member->hide_old_content = $pack['hide_old_content']; } //$member->currency = (!empty($data['currency'])) ? $data['currency'] : $system_obj->setting['currency']; $member->membership_type = $data['membership_type']; //status if (!empty($data['status'])) { if (in_array($data['status'], $arr_status)) { $member->status = $data['status']; } else { $arr_resp['status'] = false; $arr_resp['error'][] = __('Invalid Status', 'mgm'); } } elseif ($insert) { //to prevent updating active/expired user status //if(isset($member->status) && !in_array($member->status, array(MGM_STATUS_ACTIVE, MGM_STATUS_EXPIRED))) $member->status = MGM_STATUS_ACTIVE; } if (!empty($data['status_str'])) { $member->status_str = $data['status_str']; } elseif ($insert) { $member->status_str = __('Last payment was successful', 'mgm'); } //join date: if (!empty($data['join_date'])) { if (mgm_is_valid_date($data['join_date']) && ($mysql_date = mgm_format_inputdate_to_mysql($data['join_date']))) { $member->join_date = strtotime($mysql_date); } else { $arr_resp['status'] = false; $arr_resp['error'][] = __('Invalid Joining Date', 'mgm'); } } elseif ($insert) { // do not overwrite if already set if (empty($member->join_date)) { $member->join_date = strtotime('now'); } } //last pay date: if (!empty($data['last_pay_date'])) { if (mgm_is_valid_date($data['last_pay_date']) && ($mysql_date = mgm_format_inputdate_to_mysql($data['last_pay_date']))) { $member->last_pay_date = $mysql_date; } else { $arr_resp['status'] = false; $arr_resp['error'][] = __('Invalid Last Pay Date', 'mgm'); } } elseif ($insert) { // do not overwrite if already set if (empty($member->last_pay_date)) { $member->last_pay_date = date('Y-m-d'); } } //expiry date: if (!empty($data['expire_date'])) { if (mgm_is_valid_date($data['expire_date']) && ($mysql_date = mgm_format_inputdate_to_mysql($data['expire_date']))) { $member->expire_date = $mysql_date; } else { $arr_resp['status'] = false; $arr_resp['error'][] = __('Invalid Last Expiry Date', 'mgm'); } } elseif ($insert) { $time = strtotime('now'); //if not lifetime: // if($pack['duration_type'] != 'l') { if (in_array($pack['duration_type'], array_keys($duration_exprs))) { // take only date exprs $time = strtotime("+{$pack['duration']} {$duration_exprs[$pack['duration_type']]}", $time); // formatted $member->expire_date = date('Y-m-d', $time); } else { $member->expire_date = ''; } } //if lifetime: if ($pack['duration_type'] == 'l' && $member->status == MGM_STATUS_ACTIVE) { $member->expire_date = ''; if (isset($member->status_reset_on)) { unset($member->status_reset_on); } if (isset($member->status_reset_as)) { unset($member->status_reset_as); } } //active number of cycles: if (isset($data['active_num_cycles']) && !empty($data['active_num_cycles'])) { $member->active_num_cycles = $data['active_num_cycles']; } //autoresponder subscription: if (isset($data['autoresponder']) && !empty($data['autoresponder'])) { $member->autoresponder = $data['autoresponder']; $member->subscribed = 'Y'; } //payment_info //module: if (isset($data['payment_info_module']) && !empty($data['payment_info_module'])) { if (!isset($member->payment_info)) { $member->payment_info = new stdClass(); } $member->payment_info->module = $data['payment_info_module']; } //subscr_id if (isset($data['payment_info_subscr_id']) && !empty($data['payment_info_subscr_id'])) { if (!isset($member->payment_info)) { $member->payment_info = new stdClass(); } $member->payment_info->subscr_id = $data['payment_info_subscr_id']; } //txn_type if (isset($data['payment_info_txn_type']) && !empty($data['payment_info_txn_type'])) { if (!isset($member->payment_info)) { $member->payment_info = new stdClass(); } $member->payment_info->txn_type = $data['payment_info_txn_type']; } //txn_id if (isset($data['payment_info_txn_id']) && !empty($data['payment_info_txn_id'])) { if (!isset($member->payment_info)) { $member->payment_info = new stdClass(); } $member->payment_info->txn_id = $data['payment_info_txn_id']; } if ($arr_resp['status']) { $arr_resp['mgm_member'] = $member; } //object fields: // $member->code = 'mgm_member'; // $member->name = 'Member Lib'; // $member->description = 'Member Lib'; //check this: $duration_exprs = null; unset($duration_exprs); $arr_status = null; unset($arr_status); if (function_exists('gc_collect_cycles')) { gc_collect_cycles(); } return $arr_resp; }
/** * get pack description * * @param array $pack * @return string $desc */ function get_pack_desc($pack) { // system $system_obj = mgm_get_class('system'); // format $date_fmt = mgm_get_date_format('date_format_short'); // tpl data $tpl_data = array(); // tpl vars $tpl_vars = array('membership_type', 'cost', 'currency', 'duration', 'duration_period', 'num_cycles', 'trial_cost', 'trial_duration', 'trial_duration_period', 'description', 'currency_sign', 'pack_start_date', 'pack_end_date'); // get template if (!($pack_desc_template = $system_obj->get_template('pack_desc_template', array(), true))) { $pack_desc_template = sprintf('[membership_type] - [cost] [currency] %s [duration] [duration_period] [num_cycles].<br/> [if_trial_on] %s [trial_cost] [currency] %s [trial_duration] [trial_duration_period] [/if_trial_on]', __('per', 'mgm'), __('This pack includes a special, limited trial-offer:', 'mgm'), __('for', 'mgm')); } // lifetime template: if ($pack['duration_type'] == 'l') { // template -issue #988 if (!($pack_desc_template = $system_obj->get_template('pack_desc_lifetime_template', array(), true))) { $pack_desc_template = sprintf('[membership_type] - [cost] [currency] %s', __('for Lifetime', 'mgm')); } } elseif ($pack['duration_type'] == 'dr') { $date_range = ''; // check if (mgm_is_valid_date($pack['duration_range_start_dt'], '-') && mgm_is_valid_date($pack['duration_range_end_dt'], '-')) { $tpl_data['pack_start_date'] = date($date_fmt, strtotime($pack['duration_range_start_dt'])); $tpl_data['pack_end_date'] = date($date_fmt, strtotime($pack['duration_range_end_dt'])); } if (!($pack_desc_template = $system_obj->get_template('pack_desc_date_range_template', array(), true))) { $pack_desc_template = sprintf('[membership_type] - [cost] [currency] starts from [pack_start_date] to [pack_end_date]'); } } // currency - issue #1602 if (!isset($pack['currency']) || empty($pack['currency'])) { $tpl_data['currency'] = $system_obj->get_setting('currency'); } else { $tpl_data['currency'] = $pack['currency']; } // issue #1177 $tpl_data['currency_sign'] = mgm_get_currency_symbols($tpl_data['currency']); // type $tpl_data['membership_type'] = mgm_stripslashes_deep(mgm_get_class('membership_types')->get_type_name($pack['membership_type'])); $tpl_data['duration_period'] = strtolower($this->get_pack_duration($pack)); // transalation issue #950 $tpl_data['text_for'] = __('for', 'mgm'); $tpl_data['num_cycles'] = $pack['num_cycles'] == 0 ? __(' - Ongoing', 'mgm') : sprintf(' - %s %d %s', $tpl_data['text_for'], (int) $pack['num_cycles'], $pack['num_cycles'] == 1 ? __('time', 'mgm') : __('times', 'mgm')); $tpl_data['trial_duration_period'] = strtolower($this->get_pack_duration($pack, true)); // merge rest, overwrite tpl_data if (is_array($pack)) { $tpl_data = array_merge($pack, $tpl_data); } // remove next lines as preg_replace will fail $pack_desc_template = str_replace(array("\r\n", "\n", "\r"), '', $pack_desc_template); // copy template $pack_desc = $pack_desc_template; // replace 0 cost if (isset($tpl_data['cost']) && $tpl_data['cost'] == 0.0) { $pack_desc = str_replace('[cost] [currency]', __('free', 'mgm'), $pack_desc); } // replace 0 trial_cost if (isset($tpl_data['trial_cost']) && $tpl_data['trial_cost'] == 0.0) { $pack_desc = str_replace('[trial_cost] [currency]', __('free', 'mgm'), $pack_desc); } // replace foreach ($tpl_vars as $var) { if (isset($tpl_data[$var])) { $pack_desc = str_replace('[' . $var . ']', $tpl_data[$var], $pack_desc); } } // num cycles if ($pack['num_cycles']) { $pack_desc = preg_replace("'\\[/?\\s?if_num_cycles\\s?\\]'i", '', $pack_desc); } else { $pack_desc = preg_replace("'\\[if_num_cycles\\s?\\](.*)\\[/if_num_cycles\\s?\\]'i", '', $pack_desc); } // trial on if (isset($pack['trial_on']) && (int) $pack['trial_on'] == 1) { $pack_desc = preg_replace("'\\[/?\\s?if_trial_on\\s?\\]'i", '', $pack_desc); } else { $pack_desc = preg_replace("'\\[if_trial_on\\s?\\](.*)\\[/if_trial_on\\s?\\]'i", '', $pack_desc); } // send return $pack_desc; }