[ Index ] |
PHP Cross Reference of phpBB-3.3.14-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * 4 * This file is part of the phpBB Forum Software package. 5 * 6 * @copyright (c) phpBB Limited <https://www.phpbb.com> 7 * @license GNU General Public License, version 2 (GPL-2.0) 8 * 9 * For full copyright and license information, please see 10 * the docs/CREDITS.txt file. 11 * 12 */ 13 14 namespace phpbb\cron\task\text_reparser; 15 16 /** 17 * Reparse text cron task 18 */ 19 class reparser extends \phpbb\cron\task\base 20 { 21 const MIN = 1; 22 const SIZE = 100; 23 24 /** 25 * @var \phpbb\config\config 26 */ 27 protected $config; 28 29 /** 30 * @var \phpbb\config\db_text 31 */ 32 protected $config_text; 33 34 /** 35 * @var \phpbb\lock\db 36 */ 37 protected $reparse_lock; 38 39 /** 40 * @var \phpbb\textreparser\manager 41 */ 42 protected $reparser_manager; 43 44 /** 45 * @var string 46 */ 47 protected $reparser_name; 48 49 /** 50 * @var \phpbb\di\service_collection 51 */ 52 protected $reparsers; 53 54 /** 55 * @var array 56 */ 57 protected $resume_data; 58 59 /** 60 * Constructor 61 * 62 * @param \phpbb\config\config $config 63 * @param \phpbb\config\db_text $config_text 64 * @param \phpbb\lock\db $reparse_lock 65 * @param \phpbb\textreparser\manager $reparser_manager 66 * @param \phpbb\di\service_collection $reparsers 67 */ 68 public function __construct(\phpbb\config\config $config, \phpbb\config\db_text $config_text, \phpbb\lock\db $reparse_lock, \phpbb\textreparser\manager $reparser_manager, \phpbb\di\service_collection $reparsers) 69 { 70 $this->config = $config; 71 $this->config_text = $config_text; 72 $this->reparse_lock = $reparse_lock; 73 $this->reparser_manager = $reparser_manager; 74 $this->reparsers = $reparsers; 75 } 76 77 /** 78 * Sets the reparser for this cron task 79 * 80 * @param string $reparser 81 */ 82 public function set_reparser($reparser) 83 { 84 $this->reparser_name = !isset($this->reparsers[$reparser]) ? $this->reparser_manager->find_reparser($reparser) : $reparser; 85 86 if ($this->resume_data === null) 87 { 88 $this->resume_data = $this->reparser_manager->get_resume_data($this->reparser_name); 89 } 90 } 91 92 /** 93 * {@inheritdoc} 94 */ 95 public function is_runnable() 96 { 97 if ($this->resume_data === null) 98 { 99 $this->resume_data = $this->reparser_manager->get_resume_data($this->reparser_name); 100 } 101 102 if (!isset($this->resume_data['range-max']) || $this->resume_data['range-max'] >= $this->resume_data['range-min']) 103 { 104 return true; 105 } 106 107 return false; 108 } 109 110 /** 111 * {@inheritdoc} 112 */ 113 public function should_run() 114 { 115 if (!empty($this->config['reparse_lock'])) 116 { 117 $last_run = explode(' ', $this->config['reparse_lock']); 118 119 if ($last_run[0] + 3600 >= time()) 120 { 121 return false; 122 } 123 } 124 125 if ($this->config[$this->reparser_name . '_cron_interval']) 126 { 127 return $this->config[$this->reparser_name . '_last_cron'] < time() - $this->config[$this->reparser_name . '_cron_interval']; 128 } 129 130 return false; 131 } 132 133 /** 134 * {@inheritdoc} 135 */ 136 public function run() 137 { 138 if ($this->reparse_lock->acquire()) 139 { 140 if ($this->resume_data === null) 141 { 142 $this->resume_data = $this->reparser_manager->get_resume_data($this->reparser_name); 143 } 144 145 /** 146 * @var \phpbb\textreparser\reparser_interface $reparser 147 */ 148 $reparser = $this->reparsers[$this->reparser_name]; 149 150 $min = isset($this->resume_data['range-min']) ? $this->resume_data['range-min'] : self::MIN; 151 $current = isset($this->resume_data['range-max']) ? $this->resume_data['range-max'] : $reparser->get_max_id(); 152 $size = isset($this->resume_data['range-size']) ? $this->resume_data['range-size'] : self::SIZE; 153 154 if ($current >= $min) 155 { 156 $start = max($min, $current + 1 - $size); 157 $end = max($min, $current); 158 159 $reparser->reparse_range($start, $end); 160 161 $this->reparser_manager->update_resume_data($this->reparser_name, $min, $start - 1, $size); 162 } 163 164 $this->config->set($this->reparser_name . '_last_cron', time()); 165 $this->reparse_lock->release(); 166 } 167 } 168 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Mon Nov 25 19:05:08 2024 | Cross-referenced by PHPXref 0.7.1 |