Beispiel #1
0
 /**
  * Deactivates an instance of a license
  *
  * @param \Never5\LicenseWP\License\License $license
  * @param \Never5\LicenseWP\ApiProduct\ApiProduct $api_product
  * @param array $request
  *
  * @throws ApiException
  */
 private function deactivate($license, $api_product, $request)
 {
     // get activations
     $activations = $license->get_activations($api_product);
     // check & loop
     if (count($activations) > 0) {
         /** @var \Never5\LicenseWP\Activation\Activation $activation */
         foreach ($activations as $activation) {
             // check if given instance equals activation instance
             if ($activation->format_instance($request['instance']) === $activation->get_instance()) {
                 // set activation to not active
                 $activation->set_activation_active(0);
                 // set activation date to now
                 $activation->set_activation_date(new \DateTime());
                 // persist activation
                 $activation = license_wp()->service('activation_repository')->persist($activation);
                 // check if deactivation was successful
                 if ($activation->is_active()) {
                     throw new ApiException(__('Deactivation error: Could not deactivate license key. Please contact support.', 'license-wp'), 108);
                 }
                 // response
                 $response = apply_filters('license_wp_api_activation_response', array('success' => true));
                 // send JSON the WP way
                 wp_send_json($response);
                 exit;
             }
         }
     }
     throw new ApiException(__('Deactivation error: instance not found.', 'license-wp'), 109);
 }