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;
}