jenkins-bot has submitted this change and it was merged.
Change subject: Submit updates via the job queue for PageAssessments
......................................................................
Submit updates via the job queue for PageAssessments
Bug:T121069
Change-Id: I51444fa543a75446bed3d950e166321736749c1d
---
M PageAssessmentsBody.php
A PageAssessmentsSaveJob.php
M extension.json
3 files changed, 79 insertions(+), 9 deletions(-)
Approvals:
Kaldari: Looks good to me, approved
jenkins-bot: Verified
diff --git a/PageAssessmentsBody.php b/PageAssessmentsBody.php
index 2843d2c..0b53332 100644
--- a/PageAssessmentsBody.php
+++ b/PageAssessmentsBody.php
@@ -41,6 +41,7 @@
$toInsert = array_diff( $projects, $projectsInDb );
$toDelete = array_diff( $projectsInDb, $projects );
$toUpdate = array_intersect( $projects, $projectsInDb );
+ $jobs = array();
foreach ( $assessmentData as $parserData ) {
$project = $parserData[0];
@@ -56,14 +57,23 @@
'pa_page_revision' => $revisionId
);
if ( in_array( $project, $toInsert ) ) {
- PageAssessmentsBody::insertRecord( $values );
+ $values['job_type'] = 'insert';
} elseif ( in_array( $project, $toUpdate ) ) {
- PageAssessmentsBody::updateRecord( $values );
+ $values['job_type'] = 'update';
}
+ $jobs[] = new PageAssessmentsSaveJob( $titleObj,
$values );
}
+ // Add deletion jobs to job array
foreach ( $toDelete as $project ) {
- PageAssessmentsBody::deleteRecord( $pageTitle, $project
);
+ $values = array(
+ 'pa_page_name' => $pageTitle,
+ 'pa_project' => $project,
+ 'job_type' => 'delete'
+ );
+ $jobs[] = new PageAssessmentsSaveJob( $titleObj,
$values );
}
+
+ JobQueueGroup::singleton()->push( $jobs );
return;
}
@@ -121,15 +131,14 @@
/**
* Delete a record from DB
- * @param string $title Page title
- * @param string $project Project
+ * @param array $values Conditions for looking up records to delete
* @return bool True/False on query success/fail
*/
- public static function deleteRecord ( $title, $project ) {
+ public static function deleteRecord ( $values ) {
$dbw = wfGetDB( DB_MASTER );
$conds = array(
- 'pa_page_name' => $title,
- 'pa_project' => $project
+ 'pa_page_name' => $values['pa_page_name'],
+ 'pa_project' => $values['pa_project']
);
$dbw->delete( 'page_assessments', $conds, __METHOD__ );
return true;
diff --git a/PageAssessmentsSaveJob.php b/PageAssessmentsSaveJob.php
new file mode 100644
index 0000000..b11054d
--- /dev/null
+++ b/PageAssessmentsSaveJob.php
@@ -0,0 +1,57 @@
+<?php
+/**
+ * Database writes for the PageAssessments extension using the job queue
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+class PageAssessmentsSaveJob extends Job {
+
+ public function __construct ( $title, $params ) {
+ parent::__construct( 'AssessmentSaveJob', $title, $params );
+ }
+
+ /**
+ * Execute the job
+ *
+ * @return bool
+ */
+ public function run () {
+ $jobType = $this->params['job_type'];
+ // Perform updates
+ if ( $jobType == 'insert' ) {
+ // Compile the array to be inserted to the DB
+ $values = array(
+ 'pa_page_id' => $this->params['pa_page_id'],
+ 'pa_page_name' => $this->params['pa_page_name'],
+ 'pa_page_namespace' =>
$this->params['pa_page_namespace'],
+ 'pa_project' => $this->params['pa_project'],
+ 'pa_class' => $this->params['pa_class'],
+ 'pa_importance' =>
$this->params['pa_importance'],
+ 'pa_page_revision' =>
$this->params['pa_page_revision']
+ );
+ PageAssessmentsBody::insertRecord( $values );
+ } elseif ( $jobType == 'update' ) {
+ // Compile the array to be inserted to the DB
+ $values = array(
+ 'pa_page_id' => $this->params['pa_page_id'],
+ 'pa_page_name' => $this->params['pa_page_name'],
+ 'pa_page_namespace' =>
$this->params['pa_page_namespace'],
+ 'pa_project' => $this->params['pa_project'],
+ 'pa_class' => $this->params['pa_class'],
+ 'pa_importance' =>
$this->params['pa_importance'],
+ 'pa_page_revision' =>
$this->params['pa_page_revision']
+ );
+ PageAssessmentsBody::updateRecord( $values );
+ } elseif ( $jobType == 'delete' ) {
+ $values = array(
+ 'pa_page_name' => $this->params['pa_page_name'],
+ 'pa_project' => $this->params['pa_project']
+ );
+ PageAssessmentsBody::deleteRecord( $values );
+ }
+ return true;
+ }
+
+}
diff --git a/extension.json b/extension.json
index 82e1927..0799e78 100644
--- a/extension.json
+++ b/extension.json
@@ -10,7 +10,8 @@
"type": "parserhook",
"AutoloadClasses": {
"PageAssessmentsHooks": "PageAssessments.hooks.php",
- "PageAssessmentsBody": "PageAssessmentsBody.php"
+ "PageAssessmentsBody": "PageAssessmentsBody.php",
+ "PageAssessmentsSaveJob": "PageAssessmentsSaveJob.php"
},
"ExtensionMessagesFiles": {
"PageAssessmentsMagic": "PageAssessments.i18n.magic.php"
@@ -31,6 +32,9 @@
"i18n"
]
},
+ "JobClasses": {
+ "AssessmentSaveJob": "PageAssessmentsSaveJob"
+ },
"ResourceFileModulePaths": {
"localBasePath": "",
"remoteExtPath": "examples/PageAssessments"
--
To view, visit https://gerrit.wikimedia.org/r/263572
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I51444fa543a75446bed3d950e166321736749c1d
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/PageAssessments
Gerrit-Branch: master
Gerrit-Owner: Niharika29 <[email protected]>
Gerrit-Reviewer: Kaldari <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits