예제 #1
0
파일: Widgets.php 프로젝트: coldtrick/poll
 /**
  * Define a widget for a group tool option
  *
  * @param string $hook         the name of the hook
  * @param string $type         the type of the hook
  * @param array  $return_value current return value
  * @param array  $params       supplied params
  *
  * @return void|array
  */
 public static function groupToolWidgets($hook, $type, $return_value, $params)
 {
     if (empty($params) || !is_array($params)) {
         return;
     }
     $entity = elgg_extract('entity', $params);
     if (!$entity instanceof \ElggGroup) {
         return;
     }
     if (!is_array($return_value)) {
         $return_value = [];
     }
     if (!isset($return_value['enable'])) {
         $return_value['enable'] = [];
     }
     if (!isset($return_value['disable'])) {
         $return_value['disable'] = [];
     }
     if (poll_is_enabled_for_group($entity)) {
         $return_value['enable'][] = 'recent_polls';
     } else {
         $return_value['disable'][] = 'recent_polls';
         $return_value['disable'][] = 'single_poll';
     }
     return $return_value;
 }
예제 #2
0
/**
 * Check if poll is enabled for a container
 *
 * @param ElggEntity $container the container entity to check
 *
 * @return bool
 */
function poll_is_enabled_for_container(ElggEntity $container)
{
    if ($container instanceof ElggUser) {
        if (poll_get_plugin_setting('enable_site') === 'yes') {
            return true;
        }
    } elseif ($container instanceof ElggGroup) {
        if (poll_is_enabled_for_group($container)) {
            return true;
        }
    }
    return false;
}
예제 #3
0
 /**
  * Add a menu item to group owner block menu
  *
  * @param string          $hook         the name of the hook
  * @param string          $type         the type of the hook
  * @param \ElggMenuItem[] $return_value current return value
  * @param array           $params       supplied params
  *
  * @return void|\ElggMenuItem[]
  */
 public static function groupOwnerBlock($hook, $type, $return_value, $params)
 {
     if (empty($params) || !is_array($params)) {
         return;
     }
     $entity = elgg_extract('entity', $params);
     if (!$entity instanceof \ElggGroup) {
         return;
     }
     if (!poll_is_enabled_for_group($entity)) {
         return;
     }
     $return_value[] = \ElggMenuItem::factory(['name' => 'poll', 'text' => elgg_echo('poll:menu:owner_block:group'), 'href' => "poll/group/{$entity->getGUID()}/all"]);
     return $return_value;
 }
예제 #4
0
파일: start.php 프로젝트: coldtrick/poll
/**
 * Called during system init
 *
 * @return void
 */
function poll_init()
{
    // register js
    if (file_exists(dirname(__FILE__) . '/vendor/npm-asset/chart.js/dist/Chart.min.js')) {
        elgg_define_js('chartjs', ['src' => '/mod/poll/vendor/npm-asset/chart.js/dist/Chart.min.js']);
    } else {
        elgg_define_js('chartjs', ['src' => '/vendor/npm-asset/chart.js/dist/Chart.min.js']);
    }
    // css
    elgg_extend_view('css/elgg', 'css/poll/site.css');
    // register page handler
    elgg_register_page_handler('poll', ['\\ColdTrick\\Poll\\PageHandlers', 'pollHandler']);
    // searchable
    elgg_register_entity_type('object', Poll::SUBTYPE);
    // group tool option
    if (poll_is_enabled_for_group()) {
        add_group_tool_option('poll', elgg_echo('poll:group_tool:title'), false);
        elgg_extend_view('groups/tool_latest', 'poll/group_module');
        elgg_extend_view('groups/edit', 'poll/group_settings');
    }
    // widgets
    elgg_register_widget_type('recent_polls', elgg_echo('poll:widgets:recent_polls:title'), elgg_echo('poll:widgets:recent_polls:description'), ['index', 'profile', 'dashboard', 'groups']);
    elgg_register_widget_type('single_poll', elgg_echo('poll:widgets:single_poll:title'), elgg_echo('poll:widgets:single_poll:description'), ['index', 'profile', 'groups'], true);
    elgg_register_plugin_hook_handler('entity:url', 'object', ['\\ColdTrick\\Poll\\Widgets', 'widgetUrls']);
    elgg_register_plugin_hook_handler('group_tool_widgets', 'widget_manager', ['\\ColdTrick\\Poll\\Widgets', 'groupToolWidgets']);
    // notifications
    elgg_register_notification_event('object', Poll::SUBTYPE, ['create']);
    elgg_register_plugin_hook_handler('prepare', 'notification:create:object:' . Poll::SUBTYPE, ['\\ColdTrick\\Poll\\Notifications', 'createPoll']);
    elgg_register_plugin_hook_handler('entity_types', 'content_subscriptions', '\\ColdTrick\\Poll\\ContentSubscriptions::registerEntityType');
    elgg_register_plugin_hook_handler('cron', 'daily', '\\ColdTrick\\Poll\\Notifications::closeCron');
    // plugin hooks
    elgg_register_plugin_hook_handler('register', 'menu:site', ['\\ColdTrick\\Poll\\MenuHandler', 'siteMenu']);
    elgg_register_plugin_hook_handler('register', 'menu:owner_block', ['\\ColdTrick\\Poll\\MenuHandler', 'userOwnerBlock']);
    elgg_register_plugin_hook_handler('register', 'menu:owner_block', ['\\ColdTrick\\Poll\\MenuHandler', 'groupOwnerBlock']);
    elgg_register_plugin_hook_handler('register', 'menu:poll_tabs', ['\\ColdTrick\\Poll\\MenuHandler', 'pollTabs']);
    elgg_register_plugin_hook_handler('container_permissions_check', 'all', ['\\ColdTrick\\Poll\\Permissions', 'canWriteContainer']);
    elgg_register_plugin_hook_handler('likes:is_likable', 'object:' . \Poll::SUBTYPE, '\\Elgg\\Values::getTrue');
    elgg_register_plugin_hook_handler('supported_types', 'entity_tools', '\\ColdTrick\\Poll\\MigratePoll::supportedSubtypes');
    // register actions
    elgg_register_action('poll/edit', dirname(__FILE__) . '/actions/poll/edit.php');
    elgg_register_action('poll/delete', dirname(__FILE__) . '/actions/poll/delete.php');
    elgg_register_action('poll/vote', dirname(__FILE__) . '/actions/answer/vote.php');
    elgg_register_action('poll/group_settings', dirname(__FILE__) . '/actions/group_settings.php');
}
예제 #5
0
<?php

/**
 * Group poll module
 */
$group = elgg_extract('entity', $vars);
if (!$group instanceof ElggGroup) {
    return;
}
if (!poll_is_enabled_for_group($group)) {
    return;
}
$all_link = elgg_view('output/url', ['href' => "poll/group/{$group->getGUID()}/all", 'text' => elgg_echo('link:view:all'), 'is_trusted' => true]);
elgg_push_context('widgets');
$options = ['type' => 'object', 'subtype' => Poll::SUBTYPE, 'container_guid' => $group->getGUID(), 'limit' => 6, 'pagination' => false, 'no_results' => elgg_echo('poll:none'), 'preload_owners' => true];
$content = elgg_list_entities($options);
elgg_pop_context();
$new_link = elgg_view('output/url', ['href' => "poll/add/{$group->getGUID()}", 'text' => elgg_echo('poll:add'), 'is_trusted' => true]);
echo elgg_view('groups/profile/module', ['title' => elgg_echo('poll:group'), 'content' => $content, 'all_link' => $all_link, 'add_link' => $new_link]);