/**
  * @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));
 }