diff options
author | Jörn Friedrich Dreyer <jfd@butonic.de> | 2012-08-25 00:05:07 +0200 |
---|---|---|
committer | Jörn Friedrich Dreyer <jfd@butonic.de> | 2012-08-25 00:05:07 +0200 |
commit | c8255a170c2d7449b4e7728edd2237eea71dca80 (patch) | |
tree | e5a3854ec472be9700064bc7b689b8adf7c7f692 /lib/group | |
parent | 0c0ae928dcd483211a92303eb2b202453d02a86e (diff) | |
parent | 46d6fd15e4cc02d45079ffc688be0684e61f1434 (diff) | |
download | nextcloud-server-c8255a170c2d7449b4e7728edd2237eea71dca80.tar.gz nextcloud-server-c8255a170c2d7449b4e7728edd2237eea71dca80.zip |
Merge branch 'master' of git://gitorious.org/owncloud/owncloud into oracle-support
Conflicts:
3rdparty/Sabre/CardDAV/Plugin.php
3rdparty/smb4php/smb.php
apps/bookmarks/ajax/addBookmark.php
apps/bookmarks/ajax/editBookmark.php
apps/bookmarks/appinfo/migrate.php
apps/calendar/ajax/calendar/edit.form.php
apps/calendar/ajax/changeview.php
apps/calendar/ajax/import/import.php
apps/calendar/ajax/settings/guesstimezone.php
apps/calendar/ajax/settings/setfirstday.php
apps/calendar/ajax/settings/settimeformat.php
apps/calendar/ajax/share/changepermission.php
apps/calendar/ajax/share/share.php
apps/calendar/ajax/share/unshare.php
apps/calendar/appinfo/app.php
apps/calendar/appinfo/remote.php
apps/calendar/appinfo/update.php
apps/calendar/appinfo/version
apps/calendar/js/calendar.js
apps/calendar/l10n/da.php
apps/calendar/l10n/de.php
apps/calendar/l10n/fi_FI.php
apps/calendar/l10n/gl.php
apps/calendar/l10n/he.php
apps/calendar/l10n/hr.php
apps/calendar/l10n/ja_JP.php
apps/calendar/l10n/lb.php
apps/calendar/l10n/lt_LT.php
apps/calendar/l10n/nb_NO.php
apps/calendar/l10n/pl.php
apps/calendar/l10n/pt_PT.php
apps/calendar/l10n/ro.php
apps/calendar/l10n/ru.php
apps/calendar/l10n/sv.php
apps/calendar/l10n/zh_CN.php
apps/calendar/l10n/zh_TW.php
apps/calendar/lib/app.php
apps/calendar/lib/calendar.php
apps/calendar/lib/object.php
apps/calendar/lib/share.php
apps/calendar/templates/part.choosecalendar.rowfields.php
apps/calendar/templates/part.import.php
apps/calendar/templates/settings.php
apps/contacts/ajax/activation.php
apps/contacts/ajax/addressbook/delete.php
apps/contacts/ajax/contact/add.php
apps/contacts/ajax/contact/addproperty.php
apps/contacts/ajax/contact/delete.php
apps/contacts/ajax/contact/deleteproperty.php
apps/contacts/ajax/contact/saveproperty.php
apps/contacts/ajax/createaddressbook.php
apps/contacts/ajax/cropphoto.php
apps/contacts/ajax/currentphoto.php
apps/contacts/ajax/importaddressbook.php
apps/contacts/ajax/oc_photo.php
apps/contacts/ajax/savecrop.php
apps/contacts/ajax/selectaddressbook.php
apps/contacts/ajax/updateaddressbook.php
apps/contacts/ajax/uploadimport.php
apps/contacts/ajax/uploadphoto.php
apps/contacts/appinfo/migrate.php
apps/contacts/appinfo/remote.php
apps/contacts/css/contacts.css
apps/contacts/import.php
apps/contacts/index.php
apps/contacts/js/contacts.js
apps/contacts/l10n/ca.php
apps/contacts/l10n/cs_CZ.php
apps/contacts/l10n/da.php
apps/contacts/l10n/de.php
apps/contacts/l10n/el.php
apps/contacts/l10n/eo.php
apps/contacts/l10n/es.php
apps/contacts/l10n/et_EE.php
apps/contacts/l10n/eu.php
apps/contacts/l10n/fa.php
apps/contacts/l10n/fi_FI.php
apps/contacts/l10n/fr.php
apps/contacts/l10n/he.php
apps/contacts/l10n/hr.php
apps/contacts/l10n/hu_HU.php
apps/contacts/l10n/ia.php
apps/contacts/l10n/it.php
apps/contacts/l10n/ja_JP.php
apps/contacts/l10n/ko.php
apps/contacts/l10n/lb.php
apps/contacts/l10n/mk.php
apps/contacts/l10n/nb_NO.php
apps/contacts/l10n/nl.php
apps/contacts/l10n/pl.php
apps/contacts/l10n/pt_BR.php
apps/contacts/l10n/pt_PT.php
apps/contacts/l10n/ro.php
apps/contacts/l10n/ru.php
apps/contacts/l10n/sk_SK.php
apps/contacts/l10n/sl.php
apps/contacts/l10n/sv.php
apps/contacts/l10n/th_TH.php
apps/contacts/l10n/tr.php
apps/contacts/l10n/zh_CN.php
apps/contacts/l10n/zh_TW.php
apps/contacts/lib/addressbook.php
apps/contacts/lib/hooks.php
apps/contacts/lib/vcard.php
apps/contacts/photo.php
apps/contacts/templates/part.contact.php
apps/contacts/templates/part.contacts.php
apps/contacts/templates/part.cropphoto.php
apps/contacts/templates/part.importaddressbook.php
apps/contacts/templates/part.selectaddressbook.php
apps/contacts/thumbnail.php
apps/files/ajax/download.php
apps/files/ajax/newfile.php
apps/files/ajax/timezone.php
apps/files/appinfo/update.php
apps/files/appinfo/version
apps/files/index.php
apps/files/js/fileactions.js
apps/files/js/filelist.js
apps/files/js/files.js
apps/files/l10n/ar.php
apps/files/l10n/bg_BG.php
apps/files/l10n/ca.php
apps/files/l10n/cs_CZ.php
apps/files/l10n/da.php
apps/files/l10n/de.php
apps/files/l10n/el.php
apps/files/l10n/eo.php
apps/files/l10n/es.php
apps/files/l10n/et_EE.php
apps/files/l10n/eu.php
apps/files/l10n/fa.php
apps/files/l10n/fi_FI.php
apps/files/l10n/fr.php
apps/files/l10n/gl.php
apps/files/l10n/he.php
apps/files/l10n/hr.php
apps/files/l10n/hu_HU.php
apps/files/l10n/ia.php
apps/files/l10n/id.php
apps/files/l10n/it.php
apps/files/l10n/ja_JP.php
apps/files/l10n/ko.php
apps/files/l10n/lb.php
apps/files/l10n/lt_LT.php
apps/files/l10n/mk.php
apps/files/l10n/ms_MY.php
apps/files/l10n/nb_NO.php
apps/files/l10n/nl.php
apps/files/l10n/nn_NO.php
apps/files/l10n/pl.php
apps/files/l10n/pt_BR.php
apps/files/l10n/pt_PT.php
apps/files/l10n/ro.php
apps/files/l10n/ru.php
apps/files/l10n/sk_SK.php
apps/files/l10n/sl.php
apps/files/l10n/sr.php
apps/files/l10n/sr@latin.php
apps/files/l10n/sv.php
apps/files/l10n/th_TH.php
apps/files/l10n/tr.php
apps/files/l10n/uk.php
apps/files/l10n/zh_CN.php
apps/files/l10n/zh_TW.php
apps/files_archive/js/archive.js
apps/files_encryption/lib/cryptstream.php
apps/files_encryption/lib/proxy.php
apps/files_encryption/tests/proxy.php
apps/files_external/appinfo/app.php
apps/files_external/lib/smb.php
apps/files_external/lib/streamwrapper.php
apps/files_external/tests/config.php
apps/files_external/tests/smb.php
apps/files_sharing/ajax/email.php
apps/files_sharing/ajax/getitem.php
apps/files_sharing/ajax/setpermissions.php
apps/files_sharing/ajax/share.php
apps/files_sharing/ajax/toggleresharing.php
apps/files_sharing/ajax/unshare.php
apps/files_sharing/ajax/userautocomplete.php
apps/files_sharing/js/settings.js
apps/files_sharing/js/share.js
apps/files_sharing/lib_share.php
apps/files_sharing/settings.php
apps/files_sharing/sharedstorage.php
apps/files_sharing/templates/settings.php
apps/files_versions/ajax/rollbackVersion.php
apps/files_versions/versions.php
apps/gallery/ajax/thumbnail.php
apps/gallery/appinfo/app.php
apps/gallery/appinfo/update.php
apps/gallery/appinfo/version
apps/gallery/css/styles.css
apps/gallery/index.php
apps/gallery/js/pictures.js
apps/gallery/l10n/ca.php
apps/gallery/l10n/cs_CZ.php
apps/gallery/l10n/de.php
apps/gallery/l10n/el.php
apps/gallery/l10n/es.php
apps/gallery/l10n/fi_FI.php
apps/gallery/l10n/fr.php
apps/gallery/l10n/it.php
apps/gallery/l10n/pl.php
apps/gallery/l10n/pt_PT.php
apps/gallery/l10n/ru.php
apps/gallery/l10n/sl.php
apps/gallery/l10n/sv.php
apps/gallery/l10n/th_TH.php
apps/gallery/l10n/tr.php
apps/gallery/l10n/zh_CN.php
apps/gallery/lib/album.php
apps/gallery/lib/hooks_handlers.php
apps/gallery/lib/managers.php
apps/gallery/lib/photo.php
apps/gallery/lib/tiles.php
apps/gallery/lib/tiles_test.php
apps/gallery/templates/index.php
apps/media/lib_ampache.php
apps/media/lib_collection.php
apps/media/lib_media.php
apps/remoteStorage/lib_remoteStorage.php
apps/tasks/ajax/addtaskform.php
apps/tasks/ajax/edittask.php
apps/user_ldap/appinfo/update.php
apps/user_ldap/group_ldap.php
apps/user_ldap/lib_ldap.php
apps/user_ldap/settings.php
apps/user_ldap/templates/settings.php
apps/user_ldap/user_ldap.php
apps/user_migrate/appinfo/app.php
apps/user_migrate/templates/settings.php
apps/user_webfinger/host-meta.php
config/config.sample.php
core/js/js.js
core/l10n/da.php
core/l10n/de.php
core/l10n/fi_FI.php
core/l10n/gl.php
core/l10n/he.php
core/l10n/hr.php
core/l10n/id.php
core/l10n/ja_JP.php
core/l10n/lb.php
core/l10n/lt_LT.php
core/l10n/nb_NO.php
core/l10n/pl.php
core/l10n/pt_PT.php
core/l10n/ro.php
core/l10n/ru.php
core/l10n/sv.php
core/lostpassword/index.php
core/templates/layout.user.php
core/templates/login.php
db_structure.xml
index.php
l10n/af/calendar.po
l10n/af/contacts.po
l10n/af/core.po
l10n/af/files.po
l10n/af/settings.po
l10n/ar/calendar.po
l10n/ar/contacts.po
l10n/ar/core.po
l10n/ar/files.po
l10n/ar/media.po
l10n/ar/settings.po
l10n/bg_BG/calendar.po
l10n/bg_BG/contacts.po
l10n/bg_BG/core.po
l10n/bg_BG/files.po
l10n/bg_BG/media.po
l10n/bg_BG/settings.po
l10n/ca/calendar.po
l10n/ca/contacts.po
l10n/ca/core.po
l10n/ca/files.po
l10n/ca/gallery.po
l10n/ca/settings.po
l10n/cs_CZ/calendar.po
l10n/cs_CZ/contacts.po
l10n/cs_CZ/core.po
l10n/cs_CZ/files.po
l10n/cs_CZ/gallery.po
l10n/cs_CZ/settings.po
l10n/da/calendar.po
l10n/da/contacts.po
l10n/da/core.po
l10n/da/files.po
l10n/da/settings.po
l10n/de/calendar.po
l10n/de/contacts.po
l10n/de/core.po
l10n/de/files.po
l10n/de/gallery.po
l10n/de/settings.po
l10n/el/calendar.po
l10n/el/contacts.po
l10n/el/core.po
l10n/el/files.po
l10n/el/gallery.po
l10n/el/settings.po
l10n/eo/calendar.po
l10n/eo/contacts.po
l10n/eo/core.po
l10n/eo/files.po
l10n/eo/media.po
l10n/eo/settings.po
l10n/es/calendar.po
l10n/es/contacts.po
l10n/es/core.po
l10n/es/files.po
l10n/es/gallery.po
l10n/es/settings.po
l10n/et_EE/calendar.po
l10n/et_EE/contacts.po
l10n/et_EE/core.po
l10n/et_EE/files.po
l10n/et_EE/settings.po
l10n/eu/calendar.po
l10n/eu/contacts.po
l10n/eu/core.po
l10n/eu/files.po
l10n/eu/settings.po
l10n/fa/calendar.po
l10n/fa/contacts.po
l10n/fa/core.po
l10n/fa/files.po
l10n/fa/settings.po
l10n/fi_FI/calendar.po
l10n/fi_FI/contacts.po
l10n/fi_FI/core.po
l10n/fi_FI/files.po
l10n/fi_FI/gallery.po
l10n/fi_FI/settings.po
l10n/fr/calendar.po
l10n/fr/contacts.po
l10n/fr/core.po
l10n/fr/files.po
l10n/fr/gallery.po
l10n/fr/media.po
l10n/fr/settings.po
l10n/gl/calendar.po
l10n/gl/contacts.po
l10n/gl/core.po
l10n/gl/files.po
l10n/gl/settings.po
l10n/he/calendar.po
l10n/he/contacts.po
l10n/he/core.po
l10n/he/files.po
l10n/he/settings.po
l10n/hr/calendar.po
l10n/hr/contacts.po
l10n/hr/core.po
l10n/hr/files.po
l10n/hr/settings.po
l10n/hu_HU/calendar.po
l10n/hu_HU/contacts.po
l10n/hu_HU/core.po
l10n/hu_HU/files.po
l10n/hu_HU/settings.po
l10n/hy/calendar.po
l10n/hy/contacts.po
l10n/hy/core.po
l10n/hy/files.po
l10n/hy/settings.po
l10n/ia/calendar.po
l10n/ia/contacts.po
l10n/ia/core.po
l10n/ia/files.po
l10n/ia/settings.po
l10n/id/calendar.po
l10n/id/contacts.po
l10n/id/core.po
l10n/id/files.po
l10n/id/settings.po
l10n/it/calendar.po
l10n/it/contacts.po
l10n/it/core.po
l10n/it/files.po
l10n/it/gallery.po
l10n/it/settings.po
l10n/ja_JP/calendar.po
l10n/ja_JP/contacts.po
l10n/ja_JP/core.po
l10n/ja_JP/files.po
l10n/ja_JP/settings.po
l10n/ko/calendar.po
l10n/ko/contacts.po
l10n/ko/core.po
l10n/ko/files.po
l10n/ko/settings.po
l10n/lb/calendar.po
l10n/lb/contacts.po
l10n/lb/core.po
l10n/lb/files.po
l10n/lb/settings.po
l10n/lt_LT/calendar.po
l10n/lt_LT/contacts.po
l10n/lt_LT/core.po
l10n/lt_LT/files.po
l10n/lt_LT/settings.po
l10n/mk/calendar.po
l10n/mk/contacts.po
l10n/mk/core.po
l10n/mk/files.po
l10n/mk/settings.po
l10n/ms_MY/calendar.po
l10n/ms_MY/contacts.po
l10n/ms_MY/core.po
l10n/ms_MY/files.po
l10n/ms_MY/settings.po
l10n/nb_NO/calendar.po
l10n/nb_NO/contacts.po
l10n/nb_NO/core.po
l10n/nb_NO/files.po
l10n/nb_NO/settings.po
l10n/nl/calendar.po
l10n/nl/contacts.po
l10n/nl/core.po
l10n/nl/files.po
l10n/nl/settings.po
l10n/nn_NO/calendar.po
l10n/nn_NO/contacts.po
l10n/nn_NO/core.po
l10n/nn_NO/files.po
l10n/nn_NO/settings.po
l10n/pl/calendar.po
l10n/pl/contacts.po
l10n/pl/core.po
l10n/pl/files.po
l10n/pl/gallery.po
l10n/pl/settings.po
l10n/pt_BR/calendar.po
l10n/pt_BR/contacts.po
l10n/pt_BR/core.po
l10n/pt_BR/files.po
l10n/pt_BR/settings.po
l10n/pt_PT/calendar.po
l10n/pt_PT/contacts.po
l10n/pt_PT/core.po
l10n/pt_PT/files.po
l10n/pt_PT/gallery.po
l10n/pt_PT/settings.po
l10n/ro/calendar.po
l10n/ro/contacts.po
l10n/ro/core.po
l10n/ro/files.po
l10n/ro/settings.po
l10n/ru/calendar.po
l10n/ru/contacts.po
l10n/ru/core.po
l10n/ru/files.po
l10n/ru/gallery.po
l10n/ru/settings.po
l10n/sk_SK/calendar.po
l10n/sk_SK/contacts.po
l10n/sk_SK/core.po
l10n/sk_SK/files.po
l10n/sk_SK/settings.po
l10n/sl/calendar.po
l10n/sl/contacts.po
l10n/sl/core.po
l10n/sl/files.po
l10n/sl/gallery.po
l10n/sl/settings.po
l10n/sr/calendar.po
l10n/sr/contacts.po
l10n/sr/core.po
l10n/sr/files.po
l10n/sr/settings.po
l10n/sr@latin/calendar.po
l10n/sr@latin/contacts.po
l10n/sr@latin/core.po
l10n/sr@latin/files.po
l10n/sr@latin/settings.po
l10n/sv/calendar.po
l10n/sv/contacts.po
l10n/sv/core.po
l10n/sv/files.po
l10n/sv/gallery.po
l10n/sv/media.po
l10n/sv/settings.po
l10n/templates/bookmarks.pot
l10n/templates/calendar.pot
l10n/templates/contacts.pot
l10n/templates/core.pot
l10n/templates/files.pot
l10n/templates/gallery.pot
l10n/templates/media.pot
l10n/templates/settings.pot
l10n/th_TH/calendar.po
l10n/th_TH/contacts.po
l10n/th_TH/core.po
l10n/th_TH/files.po
l10n/th_TH/gallery.po
l10n/th_TH/settings.po
l10n/tr/calendar.po
l10n/tr/contacts.po
l10n/tr/core.po
l10n/tr/files.po
l10n/tr/gallery.po
l10n/tr/settings.po
l10n/uk/calendar.po
l10n/uk/contacts.po
l10n/uk/core.po
l10n/uk/files.po
l10n/uk/media.po
l10n/uk/settings.po
l10n/zh_CN/calendar.po
l10n/zh_CN/contacts.po
l10n/zh_CN/core.po
l10n/zh_CN/files.po
l10n/zh_CN/gallery.po
l10n/zh_CN/settings.po
l10n/zh_TW/calendar.po
l10n/zh_TW/contacts.po
l10n/zh_TW/core.po
l10n/zh_TW/files.po
l10n/zh_TW/settings.po
lib/app.php
lib/base.php
lib/connector/sabre/file.php
lib/connector/sabre/locks.php
lib/connector/sabre/node.php
lib/db.php
lib/filecache.php
lib/fileproxy/quota.php
lib/files.php
lib/filestorage/local.php
lib/filesystemview.php
lib/group/database.php
lib/helper.php
lib/installer.php
lib/json.php
lib/l10n.php
lib/migrate.php
lib/mimetypes.fixlist.php
lib/ocs.php
lib/preferences.php
lib/public/json.php
lib/public/util.php
lib/template.php
lib/user.php
lib/user/database.php
lib/util.php
lib/vcategories.php
ocs/providers.php
settings/admin.php
settings/ajax/lostpassword.php
settings/ajax/removeuser.php
settings/ajax/setbackgroundjobsmode.php
settings/ajax/setlanguage.php
settings/ajax/setquota.php
settings/ajax/togglegroups.php
settings/apps.php
settings/css/settings.css
settings/js/apps.js
settings/js/users.js
settings/l10n/bg_BG.php
settings/l10n/ca.php
settings/l10n/cs_CZ.php
settings/l10n/da.php
settings/l10n/de.php
settings/l10n/el.php
settings/l10n/eo.php
settings/l10n/es.php
settings/l10n/et_EE.php
settings/l10n/eu.php
settings/l10n/fa.php
settings/l10n/fi_FI.php
settings/l10n/fr.php
settings/l10n/gl.php
settings/l10n/he.php
settings/l10n/hr.php
settings/l10n/hu_HU.php
settings/l10n/it.php
settings/l10n/ja_JP.php
settings/l10n/ko.php
settings/l10n/lt_LT.php
settings/l10n/mk.php
settings/l10n/ms_MY.php
settings/l10n/nb_NO.php
settings/l10n/nl.php
settings/l10n/nn_NO.php
settings/l10n/pl.php
settings/l10n/pt_BR.php
settings/l10n/pt_PT.php
settings/l10n/ru.php
settings/l10n/sk_SK.php
settings/l10n/sl.php
settings/l10n/sv.php
settings/l10n/th_TH.php
settings/l10n/tr.php
settings/l10n/zh_CN.php
settings/personal.php
settings/templates/admin.php
settings/templates/users.php
Diffstat (limited to 'lib/group')
-rw-r--r-- | lib/group/backend.php | 69 | ||||
-rw-r--r-- | lib/group/database.php | 89 | ||||
-rw-r--r-- | lib/group/dummy.php | 9 | ||||
-rw-r--r-- | lib/group/example.php | 25 | ||||
-rw-r--r-- | lib/group/interface.php | 76 |
5 files changed, 198 insertions, 70 deletions
diff --git a/lib/group/backend.php b/lib/group/backend.php index af6c53c8035..5969986c652 100644 --- a/lib/group/backend.php +++ b/lib/group/backend.php @@ -4,7 +4,7 @@ * ownCloud * * @author Frank Karlitschek -* @copyright 2010 Frank Karlitschek karlitschek@kde.org +* @copyright 2012 Frank Karlitschek frank@owncloud.org * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE @@ -31,28 +31,20 @@ define('OC_GROUP_BACKEND_NOT_IMPLEMENTED', -501); */ define('OC_GROUP_BACKEND_CREATE_GROUP', 0x00000001); define('OC_GROUP_BACKEND_DELETE_GROUP', 0x00000010); -define('OC_GROUP_BACKEND_IN_GROUP', 0x00000100); -define('OC_GROUP_BACKEND_ADD_TO_GROUP', 0x00001000); -define('OC_GROUP_BACKEND_REMOVE_FROM_GOUP', 0x00010000); -define('OC_GROUP_BACKEND_GET_USER_GROUPS', 0x00100000); -define('OC_GROUP_BACKEND_GET_USERS', 0x01000000); -define('OC_GROUP_BACKEND_GET_GROUPS', 0x10000000); +define('OC_GROUP_BACKEND_ADD_TO_GROUP', 0x00000100); +define('OC_GROUP_BACKEND_REMOVE_FROM_GOUP', 0x00001000); /** * Abstract base class for user management */ -abstract class OC_Group_Backend { +abstract class OC_Group_Backend implements OC_Group_Interface { protected $possibleActions = array( OC_GROUP_BACKEND_CREATE_GROUP => 'createGroup', OC_GROUP_BACKEND_DELETE_GROUP => 'deleteGroup', - OC_GROUP_BACKEND_IN_GROUP => 'inGroup', OC_GROUP_BACKEND_ADD_TO_GROUP => 'addToGroup', OC_GROUP_BACKEND_REMOVE_FROM_GOUP => 'removeFromGroup', - OC_GROUP_BACKEND_GET_USER_GROUPS => 'getUserGroups', - OC_GROUP_BACKEND_GET_USERS => 'usersInGroup', - OC_GROUP_BACKEND_GET_GROUPS => 'getGroups' ); - + /** * @brief Get all supported actions * @returns bitwise-or'ed actions @@ -70,7 +62,7 @@ abstract class OC_Group_Backend { return $actions; } - + /** * @brief Check if backend implements actions * @param $actions bitwise-or'ed actions @@ -84,14 +76,55 @@ abstract class OC_Group_Backend { } /** + * @brief is user in group? + * @param $uid uid of the user + * @param $gid gid of the group + * @returns true/false + * + * Checks whether the user is member of a group or not. + */ + public function inGroup($uid, $gid){ + return in_array($gid, $this->getUserGroups($uid)); + } + + /** + * @brief Get all groups a user belongs to + * @param $uid Name of the user + * @returns array with group names + * + * This function fetches all groups a user belongs to. It does not check + * if the user exists at all. + */ + public function getUserGroups($uid){ + return array(); + } + + /** + * @brief get a list of all groups + * @returns array with group names + * + * Returns a list with all groups + */ + + public function getGroups($search = '', $limit = -1, $offset = 0) { + return array(); + } + + /** * check if a group exists * @param string $gid * @return bool */ public function groupExists($gid){ - if(!$this->implementsActions(OC_GROUP_BACKEND_GET_GROUPS)){ - return false; - } - return in_array($gid, $this->getGroups()); + return in_array($gid, $this->getGroups($gid, 1)); } + + /** + * @brief get a list of all users in a group + * @returns array with user ids + */ + public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) { + return array(); + } + } diff --git a/lib/group/database.php b/lib/group/database.php index 5e52432c492..52608b2db73 100644 --- a/lib/group/database.php +++ b/lib/group/database.php @@ -4,7 +4,7 @@ * ownCloud * * @author Frank Karlitschek - * @copyright 2010 Frank Karlitschek karlitschek@kde.org + * @copyright 2012 Frank Karlitschek frank@owncloud.org * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE @@ -41,7 +41,6 @@ * Class for group management in a SQL Database (e.g. MySQL, SQLite) */ class OC_Group_Database extends OC_Group_Backend { - static private $userGroupCache=array(); /** * @brief Try to create a new group @@ -51,10 +50,10 @@ class OC_Group_Database extends OC_Group_Backend { * Trys to create a new group. If the group name already exists, false will * be returned. */ - public static function createGroup( $gid ){ + public function createGroup( $gid ){ // Check for existence - $query = OC_DB::prepare( 'SELECT `gid` FROM `*PREFIX*groups` WHERE `gid` = ?' ); - $result = $query->execute( array( $gid )); + $stmt = OC_DB::prepare( "SELECT `gid` FROM `*PREFIX*groups` WHERE `gid` = ?" ); + $result = $stmt->execute( array( $gid )); if( $result->fetchRow() ){ // Can not add an existing group @@ -62,8 +61,8 @@ class OC_Group_Database extends OC_Group_Backend { } else{ // Add group and exit - $query = OC_DB::prepare( 'INSERT INTO `*PREFIX*groups` ( `gid` ) VALUES( ? )' ); - $result = $query->execute( array( $gid )); + $stmt = OC_DB::prepare( "INSERT INTO `*PREFIX*groups` ( `gid` ) VALUES( ? )" ); + $result = $stmt->execute( array( $gid )); return $result ? true : false; } @@ -76,14 +75,14 @@ class OC_Group_Database extends OC_Group_Backend { * * Deletes a group and removes it from the group_user-table */ - public static function deleteGroup( $gid ){ + public function deleteGroup( $gid ){ // Delete the group - $query = OC_DB::prepare( 'DELETE FROM `*PREFIX*groups` WHERE `gid` = ?' ); - $result = $query->execute( array( $gid )); + $stmt = OC_DB::prepare( "DELETE FROM `*PREFIX*groups` WHERE `gid` = ?" ); + $result = $stmt->execute( array( $gid )); // Delete the group-user relation - $query = OC_DB::prepare( 'DELETE FROM `*PREFIX*group_user` WHERE `gid` = ?' ); - $result = $query->execute( array( $gid )); + $stmt = OC_DB::prepare( "DELETE FROM `*PREFIX*group_user` WHERE `gid` = ?" ); + $result = $stmt->execute( array( $gid )); return true; } @@ -96,10 +95,10 @@ class OC_Group_Database extends OC_Group_Backend { * * Checks whether the user is member of a group or not. */ - public static function inGroup( $uid, $gid ){ + public function inGroup( $uid, $gid ){ // check - $query = OC_DB::prepare( 'SELECT `uid` FROM `*PREFIX*group_user` WHERE `gid` = ? AND `uid` = ?' ); - $result = $query->execute( array( $gid, $uid )); + $stmt = OC_DB::prepare( "SELECT `uid` FROM `*PREFIX*group_user` WHERE `gid` = ? AND `uid` = ?" ); + $result = $stmt->execute( array( $gid, $uid )); return $result->fetchRow() ? true : false; } @@ -112,11 +111,11 @@ class OC_Group_Database extends OC_Group_Backend { * * Adds a user to a group. */ - public static function addToGroup( $uid, $gid ){ + public function addToGroup( $uid, $gid ){ // No duplicate entries! - if( !self::inGroup( $uid, $gid )){ - $query = OC_DB::prepare( 'INSERT INTO `*PREFIX*group_user` ( `uid`, `gid` ) VALUES( ?, ? )' ); - $result = $query->execute( array( $uid, $gid )); + if( !$this->inGroup( $uid, $gid )){ + $stmt = OC_DB::prepare( "INSERT INTO `*PREFIX*group_user` ( `uid`, `gid` ) VALUES( ?, ? )" ); + $stmt->execute( array( $uid, $gid )); return true; }else{ return false; @@ -131,9 +130,9 @@ class OC_Group_Database extends OC_Group_Backend { * * removes the user from a group. */ - public static function removeFromGroup( $uid, $gid ){ - $query = OC_DB::prepare( 'DELETE FROM `*PREFIX*group_user` WHERE `uid` = ? AND `gid` = ?' ); - $result = $query->execute( array( $uid, $gid )); + public function removeFromGroup( $uid, $gid ){ + $stmt = OC_DB::prepare( "DELETE FROM `*PREFIX*group_user` WHERE `uid` = ? AND `gid` = ?" ); + $stmt->execute( array( $uid, $gid )); return true; } @@ -146,10 +145,10 @@ class OC_Group_Database extends OC_Group_Backend { * This function fetches all groups a user belongs to. It does not check * if the user exists at all. */ - public static function getUserGroups( $uid ){ + public function getUserGroups( $uid ){ // No magic! - $query = OC_DB::prepare( 'SELECT `gid` FROM `*PREFIX*group_user` WHERE `uid` = ?' ); - $result = $query->execute( array( $uid )); + $stmt = OC_DB::prepare( "SELECT `gid` FROM `*PREFIX*group_user` WHERE `uid` = ?" ); + $result = $stmt->execute( array( $uid )); $groups = array(); while( $row = $result->fetchRow()){ @@ -165,28 +164,40 @@ class OC_Group_Database extends OC_Group_Backend { * * Returns a list with all groups */ - public static function getGroups(){ - $query = OC_DB::prepare( 'SELECT `gid` FROM `*PREFIX*groups`' ); - $result = $query->execute(); - + public function getGroups($search = '', $limit = null, $offset = null) { + $stmt = OC_DB::prepare('SELECT `gid` FROM `*PREFIX*groups` WHERE `gid` LIKE ?', $limit, $offset); + $result = $stmt->execute(array($search.'%')); $groups = array(); - while( $row = $result->fetchRow()){ - $groups[] = $row["gid"]; + while ($row = $result->fetchRow()) { + $groups[] = $row['gid']; } - return $groups; } - + + /** + * check if a group exists + * @param string $gid + * @return bool + */ + public function groupExists($gid) { + $query = OC_DB::prepare('SELECT `gid` FROM `*PREFIX*groups` WHERE `gid` = ?'); + $result = $query->execute(array($gid))->fetchOne(); + if ($result) { + return true; + } + return false; + } + /** * @brief get a list of all users in a group * @returns array with user ids */ - public static function usersInGroup($gid){ - $query=OC_DB::prepare('SELECT `uid` FROM `*PREFIX*group_user` WHERE `gid`=?'); - $users=array(); - $result=$query->execute(array($gid)); - while($row=$result->fetchRow()){ - $users[]=$row['uid']; + public function usersInGroup($gid, $search = '', $limit = null, $offset = null) { + $stmt = OC_DB::prepare('SELECT `uid` FROM `*PREFIX*group_user` WHERE `gid` = ? AND `uid` LIKE ?', $limit, $offset); + $result = $stmt->execute(array($gid, $search.'%')); + $users = array(); + while ($row = $result->fetchRow()) { + $users[] = $row['uid']; } return $users; } diff --git a/lib/group/dummy.php b/lib/group/dummy.php index 5220237ecbf..51eca28f3f4 100644 --- a/lib/group/dummy.php +++ b/lib/group/dummy.php @@ -4,7 +4,7 @@ * ownCloud * * @author Frank Karlitschek -* @copyright 2010 Frank Karlitschek karlitschek@kde.org +* @copyright 2012 Frank Karlitschek frank@owncloud.org * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE @@ -126,7 +126,8 @@ class OC_Group_Dummy extends OC_Group_Backend { */ public function getUserGroups($uid){ $groups=array(); - foreach($this->groups as $group=>$user){ + $allGroups=array_keys($this->groups); + foreach($allGroups as $group){ if($this->inGroup($uid,$group)){ $groups[]=$group; } @@ -140,7 +141,7 @@ class OC_Group_Dummy extends OC_Group_Backend { * * Returns a list with all groups */ - public function getGroups(){ + public function getGroups($search = '', $limit = -1, $offset = 0) { return array_keys($this->groups); } @@ -148,7 +149,7 @@ class OC_Group_Dummy extends OC_Group_Backend { * @brief get a list of all users in a group * @returns array with user ids */ - public function usersInGroup($gid){ + public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) { if(isset($this->groups[$gid])){ return $this->groups[$gid]; }else{ diff --git a/lib/group/example.php b/lib/group/example.php index a88159f91be..76d12629763 100644 --- a/lib/group/example.php +++ b/lib/group/example.php @@ -4,7 +4,7 @@ * ownCloud * * @author Frank Karlitschek -* @copyright 2010 Frank Karlitschek karlitschek@kde.org +* @copyright 2012 Frank Karlitschek frank@owncloud.org * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE @@ -34,7 +34,7 @@ abstract class OC_Group_Example { * Trys to create a new group. If the group name already exists, false will * be returned. */ - public static function createGroup($gid){} + abstract public static function createGroup($gid); /** * @brief delete a group @@ -43,7 +43,7 @@ abstract class OC_Group_Example { * * Deletes a group and removes it from the group_user-table */ - public static function deleteGroup($gid){} + abstract public static function deleteGroup($gid); /** * @brief is user in group? @@ -53,7 +53,7 @@ abstract class OC_Group_Example { * * Checks whether the user is member of a group or not. */ - public static function inGroup($uid, $gid){} + abstract public static function inGroup($uid, $gid); /** * @brief Add a user to a group @@ -63,7 +63,7 @@ abstract class OC_Group_Example { * * Adds a user to a group. */ - public static function addToGroup($uid, $gid){} + abstract public static function addToGroup($uid, $gid); /** * @brief Removes a user from a group @@ -73,7 +73,7 @@ abstract class OC_Group_Example { * * removes the user from a group. */ - public static function removeFromGroup($uid,$gid){} + abstract public static function removeFromGroup($uid,$gid); /** * @brief Get all groups a user belongs to @@ -83,7 +83,7 @@ abstract class OC_Group_Example { * This function fetches all groups a user belongs to. It does not check * if the user exists at all. */ - public static function getUserGroups($uid){} + abstract public static function getUserGroups($uid); /** * @brief get a list of all groups @@ -91,12 +91,19 @@ abstract class OC_Group_Example { * * Returns a list with all groups */ - public static function getGroups(){} + abstract public static function getGroups($search = '', $limit = -1, $offset = 0); + + /** + * check if a group exists + * @param string $gid + * @return bool + */ + abstract public function groupExists($gid); /** * @brief get a list of all users in a group * @returns array with user ids */ - public static function usersInGroup($gid){} + abstract public static function usersInGroup($gid, $search = '', $limit = -1, $offset = 0); } diff --git a/lib/group/interface.php b/lib/group/interface.php new file mode 100644 index 00000000000..12cc07a5374 --- /dev/null +++ b/lib/group/interface.php @@ -0,0 +1,76 @@ +<?php + +/** + * ownCloud - group interface + * + * @author Arthur Schiwon + * @copyright 2012 Arthur Schiwon blizzz@owncloud.org + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + */ + +interface OC_Group_Interface { + /** + * @brief Check if backend implements actions + * @param $actions bitwise-or'ed actions + * @returns boolean + * + * Returns the supported actions as int to be + * compared with OC_GROUP_BACKEND_CREATE_GROUP etc. + */ + public function implementsActions($actions); + + /** + * @brief is user in group? + * @param $uid uid of the user + * @param $gid gid of the group + * @returns true/false + * + * Checks whether the user is member of a group or not. + */ + public function inGroup($uid, $gid); + + /** + * @brief Get all groups a user belongs to + * @param $uid Name of the user + * @returns array with group names + * + * This function fetches all groups a user belongs to. It does not check + * if the user exists at all. + */ + public function getUserGroups($uid); + + /** + * @brief get a list of all groups + * @returns array with group names + * + * Returns a list with all groups + */ + public function getGroups($search = '', $limit = -1, $offset = 0); + + /** + * check if a group exists + * @param string $gid + * @return bool + */ + public function groupExists($gid); + + /** + * @brief get a list of all users in a group + * @returns array with user ids + */ + public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0); + +}
\ No newline at end of file |