コード例 #1
0
 /**
  * @since 2.4
  *
  * @param SemanticData $semanticData
  *
  * @return string
  */
 public static function createFromSemanticData(SemanticData $semanticData)
 {
     $hash = array();
     $hash[] = $semanticData->getSubject()->getSerialization();
     foreach ($semanticData->getProperties() as $property) {
         $hash[] = $property->getKey();
         foreach ($semanticData->getPropertyValues($property) as $di) {
             $hash[] = $di->getSerialization();
         }
     }
     foreach ($semanticData->getSubSemanticData() as $data) {
         $hash[] = $data->getHash();
     }
     sort($hash);
     return md5(implode('#', $hash));
 }
コード例 #2
0
ファイル: SemanticDataTest.php プロジェクト: whysasse/kmwiki
 public function testAddAndRemoveSubSemanticData()
 {
     $title = Title::newFromText(__METHOD__);
     $instance = new SemanticData(DIWikiPage::newFromTitle($title));
     // Adds only a subobject reference to the container
     $subobject = $this->newSubobject($title);
     $instance->addSubobject($subobject);
     $this->assertInternalType('array', $instance->getSubSemanticData());
     foreach ($instance->getSubSemanticData() as $subSemanticData) {
         $this->assertInstanceOf('SMWContainerSemanticData', $subSemanticData);
         $this->assertEquals($subSemanticData, $subobject->getSemanticData());
     }
     $instance->removeSubSemanticData($subobject->getSemanticData());
     $this->assertNotInstanceOf('SMWContainerSemanticData', $instance->getSubSemanticData());
 }
コード例 #3
0
ファイル: SemanticData.php プロジェクト: whysasse/kmwiki
 /**
  * Removes data from the given SMWSemanticData.
  * If the subject of the data that is to be removed is not equal to the
  * subject of this SMWSemanticData, it will just be ignored (nothing to
  * remove). Likewise, removing data that is not present does not change
  * anything.
  *
  * @since 1.8
  *
  * @param SemanticData $semanticData
  */
 public function removeDataFrom(SemanticData $semanticData)
 {
     if (!$this->mSubject->equals($semanticData->getSubject())) {
         return;
     }
     foreach ($semanticData->getProperties() as $property) {
         $values = $semanticData->getPropertyValues($property);
         foreach ($values as $dataItem) {
             $this->removePropertyObjectValue($property, $dataItem);
         }
     }
     foreach ($semanticData->getSubSemanticData() as $semData) {
         $this->removeSubSemanticData($semData);
     }
 }