From a1789ddde42033f1b05cc4929491214ee6e79383 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Thu, 17 Dec 2015 09:15:42 +0100 Subject: Update to MediaWiki 1.26.0 --- .../lib/Elastica/Bulk/Action/AbstractDocument.php | 166 +++++++++++++++++++++ .../lib/Elastica/Bulk/Action/CreateDocument.php | 10 ++ .../lib/Elastica/Bulk/Action/DeleteDocument.php | 33 ++++ .../lib/Elastica/Bulk/Action/IndexDocument.php | 53 +++++++ .../lib/Elastica/Bulk/Action/UpdateDocument.php | 65 ++++++++ 5 files changed, 327 insertions(+) create mode 100644 vendor/ruflin/elastica/lib/Elastica/Bulk/Action/AbstractDocument.php create mode 100644 vendor/ruflin/elastica/lib/Elastica/Bulk/Action/CreateDocument.php create mode 100644 vendor/ruflin/elastica/lib/Elastica/Bulk/Action/DeleteDocument.php create mode 100644 vendor/ruflin/elastica/lib/Elastica/Bulk/Action/IndexDocument.php create mode 100644 vendor/ruflin/elastica/lib/Elastica/Bulk/Action/UpdateDocument.php (limited to 'vendor/ruflin/elastica/lib/Elastica/Bulk/Action') diff --git a/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/AbstractDocument.php b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/AbstractDocument.php new file mode 100644 index 00000000..3127ff9c --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/AbstractDocument.php @@ -0,0 +1,166 @@ +setData($document); + } + + /** + * @param \Elastica\Document $document + * + * @return $this + */ + public function setDocument(Document $document) + { + $this->_data = $document; + + $metadata = $this->_getMetadata($document); + + $this->setMetadata($metadata); + + return $this; + } + + /** + * @param \Elastica\Script $script + * + * @return $this + */ + public function setScript(Script $script) + { + if (!($this instanceof UpdateDocument)) { + throw new \BadMethodCallException('setScript() can only be used for UpdateDocument'); + } + + $this->_data = $script; + + $metadata = $this->_getMetadata($script); + $this->setMetadata($metadata); + + return $this; + } + + /** + * @param \Elastica\Script|\Elastica\Document $data + * + * @throws \InvalidArgumentException + * + * @return $this + */ + public function setData($data) + { + if ($data instanceof Script) { + $this->setScript($data); + } elseif ($data instanceof Document) { + $this->setDocument($data); + } else { + throw new \InvalidArgumentException('Data should be a Document or a Script.'); + } + + return $this; + } + + /** + * Note: This is for backwards compatibility. + * + * @return \Elastica\Document|null + */ + public function getDocument() + { + if ($this->_data instanceof Document) { + return $this->_data; + } + + return; + } + + /** + * Note: This is for backwards compatibility. + * + * @return \Elastica\Script|null + */ + public function getScript() + { + if ($this->_data instanceof Script) { + return $this->_data; + } + + return; + } + + /** + * @return \Elastica\Document|\Elastica\Script + */ + public function getData() + { + return $this->_data; + } + + /** + * @param \Elastica\AbstractUpdateAction $source + * + * @return array + */ + abstract protected function _getMetadata(AbstractUpdateAction $source); + + /** + * @param \Elastica\Document|\Elastica\Script $data + * @param string $opType + * + * @return static + */ + public static function create($data, $opType = null) + { + //Check type + if (!($data instanceof Document) && !($data instanceof Script)) { + throw new \InvalidArgumentException('The data needs to be a Document or a Script.'); + } + + if (null === $opType && $data->hasOpType()) { + $opType = $data->getOpType(); + } + + //Check that scripts can only be used for updates + if ($data instanceof Script) { + if ($opType === null) { + $opType = self::OP_TYPE_UPDATE; + } elseif ($opType != self::OP_TYPE_UPDATE) { + throw new \InvalidArgumentException('Scripts can only be used with the update operation type.'); + } + } + + switch ($opType) { + case self::OP_TYPE_DELETE: + $action = new DeleteDocument($data); + break; + case self::OP_TYPE_CREATE: + $action = new CreateDocument($data); + break; + case self::OP_TYPE_UPDATE: + $action = new UpdateDocument($data); + break; + case self::OP_TYPE_INDEX: + default: + $action = new IndexDocument($data); + break; + } + + return $action; + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/CreateDocument.php b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/CreateDocument.php new file mode 100644 index 00000000..82581856 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/CreateDocument.php @@ -0,0 +1,10 @@ +getOptions($params, true); + + return $metadata; + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/IndexDocument.php b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/IndexDocument.php new file mode 100644 index 00000000..0cf30e61 --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/IndexDocument.php @@ -0,0 +1,53 @@ +setSource($document->getData()); + + return $this; + } + + /** + * @param \Elastica\AbstractUpdateAction $source + * + * @return array + */ + protected function _getMetadata(AbstractUpdateAction $action) + { + $params = array( + 'index', + 'type', + 'id', + 'version', + 'version_type', + 'routing', + 'percolate', + 'parent', + 'ttl', + 'timestamp', + 'retry_on_conflict', + ); + + $metadata = $action->getOptions($params, true); + + return $metadata; + } +} diff --git a/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/UpdateDocument.php b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/UpdateDocument.php new file mode 100644 index 00000000..2b133acb --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Bulk/Action/UpdateDocument.php @@ -0,0 +1,65 @@ + $document->getData()); + + if ($document->getDocAsUpsert()) { + $source['doc_as_upsert'] = true; + } elseif ($document->hasUpsert()) { + $upsert = $document->getUpsert()->getData(); + + if (!empty($upsert)) { + $source['upsert'] = $upsert; + } + } + + $this->setSource($source); + + return $this; + } + + /** + * @param \Elastica\Script $script + * + * @return $this + */ + public function setScript(Script $script) + { + parent::setScript($script); + + $source = $script->toArray(); + + if ($script->hasUpsert()) { + $upsert = $script->getUpsert()->getData(); + + if (!empty($upsert)) { + $source['upsert'] = $upsert; + } + } + + $this->setSource($source); + + return $this; + } +} -- cgit v1.2.3-54-g00ecf