/**
  * 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;
     }
     $currentFilter = current_filter();
     if (in_array($currentFilter, array('load-update-core.php', 'upgrader_process_complete'))) {
         //Check more often when the user visits "Dashboard -> Updates" or does a bulk update.
         $timeout = 60;
     } else {
         if (in_array($currentFilter, array('load-plugins.php', 'load-update.php'))) {
             //Also check more often on the "Plugins" page and /wp-admin/update.php.
             $timeout = 3600;
         } else {
             if ($this->throttleRedundantChecks && $this->updateChecker->getUpdate() !== null) {
                 //Check less frequently if it's already known that an update is available.
                 $timeout = $this->throttledCheckPeriod * 3600;
             } else {
                 if (defined('DOING_CRON') && constant('DOING_CRON')) {
                     //WordPress cron schedules are not exact, so lets do an update check even
                     //if slightly less than $checkPeriod hours have elapsed since the last check.
                     $cronFuzziness = 20 * 60;
                     $timeout = $this->checkPeriod * 3600 - $cronFuzziness;
                 } else {
                     $timeout = $this->checkPeriod * 3600;
                 }
             }
         }
     }
     $state = $this->updateChecker->getUpdateState();
     $shouldCheck = empty($state) || !isset($state->lastCheck) || time() - $state->lastCheck >= $timeout;
     //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();
     }
 }
 /**
  * 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();
     }
 }