/**
  * Run an update check and output the result. Useful for making sure that
  * the update checking process works as expected.
  */
 public function ajaxCheckNow()
 {
     if ($_POST['slug'] !== $this->updateChecker->slug) {
         return;
     }
     $this->preAjaxReqest();
     $update = $this->updateChecker->checkForUpdates();
     if ($update !== null) {
         echo "An update is available:";
         echo '<pre>', htmlentities(print_r($update, true)), '</pre>';
     } else {
         echo 'No updates found.';
     }
     exit;
 }
 /**
  * Check for updates if the configured check interval has already elapsed.
  * Will use a shorter check interval on certain admin pages like "Dashboard -> Updates" or when doing cron.
  *
  * You can override the default behaviour by using the "puc_check_now-$slug" filter.
  * The filter callback will be passed three parameters:
  *     - Current decision. TRUE = check updates now, FALSE = don't check now.
  *     - Last check time as a Unix timestamp.
  *     - Configured check period in hours.
  * Return TRUE to check for updates immediately, or FALSE to cancel.
  *
  * This method is declared public because it's a hook callback. Calling it directly is not recommended.
  */
 public function maybeCheckForUpdates()
 {
     if (empty($this->checkPeriod)) {
         return;
     }
     $state = $this->updateChecker->getUpdateState();
     $shouldCheck = empty($state) || !isset($state->lastCheck) || time() - $state->lastCheck >= $this->getEffectiveCheckPeriod();
     //Let plugin authors substitute their own algorithm.
     $shouldCheck = apply_filters('puc_check_now-' . $this->updateChecker->slug, $shouldCheck, !empty($state) && isset($state->lastCheck) ? $state->lastCheck : 0, $this->checkPeriod);
     if ($shouldCheck) {
         $this->updateChecker->checkForUpdates();
     }
 }