This repository has been archived by the owner on Jan 27, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPageParseJob.php
81 lines (68 loc) · 2.1 KB
/
PageParseJob.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
/**
* File containing the PageParseJob class
*
* @copyright (C) 2016, Stephan Gambke
* @license GNU General Public License, version 2 (or any later version)
*
* This software is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*
* @file
* @ingroup ExtensionManager
*/
namespace PurgePage;
use Job;
use Language;
use ParserOptions;
use PoolWorkArticleView;
use Title;
use WikiPage;
/**
* Class PageParseJob
*
* @package PurgePage
* @ingroup ExtensionManager
*/
class PageParseJob extends Job {
private $user;
private $language;
/**
* Callers should use DuplicateJob::newFromJob() instead
*
* @param Title $title
* @param array $params Job parameters
*/
public function __construct( Title $title, array $params ) {
parent::__construct( 'parsePage', $title, $params );
$this->user = isset( $params[ 'user' ] ) ? $params[ 'user' ] : null;
$this->language = isset( $params[ 'lang' ] ) ? Language::factory( $params[ 'lang' ] ) : null;
// this does NOT protect against recursion, it only discards duplicate
// calls to {{#purge}} on the same page
$this->removeDuplicates = true;
}
/**
* Run the job
* @return bool Success
*/
public function run() {
$title = $this->getTitle();
if ( $title !== null && $title->isContentPage() && $title->exists() ) {
$wikiPage = WikiPage::factory( $title );
$parserOptions = new ParserOptions( $this->user, $this->language );
$pool = new PoolWorkArticleView( $wikiPage, $parserOptions, $wikiPage->getLatest(), false );
$pool->execute();
}
return true;
}
}