* @link http://getkirby.com * @copyright Bastian Allgeier * @license http://www.opensource.org/licenses/mit-license.php MIT License */ class Embed { /** * Embeds a youtube video by passing the Youtube url * * @param string $url Youtube url i.e. http://www.youtube.com/watch?v=d9NF2edxy-M * @param array $attr Additional attributes for the iframe * @return string */ public static function youtube($url, $attr = array()) { // http://www.youtube.com/embed/d9NF2edxy-M if(preg_match('!youtube.com\/embed\/([a-z0-9_-]+)!i', $url, $array)) { $id = $array[1]; // http://www.youtube.com/watch?feature=player_embedded&v=d9NF2edxy-M#! } elseif(preg_match('!v=([a-z0-9_-]+)!i', $url, $array)) { $id = $array[1]; // http://youtu.be/d9NF2edxy-M } elseif(preg_match('!youtu.be\/([a-z0-9_-]+)!i', $url, $array)) { $id = $array[1]; } // no id no result! if(empty($id)) return false; // default options if(!empty($attr['options'])) { $options = '?' . http_build_query($attr['options']); // options should not propagate to the attr list unset($attr['options']); } else { $options = ''; } // default attributes $attr = array_merge(array( 'src' => '//youtube.com/embed/' . $id . $options, 'frameborder' => '0', 'webkitAllowFullScreen' => 'true', 'mozAllowFullScreen' => 'true', 'allowFullScreen' => 'true', 'width' => '100%', 'height' => '100%', ), $attr); return html::tag('iframe', '', $attr); } /** * Embeds a vimeo video by passing the vimeo url * * @param string $url vimeo url i.e. http://vimeo.com/52345557 * @param array $attr Additional attributes for the iframe * @return string */ public static function vimeo($url, $attr = array()) { // get the uid from the url if(preg_match('!vimeo.com\/([0-9]+)!i', $url, $array)) { $id = $array[1]; } else { $id = null; } // no id no result! if(empty($id)) return false; // default options if(!empty($attr['options'])) { $options = '?' . http_build_query($attr['options']); // options should not propagate to the attr list unset($attr['options']); } else { $options = ''; } // default attributes $attr = array_merge(array( 'src' => '//player.vimeo.com/video/' . $id . $options, 'frameborder' => '0', 'webkitAllowFullScreen' => 'true', 'mozAllowFullScreen' => 'true', 'allowFullScreen' => 'true', 'width' => '100%', 'height' => '100%', ), $attr); return html::tag('iframe', '', $attr); } /** * Embeds a github gist * * @param string $url Gist url: i.e. https://gist.github.com/2924148 * @param string $file The name of a particular file from the gist, which should displayed only. * @return string */ public static function gist($url, $file = null) { // url for the script file $url = $url . '.js' . r(!is_null($file), '?file=' . $file); // load the gist return html::tag('script', '', array('src' => $url)); } }