/**
  * Persist license data in WordPress database
  *
  * @param License $license
  *
  * @return License
  */
 public function persist($license)
 {
     global $wpdb;
     // dem defaults
     $defaults = array('order_id' => '', 'activation_email' => '', 'user_id' => '', 'license_key' => '', 'product_id' => '', 'activation_limit' => '', 'date_expires' => '', 'date_created' => '');
     // get date expiration
     $date_expires = $license->get_date_expires();
     // set correct DateTime for non expiring licenses
     if (!$date_expires) {
         $date_expires = new \DateTime('0000-00-00');
         $date_expires->setTime(0, 0, 0);
     }
     // setup array with data
     $data = wp_parse_args(array('license_key' => $license->get_key(), 'order_id' => $license->get_order_id(), 'user_id' => $license->get_user_id(), 'activation_email' => $license->get_activation_email(), 'product_id' => $license->get_product_id(), 'activation_limit' => $license->get_activation_limit(), 'date_created' => $license->get_date_created()->format('Y-m-d'), 'date_expires' => $date_expires->format('Y-m-d')), $defaults);
     // check if new license or existing
     if ('' == $license->get_key()) {
         // insert
         // generate new license
         $license->set_key(license_wp()->service('license_manager')->generate_license_key());
         // set key in data
         $data['license_key'] = $license->get_key();
         // insert into WordPress database
         $wpdb->insert($wpdb->lwp_licenses, $data);
     } else {
         // update
         // unset license from data
         unset($data['license_key']);
         // update database
         $wpdb->update($wpdb->lwp_licenses, $data, array('license_key' => $license->get_key()));
     }
     return $license;
 }