[ticket/14257] Fix CLI reparser and set cron interval

PHPBB3-14257
This commit is contained in:
Oliver Schramm 2015-11-01 03:49:01 +01:00
parent 081424a6c4
commit 900ccd79af
4 changed files with 22 additions and 25 deletions

View file

@ -53,7 +53,7 @@ class reparse extends \phpbb\console\command\command
protected $reparsers; protected $reparsers;
/** /**
* @var array Reparser names as keys, and their last $current ID as values * @var array The reparser's last $current ID as values
*/ */
protected $resume_data; protected $resume_data;
@ -208,27 +208,18 @@ class reparse extends \phpbb\console\command\command
* Will use the last saved value if --resume is set and the option was not specified * Will use the last saved value if --resume is set and the option was not specified
* on the command line * on the command line
* *
* @param string $reparser_name Reparser name
* @param string $option_name Option name * @param string $option_name Option name
* @return integer * @return integer
*/ */
protected function get_option($reparser_name, $option_name) protected function get_option($option_name)
{ {
// Return the option from the resume_data if applicable // Return the option from the resume_data if applicable
if ($this->input->getOption('resume') && isset($this->resume_data[$reparser_name][$option_name]) && !$this->input->hasParameterOption('--' . $option_name)) if ($this->input->getOption('resume') && isset($this->resume_data[$option_name]) && !$this->input->hasParameterOption('--' . $option_name))
{ {
return $this->resume_data[$reparser_name][$option_name]; return $this->resume_data[$option_name];
} }
$value = $this->input->getOption($option_name); return $this->input->getOption($option_name);
// range-max has no default value, it must be computed for each reparser
if ($option_name === 'range-max' && $value === null)
{
$value = $this->reparsers[$reparser_name]->get_max_id();
}
return $value;
} }
/** /**
@ -250,9 +241,15 @@ class reparse extends \phpbb\console\command\command
} }
// Start at range-max if specified or at the highest ID otherwise // Start at range-max if specified or at the highest ID otherwise
$max = $this->get_option($name, 'range-max'); $max = $this->get_option('range-max');
$min = $this->get_option($name, 'range-min'); $min = $this->get_option('range-min');
$size = $this->get_option($name, 'range-size'); $size = $this->get_option('range-size');
// range-max has no default value, it must be computed for each reparser
if ($max == null)
{
$max = $reparser->get_max_id();
}
if ($max < $min) if ($max < $min)
{ {

View file

@ -122,7 +122,7 @@ class reparser extends \phpbb\cron\task\base
} }
} }
if ($this->config[$this->reparser_name . '_cron_interval'] != -1) if ($this->config[$this->reparser_name . '_cron_interval'])
{ {
return $this->config[$this->reparser_name . '_last_cron'] < time() - $this->config[$this->reparser_name . '_cron_interval']; return $this->config[$this->reparser_name . '_last_cron'] < time() - $this->config[$this->reparser_name . '_cron_interval'];
} }

View file

@ -29,15 +29,15 @@ class text_reparser extends \phpbb\db\migration\container_aware_migration
{ {
return array( return array(
array('config.add', array('reparse_lock', 0, true)), array('config.add', array('reparse_lock', 0, true)),
array('config.add', array('text_reparser.pm_text_cron_interval', 0)), array('config.add', array('text_reparser.pm_text_cron_interval', 10)),
array('config.add', array('text_reparser.pm_text_last_cron', 0)), array('config.add', array('text_reparser.pm_text_last_cron', 0)),
array('config.add', array('text_reparser.poll_option_cron_interval', 0)), array('config.add', array('text_reparser.poll_option_cron_interval', 10)),
array('config.add', array('text_reparser.poll_option_last_cron', 0)), array('config.add', array('text_reparser.poll_option_last_cron', 0)),
array('config.add', array('text_reparser.poll_title_cron_interval', 0)), array('config.add', array('text_reparser.poll_title_cron_interval', 10)),
array('config.add', array('text_reparser.poll_title_last_cron', 0)), array('config.add', array('text_reparser.poll_title_last_cron', 0)),
array('config.add', array('text_reparser.post_text_cron_interval', 0)), array('config.add', array('text_reparser.post_text_cron_interval', 10)),
array('config.add', array('text_reparser.post_text_last_cron', 0)), array('config.add', array('text_reparser.post_text_last_cron', 0)),
array('config.add', array('text_reparser.user_signature_cron_interval', 0)), array('config.add', array('text_reparser.user_signature_cron_interval', 10)),
array('config.add', array('text_reparser.user_signature_last_cron', 0)), array('config.add', array('text_reparser.user_signature_last_cron', 0)),
array('custom', array(array($this, 'reparse'))), array('custom', array(array($this, 'reparse'))),
); );

View file

@ -100,7 +100,7 @@ class manager
* Sets the interval for a text_reparser cron task * Sets the interval for a text_reparser cron task
* *
* @param string $name Name of the reparser to schedule * @param string $name Name of the reparser to schedule
* @param int $interval Interval in seconds, -1 to disable the cron task * @param int $interval Interval in seconds, 0 to disable the cron task
*/ */
public function schedule($name, $interval) public function schedule($name, $interval)
{ {
@ -113,7 +113,7 @@ class manager
/** /**
* Sets the interval for all text_reparser cron tasks * Sets the interval for all text_reparser cron tasks
* *
* @param int $interval Interval in seconds, -1 to disable the cron task * @param int $interval Interval in seconds, 0 to disable the cron task
*/ */
public function schedule_all($interval) public function schedule_all($interval)
{ {