function _get_value($value = NULL) { // init $value_is = array(); // default $value_is['options'] = 'flat'; $value_is['flat'] = ''; $value_is['percent'] = ''; $value_is['sub_pack']['cost'] = ''; $value_is['sub_pack']['duration_unit'] = 1; $value_is['sub_pack']['duration_type'] = 'd'; $value_is['sub_pack']['membership_type'] = ''; $value_is['sub_pack']['num_cycles'] = 0; $value_is['sub_pack']['num_cycles_limited'] = 99; $value_is['sub_pack_trial']['cost'] = ''; $value_is['sub_pack_trial']['duration_unit'] = 1; $value_is['sub_pack_trial']['duration_type'] = 'd'; $value_is['sub_pack_trial']['num_cycles'] = 1; // get if (!is_null($value)) { // parse $value_is['options'] = mgm_get_coupon_type($value); // mgm_log($value_is['options'], __FUNCTION__); // set switch ($value_is['options']) { case 'flat': // values $values = mgm_get_coupon_values('flat', $value); // set $value_is['flat'] = $values['value']; break; case 'percent': // values $values = mgm_get_coupon_values('percent', $value); // set $value_is['percent'] = $values['value']; break; case 'sub_pack_bc': // with billing cycle // with billing cycle case 'sub_pack': // without billing cycle // values $values = mgm_get_coupon_values('sub_pack', $value); // mgm_log($values, __FUNCTION__); // set value $value_is['sub_pack']['cost'] = $values['new_cost']; $value_is['sub_pack']['duration_unit'] = $values['new_duration']; $value_is['sub_pack']['duration_type'] = strtolower($values['new_duration_type']); $value_is['sub_pack']['membership_type'] = strtolower(str_replace('-', '_', $values['new_membership_type'])); // billing cycle if (isset($values['new_num_cycles'])) { // options $value_is['options'] = 'sub_pack_bc'; // limited cycle if ($values['new_num_cycles'] > 1) { $value_is['sub_pack']['num_cycles'] = 2; $value_is['sub_pack']['num_cycles_limited'] = $values['new_num_cycles']; } else { // ongoing or one-time $value_is['sub_pack']['num_cycles'] = (int) $values['new_num_cycles']; } } else { unset($value_is['sub_pack']['num_cycles']); // = 3; } break; case 'sub_pack_trial': // values $values = mgm_get_coupon_values('sub_pack_trial', $value); // set value $value_is['sub_pack_trial']['cost'] = $values['new_cost']; $value_is['sub_pack_trial']['duration_unit'] = $values['new_duration']; $value_is['sub_pack_trial']['duration_type'] = strtolower($values['new_duration_type']); $value_is['sub_pack_trial']['num_cycles'] = $values['new_num_cycles']; break; } } // return return $value_is; }
/** * parse and return coupon values * * @since 2.6 */ function mgm_get_coupon_values($type = NULL, $value, $format = false) { // get type from value if (!$type) { $type = mgm_get_coupon_type($value); } // init values $values = array(); // check on type switch ($type) { case 'sub_pack': // split $value = preg_replace('/[^A-Za-z0-9_\\.-]/', '', str_replace('sub_pack#', '', $value)); // check $args = explode('_', $value); // split if (count($args) > 0) { // anticipated vars $vars = array('new_cost', 'new_duration', 'new_duration_type', 'new_membership_type', 'new_num_cycles'); // incrementer $i = 0; // loop foreach ($vars as $var) { // args set if (isset($args[$i])) { $values[$var] = $args[$i]; } // increment $i++; } } break; case 'sub_pack_trial': // value $value = preg_replace('/[^A-Za-z0-9_\\.-]/', '', str_replace('sub_pack_trial#', '', $value)); // check $args = explode('_', $value); // split if (count($args) > 0) { // anticipated vars $vars = array('new_cost', 'new_duration', 'new_duration_type', 'new_num_cycles'); // incrementer $i = 0; // loop foreach ($vars as $var) { // args set if (isset($args[$i])) { $values[$var] = $args[$i]; } // increment $i++; } } // value break; case 'percent': case 'scalar': case 'flat': default: // regx $regx = strpos($value, ',') === false ? '/[^0-9.]/' : '/[^0-9,]/'; // replace and set $values['value'] = preg_replace($regx, '', $value); break; } // format some if ($format) { // new_duration_type if (isset($values['new_duration_type'])) { $values['new_duration_type'] = strtolower($values['new_duration_type']); } // new_membership_type if (isset($values['new_membership_type'])) { $values['new_membership_type'] = strtolower(str_replace('-', '_', $values['new_membership_type'])); } } // return return $values; }