| 
<?php
 /**
 * class Phata\Widgetfy\MediaFile\ClassicVideo
 *
 * Licence:
 *
 * This file is part of Widgetfy.
 *
 * Widgetfy is free software: you can redistribute
 * it and/or modify it under the terms of the GNU
 * Lesser General Public License as published by the
 * Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * Widgetfy is distributed in the hope that it will
 * be useful, but WITHOUT ANY WARRANTY; without even
 * the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU Lesser
 * General Public Licensefor more details.
 *
 * You should have received a copy of the GNU Lesser
 * General Public License along with Widgetfy.  If
 * not, see <http://www.gnu.org/licenses/lgpl.html>.
 *
 * Description:
 *
 * This file defines Phata\Widgetfy\MediaFile\ClassicVideo
 * which is a site definition that implements
 * Phata\Widgetfy\MediaFile\Common
 *
 * @package   Widgetfy
 * @author    Koala Yeung <[email protected]>
 * @copyright 2014 Koala Yeung
 * @licence   http://www.gnu.org/licenses/lgpl.html
 * @link      http://github.com/Phata/Widgetfy
 */
 
 namespace Phata\Widgetfy\MediaFile;
 
 use Phata\Widgetfy\Utils\URL as URL;
 use Phata\Widgetfy\Utils\Dimension as Dimension;
 
 class ClassicVideo implements Common {
 
 /**
 * Implements Phata\Widgetfy\MediaFile\Common::translate
 *
 * preprocess the URL
 * by this site adapter
 * @param string[] $url_parsed result of parse_url($url)
 * @return mixed array of preprocess result; boolean FALSE if not translatable
 */
 public static function preprocess($url_parsed) {
 if (preg_match('/\/([^\/]+)\.(\w+)$/i', $url_parsed['path'], $matches) == 1) {
 $filename = htmlspecialchars($matches[1] . '.' . $matches[2]);
 $extension = strtolower($matches[2]);
 if ($extension == 'mpg') $extension = 'mpeg';
 return array(
 'filename' => $filename,
 'filetype' => $extension,
 'url' => URL::build($url_parsed),
 );
 }
 return FALSE;
 }
 
 /**
 * Implements Phata\Widgetfy\MediaFile\Common::translate
 *
 * translate the provided URL into
 * HTML embed code of it
 * @param mixed[] $info array of preprocessed url information
 * @param mixed[] $options array of options
 * @return mixed[] array of embed information or NULL if not applicable
 */
 public static function translate($info, $options=array()) {
 $d = Dimension::fromOptions($options, array(
 'default_width' => 640,
 'factor' => 0.75, // most classic video are of 4:3 ratio
 ));
 return array(
 'html' => '<object id="mediaplayer" '.$d->toAttr().' '.
 'classid="clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95" '.
 'standby="loading windows media player components..." '.
 'type="application/x-oleobject">'.
 '<param name="FileName" value="'.$info['filename'].'" />'.
 '<param name="autostart" value="false" />'.
 '<param name="ShowControls" value="true" />'.
 '<param name="ShowStatusBar" value="false" />'.
 '<param name="ShowDisplay" value="false" />'.
 '<embed type="application/x-mplayer2" '.
 'src="'.$info['url'].'" '.
 'name="mediaplayer" '.$d->toAttr().' '.
 'ShowControls="1" ShowStatusBar="1" ShowDisplay="0" '.
 'autostart="0"></embed>'.
 '</object>',
 'dimension' => $d,
 );
 }
 }
 |