]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-13766
authordongsheng <dongsheng>
Fri, 12 Sep 2008 08:16:09 +0000 (08:16 +0000)
committerdongsheng <dongsheng>
Fri, 12 Sep 2008 08:16:09 +0000 (08:16 +0000)
introduce new search API

repository/flickr_public/repository.class.php
repository/lib.php
repository/ws.php

index e532f0aa1a0682bbac1c0f6eb4a012d5c8808163..c04643d2d8f2e116da659881803ae9e7d1624cf5 100644 (file)
@@ -36,7 +36,6 @@ class repository_flickr_public extends repository{
     }
 
     public function global_search(){
-        global $SESSION;
         if (empty($this->flickr_account)) {
             return false;
         } else {
@@ -45,7 +44,7 @@ class repository_flickr_public extends repository{
     }
 
     public function __construct($repositoryid, $context = SITEID, $options = array()){
-        global $SESSION, $action, $CFG;
+        global $action, $CFG;
         $options['page']    = optional_param('p', 1, PARAM_INT);
         parent::__construct($repositoryid, $context, $options);
         $this->api_key = $this->get_option('api_key');
@@ -73,7 +72,6 @@ class repository_flickr_public extends repository{
         }
     }
     public function print_login($ajax = true){
-        global $SESSION;
         if(empty($this->flickr_account)) {
             if($ajax){
                 $ret = array();
@@ -94,17 +92,46 @@ class repository_flickr_public extends repository{
             return $this->get_listing();
         }
     }
+    public function search(){
+        $people = $this->flickr->people_findByEmail($this->flickr_account);
+        $tag    = optional_param('tag', '', PARAM_CLEANHTML);
+        $search = optional_param('s', '', PARAM_CLEANHTML);
+        if(!empty($tag)){
+            $photos = $this->flickr->photos_search(array(
+                'tags'=>$tag
+                ));
+        } else {
+            $photos = $this->flickr->photos_search(array(
+                'user_id'=>$people['nsid'],
+                'text'=>$search));
+        }
+        $ret = array();
+        $ret['list']  = array();
+        $ret['nologin'] = true;
+        $ret['pages'] = $photos['pages'];
+        foreach ($photos['photo'] as $p) {
+            if(empty($p['title'])) {
+                $p['title'] = get_string('notitle', 'repository_flickr_public');
+            }
+            if (isset($p['originalformat'])) {
+                $format = $p['originalformat'];
+            } else {
+                $format = 'jpg';
+            }
+            $ret['list'][] =
+                array('title'=>$p['title'].'.'.$format,'source'=>$p['id'],'id'=>$p['id'],'thumbnail'=>$this->flickr->buildPhotoURL($p, 'Square'), 'date'=>'', 'size'=>'unknown', 'url'=>'http://www.flickr.com/photos/'.$p['owner'].'/'.$p['id']);
+        }
+        if(empty($ret)) {
+            throw new repository_exception('nullphotolist', 'repository_flickr_public');
+        } else {
+            return $ret;
+        }
+    }
     public function get_listing($path = '1', $search = ''){
-        global $SESSION;
         $people = $this->flickr->people_findByEmail($this->flickr_account);
         $photos_url = $this->flickr->urls_getUserPhotos($people['nsid']);
 
-        if(!empty($search)) {
-            // do searching, if $path is not empty, ignore it.
-            $photos = $this->flickr->photos_search(array('user_id'=>$people['nsid'], 'text'=>$search));
-        } elseif(!empty($path) && empty($search)) {
-            $photos = $this->flickr->people_getPublicPhotos($people['nsid'], 'original_format', 25, $path);
-        }
+        $photos = $this->flickr->people_getPublicPhotos($people['nsid'], 'original_format', 25, $path);
 
         $ret = array();
         $ret['manage'] = $photos_url;
@@ -139,7 +166,8 @@ class repository_flickr_public extends repository{
     }
     public function print_search(){
         parent::print_search();
-        echo '<input type="text" name="s" />';
+        echo '<label>Keyword: </label><input type="text" name="s" /><br />';
+        echo '<label>Tag: </label><input type="text" name="tag" /><br />';
         return true;
     }
     public function get_file($photo_id, $file = ''){
index cec266656883c1a28cff90056a25ad941b70d7df..900471dfa55cb3e04afa6b34f3069b630a011aa2 100644 (file)
@@ -829,6 +829,15 @@ abstract class repository {
      */
     abstract public function get_listing($parent = '/', $search = '');
 
+    /**
+     * Search
+     * @return mixed, see get_listing()
+     */
+    public function search(){
+        $search = optional_param('s', '', PARAM_CLEANHTML);
+        return $this->get_listing(null, $search);
+    }
+
 
     /**
      * Show the login screen, if required
@@ -1236,21 +1245,21 @@ function repository_get_client($context){
 .fp-searchbar{float:right}
 .fp-viewbar{width:300px;float:left}
 .fp-toolbar{padding: .8em;background: #FFFFCC;color:white;text-align:center}
-.fp-toolbar a{padding: 0 5px}
+.fp-toolbar a{padding: 0 .5em}
 .fp-list{list-style-type:none;padding:0}
 .fp-list li{border-bottom:1px dotted gray;margin-bottom: 1em;}
-.fp-repo-name{display:block;padding: 3px;margin-bottom: 5px}
-.fp-pathbar{margin: 4px;border-bottom: 1px dotted gray;}
-.fp-pathbar a{padding: 4px;}
+.fp-repo-name{display:block;padding: .5em;margin-bottom: .5em}
+.fp-pathbar{margin: .4em;border-bottom: 1px dotted gray;}
+.fp-pathbar a{padding: .4em;}
 .fp-rename-form{text-align:center}
 .fp-rename-form p{margin: 1em;}
 .fp-upload-form{margin: 2em 0;text-align:center}
-.fp-upload-btn a{font-size: 14px;background: #ccc;color:white;padding: 5px}
+.fp-upload-btn a{font-size: 1.5em;background: #ccc;color:white;padding: .5em}
 .fp-upload-btn a:hover {background: grey;color:white}
-.fp-paging{margin:10px 5px; clear:both;text-align:center}
-.fp-paging a{padding: 4px;border: 1px solid #CCC}
+.fp-paging{margin:1em .5em; clear:both;text-align:center;line-height: 2.5em;}
+.fp-paging a{padding: .5em;border: 1px solid #CCC}
 .fp-popup{text-align:center}
-.fp-popup a{font-size: 24px}
+.fp-popup a{font-size: 3em}
 .fp-grid{width:80px; float:left;text-align:center;}
 .fp-grid div{width: 80px; overflow: hidden}
 .fp-grid p{margin:0;padding:0;background: #FFFFCC}
index 0e5abac1151490ca9af9f393b418a53af3e84033..97b8a9398ec984f2e751c006628855aa37fe3548 100644 (file)
@@ -14,7 +14,6 @@ $file  = optional_param('file', '', PARAM_RAW);
 // rename the file name
 $title = optional_param('title', '', PARAM_FILE);
 $action = optional_param('action', '', PARAM_ALPHA);
-$search = optional_param('s', '', PARAM_CLEANHTML);
 $callback = optional_param('callback', '', PARAM_CLEANHTML);
 // repository ID
 $repo_id = optional_param('repo_id', 1, PARAM_INT);
@@ -124,13 +123,19 @@ case 'login':
         die(json_encode($err));
     }
     break;
-case 'list':
 case 'search':
+    try {
+        echo json_encode($repo->search());
+    } catch (repository_exception $e) {
+        $err = new stdclass;
+        $err->e = $e->getMessage();
+        die(json_encode($err));
+    }
+    break;
+case 'list':
     try {
         if(!empty($p)) {
             echo json_encode($repo->get_listing($p));
-        } else if(!empty($search)) {
-            echo json_encode($repo->get_listing('', $search));
         } else {
             echo json_encode($repo->get_listing());
         }