Esempio n. 1
0
/**
 * Check if poll is enabled for groups
 *
 * @param ElggGroup $group (optional) the group to check for
 *
 * @return bool
 */
function poll_is_enabled_for_group(ElggGroup $group = null)
{
    if (poll_get_plugin_setting('enable_group') === 'no') {
        return false;
    }
    if (!$group instanceof ElggGroup) {
        return true;
    }
    if ($group->poll_enable === 'yes') {
        return true;
    }
    return false;
}
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
 /**
  * Check if a user can vote for this poll
  *
  * @param int $user_guid (optional) user_guid to check, defaults to current user
  *
  * @return bool
  */
 public function canVote($user_guid = 0)
 {
     $user_guid = sanitise_int($user_guid, false);
     if (empty($user_guid)) {
         $user_guid = elgg_get_logged_in_user_guid();
     }
     if (empty($user_guid)) {
         return false;
     }
     if (!$this->getAnswers()) {
         return false;
     }
     if ($this->getVote() && poll_get_plugin_setting('vote_change_allowed') !== 'yes') {
         return false;
     }
     // check close date
     if ($this->close_date) {
         $close_date = (int) $this->close_date;
         if ($close_date < time()) {
             return false;
         }
     }
     return true;
 }
Esempio n. 4
0
// build form elements
// title
$title = elgg_format_element('label', ['for' => 'poll-title'], elgg_echo('title'));
$title .= elgg_view('input/text', ['name' => 'title', 'value' => elgg_extract('title', $vars), 'id' => 'poll-title', 'required' => true]);
echo elgg_format_element('div', [], $title);
// description
$description = elgg_format_element('label', ['for' => 'poll-description'], elgg_echo('description'));
$description .= elgg_view('input/longtext', ['name' => 'description', 'value' => elgg_extract('description', $vars), 'id' => 'poll-description']);
echo elgg_format_element('div', [], $description);
// answers
$answers = elgg_format_element('label', [], elgg_echo('poll:edit:answers'));
$answers .= elgg_view('poll/edit/answers', $vars);
echo elgg_format_element('div', [], $answers);
// close date
$answers = elgg_format_element('label', ['for' => 'close_date'], elgg_echo('poll:edit:close_date'));
$answers .= elgg_view('input/date', ['name' => 'close_date', 'value' => elgg_extract('close_date', $vars), 'timestamp' => true, 'required' => poll_get_plugin_setting('close_date_required') === 'yes' ? true : false]);
echo elgg_format_element('div', [], $answers);
// tags
$tags = elgg_format_element('label', ['for' => 'poll-tags'], elgg_echo('tags'));
$tags .= elgg_view('input/tags', ['name' => 'tags', 'value' => elgg_extract('tags', $vars), 'id' => 'poll-tags']);
echo elgg_format_element('div', [], $tags);
// results output
$comments = elgg_format_element('label', ['for' => 'poll-results-output'], elgg_echo('poll:edit:results_output'));
$comments .= elgg_view('input/select', ['name' => 'results_output', 'options_values' => $results_output_options, 'value' => elgg_extract('results_output', $vars), 'id' => 'poll-results-output', 'class' => 'mls']);
echo elgg_format_element('div', [], $comments);
// comments
$comments = elgg_format_element('label', ['for' => 'poll-comments'], elgg_echo('comments'));
$comments .= elgg_view('input/select', ['name' => 'comments_allowed', 'options_values' => $noyes_options, 'value' => elgg_extract('comments_allowed', $vars), 'id' => 'poll-comments', 'class' => 'mls']);
echo elgg_format_element('div', [], $comments);
// access
$access = elgg_format_element('label', ['for' => 'poll-access-id'], elgg_echo('access'));
Esempio n. 5
0
<?php

// breadcrumb
elgg_pop_breadcrumb();
elgg_push_breadcrumb(elgg_echo('poll:menu:site'));
if (poll_get_plugin_setting('enable_site') === 'yes') {
    elgg_register_title_button();
}
// build page elements
$title = elgg_echo('poll:all:title');
$options = ['type' => 'object', 'subtype' => Poll::SUBTYPE, 'no_results' => elgg_echo('poll:none'), 'preload_owners' => true, 'preload_containers' => true];
$contents = elgg_list_entities($options);
// build page
$page_data = elgg_view_layout('content', ['title' => $title, 'content' => $contents]);
// draw page
echo elgg_view_page($title, $page_data);
Esempio n. 6
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);