Changeset 1585


Ignore:
Timestamp:
Mar 3, 2011, 8:24:14 PM (6 years ago)
Author:
work@…
Message:

moved text search method into Study domain

Location:
trunk/grails-app
Files:
2 edited

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
Note: See TracChangeset for help on using the changeset viewer.