]> git.parisson.com Git - telemeta.git/commitdiff
eztelemeta: retrieve item duration and throw error if zero
authorolivier <>
Fri, 10 Apr 2009 16:08:05 +0000 (16:08 +0000)
committerolivier <>
Fri, 10 Apr 2009 16:08:05 +0000 (16:08 +0000)
tools/eztelemeta/datatypes/eztelemetaitem/eztelemetaitemtype.php

index 41ea9232e2630d801d5afaa44826d81ac39bfde7..93c16e6612c058af23452aaab075726e65fe33fc 100755 (executable)
@@ -67,7 +67,8 @@ class eZTelemetaItemType extends eZDataType
             'creator'       => '',
             'description'   => '',
             'rights'        => '',
-            'mp3'           => ''
+            'mp3'           => '',
+            'duration'      => 0
         );
     }
 
@@ -106,9 +107,14 @@ class eZTelemetaItemType extends eZDataType
         $result = $this->initItem($item['url'], $item['id']);
         foreach ($dc->childNodes as $element) {
             if ($element->nodeType == XML_ELEMENT_NODE) {
-                $tag = str_replace('dc:', '', $element->tagName);
+                $tag    = str_replace('dc:', '', $element->tagName);
+                $value  = trim($element->firstChild->nodeValue);
+                if ($tag == 'format' and ereg('^([0-9]{2}):([0-9]{2}):([0-9]{2})$', $value, $regs)) {
+                    $tag    = 'duration';
+                    $value  = $regs[1] * 3600 + $regs[2] * 60 + $regs[3];
+                }
                 if (array_key_exists($tag, $result) and empty($result[$tag])) {
-                    $result[$tag] = trim($element->firstChild->nodeValue);
+                    $result[$tag] = $value;
                 }
             }
         }
@@ -117,6 +123,10 @@ class eZTelemetaItemType extends eZDataType
             throw new eZTelemetaError("The retrieved item has no title");
         }
 
+        if (!$result['duration']) {
+            throw new eZTelemetaError("The retrieved item has no duration (no sound file?)");
+        }
+
         $result['mp3'] = "$url/items/download/$encodedId.mp3";
 
         return array_merge($item, $result);