additional_plugins/serendipity_event_oembed/oembed/ProviderManager.class.php
2011-12-14 12:18:36 +01:00

46 lines
1.5 KiB
PHP

<?php
/*
* PHP OEmbed provider/proxy - for details, visit
*
* http://code.google.com/p/php-oembed/
*
* Copyright(C) by Adam Nemeth. Licensed under New BSD license.
*
* I would love to hear every feedback on aadaam at googlesmailservice
*
*/
class ProviderManager{
private $providers;
private static $_instance;
private function __construct(){
$this->providers=array();
$xml = simplexml_load_file(PROVIDER_XML);// PROVIDER_XML comes from config.php
foreach($xml->provider as $provider){
if(!isset($provider->class) && isset($provider->endpoint)){
$this->register(new OEmbedProvider($provider->url,$provider->endpoint));
} else {
$classname="".$provider->class; // force to be string :)
$reflection = new ReflectionClass($classname);
$this->register($reflection->newInstance($provider));//so we could pass config vars
}
}
}
static function getInstance(){
if(!isset($_instance) || $_instance==null){
$_instance = new ProviderManager();
}
return $_instance;
}
public function register($provider){
$this->providers[]=$provider;
}
public function provide($url,$format){
foreach ($this->providers as $provider){
if ($provider->match($url)){
return $provider->provide($url,$format);
}
}
return null;
}
}