| Current File : /home/jvzmxxx/wiki1/extensions/Wikibase/lib/includes/PropertyInfoSnakUrlExpander.php |
<?php
namespace Wikibase\Lib;
use DataValues\StringValue;
use Wikibase\DataModel\Snak\PropertyValueSnak;
use Wikimedia\Assert\Assert;
/**
* SnakUrlExpander that uses an PropertyInfoProvider to find
* a URL pattern for expanding a Snak's value into an URL.
*
* @since 0.5
*
* @license GPL-2.0+
* @author Daniel Kinzler
*/
class PropertyInfoSnakUrlExpander implements SnakUrlExpander {
/**
* @var PropertyInfoProvider
*/
private $infoProvider;
/**
* @param PropertyInfoProvider $infoProvider
*/
public function __construct( PropertyInfoProvider $infoProvider ) {
$this->infoProvider = $infoProvider;
}
/**
* @see SnakUrlExpander::expandUrl
*
* @param PropertyValueSnak $snak
*
* @return string|null A URL or URI derived from the Snak, or null if no such URL
* could be determined.
*/
public function expandUrl( PropertyValueSnak $snak ) {
$propertyId = $snak->getPropertyId();
$value = $snak->getDataValue();
Assert::parameterType( StringValue::class, $value, '$snak->getDataValue()' );
$pattern = $this->infoProvider->getPropertyInfo( $propertyId );
if ( $pattern === null ) {
return null;
}
$id = wfUrlencode( $value->getValue() );
$url = str_replace( '$1', $id, $pattern );
return $url;
}
}