diff options
| author | jhilden <jakobhilden@gmail.com> | 2009-08-29 19:12:57 -0400 |
|---|---|---|
| committer | jhilden <jakobhilden@gmail.com> | 2009-08-29 19:12:57 -0400 |
| commit | ed9be096535dfbac4d62e0cc74f416a71f67648d (patch) | |
| tree | 3301809705b4418b97673d8f006332111b42fa5f /modules/gallery/helpers/item.php | |
| parent | 39559fdfd09491dce669d0351768fe2b13ccdd03 (diff) | |
| parent | 0aceba6f48e5542d3edfbb1f195af50187adbac4 (diff) | |
Merge branch 'master' of git@github.com:gallery/gallery3
Diffstat (limited to 'modules/gallery/helpers/item.php')
| -rw-r--r-- | modules/gallery/helpers/item.php | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/modules/gallery/helpers/item.php b/modules/gallery/helpers/item.php index a2d3859f..8839861f 100644 --- a/modules/gallery/helpers/item.php +++ b/modules/gallery/helpers/item.php @@ -151,4 +151,41 @@ class item_Core { ->get()->current(); return ($result ? $result->weight : 0) + 1; } + + /** + * Add a set of restrictions to any following queries to restrict access only to items + * viewable by the active user. + * @chainable + */ + static function viewable($model) { + $view_restrictions = array(); + if (!user::active()->admin) { + foreach (user::group_ids() as $id) { + // Separate the first restriction from the rest to make it easier for us to formulate + // our where clause below + if (empty($view_restrictions)) { + $view_restrictions[0] = "items.view_$id"; + } else { + $view_restrictions[1]["items.view_$id"] = access::ALLOW; + } + } + } + switch (count($view_restrictions)) { + case 0: + break; + + case 1: + $model->where($view_restrictions[0], access::ALLOW); + break; + + default: + $model->open_paren(); + $model->where($view_restrictions[0], access::ALLOW); + $model->orwhere($view_restrictions[1]); + $model->close_paren(); + break; + } + + return $model; + } }
\ No newline at end of file |
