From 4f16680ce276da1eece2d37e56b08d2d250d2511 Mon Sep 17 00:00:00 2001 From: dongsheng Date: Mon, 22 Dec 2008 02:44:18 +0000 Subject: [PATCH] "MDL-17381, first working wikemedia plugin" --- repository/wikimedia/icon.png | Bin 0 -> 970 bytes repository/wikimedia/repository.class.php | 64 ++++++++++++++++ repository/wikimedia/wikimedia.php | 88 ++++++++++++++++++++++ 3 files changed, 152 insertions(+) create mode 100644 repository/wikimedia/icon.png create mode 100644 repository/wikimedia/repository.class.php create mode 100644 repository/wikimedia/wikimedia.php diff --git a/repository/wikimedia/icon.png b/repository/wikimedia/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7d6db4eafb5fca55c7fee86386d2f4d574b2cbcf GIT binary patch literal 970 zcmV;*12z1KP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FWS01FWTe`H^g00007bV*G`2iOc2 z0SOH(ihN@L00T-%L_t(I%RQ6NOCwhR$G`8rB*w`mlNBRTK`cl;l%k;Er8yNmNTG*9 z+e6R0>$%W_P^zFO52csVvddlyi!D@yBJ`4bB}xQ!!9(U^CbbiYnKwV)n>TOf^|J2g zANcZt?}yyq-=o=V0sxFLPY(_bc27=DcF)hxA9}ss;%GFQuq;ctuDd0rd@}fV@Y9Ru zFC+jQ9sLf1cStEezP!9V-rnAR)9rSDa2#i9I2`^F$ML6>Qq=2pTwh;9YkkvbG``&0 z+IkBB#25qDbr+|mrhYp;J^keP_;|V1YNJ`Y)o2~Rn4-@D5VJJ+$2dt9LK?U zJpR+Ntgj1E6n#)E7N5DU3jnNGEIyx}p2q6xDkdiu9F!Z3u^8iWwSImc);Y840}^Xu#D zNYfOA5LByG*tU&{i3x;Zh#&~S7z3pgl}ZIc5FpDk5JFHcm*)#vmL-Kk0a8i`Auu;L z2dy>2Fhr?T0sxdsC3HF++}_@z)oLNnb1=rh7)z*9>NW@hP)ZG@6ha92zK<{rK?p&T zBp8p!5JF&ca}#NrLThcLlo$?&x77Fj)4^Z>V+@icf$O^HcDryK2LPb82Bj3s%gad9 z6j2mGDFx5-ptb&sIF4fjcuNSGV~iO9L@5O+B^YA}!w{5GL{WsnU;xg!VT_T%V8F}e z@-n5Aa?kU2`~5zGARxvV<9XiWc24FCWD literal 0 HcmV?d00001 diff --git a/repository/wikimedia/repository.class.php b/repository/wikimedia/repository.class.php new file mode 100644 index 0000000000..88ea3785be --- /dev/null +++ b/repository/wikimedia/repository.class.php @@ -0,0 +1,64 @@ +keyword = optional_param('wikimedia_keyword', '', PARAM_RAW); + } + public function get_listing($path = '') { + global $CFG; + $client = new wikimedia; + $result = $client->search_images($this->keyword); + $list = array(); + $list['list'] = array(); + foreach ($result as $title=>$url) { + $list['list'][] = array( + 'title'=>$title, + 'thumbnail'=>$CFG->pixpath.'/f/'.mimeinfo('icon', 'xx.jpg'), + // plugin-dependent unique path to the file (id, url, path, etc.) + 'source'=>$url, + // the accessible url of the file + 'url'=>$url + ); + } + return $list; + } + // login + public function check_login() { + echo_fb($this->keyword); + return !empty($this->keyword); + } + // if check_login returns false, + // this function will be called to print a login form. + public function print_login() { + $keyword->label = get_string('keyword', 'repository_wikimedia').': '; + $keyword->id = 'input_text_keyword'; + $keyword->type = 'text'; + $keyword->name = 'wikimedia_keyword'; + $keyword->value = ''; + + $form = array(); + $form['login'] = array($keyword); + return $form; + } + //search + // if this plugin support global search, if this function return + // true, search function will be called when global searching working + public function global_search() { + return false; + } + public function search($text) { + $search_result = array(); + $search_result['list'] = array(); + return $search_result; + } + // when logout button on file picker is clicked, this function will be + // called. + public function logout() { + return true; + } + public static function get_type_option_names() { + return null; + } +} diff --git a/repository/wikimedia/wikimedia.php b/repository/wikimedia/wikimedia.php new file mode 100644 index 0000000000..cd1c257838 --- /dev/null +++ b/repository/wikimedia/wikimedia.php @@ -0,0 +1,88 @@ +api = 'http://commons.wikimedia.org/w/api.php'; + } + $this->_param['format'] = 'php'; + $this->_param['redirects'] = true; + $this->_conn = new curl(array('cache'=>true, 'debug'=>false)); + } + public function login($user, $pass) { + $this->_param['action'] = 'login'; + $this->_param['lgname'] = $user; + $this->_param['lgpassword'] = $pass; + $content = $this->_conn->post($this->api, $this->_param); + $result = unserialize($content); + if (!empty($result['result']['sessionid'])) { + $this->userid = $result['result']['lguserid']; + $this->username = $result['result']['lgusername']; + $this->token = $result['result']['lgtoken']; + return true; + } else { + return false; + } + } + public function logout() { + $this->_param['action'] = 'logout'; + $content = $this->_conn->post($this->api, $this->_param); + return; + } + public function get_image_url($titles) { + $image_urls = array(); + $this->_param['action'] = 'query'; + if (is_array($titles)) { + foreach ($titles as $title) { + $this->_param['titles'] .= ('|'.urldecode($title)); + } + } else { + $this->_param['titles'] = urldecode($title); + } + $this->_param['prop'] = 'imageinfo'; + $this->_param['iiprop'] = 'url'; + $content = $this->_conn->post($this->api, $this->_param); + $result = unserialize($content); + foreach ($result['query']['pages'] as $page) { + if (!empty($page['imageinfo'][0]['url'])) { + $image_urls[] = $page['imageinfo'][0]['url']; + } + } + return $image_urls; + } + public function get_images_by_page($title) { + $image_urls = array(); + $this->_param['action'] = 'query'; + $this->_param['generator'] = 'images'; + $this->_param['titles'] = urldecode($title); + $this->_param['prop'] = 'images|info|imageinfo'; + $this->_param['iiprop'] = 'url'; + $content = $this->_conn->post($this->api, $this->_param); + $result = unserialize($content); + if (!empty($result['query']['pages'])) { + foreach ($result['query']['pages'] as $page) { + $image_urls[$page['title']] = $page['imageinfo'][0]['url']; + } + } + return $image_urls; + } + public function search_images($title) { + $image_urls = array(); + $this->_param['action'] = 'query'; + $this->_param['generator'] = 'search'; + $this->_param['gsrsearch'] = $title; + $this->_param['gsrnamespace'] = 6; + $this->_param['prop'] = 'imageinfo'; + $this->_param['iiprop'] = 'url'; + $content = $this->_conn->post($this->api, $this->_param); + $result = unserialize($content); + if (!empty($result['query']['pages'])) { + foreach ($result['query']['pages'] as $page) { + $image_urls[$page['title']] = $page['imageinfo'][0]['url']; + } + } + return $image_urls; + } +} -- 2.39.5