From: olivier <> Date: Fri, 10 Apr 2009 16:08:05 +0000 (+0000) Subject: eztelemeta: retrieve item duration and throw error if zero X-Git-Tag: 1.1~677 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=dda04e0593c3bb648757fd42151d99acbb70ba48;p=telemeta.git eztelemeta: retrieve item duration and throw error if zero --- 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);