diff sites/all/libraries/ARC2/arc/extractors/ARC2_DcExtractor.php @ 4:ce11bbd8f642

added modules
author danieleb <danielebarchiesi@me.com>
date Thu, 19 Sep 2013 10:38:44 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sites/all/libraries/ARC2/arc/extractors/ARC2_DcExtractor.php	Thu Sep 19 10:38:44 2013 +0100
@@ -0,0 +1,80 @@
+<?php
+/*
+homepage: http://arc.semsol.org/
+license:  http://arc.semsol.org/license
+
+class:    ARC2 DC Extractor
+author:   Benjamin Nowack
+version:  2010-11-16
+*/
+
+ARC2::inc('RDFExtractor');
+
+class ARC2_DcExtractor extends ARC2_RDFExtractor {
+
+  function __construct($a, &$caller) {
+    parent::__construct($a, $caller);
+  }
+  
+  function __init() {
+    parent::__init();
+    $this->a['ns']['dc'] = 'http://purl.org/dc/elements/1.1/';
+  }
+
+  /*  */
+  
+  function extractRDF() {
+    $t_vals = array();
+    $t = '';
+    foreach ($this->nodes as $n) {
+      foreach (array('title', 'link', 'meta') as $tag) {
+        if ($n['tag'] == $tag) {
+          $m = 'extract' . ucfirst($tag);
+          list ($t_vals, $t) = $this->$m($n, $t_vals, $t);
+        }
+      }
+    }
+    if ($t) {
+      $doc = $this->getFilledTemplate($t, $t_vals, $n['doc_base']);
+      $this->addTs(ARC2::getTriplesFromIndex($doc));
+    }
+  }
+  
+  /*  */
+
+  function extractTitle($n, $t_vals, $t) {
+    if ($t_vals['title'] = $this->getPlainContent($n)) {
+      $t .= '<' . $n['doc_url'] . '> dc:title ?title . ';
+    }
+    return array($t_vals, $t);
+  }
+  
+  /*  */
+
+  function extractLink($n, $t_vals, $t) {
+    if ($this->hasRel($n, 'alternate') || $this->hasRel($n, 'meta')) {
+      if ($href = $this->v('href uri', '', $n['a'])) {
+        $t .= '<' . $n['doc_url'] . '> rdfs:seeAlso <' . $href . '> . ';
+        if ($v = $this->v('type', '', $n['a'])) {
+          $t .= '<' .$href. '> dc:format "' . $v . '" . ';
+        }
+        if ($v = $this->v('title', '', $n['a'])) {
+          $t .= '<' .$href. '> dc:title "' . $v . '" . ';
+        }
+      }
+    }
+    return array($t_vals, $t);
+  }
+  
+  function extractMeta($n, $t_vals, $t) {
+    if ($this->hasAttribute('http-equiv', $n, 'Content-Type') || $this->hasAttribute('http-equiv', $n, 'content-type')) {
+      if ($v = $this->v('content', '', $n['a'])) {
+        $t .= '<' . $n['doc_url'] . '> dc:format "' . $v . '" . ';
+      }
+    }
+    return array($t_vals, $t);
+  }
+  
+  /*  */
+  
+}