aboutsummaryrefslogtreecommitdiff
path: root/mod/videolist/lib/videolist.php
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2013-12-29 20:45:58 -0200
committerSilvio Rhatto <rhatto@riseup.net>2013-12-29 20:45:58 -0200
commit97e689213ff4e829f251af526ed4e796a3cc2b71 (patch)
treeb04d03ec56305041216b72328fc9b5afde27bc76 /mod/videolist/lib/videolist.php
parent0ab6351abb7a602d96c62b0ad35413c88113a6cf (diff)
parent69e2d8c5d8732042c9319aef1fdea45a82b63e42 (diff)
downloadelgg-97e689213ff4e829f251af526ed4e796a3cc2b71.tar.gz
elgg-97e689213ff4e829f251af526ed4e796a3cc2b71.tar.bz2
Merge branch 'master' into saravea
Conflicts: .gitmodules mod/admins mod/assemblies mod/audio_html5 mod/beechat mod/crud mod/elgg-activitystreams mod/elggman mod/elggpg mod/favorites mod/federated-objects mod/friendly_time mod/group_alias mod/group_operators mod/languages mod/lightpics mod/openid_client mod/spotlight mod/suicide mod/tasks mod/videolist
Diffstat (limited to 'mod/videolist/lib/videolist.php')
-rw-r--r--mod/videolist/lib/videolist.php46
1 files changed, 46 insertions, 0 deletions
diff --git a/mod/videolist/lib/videolist.php b/mod/videolist/lib/videolist.php
new file mode 100644
index 000000000..b86db99cf
--- /dev/null
+++ b/mod/videolist/lib/videolist.php
@@ -0,0 +1,46 @@
+<?php
+
+/**
+ * @return array
+ */
+function videolist_get_default_platforms() {
+ static $platforms = array();
+ if (! $platforms) {
+ require dirname(__FILE__) . '/Videolist/PlatformInterface.php';
+ $path = dirname(__FILE__) . '/Videolist/Platform';
+ foreach (scandir($path) as $filename) {
+ if (preg_match('/^(\\w+)\\.php$/', $filename, $m)) {
+ require "$path/$filename";
+ $class = 'Videolist_Platform_' . $m[1];
+ $platform = new $class();
+ if ($platform instanceof Videolist_PlatformInterface) {
+ /* @var Videolist_PlatformInterface $platform */
+ $platforms[$platform->getType()][] = $platform;
+ }
+ }
+ }
+ }
+ return $platforms;
+}
+
+/**
+ * @param string $url
+ * @return array [parsed, platform]
+ */
+function videolist_parse_url($url) {
+ $params = array(
+ 'url' => $url,
+ );
+ $platforms = videolist_get_default_platforms();
+ $platforms = elgg_trigger_plugin_hook('videolist:prepare', 'platforms', $params, $platforms);
+ foreach ($platforms as $list) {
+ foreach ($list as $platform) {
+ /* @var Videolist_PlatformInterface $platform */
+ $parsed = $platform->parseUrl($url);
+ if ($parsed) {
+ return array($parsed, $platform);
+ }
+ }
+ }
+ return false;
+}