From dda04e0593c3bb648757fd42151d99acbb70ba48 Mon Sep 17 00:00:00 2001 From: olivier <> Date: Fri, 10 Apr 2009 16:08:05 +0000 Subject: [PATCH] eztelemeta: retrieve item duration and throw error if zero --- .../eztelemetaitem/eztelemetaitemtype.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/tools/eztelemeta/datatypes/eztelemetaitem/eztelemetaitemtype.php b/tools/eztelemeta/datatypes/eztelemetaitem/eztelemetaitemtype.php index 41ea9232..93c16e66 100755 --- a/tools/eztelemeta/datatypes/eztelemetaitem/eztelemetaitemtype.php +++ b/tools/eztelemeta/datatypes/eztelemetaitem/eztelemetaitemtype.php @@ -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); -- 2.39.5