gplx/mediawiki/extensions/SemanticMediaWiki/includes/dataitems/DIConcept.php

236 lines
4.2 KiB
PHP

<?php
namespace SMW;
use MediaWiki\Json\JsonUnserializer;
use SMW\Exception\DataItemException;
use SMWDataItem;
/**
* This class implements Concept data items.
*
* @note These special data items for storing concept declaration data in SMW
* should vanish at some point since Container values could encode this data
* just as well.
*
* @since 1.6
*
* @ingroup SMWDataItems
*
* @author Markus Krötzsch
* @author mwjames
*/
class DIConcept extends SMWDataItem {
/**
* Query string for this concept. Possibly long.
* @var string
*/
protected $m_concept;
/**
* Documentation for this concept. Possibly long.
* @var string
*/
protected $m_docu;
/**
* Flags of query features.
* @var int
*/
protected $m_features;
/**
* Size of the query.
* @var int
*/
protected $m_size;
/**
* Depth of the query.
* @var int
*/
protected $m_depth;
/**
* Status
* @var int
*/
protected $cacheStatus;
/**
* Date
* @var int
*/
protected $cacheDate;
/**
* Count
* @var int
*/
protected $cacheCount;
/**
* @param string $concept the concept query string
* @param string $docu user documentation
* @param int $queryFeatures flags about query features
* @param int $size concept query size
* @param int $depth concept query depth
*/
public function __construct( $concept, $docu, $queryFeatures, $size, $depth ) {
$this->m_concept = $concept;
$this->m_docu = $docu;
$this->m_features = $queryFeatures;
$this->m_size = $size;
$this->m_depth = $depth;
}
public function getDIType() {
return SMWDataItem::TYPE_CONCEPT;
}
public function getConceptQuery() {
return $this->m_concept;
}
public function getDocumentation() {
return $this->m_docu;
}
public function getQueryFeatures() {
return $this->m_features;
}
public function getSize() {
return $this->m_size;
}
public function getDepth() {
return $this->m_depth;
}
public function getSortKey() {
return $this->m_docu;
}
public function getSerialization() {
return serialize( $this );
}
/**
* Sets cache status
*
* @since 1.9
*
* @param string
*/
public function setCacheStatus( $status ) {
$this->cacheStatus = $status;
}
/**
* Sets cache date
*
* @since 1.9
*
* @param string
*/
public function setCacheDate( $date ) {
$this->cacheDate = $date;
}
/**
* Sets cache count
*
* @since 1.9
*
* @param int
*/
public function setCacheCount( $count ) {
$this->cacheCount = $count;
}
/**
* Returns cache status
*
* @since 1.9
*
* @return string
*/
public function getCacheStatus() {
return $this->cacheStatus;
}
/**
* Returns cache date
*
* @since 1.9
*
* @return string
*/
public function getCacheDate() {
return $this->cacheDate;
}
/**
* Returns cache count
*
* @since 1.9
*
* @return int
*/
public function getCacheCount() {
return $this->cacheCount;
}
/**
* Create a data item from the provided serialization string and type
* ID.
* @return DIConcept
*/
public static function doUnserialize( $serialization ) {
$result = unserialize( $serialization );
if ( $result === false ) {
throw new DataItemException( "Unserialization failed." );
}
return $result;
}
public function equals( SMWDataItem $di ) {
if ( $di->getDIType() !== SMWDataItem::TYPE_CONCEPT ) {
return false;
}
return $di->getSerialization() === $this->getSerialization();
}
/**
* Implements \JsonSerializable.
*
* @since 4.0.0
*
* @return array
*/
public function jsonSerialize(): array {
$json = parent::jsonSerialize();
$json['cacheStatus'] = $this->cacheStatus;
$json['cacheDate'] = $this->cacheDate;
$json['cacheCount'] = $this->cacheCount;
return $json;
}
/**
* Implements JsonUnserializable.
*
* @since 4.0.0
*
* @param JsonUnserializer $unserializer Unserializer
* @param array $json JSON to be unserialized
*
* @return self
*/
public static function newFromJsonArray( JsonUnserializer $unserializer, array $json ) {
$obj = parent::newFromJsonArray( $unserializer, $json );
$obj->cacheStatus = $json['cacheStatus'];
$obj->cacheDate = $json['cacheDate'];
$obj->cacheCount = $json['cacheCount'];
return $obj;
}
}