public function testGetInstance()
 {
     $instance = PropertyRegistry::getInstance();
     $this->assertSame($instance, PropertyRegistry::getInstance());
     PropertyRegistry::clear();
     $this->assertNotSame($instance, PropertyRegistry::getInstance());
 }
 private function findBasePropertyToRedirectFor($label)
 {
     $property = new DIProperty(PropertyRegistry::getInstance()->findPropertyIdByLabel($label));
     if ($property->getLabel() !== '' && $label !== $property->getLabel()) {
         $outputPage = $this->getContext()->getOutput();
         $outputPage->redirect($property->getDiWikiPage()->getTitle()->getFullURL());
     }
 }
 private function findBasePropertyToRedirectFor($label)
 {
     $property = new DIProperty(PropertyRegistry::getInstance()->findPropertyIdByLabel($label));
     // Ensure to redirect to `Property:Modification date` and not using
     // a possible user contextualized version such as `Property:Date de modification`
     $canonicalLabel = $property->getCanonicalLabel();
     if ($canonicalLabel !== '' && $label !== $canonicalLabel) {
         $outputPage = $this->getContext()->getOutput();
         $outputPage->redirect($property->getCanonicalDiWikiPage()->getTitle()->getFullURL());
     }
 }
 private function findPropertyIdByLabel($label)
 {
     $property = new DIProperty(PropertyRegistry::getInstance()->findPropertyIdByLabel($label));
     $canonicalLabel = $property->getCanonicalLabel();
     // #1966 and #1968
     // In case something goes wrong, a recursive loop will kill PHP
     // and we know we messed up
     if ($canonicalLabel !== '' && $label !== $canonicalLabel) {
         $this->findPropertyIdByLabel($property->getCanonicalDiWikiPage()->getTitle()->getText());
     }
     return array($label, $property);
 }
 /**
  * Returns an introductory text for a predefined property
  *
  * @note In order to enable a more detailed description for a specific
  * predefined property a concatenated message key can be used (e.g
  * 'smw-pa-property-predefined' + <internal property key> => '_asksi' )
  *
  * @since 1.9
  *
  * @return string
  */
 protected function getIntroductoryText()
 {
     $dv = DataValueFactory::getInstance()->newDataValueByItem($this->mProperty);
     $propertyName = $dv->getFormattedLabel();
     $message = '';
     if ($this->mProperty->isUserDefined()) {
         return $message;
     }
     $key = $this->mProperty->getKey();
     if (($messageKey = PropertyRegistry::getInstance()->findPropertyDescriptionMsgKeyById($key)) !== '') {
         $messageKeyLong = $messageKey . '-long';
     } else {
         $messageKey = 'smw-pa-property-predefined' . strtolower($key);
         $messageKeyLong = 'smw-pa-property-predefined-long' . strtolower($key);
     }
     $message .= wfMessage($messageKey)->exists() ? wfMessage($messageKey, $propertyName)->parse() : wfMessage('smw-pa-property-predefined-default', $propertyName)->parse();
     $message .= wfMessage($messageKeyLong)->exists() ? ' ' . wfMessage($messageKeyLong)->parse() : '';
     $message .= ' ' . wfMessage('smw-pa-property-predefined-common')->parse();
     return Html::rawElement('div', array('class' => 'smw-property-predefined-intro plainlinks'), $message);
 }
 /**
  * @deprecated since 2.1, use PropertyRegistry::registerPropertyAlias
  */
 public static function registerPropertyAlias($id, $label)
 {
     PropertyRegistry::getInstance()->registerPropertyAlias($id, $label);
 }
 private function getPredefinedPropertyDescription($property, $linker, $languageCode)
 {
     $description = '';
     $key = $property->getKey();
     if (($msgKey = PropertyRegistry::getInstance()->findPropertyDescriptionMsgKeyById($key)) === '') {
         $msgKey = 'smw-pa-property-predefined' . strtolower($key);
     }
     if (!Message::exists($msgKey)) {
         return $description;
     }
     $dataValue = DataValueFactory::getInstance()->newDataValueByItem($property);
     $label = $dataValue->getFormattedLabel();
     $message = Message::get(array($msgKey, $label), $linker === null ? Message::ESCAPED : Message::PARSE, $languageCode);
     return $message;
 }