Add Privacy to logicboxes Module


Add Privacy to logicboxes Module

Hello Blestars,

in this tuto we will show you how to add privacy protection to Logicboxes module as Configurable Options.

1 - First we need to add Configurable Options Group, let call it Protection ID
2 - Create Configurable Options , type checkbox, with Client can Add and Edit, in label put what you want like 'Privacy Protection', in name you should put 'purchase-privacy', in option set the name and in value put 'true' , set price, select group 'Protection ID' . a screen shot like this

 

3 - Now, edit the domain package to support Configurable Options that we have added, save .

at here we have finished the easy task, now we will attack the hard part, as we need to add some code in the logicboxes Module , we should open components/modules/logicboxes/logicboxes.php , in addService() function then search

            $domain_field_basics = [
                'years' => true,
                'ns' => true,
                'customer-id' => true,
                'reg-contact-id' => true,
                'admin-contact-id' => true,
                'tech-contact-id' => true,
                'billing-contact-id' => true,
                'invoice-option' => true,
                'protect-privacy' => true
            ];

Replace with

             $domain_field_basics = [
                'years' => true,
                'ns' => true,
                'customer-id' => true,
                'reg-contact-id' => true,
                'admin-contact-id' => true,
                'tech-contact-id' => true,
                'billing-contact-id' => true,
                'invoice-option' => true,
                'protect-privacy' => true,
                'purchase-privacy' => true
            ];

Search

                $vars['invoice-option'] = 'NoInvoice';
                $vars['protect-privacy'] = 'false';

replace with

                $vars['invoice-option'] = 'NoInvoice';
                $vars['protect-privacy'] = 'false';
                $vars['purchase-privacy'] = 'false';

search

$response = $domains->register(array_intersect_key($vars, $domain_fields));

replace with

                    // Add Protect privacy to the domain
                    if (isset($vars['configoptions']['purchase-privacy'])) {
                        $vars['protect-privacy'] = 'true';
                        $vars['purchase-privacy'] = 'true';
                    }
                    
                    $response = $domains->register(array_intersect_key($vars, $domain_fields));

in editService() function, search

$service_fields = $this->serviceFieldsToObject($service->fields);

under add

        // Set any config options
        $vars['configoptions'] = (isset($vars['configoptions']) ? (array)$vars['configoptions'] : null);
        
        // Only provision the service if 'use_module' is true
        if ($vars['use_module'] == 'true') {
        
            // Update config option fields
            if (isset($vars['configoptions'])) {
                
                $response = $domains->details(
                    ['order-id' => $service_fields->{'order-id'}, 'options' => ['OrderDetails']]
                );
                $this->processResponse($api, $response);
                $order = $response->response();
                
                // Add Protect privacy to the domain if applicable
                if ($vars['configoptions']['purchase-privacy']
                    && ($order->privacyprotectedallowed == 'true')
                    && ($order->isprivacyprotected == 'false')
                ) {
                    $data = array(
                        'order-id' => $service_fields->{'order-id'},
                        'invoice-option' => 'NoInvoice'
                    );

                    $response = $domains->purchasePrivacy($data);
                    $this->processResponse($api, $response);
                }                
            }
            
            if ($this->Input->errors()) {
                return;
            }
        }

in renewService() function , search

            $vars = [
                'years' => 1,
                'order-id' => $fields->{'order-id'},
                'exp-date' => $order->endtime,
                'invoice-option' => 'NoInvoice'
            ];

under add

            // Rnew Privacy protection if added to the domain
            if (isset($service->options) ) {
                foreach ($service->options as $option) {
                    if (($option['option_name'] == 'purchase-privacy')
                        && ($order->privacyprotectedallowed)
                    ) {
                        $vars['purchase-privacy'] = 'true';
                    }
                }
            }

 

save the change, now you are done .