tra('Poll'), 'documentation' => 'PluginPoll', 'description' => tra('Embed a poll'), 'prefs' => [ 'feature_polls', 'wikiplugin_poll' ], 'body' => tra('Title of the poll'), 'iconname' => 'thumbs-up', 'introduced' => 1, 'tags' => [ 'basic' ], 'params' => [ 'pollId' => [ 'required' => true, 'name' => tra('Poll'), 'description' => tra('Numeric value representing the poll ID'), 'since' => '1', 'default' => '', 'filter' => 'digits', 'profile_reference' => 'poll', ], 'showtitle' => [ 'required' => false, 'name' => tra('Show Title'), 'description' => tra('Show poll title (shown by default).'), 'since' => '5.0', 'default' => 'y', 'filter' => 'alpha', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'showresult' => [ 'required' => false, 'name' => tra('Show result'), 'description' => tr('Set how results of the poll will be shown (default is %0link%1)', '', ''), 'since' => '7.0', 'filter' => 'word', 'default' => 'link', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Link'), 'value' => 'link'], ['text' => tra('Voted'), 'value' => 'voted'], ['text' => tra('Always'), 'value' => 'always'], ] ], 'showtotal' => [ 'required' => false, 'name' => tra('Show total votes'), 'description' => tr('Set to No (%0n%1) to not show votes. Default is Yes (%0y%1).', '', ''), 'since' => '7.0', 'filter' => 'alpha', 'default' => 'y', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], ], ]; } function wikiplugin_poll($data, $params) { global $tiki_p_admin, $prefs, $user; $userlib = TikiLib::lib('user'); $tikilib = TikiLib::lib('tiki'); $polllib = TikiLib::lib('poll'); $smarty = TikiLib::lib('smarty'); $trklib = TikiLib::lib('trk'); $default = ['showtitle' => 'y', 'showresult' => 'link', 'showtotal' => 'y']; $params = array_merge($default, $params); extract($params, EXTR_SKIP); if (! isset($pollId)) { return WikiParser_PluginOutput::argumentError(['pollId']); } $polllib = TikiLib::lib('poll'); $poll_info = $polllib->get_poll($pollId); $options = $polllib->list_poll_options($pollId); $hasVoted = $tikilib->user_has_voted($user, 'poll' . $pollId); $userVote = $tikilib->get_user_vote('poll' . $pollId, $user); $ret = ''; $smarty->assign_by_ref('showresult', $showresult); $smarty->assign_by_ref('showtotal', $showtotal); $smarty->assign_by_ref('hasVoted', $hasVoted); $smarty->assign_by_ref('showtitle', $showtitle); if ($poll_info['active'] != 'x' && (! $hasVoted || $prefs['feature_poll_revote'] == 'y')) { $smarty->assign_by_ref('menu_info', $poll_info); $smarty->assign_by_ref('channels', $options); $smarty->assign_by_ref('poll_title', $data); $smarty->assign('ownurl', $tikilib->httpPrefix() . $_SERVER['REQUEST_URI']); ask_ticket('poll-form'); $ret = $smarty->fetch('tiki-plugin_poll.tpl'); } if (($showresult == 'voted' && $hasVoted) || $showresult == 'always') { $total = $polllib->options_percent($poll_info, $options); $poll_info['options'] = $options; $smarty->assign_by_ref('poll_info', $poll_info); $smarty->assign_by_ref('user_vote', $userVote); $ret .= $smarty->fetch('tiki-poll_results_bar.tpl'); } return '~np~' . $ret . '~/np~'; }