/**
  * Prepare an individual key view.
  *
  * @since 1.0
  *
  * @param Release $release
  *
  * @return array
  */
 protected function prepare_record(Release $release)
 {
     if ($release->get_start_date()) {
         $start_date = $release->get_start_date()->format(get_option('date_format'));
     } else {
         $start_date = '-';
     }
     $updated = $release->get_total_updated();
     $total_activations = $release->get_total_active_activations();
     $total_activations = max(1, $total_activations);
     $percent = min(number_format($updated / $total_activations * 100, 0), 100);
     $data = array('ID' => $release->get_ID(), 'release' => (string) $release, 'status' => $release->get_status(false), 'type' => $release->get_type(true), 'updated' => "{$percent}%", 'start_date' => $start_date);
     /**
      * Filter the columns on the releases list table.
      *
      * @since 1.0
      *
      * @param array   $data
      * @param Release $release
      */
     $data = apply_filters('itelic_releases_list_table_columns', $data, $release);
     return $data;
 }
 /**
  * Create an Upgrade record.
  *
  * @since 1.0
  *
  * @param Activation $activation
  * @param Release    $release
  * @param \DateTime  $update_date
  * @param string     $previous_version
  *
  * @return Update|null
  * @throws DB_Exception
  */
 public static function create(Activation $activation, Release $release, \DateTime $update_date = null, $previous_version = '')
 {
     if ($update_date === null) {
         $update_date = make_date_time();
     }
     if (empty($previous_version) && $activation->get_release()) {
         $previous_version = $activation->get_release()->get_version();
     }
     $data = array('activation' => $activation->get_id(), 'release_id' => $release->get_ID(), 'update_date' => $update_date->format("Y-m-d H:i:s"), 'previous_version' => $previous_version);
     $db = Manager::make_simple_query_object('itelic-updates');
     $ID = $db->insert($data);
     $update = self::get($ID);
     if ($update) {
         $activation->set_release($release);
         /**
          * Fires when an update record is created.
          *
          * @since 1.0
          *
          * @param Update $update
          */
         do_action('itelic_create_update', $update);
         Cache::add($update);
     }
     return $update;
 }
 /**
  * Get data to display for a single key.
  *
  * @param \ITELIC\Activation|\ITELIC\Release $release
  * @param bool                               $raw
  *
  * @return array
  */
 protected function get_fields_for_object(\ITELIC\Release $release, $raw = false)
 {
     if ($release->get_start_date()) {
         $started = $release->get_start_date()->format(DateTime::ISO8601);
     } else {
         $started = '-';
     }
     return array('ID' => $release->get_ID(), 'product' => $raw ? $release->get_product()->ID : $release->get_product()->post_title, 'version' => $release->get_version(), 'type' => $release->get_type(!$raw), 'status' => $release->get_status(!$raw), 'download' => $raw ? $release->get_download()->ID : $release->get_download()->post_title, 'started' => $started, 'changelog' => $release->get_changelog());
 }