public function runTask(PhabricatorUser $actor, PhabricatorWorkerBulkJob $job, PhabricatorWorkerBulkTask $task) { $object = id(new ManiphestTaskQuery())->setViewer($actor)->requireCapabilities(array(PhabricatorPolicyCapability::CAN_VIEW, PhabricatorPolicyCapability::CAN_EDIT))->withPHIDs(array($task->getObjectPHID()))->needProjectPHIDs(true)->needSubscriberPHIDs(true)->executeOne(); if (!$object) { return; } $field_list = PhabricatorCustomField::getObjectFields($object, PhabricatorCustomField::ROLE_EDIT); $field_list->readFieldsFromStorage($object); $actions = $job->getParameter('actions'); $xactions = $this->buildTransactions($actions, $object); $editor = id(new ManiphestTransactionEditor())->setActor($actor)->setContentSource($job->newContentSource())->setContinueOnNoEffect(true)->setContinueOnMissingFields(true)->applyTransactions($object, $xactions); }
public function destroyObjectPermanently(PhabricatorDestructionEngine $engine) { $this->openTransaction(); // We're only removing the actual task objects. This may leave stranded // workers in the queue itself, but they'll just flush out automatically // when they can't load bulk job data. $task_table = new PhabricatorWorkerBulkTask(); $conn_w = $task_table->establishConnection('w'); queryfx($conn_w, 'DELETE FROM %T WHERE bulkJobPHID = %s', $task_table->getPHID(), $this->getPHID()); $this->delete(); $this->saveTransaction(); }