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