| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 | 
							- <?php
 
- /**
 
-  * Elgg access level input
 
-  * Displays a dropdown input field
 
-  *
 
-  * @uses $vars['value']                  The current value, if any
 
-  * @uses $vars['options_values']         Array of value => label pairs (overrides default)
 
-  * @uses $vars['name']                   The name of the input field
 
-  * @uses $vars['entity']                 Optional. The entity for this access control (uses access_id)
 
-  * @uses $vars['class']                  Additional CSS class
 
-  *
 
-  * @uses $vars['entity_type']            Optional. Type of the entity
 
-  * @uses $vars['entity_subtype']         Optional. Subtype of the entity
 
-  * @uses $vars['container_guid']         Optional. Container GUID of the entity
 
-  * @usee $vars['entity_allows_comments'] Optional. (bool) whether the entity uses comments - used for UI display of access change warnings
 
-  *
 
-  */
 
- // bail if set to a unusable value
 
- if (isset($vars['options_values'])) {
 
- 	if (!is_array($vars['options_values']) || empty($vars['options_values'])) {
 
- 		return;
 
- 	}
 
- }
 
- $entity_allows_comments = elgg_extract('entity_allows_comments', $vars, true);
 
- unset($vars['entity_allows_comments']);
 
- $vars['class'] = (array) elgg_extract('class', $vars, []);
 
- $vars['class'][] = 'elgg-input-access';
 
- // this will be passed to plugin hooks ['access:collections:write', 'user'] and ['default', 'access']
 
- $params = array();
 
- $keys = array(
 
- 	'entity' => null,
 
- 	'entity_type' => null,
 
- 	'entity_subtype' => null,
 
- 	'container_guid' => null,
 
- 	'purpose' => 'read',
 
- );
 
- foreach ($keys as $key => $default_value) {
 
- 	$params[$key] = elgg_extract($key, $vars, $default_value);
 
- 	unset($vars[$key]);
 
- }
 
- /* @var ElggEntity $entity */
 
- $entity = $params['entity'];
 
- if ($entity) {
 
- 	$params['value'] = $entity->access_id;
 
- 	$params['entity_type'] = $entity->type;
 
- 	$params['entity_subtype'] = $entity->getSubtype();
 
- 	$params['container_guid'] = $entity->container_guid;
 
- 	if ($entity_allows_comments && ($entity->access_id != ACCESS_PUBLIC)) {
 
- 		$vars['data-comment-count'] = (int) $entity->countComments();
 
- 		$vars['data-original-value'] = $entity->access_id;
 
- 	}
 
- }
 
- $container = elgg_get_page_owner_entity();
 
- if (!$params['container_guid'] && $container) {
 
- 	$params['container_guid'] = $container->guid;
 
- }
 
- // don't call get_default_access() unless we need it
 
- if (!isset($vars['value']) || $vars['value'] == ACCESS_DEFAULT) {
 
- 	if ($entity) {
 
- 		$vars['value'] = $entity->access_id;
 
- 	} else if (empty($vars['options_values']) || !is_array($vars['options_values'])) {
 
- 		$vars['value'] = get_default_access(null, $params);
 
- 	} else {
 
- 		$options_values_ids = array_keys($vars['options_values']);
 
- 		$vars['value'] = $options_values_ids[0];
 
- 	}
 
- }
 
- $params['value'] = $vars['value'];
 
- // don't call get_write_access_array() unless we need it
 
- if (!isset($vars['options_values'])) {
 
- 	$vars['options_values'] = get_write_access_array(0, 0, false, $params);
 
- }
 
- if (!isset($vars['disabled'])) {
 
- 	$vars['disabled'] = false;
 
- }
 
- // if access is set to a value not present in the available options, add the option
 
- if (!isset($vars['options_values'][$vars['value']])) {
 
- 	$acl = get_access_collection($vars['value']);
 
- 	$display = $acl ? $acl->name : elgg_echo('access:missing_name');
 
- 	$vars['options_values'][$vars['value']] = $display;
 
- }
 
- // should we tell users that public/logged-in access levels will be ignored?
 
- if (($container instanceof ElggGroup)
 
- 	&& $container->getContentAccessMode() === ElggGroup::CONTENT_ACCESS_MODE_MEMBERS_ONLY
 
- 	&& !elgg_in_context('group-edit')
 
- 	&& !($entity instanceof ElggGroup)) {
 
- 	$show_override_notice = true;
 
- } else {
 
- 	$show_override_notice = false;
 
- }
 
- if ($show_override_notice) {
 
- 	$vars['data-group-acl'] = $container->group_acl;
 
- }
 
- echo elgg_view('input/select', $vars);
 
- if ($show_override_notice) {
 
- 	echo elgg_format_element('p', ['class' => 'elgg-text-help'], elgg_echo('access:overridenotice'));
 
- }
 
 
  |