Changeset 1585

Show
Ignore:
Timestamp:
03-03-11 20:24:14 (3 years ago)
Author:
work@…
Message:

moved text search method into Study domain

Location:
trunk/grails-app
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/HomeController.groovy

    r1584 r1585  
    119119 
    120120                // search studies 
    121                 Study.createCriteria().list { 
    122                         or { 
    123                                 ilike("title", "%${query}%") 
    124                                 ilike("description", "%${query}%") 
    125                                 eq("owner", user) 
    126                                 writers { 
    127                                         eq("id", user.id) 
    128                                 } 
    129                                 and { 
    130                                         readers { 
    131                                                 eq("id", user.id) 
    132                                         } 
    133                                         eq("published", true) 
    134                                 } 
    135                         } 
    136                 }.each { study -> 
     121                Study.textSearchReadableStudies(user,query).each { study -> 
    137122                        result.data << [ 
    138123                                link            : createLink(controller:'study', action:'show', id:study.id), 
  • trunk/grails-app/domain/dbnp/studycapturing/Study.groovy

    r1584 r1585  
    520520 
    521521        /** 
     522         * perform a text search on studies 
     523         * @param query 
     524         * @return 
     525         */ 
     526        public static textSearchReadableStudies(SecUser user, String query) { 
     527                def c = Study.createCriteria() 
     528 
     529                if (user == null) { 
     530                        // regular user 
     531                        return c.list { 
     532                                or { 
     533                                        ilike("title", "%${query}%") 
     534                                        ilike("description", "%${query}%") 
     535                                } 
     536                                and { 
     537                                        eq("published", true) 
     538                                        eq("publicstudy", true) 
     539                                } 
     540                        } 
     541                } else if (user.hasAdminRights()) { 
     542                        // admin can search everything 
     543                        return c.list { 
     544                                or { 
     545                                        ilike("title", "%${query}%") 
     546                                        ilike("description", "%${query}%") 
     547                                } 
     548                        } 
     549                } else { 
     550                        return c.list { 
     551                                or { 
     552                                        ilike("title", "%${query}%") 
     553                                        ilike("description", "%${query}%") 
     554                                } 
     555                                and { 
     556                                        or { 
     557                                                eq("owner", user) 
     558                                                writers { 
     559                                                        eq("id", user.id) 
     560                                                } 
     561                                                and { 
     562                                                        readers { 
     563                                                                eq("id", user.id) 
     564                                                        } 
     565                                                        eq("published", true) 
     566                                                } 
     567                                        } 
     568                                } 
     569                        } 
     570 
     571                } 
     572        } 
     573 
     574        /** 
    522575         * Returns the number of public studies 
    523576         * @return int