public function testSaveThrowsException_onNonWriteMode() { $mockApiBase = $this->getMockApiBase(); $mockApiBase->expects($this->once())->method('isWriteMode')->will($this->returnValue(false)); $helper = new EntitySavingHelper($mockApiBase, $this->getMockErrorReporter(), $this->getMockSummaryFormatter(), $this->getMockEditEntityFactory(0)); $this->setExpectedException('LogicException'); $helper->attemptSaveEntity(new Item(), ''); }
/** * @see ApiBase::execute * * @since 0.4 */ public function execute() { $params = $this->extractRequestParams(); $claim = $this->getClaimFromParams($params); $guid = $claim->getGuid(); if ($guid === null) { $this->errorReporter->dieError('GUID must be set when setting a claim', 'invalid-claim'); } try { $claimGuid = $this->guidParser->parse($guid); } catch (StatementGuidParsingException $ex) { $this->errorReporter->dieException($ex, 'invalid-claim'); } $entityId = $claimGuid->getEntityId(); if (isset($params['baserevid'])) { $entityRevision = $this->entityLoadingHelper->loadEntityRevision($entityId, (int) $params['baserevid']); } else { $entityRevision = $this->entityLoadingHelper->loadEntityRevision($entityId); } $entity = $entityRevision->getEntity(); $summary = $this->getSummary($params, $claim, $entity); $changeop = $this->statementChangeOpFactory->newSetStatementOp($claim, isset($params['index']) ? $params['index'] : null); $this->modificationHelper->applyChangeOp($changeop, $entity, $summary); $status = $this->entitySavingHelper->attemptSaveEntity($entity, $summary, EDIT_UPDATE); $this->resultBuilder->addRevisionIdFromStatusToResult($status, 'pageinfo'); $this->resultBuilder->markSuccess(); $this->resultBuilder->addStatement($claim); }
/** * @see ApiBase::execute * * @since 0.3 */ public function execute() { $params = $this->extractRequestParams(); $this->validateParameters($params); $guid = $params['claim']; $entityId = $this->guidParser->parse($guid)->getEntityId(); if (isset($params['baserevid'])) { $entityRevision = $this->entityLoadingHelper->loadEntityRevision($entityId, (int) $params['baserevid']); } else { $entityRevision = $this->entityLoadingHelper->loadEntityRevision($entityId); } $entity = $entityRevision->getEntity(); $summary = $this->modificationHelper->createSummary($params, $this); $claim = $this->modificationHelper->getStatementFromEntity($guid, $entity); $qualifierHashes = $this->getQualifierHashesFromParams($params, $claim); $changeOps = new ChangeOps(); $changeOps->add($this->getChangeOps($guid, $qualifierHashes)); try { $changeOps->apply($entity, $summary); } catch (ChangeOpException $e) { $this->errorReporter->dieException($e, 'failed-save'); } $status = $this->entitySavingHelper->attemptSaveEntity($entity, $summary, EDIT_UPDATE); $this->resultBuilder->addRevisionIdFromStatusToResult($status, 'pageinfo'); $this->resultBuilder->markSuccess(); }
/** * @see ApiBase::execute * * @since 0.2 */ public function execute() { $params = $this->extractRequestParams(); $this->validateParameters($params); $entityId = $this->modificationHelper->getEntityIdFromString($params['entity']); if (isset($params['baserevid'])) { $entityRevision = $this->entityLoadingHelper->loadEntityRevision($entityId, (int) $params['baserevid']); } else { $entityRevision = $this->entityLoadingHelper->loadEntityRevision($entityId); } $entity = $entityRevision->getEntity(); $propertyId = $this->modificationHelper->getEntityIdFromString($params['property']); if (!$propertyId instanceof PropertyId) { $this->errorReporter->dieError($propertyId->getSerialization() . ' does not appear to be a property ID', 'param-illegal'); } $snak = $this->modificationHelper->getSnakInstance($params, $propertyId); $summary = $this->modificationHelper->createSummary($params, $this); /* @var ChangeOpMainSnak $changeOp */ $changeOp = $this->statementChangeOpFactory->newSetMainSnakOp('', $snak); $this->modificationHelper->applyChangeOp($changeOp, $entity, $summary); $statement = $entity->getStatements()->getFirstStatementWithGuid($changeOp->getStatementGuid()); $status = $this->entitySavingHelper->attemptSaveEntity($entity, $summary, EDIT_UPDATE); $this->resultBuilder->addRevisionIdFromStatusToResult($status, 'pageinfo'); $this->resultBuilder->markSuccess(); $this->resultBuilder->addStatement($statement); }
/** * @see ApiBase::execute * * @since 0.3 */ public function execute() { $params = $this->extractRequestParams(); $entityId = $this->getEntityId($params); if (isset($params['baserevid'])) { $entityRevision = $this->entityLoadingHelper->loadEntityRevision($entityId, (int) $params['baserevid']); } else { $entityRevision = $this->entityLoadingHelper->loadEntityRevision($entityId); } $entity = $entityRevision->getEntity(); if ($entity instanceof StatementListProvider) { $this->assertStatementListContainsGuids($entity->getStatements(), $params['claim']); } $summary = $this->modificationHelper->createSummary($params, $this); $changeOps = new ChangeOps(); $changeOps->add($this->getChangeOps($params)); try { $changeOps->apply($entity, $summary); } catch (ChangeOpException $e) { $this->errorReporter->dieException($e, 'failed-save'); } $status = $this->entitySavingHelper->attemptSaveEntity($entity, $summary, EDIT_UPDATE); $this->resultBuilder->addRevisionIdFromStatusToResult($status, 'pageinfo'); $this->resultBuilder->markSuccess(); $this->resultBuilder->setList(null, 'claims', $params['claim'], 'claim'); }
/** * @see ApiBase::execute * * @since 0.3 */ public function execute() { $params = $this->extractRequestParams(); $this->validateParameters($params); $entityId = $this->guidParser->parse($params['claim'])->getEntityId(); if (isset($params['baserevid'])) { $entityRevision = $this->entityLoadingHelper->loadEntityRevision($entityId, (int) $params['baserevid']); } else { $entityRevision = $this->entityLoadingHelper->loadEntityRevision($entityId); } $entity = $entityRevision->getEntity(); $summary = $this->modificationHelper->createSummary($params, $this); $statement = $this->modificationHelper->getStatementFromEntity($params['claim'], $entity); if (isset($params['snakhash'])) { $this->validateQualifierHash($statement, $params['snakhash']); } $changeOp = $this->getChangeOp(); $this->modificationHelper->applyChangeOp($changeOp, $entity, $summary); $status = $this->entitySavingHelper->attemptSaveEntity($entity, $summary, EDIT_UPDATE); $this->resultBuilder->addRevisionIdFromStatusToResult($status, 'pageinfo'); $this->resultBuilder->markSuccess(); $this->resultBuilder->addStatement($statement); }
/** * @see ApiBase::execute * * @since 0.3 */ public function execute() { $params = $this->extractRequestParams(); $this->validateParameters($params); $this->logFeatureUsage('action=wbsetclaimvalue'); $guid = $params['claim']; $entityId = $this->guidParser->parse($guid)->getEntityId(); if (isset($params['baserevid'])) { $entityRevision = $this->entityLoadingHelper->loadEntityRevision($entityId, (int) $params['baserevid']); } else { $entityRevision = $this->entityLoadingHelper->loadEntityRevision($entityId); } $entity = $entityRevision->getEntity(); $claim = $this->modificationHelper->getStatementFromEntity($guid, $entity); $snak = $this->modificationHelper->getSnakInstance($params, $claim->getMainSnak()->getPropertyId()); $summary = $this->modificationHelper->createSummary($params, $this); $changeOp = $this->statementChangeOpFactory->newSetMainSnakOp($guid, $snak); $this->modificationHelper->applyChangeOp($changeOp, $entity, $summary); $status = $this->entitySavingHelper->attemptSaveEntity($entity, $summary, EDIT_UPDATE); $this->resultBuilder->addRevisionIdFromStatusToResult($status, 'pageinfo'); $this->resultBuilder->markSuccess(); $this->resultBuilder->addStatement($claim); }
/** * @see ApiBase::execute * * @since 0.3 */ public function execute() { $params = $this->extractRequestParams(); $this->validateParameters($params); $entityId = $this->guidParser->parse($params['statement'])->getEntityId(); if (isset($params['baserevid'])) { $entityRevision = $this->entityLoadingHelper->loadEntityRevision($entityId, (int) $params['baserevid']); } else { $entityRevision = $this->entityLoadingHelper->loadEntityRevision($entityId); } $entity = $entityRevision->getEntity(); $summary = $this->modificationHelper->createSummary($params, $this); $claim = $this->modificationHelper->getStatementFromEntity($params['statement'], $entity); if (isset($params['reference'])) { $this->validateReferenceHash($claim, $params['reference']); } if (isset($params['snaks-order'])) { $snaksOrder = $this->getArrayFromParam($params['snaks-order'], 'snaks-order'); } else { $snaksOrder = array(); } $deserializer = $this->deserializerFactory->newSnakListDeserializer(); /** @var SnakList $snakList */ try { $snakList = $deserializer->deserialize($this->getArrayFromParam($params['snaks'], 'snaks')); } catch (DeserializationException $e) { $this->errorReporter->dieError('Failed to get reference from reference Serialization ' . $e->getMessage(), 'snak-instantiation-failure'); } $snakList->orderByProperty($snaksOrder); $newReference = new Reference($snakList); $changeOp = $this->getChangeOp($newReference); $this->modificationHelper->applyChangeOp($changeOp, $entity, $summary); $status = $this->entitySavingHelper->attemptSaveEntity($entity, $summary, EDIT_UPDATE); $this->resultBuilder->addRevisionIdFromStatusToResult($status, 'pageinfo'); $this->resultBuilder->markSuccess(); $this->resultBuilder->addReference($newReference); }
/** * @see EntitySavingHelper::attemptSaveEntity */ protected function attemptSaveEntity(Entity $entity, $summary, $flags = 0) { return $this->entitySavingHelper->attemptSaveEntity($entity, $summary, $flags); }
/** * @see EntitySavingHelper::attemptSaveEntity */ private function attemptSaveEntity(EntityDocument $entity, $summary, $flags = 0) { return $this->entitySavingHelper->attemptSaveEntity($entity, $summary, $flags); }