Esempio n. 1
0
/**
 * Gatekeeper function to check if poll is enabled
 *
 * @param ElggEntity $container the container to check for (defaults to page_owner)
 */
function poll_container_gatekeeper(ElggEntity $container = null)
{
    if (empty($container)) {
        $container = elgg_get_page_owner_entity();
    }
    if (poll_is_enabled_for_container($container)) {
        return;
    }
    if ($container instanceof ElggUser) {
        register_error(elgg_echo('poll:container_gatekeeper:user'));
    } elseif ($container instanceof ElggGroup) {
        register_error(elgg_echo('poll:container_gatekeeper:group'));
    }
    forward(REFERER);
}
Esempio n. 2
0
 /**
  * Check if a user can write a poll in a group
  *
  * @param string $hook         the name of the hook
  * @param string $type         the type of the hook
  * @param bool   $return_value current return value
  * @param array  $params       supplied params
  *
  * @return void|bool
  */
 public static function canWriteContainer($hook, $type, $return_value, $params)
 {
     if (empty($params) || !is_array($params)) {
         return;
     }
     $subtype = elgg_extract('subtype', $params);
     if ($type !== 'object' || $subtype !== \Poll::SUBTYPE) {
         return;
     }
     $user = elgg_extract('user', $params);
     if (!$user instanceof \ElggUser) {
         return false;
     }
     $container = elgg_extract('container', $params);
     if (!$container instanceof \ElggGroup) {
         return;
     }
     // poll enabled?
     if (!poll_is_enabled_for_container($container)) {
         return false;
     }
     // site admin or group owner/admin?
     if ($container->canEdit($user->getGUID())) {
         return true;
     }
     if (!$container->isMember($user)) {
         return false;
     }
     // check group setting
     $poll_enable_group_members = $container->getPrivateSetting('poll_enable_group_members');
     if (empty($poll_enable_group_members)) {
         if (poll_get_plugin_setting('group_create') === 'owners') {
             $poll_enable_group_members = 'no';
         }
     }
     if ($poll_enable_group_members === 'no') {
         // not for group members
         return false;
     }
     return true;
 }
Esempio n. 3
0
<?php

$page_owner = elgg_get_page_owner_entity();
if (empty($page_owner)) {
    forward(REFERER);
}
if ($page_owner instanceof ElggGroup) {
    poll_container_gatekeeper($page_owner);
    elgg_group_gatekeeper();
}
// breadcrumb
elgg_push_breadcrumb($page_owner->name);
if (poll_is_enabled_for_container($page_owner)) {
    // check if add button is allowed
    if (can_write_to_container(0, $page_owner->getGUID(), 'object', Poll::SUBTYPE)) {
        elgg_register_title_button();
    }
}
// build page elements
$title = elgg_echo('poll:owner:title', [$page_owner->name]);
$options = ['type' => 'object', 'subtype' => Poll::SUBTYPE, 'no_results' => elgg_echo('poll:none')];
if ($page_owner instanceof ElggUser) {
    $options['owner_guid'] = $page_owner->getGUID();
    $options['preload_containers'] = true;
} elseif ($page_owner instanceof ElggGroup) {
    $options['container_guid'] = $page_owner->getGUID();
    $options['preload_owners'] = true;
}
$contents = elgg_list_entities($options);
// build page
$page_data = elgg_view_layout('content', ['title' => $title, 'content' => $contents, 'filter' => $page_owner instanceof ElggGroup ? '' : null, 'filter_context' => $page_owner->getGUID === elgg_get_logged_in_user_guid() ? 'mine' : '']);
Esempio n. 4
0
<?php

$group = elgg_extract('entity', $vars);
if (!$group instanceof ElggGroup) {
    return;
}
if (!poll_is_enabled_for_container($group)) {
    return;
}
$title = elgg_echo('poll:group_settings:title');
$content = elgg_view_form('poll/group_settings', [], ['entity' => $group]);
echo elgg_view_module('info', $title, $content);
Esempio n. 5
0
<?php

$entity = elgg_extract('entity', $vars);
if (!$entity instanceof ElggGroup) {
    return;
}
if (!poll_is_enabled_for_container($entity)) {
    return;
}
$yesno_options = ['yes' => elgg_echo('option:yes'), 'no' => elgg_echo('option:no')];
$value = $entity->getPrivateSetting('poll_enable_group_members');
if (empty($value)) {
    if (poll_get_plugin_setting('group_create') === 'owners') {
        $value = 'no';
    }
}
// enable group members
$members = elgg_echo('poll:group_settings:members');
$members .= elgg_view('input/select', ['name' => 'poll_enable_group_members', 'value' => $value, 'options_values' => $yesno_options, 'class' => 'mls']);
$members .= elgg_format_element('div', ['class' => 'elgg-subtext'], elgg_echo('poll:group_settings:members:description'));
echo elgg_format_element('div', [], $members);
// form footer
$footer = elgg_view('input/hidden', ['name' => 'group_guid', 'value' => $entity->getGUID()]);
$footer .= elgg_view('input/submit', ['value' => elgg_echo('save')]);
echo elgg_format_element('div', ['class' => 'elgg-foot'], $footer);