function ym_validate_coupon($coupon_code, $type)
{
    global $wpdb;
    $sql = 'SELECT value, allowed FROM ' . $wpdb->prefix . 'ym_coupon WHERE name = \'' . $coupon_code . '\'';
    $wpdb->query($sql);
    if ($wpdb->num_rows) {
        $id = ym_get_coupon_id_by_name($coupon_code);
        $value = $wpdb->get_var($sql);
        $allowed = $wpdb->get_var($sql, 1);
        $allowed = str_split($allowed);
        if ($allowed[$type] == 1) {
            if (ym_coupon_get_uses_left($id) > 0) {
                return $value;
            }
        }
    }
    return FALSE;
}
Пример #2
0
 private function sync_coupons($coupon_name = FALSE, $type = 'name')
 {
     $r = TRUE;
     $coupons = array();
     if ($coupon_name && $type == 'name') {
         if ($id = ym_get_coupon_id_by_name($coupon_name)) {
             $coupons = array(ym_get_coupon($id));
         }
     } else {
         if ($coupon_name && $type == 'id') {
             $coupons = array(ym_get_coupon($coupon_name));
         } else {
             $coupons = ym_get_coupons();
         }
     }
     foreach ($coupons as $coupon) {
         $value = $coupon->value;
         if (ym_get_coupon_type($value) == 'percent') {
             // only support percentages
             $allowed = str_split($coupon->allowed);
             if ($allowed[0] == 1 || $allowed[1] == 1) {
                 // sub enabled
                 $value = str_replace('%', '', $value);
                 $create = FALSE;
                 $id = 'ym_' . $coupon->id;
                 $mycoupon = array('id' => $id, 'percent_off' => $value, 'duration' => 'once');
                 list($r_code, $response) = $this->stripe_api_request('coupons/' . $id);
                 if ($r_code == 200) {
                     // check ok
                     if ($response->percent_off != $value || $response->duration != 'once') {
                         // update needed
                         list($r_code, $response) = $this->stripe_api_request('coupons', 'DELETE', array('id' => $id));
                         if ($r_code == 200) {
                             $create = TRUE;
                         } else {
                             $r = FALSE;
                         }
                     }
                 } else {
                     $create = TRUE;
                 }
                 if ($create) {
                     // doesn't exist
                     list($r_code, $response) = $this->stripe_api_request('coupons', 'POST', $mycoupon);
                     if ($r_code != 200) {
                         $r = FALSE;
                     }
                 }
             }
         }
     }
     return $r;
 }