예제 #1
0
    /**
     * Render the release view.
     */
    public function render()
    {
        if (!$this->release) {
            return;
        }
        $df = str_replace('F', 'M', get_option('date_format'));
        $tf = get_option('time_format');
        $dtf = "{$df} {$tf}";
        if ($this->release->get_status() == Release::STATUS_DRAFT) {
            $click_edit = ' title="' . __("Click to Edit", Plugin::SLUG) . '"';
        } else {
            $click_edit = '';
        }
        ?>

		<div id="release-details">
			<div class="spacing-wrapper bottom-border header-block">

				<div class="status status-<?php 
        echo esc_attr($this->release->get_status());
        ?>
">
					<span data-value="<?php 
        echo esc_attr($this->release->get_status());
        ?>
"<?php 
        echo $click_edit;
        ?>
>
						<?php 
        echo $this->release->get_status(true);
        ?>
					</span>
				</div>

				<div class="name-block">
					<h2 class="product-name"><?php 
        echo $this->release->get_product()->post_title;
        ?>
</h2>

					<h2 class="version-name"><?php 
        echo $this->release->get_version();
        ?>
</h2>
				</div>
			</div>

			<div class="spacing-wrapper bottom-border third-row misc-block">
				<div class="third type">
					<h4><?php 
        _e("Type", Plugin::SLUG);
        ?>
</h4>

					<h3 data-value="<?php 
        echo $this->release->get_type();
        ?>
"<?php 
        echo $click_edit;
        ?>
>
						<?php 
        echo $this->release->get_type(true);
        ?>
					</h3>
				</div>
				<div class="third release-date">
					<h4><?php 
        _e("Released", Plugin::SLUG);
        ?>
</h4>

					<h3>
						<?php 
        if (null === $this->release->get_start_date()) {
            ?>
							<?php 
            echo '&mdash;';
            ?>
						<?php 
        } else {
            ?>
							<?php 
            echo \ITELIC\convert_gmt_to_local($this->release->get_start_date())->format($df);
            ?>
						<?php 
        }
        ?>
					</h3>
				</div>
				<div class="third version">
					<h4><?php 
        _e("Version", Plugin::SLUG);
        ?>
</h4>

					<h3 data-value="<?php 
        echo $this->release->get_version();
        ?>
"<?php 
        echo $click_edit;
        ?>
>
						<?php 
        echo $this->release->get_version();
        ?>
					</h3>
				</div>
			</div>

			<?php 
        if (get_post_meta($this->release->get_product()->ID, '_itelic_first_release', true) == $this->release->get_pk()) {
            ?>

				<div class="spacing-wrapper">
					<p class="initial-release-notice">
						<?php 
            printf(__("Congratulations on releasing %s; there isn't any data to display for your first release, though.", Plugin::SLUG), $this->release->get_product()->post_title);
            ?>
					</p>
				</div>

				</div>

				<?php 
            return;
            ?>
			<?php 
        }
        ?>

			<?php 
        if ($this->release->get_status() == Release::STATUS_DRAFT) {
            ?>

				<?php 
            $this->render_replace_file_section();
            ?>

			<?php 
        }
        ?>

			<?php 
        $this->render_security_message();
        $this->render_upgrades_bar();
        $this->render_whats_changed();
        if ($this->release->get_status() != Release::STATUS_ARCHIVED) {
            $this->render_notification_editor();
        }
        $this->render_progress_line_chart();
        $this->render_versions_pie_chart();
        $this->render_notify_button_section();
        ?>
		</div>

		<?php 
        /**
         * Fires after the main single release screen.
         *
         * @since 1.0
         *
         * @param Release $release
         */
        do_action('itelic_single_release_screen_after', $this->release);
    }
예제 #2
0
/**
 * When a release is paused, set the last updated value to the previous release
 * in the readme product feature.
 *
 * @internal
 *
 * @since 1.0
 *
 * @param Release      $release
 * @param Release|null $prev_release
 */
function set_last_updated_value_in_readme_on_pause(Release $release, Release $prev_release = null)
{
    if ($prev_release && $release->get_product()->has_feature('licensing-readme')) {
        $release->get_product()->update_feature('licensing-readme', array('last_updated' => $prev_release->get_start_date()->getTimestamp()));
    }
}
예제 #3
0
 /**
  * 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());
 }
예제 #4
0
 /**
  * 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;
 }
예제 #5
0
 /**
  * Get the progress line chart.
  *
  * @since 1.0
  *
  * @param Release $release
  *
  * @return Chart\Base
  */
 private function get_progress_chart(Release $release)
 {
     if ($release->get_status() == Release::STATUS_DRAFT) {
         return null;
     }
     $raw = $release->get_first_14_days_of_upgrades();
     $now = new \DateTime();
     $diff = $release->get_start_date()->diff($now);
     $days = min(14, max($diff->days + 1, 1));
     $data = array();
     $day = \ITELIC\convert_gmt_to_local(clone $release->get_start_date());
     $sql_df = 'Y-m-d';
     for ($i = 0; $i < $days; $i++) {
         $key = $day->format($sql_df);
         if (isset($raw[$key])) {
             $data[$key] = $raw[$key];
         } else {
             $data[$key] = 0;
         }
         $day = $day->add(new \DateInterval('P1D'));
     }
     $df = 'M j';
     $labels = array_map(function ($day) use($df) {
         $day = new \DateTime($day);
         return $day->format($df);
     }, array_keys($data));
     $chart = new Chart\Line($labels, 698, 200, array('scaleIntegersOnly' => true, 'scaleBeginAtZero' => true, 'ibdLoadOn' => 'loadProgressChart', 'responsive' => true));
     $chart->add_data_set(array_values($data), '', array('fillColor' => "rgba(151,187,205,0.2)", 'strokeColor' => "rgba(151,187,205,1)", 'pointColor' => "rgba(151,187,205,1)", 'pointStrokeColor' => "#fff", 'pointHighlightFill' => "#fff", 'pointHighlightStroke' => "rgba(151,187,205,1)"));
     return $chart;
 }