123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- <?php
- /**
- * Elgg Groups.
- * Groups contain other entities, or rather act as a placeholder for other entities to
- * mark any given container as their container.
- *
- * @package Elgg.Core
- * @subpackage DataModel.Group
- */
- /**
- * Get the group entity.
- *
- * @param int $guid GUID for a group
- *
- * @return array|false
- * @access private
- */
- function get_group_entity_as_row($guid) {
- global $CONFIG;
- $guid = (int)$guid;
- return get_data_row("SELECT * from {$CONFIG->dbprefix}groups_entity where guid=$guid");
- }
- /**
- * Adds a group tool option
- *
- * @see remove_group_tool_option().
- *
- * @param string $name Name of the group tool option
- * @param string $label Used for the group edit form
- * @param bool $default_on True if this option should be active by default
- *
- * @return void
- * @since 1.5.0
- */
- function add_group_tool_option($name, $label, $default_on = true) {
- global $CONFIG;
- if (!isset($CONFIG->group_tool_options)) {
- $CONFIG->group_tool_options = array();
- }
- $group_tool_option = new \stdClass;
- $group_tool_option->name = $name;
- $group_tool_option->label = $label;
- $group_tool_option->default_on = $default_on;
- $CONFIG->group_tool_options[] = $group_tool_option;
- }
- /**
- * Removes a group tool option based on name
- *
- * @see add_group_tool_option()
- *
- * @param string $name Name of the group tool option
- *
- * @return void
- * @since 1.7.5
- */
- function remove_group_tool_option($name) {
- global $CONFIG;
- if (!isset($CONFIG->group_tool_options)) {
- return;
- }
- foreach ($CONFIG->group_tool_options as $i => $option) {
- if ($option->name == $name) {
- unset($CONFIG->group_tool_options[$i]);
- }
- }
- }
- /**
- * Allow group members to write to the group container
- *
- * @param string $hook Hook name
- * @param string $type Hook type
- * @param bool $result The value of the hook
- * @param array $params Parameters related to the hook
- * @return bool
- * @access private
- */
- function _elgg_groups_container_override($hook, $type, $result, $params) {
- $container = $params['container'];
- $user = $params['user'];
- if (elgg_instanceof($container, 'group') && $user) {
- /* @var \ElggGroup $container */
- if ($container->isMember($user)) {
- return true;
- }
- }
- return $result;
- }
- /**
- * Runs unit tests for the group entities.
- *
- * @param string $hook Hook name
- * @param string $type Hook type
- * @param array $value Array of unit test locations
- *
- * @return array
- * @access private
- */
- function _elgg_groups_test($hook, $type, $value) {
- global $CONFIG;
- $value[] = $CONFIG->path . 'engine/tests/ElggGroupTest.php';
- return $value;
- }
- /**
- * init the groups library
- * @access private
- */
- function _elgg_groups_init() {
- elgg_register_plugin_hook_handler('container_permissions_check', 'all', '_elgg_groups_container_override');
- elgg_register_plugin_hook_handler('unit_test', 'system', '_elgg_groups_test');
- }
- return function(\Elgg\EventsService $events, \Elgg\HooksRegistrationService $hooks) {
- $events->registerHandler('init', 'system', '_elgg_groups_init');
- };
|