/** * @dataProvider rankProvider */ public function testRankSerialization($rank) { $statement = new Statement(new PropertyNoValueSnak(new PropertyId('P42'))); $statement->setRank($rank); $factory = new SerializerFactory(new DataValueSerializer()); $statementSerializer = $factory->newStatementSerializer(); $serialization = $statementSerializer->serialize($statement); $rankSerializer = new StatementRankSerializer(); $this->assertEquals($rank, $rankSerializer->deserialize($serialization['rank']), 'Roundtrip between rank serialization and unserialization 1'); $this->assertEquals($serialization['rank'], $rankSerializer->serialize($rank), 'Roundtrip between rank serialization and unserialization 2'); }
private function rankMatchesFilter($rank) { if ($rank === null) { return true; } if (isset($this->requestParams['rank'])) { $statementRankSerializer = new StatementRankSerializer(); $unserializedRank = $statementRankSerializer->deserialize($this->requestParams['rank']); return $rank === $unserializedRank; } return true; }
/** * Builds and returns the HTML representing a single WikibaseEntity's statement. * * @since 0.4 * * @param Statement $statement * @param null|string $editSectionHtml has the html for the edit section * * @return string HTML */ public function getHtmlForClaim(Statement $statement, $editSectionHtml = null) { $mainSnakHtml = $this->snakHtmlGenerator->getSnakHtml($statement->getMainSnak(), false); $statementRankSerializer = new StatementRankSerializer(); $serializedRank = $statementRankSerializer->serialize($statement->getRank()); // Messages: wikibase-statementview-rank-preferred, wikibase-statementview-rank-normal, // wikibase-statementview-rank-deprecated $rankHtml = $this->templateFactory->render('wikibase-rankselector', 'ui-state-disabled', 'wikibase-rankselector-' . $serializedRank, $this->getStatementRankText($serializedRank)); $referencesHeading = $this->getReferencesHeading($statement); $references = $statement->getReferences(); $referencesHtml = $this->getHtmlForReferences($references); return $this->templateFactory->render('wikibase-statementview', $statement->getGuid(), $rankHtml, $mainSnakHtml, $this->getHtmlForQualifiers($statement->getQualifiers()), $editSectionHtml, $referencesHeading, $referencesHtml, count($references) ? 'wikibase-initially-collapsed' : ''); }
/** * @see ChangeOp::apply() */ public function apply(Entity $entity, Summary $summary = null) { if (!$entity instanceof StatementListHolder) { throw new InvalidArgumentException('$entity must be a StatementListHolder'); } $statements = $entity->getStatements(); $statement = $statements->getFirstStatementWithGuid($this->statementGuid); if ($statement === null) { throw new ChangeOpException("Entity does not have a statement with GUID {$this->statementGuid}"); } $oldRank = $statement->getRank(); $statement->setRank($this->rank); $this->updateSummary($summary, null, '', $this->getSnakSummaryArgs($statement->getMainSnak())); if ($summary !== null) { $statementRankSerializer = new StatementRankSerializer(); $summary->addAutoCommentArgs(array($statementRankSerializer->serialize($oldRank), $statementRankSerializer->serialize($this->rank))); } $entity->setStatements($statements); }
/** * @return array( $params, $statements, $groupedByProperty ) */ public function validRequestProvider() { $entities = $this->getNewEntities(); $argLists = array(); foreach ($entities as $entity) { $idSerialization = $entity->getId()->getSerialization(); /** @var StatementListProvider $entity */ $statements = $entity->getStatements(); $params = array('action' => 'wbgetclaims', 'entity' => $idSerialization); $argLists[] = array($params, $statements->toArray()); foreach ($statements->toArray() as $statement) { $params = array('action' => 'wbgetclaims', 'claim' => $statement->getGuid()); $argLists[] = array($params, array($statement)); } foreach (array(Statement::RANK_DEPRECATED, Statement::RANK_NORMAL, Statement::RANK_PREFERRED) as $rank) { $statementRankSerializer = new StatementRankSerializer(); $params = array('action' => 'wbgetclaims', 'entity' => $idSerialization, 'rank' => $statementRankSerializer->serialize($rank)); $statementsByRank = $statements->getByRank($rank)->toArray(); $argLists[] = array($params, $statementsByRank); } } return $argLists; }
/** * @param string|int|null $rank * * @return string|null HTML */ private function getRankHtml($rank) { if ($rank === null) { return null; } if (is_int($rank)) { $statementRankSerializer = new StatementRankSerializer(); $rank = $statementRankSerializer->serialize($rank); } // Messages: // wikibase-diffview-rank-deprecated // wikibase-diffview-rank-normal // wikibase-diffview-rank-preferred $msg = wfMessage('wikibase-diffview-rank-' . $rank)->inLanguage($this->languageCode); return $msg->parse(); }
/** * @see ApiBase::getAllowedParams */ protected function getAllowedParams() { return array('entity' => array(self::PARAM_TYPE => 'string'), 'property' => array(self::PARAM_TYPE => 'string'), 'claim' => array(self::PARAM_TYPE => 'string'), 'rank' => array(self::PARAM_TYPE => StatementRankSerializer::getRanks()), 'props' => array(self::PARAM_TYPE => array('references'), self::PARAM_DFLT => 'references', self::PARAM_ISMULTI => true)); }