Преглед изворни кода

add standalone addons & domains

andre пре 3 година
родитељ
комит
c8f26a6eb9
1 измењених фајлова са 113 додато и 9 уклоњено
  1. 113 9
      getorderdetails.php

+ 113 - 9
getorderdetails.php

@@ -11,6 +11,7 @@ if(empty($data['orderid'])) {
     return ;
 }
 $orderid = (int) $data['orderid'];
+// mappings for WHMCS inconsistency
 $setup = array(
     'One Time'      => 'msetupfee',
     'Monthly'       => 'msetupfee',
@@ -19,6 +20,13 @@ $setup = array(
     'Annually'      => 'asetupfee',
     'Biennially'    => 'bsetupfee',
     'Triennially'   => 'tsetupfee',
+    'onetime'       => 'msetupfee',
+    'monthly'       => 'msetupfee',
+    'quarterly'     => 'qsetupfee',
+    'semiannually'  => 'ssetupfee',
+    'annually'      => 'asetupfee',
+    'biennially'    => 'bsetupfee',
+    'triennially'   => 'tsetupfee',
 );
 $recurring = array(
     'One Time'      => 'monthly',
@@ -28,6 +36,13 @@ $recurring = array(
     'Annually'      => 'annually',
     'Biennially'    => 'biennially',
     'Triennially'   => 'triennially',
+    'onetime'       => 'monthly',
+    'monthly'       => 'monthly',
+    'quarterly'     => 'quarterly',
+    'semiannually'  => 'semiannually',
+    'annually'      => 'annually',
+    'biennially'    => 'biennially',
+    'triennially'   => 'triennially',
 );
 $billingterm = array(
     'Free Account'  => Lang::trans('orderpaymenttermfree'),
@@ -38,7 +53,18 @@ $billingterm = array(
     'Annually'      => Lang::trans('orderpaymenttermannually'),
     'Biennially'    => Lang::trans('orderpaymenttermbiennially'),
     'Triennially'   => Lang::trans('orderpaymenttermtriennially'),
+    'onetime'       => Lang::trans('orderpaymenttermonetime'),
+    'monthly'       => Lang::trans('orderpaymenttermmonthly'),
+    'quarterly'     => Lang::trans('orderpaymenttermquarterly'),
+    'semiannually'  => Lang::trans('orderpaymenttermsemiannually'),
+    'annually'      => Lang::trans('orderpaymenttermannually'),
+    'biennially'    => Lang::trans('orderpaymenttermbiennially'),
+    'triennially'   => Lang::trans('orderpaymenttermtriennially'),
+    '1'             => Lang::trans('orderpaymenttermannually'),
+    '2'             => Lang::trans('orderpaymenttermbiennially'),
+    '3'             => Lang::trans('orderpaymenttermtriennially'),
 );
+// gathering globals
 $order_details = array();
 $order = localAPI('GetOrders', array('id' => $orderid));
 $order_details['ordernumber'] = $order['orders']['order'][0]['ordernum'];
@@ -52,6 +78,7 @@ $currencyId = Capsule::table('tblcurrencies')
 $serviceIds = Capsule::table('tblhosting')
     ->where('orderid', $orderid)
     ->get('id');
+// gathering informations of products
 $order_details['products'] = array();
 foreach($serviceIds as $serviceId) {
     unset($service_details);
@@ -74,18 +101,18 @@ foreach($serviceIds as $serviceId) {
                 case 'Name des VDC':
                     $name = $customfield['value'];
                     break;
-                case 'Mail Domaine':
+                case 'Mail Domain':
                     $domain = $customfield['value'];
                     break;
             }
             if ($name && $domain) {
-                $service_details['altdomain'] = $name . '@' . $domain;
+                $service_details['domain'] = $name . '@' . $domain;
             } elseif ($name) {
-                $service_details['altdomain'] = $name;
+                $service_details['domain'] = $name;
             } elseif ($domain) {
-                $service_details['altdomain'] = $domain;
+                $service_details['domain'] = $domain;
             } else {
-                $service_details['altdomain'] = 'ID:' . $serviceId->id;
+                $service_details['domain'] = 'ID:' . $serviceId->id;
             }
         }
     }
@@ -150,13 +177,10 @@ foreach($serviceIds as $serviceId) {
         array_push($service_details['configoptions'], $option_details);
         }
     }
-    if(empty($service_details['configoptions'])) {
-        unset($service_details['configoptions']);
-    }
     // addons
     $addon[$serviceId->id] = localAPI('GetClientsAddons', array('serviceid' => $serviceId->id));
+    $service_details['addons'] = array();
     if($addon[$serviceId->id]['totalresults'] != 0) {
-        $service_details['addons'] = array();
         foreach($addon[$serviceId->id]['addons']['addon'] as $addon) {
             unset($service_addon_details);
             $addon_details = (array) Capsule::table('tblhostingaddons')->where('id', $addon['id'])->first();
@@ -188,5 +212,85 @@ foreach($serviceIds as $serviceId) {
     }
     array_push($order_details['products'], $service_details);
 }
+// gathering informations of addons bought without buying a product
+$addons = Capsule::table('tblhostingaddons')
+    ->where('orderid', $orderid)
+    ->whereNotIn('hostingid', $serviceIds)
+    ->get();
+$order_details['addons'] = array();
+foreach($addons as $addon) {
+    unset($addon_details);
+    $addon_details['name'] = Capsule::table('tbladdons')
+        ->where('id', $addon->addonid)
+        ->value('name');
+    $addonBillingcycle = $addon->billingcycle;
+    $addon_details['id'] = $addon->id;
+    $addon_details['qty'] = $addon->qty;
+    if($addonBillingcycle != 'Free Account') {
+        $addon_setup = Capsule::table('tblpricing')
+            ->where('relid', $addon->addonid)
+            ->where('type', 'addon')
+            ->where('currency', $currencyId)
+            ->value($setup[$addonBillingcycle]);
+        $addon_recurring = Capsule::table('tblpricing')
+            ->where('relid', $addon->addonid)
+            ->where('type', 'addon')
+            ->where('currency', $currencyId)
+            ->value($recurring[$addonBillingcycle]);
+        if($addon_setup > 0) {
+            $addon_details['setup'] = $addon_setup;
+        }
+        if($addon_recurring > 0) {
+            $addon_details['recurring'] = $addon_recurring;
+        }
+        if(!empty($addon->subscriptionid)) {
+            $addon_details['servicecode'] = $addon->subscriptionid;
+        }
+    }
+    $addon_parent = localAPI('GetClientsProducts', array('serviceid' => $addon->hostingid));
+    $addon_details['parent'] = array(
+        'name' => $addon_parent['products']['product'][0]['translated_name'],
+        'domain' => $addon_parent['products']['product'][0]['domain']
+    );
+    array_push($order_details['addons'], $addon_details);
+}
+// gathering informations of domains
+$domains = Capsule::table('tbldomains')
+    ->where('orderid', $orderid)
+    ->get();
+$order_details['domains'] = array();
+foreach($domains as $domain) {
+    unset($domain_details);
+    $domain_details['id'] = $domain->id;
+    $domain_details['name'] = $domain->domain;
+    $domain_details['type'] = $domain->type;
+    $domain_details['period'] = $billingterm[(string)$domain->registrationperiod];
+    $tld = end(explode(".", $domain->domain));
+    $tldPricing = localAPI('GetTLDPricing', array('currencyid' => $currencyId));
+    $domain_details['recurring'] = $tldPricing['pricing'][$tld][strtolower($domain->type)][$domain->registrationperiod];
+    if($domain->dnsmanagement > 0){
+        if(!empty($tldPricing['pricing'][$tld]['addons']['dns'])) {
+            $domain_details['addons']['dnsmanagement'] = $tldPricing['pricing'][$tld]['addons']['dns'];
+        } else {
+            $domain_details['addons']['dnsmanagement'] = $billingterm['Free Account'];
+        }
+    }
+    if($domain->emailforwarding > 0){
+        if($tldPricing['pricing'][$tld]['addons']['dns'] > 0) {
+            $domain_details['addons']['emailforwarding'] = $tldPricing['pricing'][$tld]['addons']['email'];
+        } else {
+            $domain_details['addons']['emailforwarding'] = $billingterm['Free Account'];
+        }
+    }
+    if($domain->idprotection > 0){
+        if($tldPricing['pricing'][$tld]['addons']['idprotect'] > 0) {
+            $domain_details['addons']['idprotection'] = $tldPricing['pricing'][$tld]['addons']['idprotect'];
+        } else {
+            $domain_details['addons']['idprotection'] = $billingterm['Free Account'];
+        }
+    }
+    array_push($order_details['domains'], $domain_details);
+}
+// response all together
 $apiresults['orderdetails'] = $order_details;
 $responsetype = "xml";