Пример #1
0
 function create_license_key($user_id = 0, $user_identifier = '', $meta = array(), $meta_display = array())
 {
     //set expiry dates
     if ($this->expires_in_days > 0) {
         //we need to set a future expiry date
         $date_format = get_option('date_format');
         $current_date = date($date_format);
         $expiry_date = date($date_format, strtotime($current_date . ' + ' . $this->expires_in_days . ' days'));
     } else {
         $expiry_date = 'never';
     }
     $licensekey_meta = array('expires' => $expiry_date, 'domain_limit' => $this->domain_limit);
     $user_id = absint($user_id);
     $licensekey_meta_extra = array('user' => $user_identifier, 'user_id' => $user_id, 'license_id' => $this->ID, 'license' => $this->slug, 'meta' => $meta);
     $author = apply_filters('foolic_licensekey_author_override', $user_id > 0 ? $user_id : 1);
     $vendor = $this->author;
     $licence_key_string = $this->generate_license_key(true);
     $licensekey_override_args = array('timestamp' => time(), 'proposed_licensekey' => $licence_key_string, 'expires' => $expiry_date, 'domain_limit' => $this->domain_limit, 'vendor_id' => $vendor, 'user' => $user_identifier, 'user_id' => $user_id, 'license' => $this->ID, 'meta' => $meta, 'meta_display' => $meta_display);
     $licence_key_response = apply_filters('foolic_licensekey_response_override', $licence_key_string, $licensekey_override_args);
     //first check if the response is a stdClass and cast to array if so
     if ($licence_key_response instanceof stdClass) {
         $licence_key_response = (array) $licence_key_response;
     }
     if (is_array($licence_key_response)) {
         //handle an array response
         //try get license key
         if (array_key_exists('licensekey', $licence_key_response)) {
             $licence_key_string = $licence_key_response['licensekey'];
             unset($licence_key_response['licensekey']);
         }
         //try get license key again using slightly different key
         if (array_key_exists('license_key', $licence_key_response)) {
             $licence_key_string = $licence_key_response['license_key'];
             unset($licence_key_response['license_key']);
         }
         $meta_display = array_merge($meta_display, $licence_key_response);
     } else {
         //we are getting back a string
         $licence_key_string = $licence_key_response;
     }
     $licence_key = new foolic_licensekey();
     if ($licence_key->create($licence_key_string, $vendor, $licensekey_meta, $licensekey_meta_extra, $meta_display)) {
         //link the licensekey to the license
         $this->link_to_licensekey($licence_key->ID);
         //link the licensekey to the user
         $licence_key->link_to_user($user_id);
         return $licence_key;
     }
     //there was an error!
     return false;
 }