From 9d83329215a929759262fddcc0886c76d884f371 Mon Sep 17 00:00:00 2001
From: dongsheng <dongsheng>
Date: Thu, 23 Oct 2008 04:10:59 +0000
Subject: [PATCH] "MDL-16911, youtube plugin for repository module"

---
 lang/en_utf8/repository_youtube.php     |   3 +
 repository/youtube/icon.png             | Bin 0 -> 695 bytes
 repository/youtube/repository.class.php |  93 ++++++++++++++++++++++++
 3 files changed, 96 insertions(+)
 create mode 100644 lang/en_utf8/repository_youtube.php
 create mode 100644 repository/youtube/icon.png
 create mode 100644 repository/youtube/repository.class.php

diff --git a/lang/en_utf8/repository_youtube.php b/lang/en_utf8/repository_youtube.php
new file mode 100644
index 0000000000..4ea9a98d36
--- /dev/null
+++ b/lang/en_utf8/repository_youtube.php
@@ -0,0 +1,3 @@
+<?php
+$string['repositoryname'] = 'Youtube Repository';
+$string['search'] = 'Search';
diff --git a/repository/youtube/icon.png b/repository/youtube/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..cc3ed0a6438e2084bd4cbf84ed3d6582c9a060c4
GIT binary patch
literal 695
zcmV;o0!aOdP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0007hNkl<Zc-p0t
zO-NKx6vuz>jWdmdx-ea-i&30UCv~Bv=)#@R2MV=p5Ck`oS_?zNc7nLkkX+O{1W9)m
zf*T<a(l(+Cjl}Mov}{J5QOEgmUU#N+CTkJ&9tSS(p8LD!{m=g>{O6-&t<|>ncIWW$
z@M>m5xsa~QSAJELV!O@e&(2WW+S;5G6BDZ+mY1oitz~_EoofvZf4$YG`BEo~9d^6_
z3{ZA>cqHP9IIpLskZas-H+F}E!pnu6oSdL1ljP?YoY&#=`EWWM$~ho(cqmfX-EUvH
z(R!U%lao9f9p&cjTL>Wt_yar{96YZ%RfW@;1vm(XgsQ5Xo+fzI-Oc?6-7GJ?C#ma%
zkHZ84eg;y2G(ks`09Q6(_q#t0Fc?(2dmr++uaAkBFQ}=mW@~d3?X%$d_;?zq>q&&B
zQSI?$0RF(9km{0*M)<V2NQKMI^4m9f8XMW(+9GZ=VQ*@}U@}TTN`o(4@l<61fxUfU
zUR%XHJ&kIyz`_DjJt!$bstWb>Bwa2db#=r`OVc7&x!oDS{=tE;jE!MhS%Ln3kmVAM
zLRS|^F|k_V=!jTzGm$%YB|yXNa%GDc6qcbOjPvu*(*waE6c$2(Y+Wn{6%{ZuL*kN|
zh}_pSfh!vj424AQ$Oy){Iq2<$a2Se;Qnmx>0rK)-c9w($MLRpug!X$IWoWwBJHW=q
z5as2N(!pec++5h+2KnFeTH+lYm|9zvvoqOdFFOtdM9$h8hNUHxs4P1k`#BM2GrGY*
zvZaMnyB)E!gRQbsxi~F3gM&}6dcF7FDbf$BEKd0qY5S)8ucv)rP*t1NYW?`fG|EW+
d;}oCg{s7R|3n1IX6S@EZ002ovPDHLkV1kP-O2_~J

literal 0
HcmV?d00001

diff --git a/repository/youtube/repository.class.php b/repository/youtube/repository.class.php
new file mode 100644
index 0000000000..4725dca018
--- /dev/null
+++ b/repository/youtube/repository.class.php
@@ -0,0 +1,93 @@
+<?php
+/**
+ * repository_youtube class
+ *
+ * @author Dongsheng Cai <dongsheng@moodle.com>
+ * @version $Id$
+ * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
+ */
+
+class repository_youtube extends repository {
+    public function __construct($repositoryid, $context = SITEID, $options = array()) {
+        global $SESSION;
+        $options['keyword'] = optional_param('youtube_keyword', '', PARAM_RAW);
+        parent::__construct($repositoryid, $context, $options);
+        $this->session_name = "youtube_keyword_".$this->id;
+        if (!empty($this->keyword)) {
+            $SESSION->{$this->session_name} = $this->keyword;
+        }
+    }
+
+    public function check_login() {
+        global $SESSION;
+        return !empty($SESSION->{$this->session_name});
+    }
+
+    public function logout() {
+        global $SESSION;
+        unset($SESSION->{$this->session_name});
+        return $this->print_login();
+    }
+
+    public function search($search_text) {
+    }
+
+    private function _get_collection($keyword, $start, $max, $sort) {
+        $list = array();
+        $this->feed_url = 'http://gdata.youtube.com/feeds/api/videos?vq=' . $keyword . '&format=5&start-index=' . $start . '&max-results=' .$max . '&orderby=' . $sort;
+        $c = new curl(array('cache'=>true));
+        $content = $c->get($this->feed_url);
+		$xml = simplexml_load_string($content);
+        $media = $xml->entry->children('http://search.yahoo.com/mrss/');
+	    $links = $xml->children('http://www.w3.org/2005/Atom');
+        foreach ($xml->entry as $entry) {
+            $media = $entry->children('http://search.yahoo.com/mrss/');
+            $title = $media->group->title;
+            $attrs = $media->group->thumbnail->attributes();
+            $thumbnail = $attrs['url'];
+            $arr = explode('/', $entry->id);
+            $id = $arr[count($arr)-1];
+            $source = 'http://www.youtube.com/v/'.$id;
+            $list[] = array(
+                'title'=>(string)$title,
+                'thumbnail'=>(string)$attrs['url'],
+                'size'=>'',
+                'date'=>'',
+                'source'=>$source
+            );
+        } 
+        return $list;
+    }
+
+    public function get_file($url, $title) {
+        return $url;
+    }
+    public function global_search() {
+        return false;
+    }
+    public function get_listing($path='') {
+        global $CFG, $SESSION;
+        $start = 1;
+        $max   = 25;
+        $sort  = "relevance";
+        $list = array();
+        $ret  = array();
+        $ret['path'] = array(array('name'=>'Root', 'path'=>0));
+        $ret['list'] = $this->_get_collection($SESSION->{$this->session_name}, $start, $max, $sort);
+        $file = 'ts.txt';
+        return $ret;
+    }
+
+    public function print_login($ajax = true) {
+        if ($ajax) {
+            $ret = array();
+            $search = new stdclass;
+            $search->type = 'text';
+            $search->id   = 'youtube_search';
+            $search->name = 'youtube_keyword';
+            $search->label = get_string('search', 'repository_youtube').': ';
+            $ret['login'] = array($search);
+            return $ret;
+        }
+    }
+}
-- 
2.39.5