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; }