5include_once(
"./Services/Block/classes/class.ilBlockGUI.php");
 
    6include_once(
"./Modules/Poll/classes/class.ilObjPoll.php");
 
   32        $this->lng = 
$DIC->language();
 
   33        $this->ctrl = 
$DIC->ctrl();
 
   34        $this->
user = $DIC->user();
 
   35        $this->access = 
$DIC->access();
 
   38        parent::__construct();
 
   40        $lng->loadLanguageModule(
"poll");
 
   71        return "ilobjpollgui";
 
   88        $this->poll_block = $a_block;
 
   98        $next_class = 
$ilCtrl->getNextClass();
 
   99        $cmd = 
$ilCtrl->getCmd(
"getHTML");
 
  101        switch ($next_class) {
 
  103                return $this->$cmd();
 
  117        $mess = $this->poll_block->getMessage(
$ilUser->getId());
 
  119            $this->tpl->setVariable(
"TXT_QUESTION", $mess);
 
  128            if ($this->poll_block->mayVote(
$ilUser->getId())) {
 
  129                $this->tpl->setCurrentBlock(
"mode_info_bl");
 
  130                if ($this->poll_block->getPoll()->getNonAnonymous()) {
 
  131                    $mode_info = 
$lng->txt(
"poll_non_anonymous_warning");
 
  133                    $mode_info = 
$lng->txt(
"poll_anonymous_warning");
 
  135                $this->tpl->setVariable(
"MODE_INFO", $mode_info);
 
  136                $this->tpl->parseCurrentBlock();
 
  138                $is_multi_answer = ($this->poll_block->getPoll()->getMaxNumberOfAnswers() > 1);
 
  140                if (isset(
$_SESSION[
"last_poll_vote"][$this->poll_block->getPoll()->getId()])) {
 
  141                    $last_vote = 
$_SESSION[
"last_poll_vote"][$this->poll_block->getPoll()->getId()];
 
  142                    unset(
$_SESSION[
"last_poll_vote"][$this->poll_block->getPoll()->getId()]);
 
  144                    if ($is_multi_answer) {
 
  146                            $lng->txt(
"poll_vote_error_multi"),
 
  147                            $this->poll_block->getPoll()->getMaxNumberOfAnswers()
 
  153                    $this->tpl->setCurrentBlock(
"error_bl");
 
  154                    $this->tpl->setVariable(
"FORM_ERROR", 
$error);
 
  155                    $this->tpl->parseCurrentBlock();
 
  158                $this->tpl->setCurrentBlock(
"answer");
 
  159                foreach ($a_poll->getAnswers() as $item) {
 
  160                    if (!$is_multi_answer) {
 
  161                        $this->tpl->setVariable(
"ANSWER_INPUT", 
"radio");
 
  162                        $this->tpl->setVariable(
"ANSWER_NAME", 
"aw");
 
  164                        $this->tpl->setVariable(
"ANSWER_INPUT", 
"checkbox");
 
  165                        $this->tpl->setVariable(
"ANSWER_NAME", 
"aw[]");
 
  167                        if (is_array($last_vote) && in_array($item[
"id"], $last_vote)) {
 
  168                            $this->tpl->setVariable(
"ANSWER_STATUS", 
'checked="checked"');
 
  171                    $this->tpl->setVariable(
"VALUE_ANSWER", $item[
"id"]);
 
  172                    $this->tpl->setVariable(
"TXT_ANSWER_VOTE", nl2br($item[
"answer"]));
 
  173                    $this->tpl->parseCurrentBlock();
 
  187                $url .= 
"#poll" . $a_poll->getID();
 
  189                $this->tpl->setVariable(
"URL_FORM", 
$url);
 
  190                $this->tpl->setVariable(
"CMD_FORM", 
"vote");
 
  191                $this->tpl->setVariable(
"TXT_SUBMIT", 
$lng->txt(
"poll_vote"));
 
  193                if ($this->poll_block->getPoll()->getVotingPeriod()) {
 
  194                    $this->tpl->setVariable(
 
  195                        "TXT_VOTING_END_PERIOD",
 
  197                            $lng->txt(
"poll_voting_period_info"),
 
  206            if ($this->poll_block->maySeeResults(
$ilUser->getId())) {
 
  207                if (!$this->poll_block->mayNotResultsYet(
$ilUser->getId())) {
 
  209                    foreach ($a_poll->getAnswers() as $item) {
 
  210                        $answers[$item[
"id"]] = $item[
"answer"];
 
  213                    $perc = $this->poll_block->getPoll()->getVotePercentages();
 
  215                    $perc = $perc[
"perc"];
 
  217                    $this->tpl->setVariable(
"TOTAL_ANSWERS", 
sprintf(
$lng->txt(
"poll_population"), 
$total));
 
  221                        if ($this->poll_block->getPoll()->getSortResultByVotes()) {
 
  224                            foreach (array_keys($answers) as $answer_id) {
 
  225                                if (!in_array($answer_id, $order)) {
 
  226                                    $order[] = $answer_id;
 
  230                            $order = array_keys($answers);
 
  235                            include_once(
"./Services/Chart/classes/class.ilChart.php");
 
  238                            $chart->setSize(
"100%", 200);
 
  239                            $chart->setAutoResize(
true);
 
  241                            $chart_data = 
$chart->getDataInstance();
 
  243                            foreach ($order as $answer_id) {
 
  244                                $chart_data->addPoint(
 
  245                                    round($perc[$answer_id][
"perc"]),
 
  246                                    nl2br($answers[$answer_id])
 
  253                            $chart->addData($chart_data);
 
  255                            $pie_legend_id = 
"poll_legend_" . $this->
getRefId();
 
  257                            $legend->setContainer($pie_legend_id);
 
  260                            $this->tpl->setVariable(
"PIE_LEGEND_ID", $pie_legend_id);
 
  261                            $this->tpl->setVariable(
"PIE_CHART", 
$chart->getHTML());
 
  265                            include_once 
"Services/UIComponent/ProgressBar/classes/class.ilProgressBar.php";
 
  267                            $this->tpl->setCurrentBlock(
"answer_result");
 
  268                            foreach ($order as $answer_id) {
 
  270                                $pbar->setCurrent(round($perc[$answer_id][
"perc"]));
 
  271                                $this->tpl->setVariable(
"PERC_ANSWER_RESULT", $pbar->render());
 
  272                                $this->tpl->setVariable(
"TXT_ANSWER_RESULT", nl2br($answers[$answer_id]));
 
  273                                $this->tpl->parseCurrentBlock();
 
  280                    $end = $this->poll_block->getPoll()->getVotingPeriodEnd();
 
  286                    if ($this->poll_block->getPoll()->hasUserVoted(
$ilUser->getId())) {
 
  287                        $info .= 
$lng->txt(
"poll_block_message_already_voted") . 
" ";
 
  290                    $this->tpl->setVariable(
"TOTAL_ANSWERS", 
$info .
 
  293            } elseif ($this->poll_block->getPoll()->hasUserVoted(
$ilUser->getId())) {
 
  294                $this->tpl->setVariable(
"TOTAL_ANSWERS", 
$lng->txt(
"poll_block_message_already_voted"));
 
  298        if (!$this->poll_block->mayVote(
$ilUser->getId()) && !$this->poll_block->getPoll()->hasUserVoted(
$ilUser->getId())) {
 
  299            if ($this->poll_block->getPoll()->getVotingPeriod()) {
 
  300                $this->tpl->setVariable(
 
  303                        $lng->txt(
"poll_voting_period_full_info"),
 
  310            $this->tpl->setVariable(
"TXT_QUESTION", nl2br(trim($a_poll->getQuestion())));
 
  312            $img = $a_poll->getImageFullPath();
 
  314                require_once(
'./Services/WebAccessChecker/classes/class.ilWACSignedPath.php');
 
  320        $this->tpl->setVariable(
"ANCHOR_ID", $a_poll->getID());
 
  323        $desc = trim($a_poll->getDescription());
 
  325            $this->tpl->setVariable(
"TXT_DESC", nl2br($desc));
 
  329        if ($this->poll_block->showComments()) {
 
  330            $this->tpl->setCurrentBlock(
"comment_link");
 
  331            $this->tpl->setVariable(
"LANG_COMMENTS", 
$lng->txt(
'poll_comments'));
 
  332            $this->tpl->setVariable(
"COMMENT_JSCALL", $this->
commentJSCall());
 
  333            $this->tpl->setVariable(
"COMMENTS_COUNT_ID", $this->
getRefId());
 
  337            if ($comments_count > 0) {
 
  338                $this->tpl->setVariable(
"COMMENTS_COUNT", 
"(" . $comments_count . 
")");
 
  341            if (!self::$js_init) {
 
  342                $redraw_url = 
$ilCtrl->getLinkTarget(
 
  344                    "getNumberOfCommentsForRedraw",
 
  349                $this->tpl->setVariable(
"COMMENTS_REDRAW_URL", $redraw_url);
 
  351                $tpl->addJavaScript(
"Modules/Poll/js/ilPoll.js");
 
  352                self::$js_init = 
true;
 
  367        $this->poll_block->setRefId($this->
getRefId());
 
  368        $this->may_write = $ilAccess->checkAccess(
"write", 
"", $this->
getRefId());
 
  369        $this->has_content = $this->poll_block->hasAnyContent(
$ilUser->getId(), $this->getRefId());
 
  371        #22078 and 22079 it always contains something. 
  377        $poll_obj = $this->poll_block->getPoll();
 
  378        $this->
setTitle($poll_obj->getTitle());
 
  379        $this->
setData(array($poll_obj));
 
  387        if (!$this->poll_block->getMessage(
$ilUser->getId())) {
 
  389            include_once 
"./Services/Notification/classes/class.ilNotification.php";
 
  396                    $lng->txt(
"poll_notification_unsubscribe")
 
  404                    $lng->txt(
"poll_notification_subscribe")
 
  409        if ($this->may_write) {
 
  416                $lng->txt(
"edit_content")
 
  423                $lng->txt(
"settings")
 
  444        return parent::getHTML();
 
  454        include_once(
"./Services/Notes/classes/class.ilNoteGUI.php");
 
  455        include_once(
"./Services/Object/classes/class.ilCommonActionDispatcherGUI.php");
 
  469        $jsCall = 
$comment->getListCommentsJSCall($ajaxHash, 
"ilPoll.redrawComments(" . $refId . 
");");
 
  482            echo 
"(" . $number . 
")";
 
  498        include_once(
"./Services/Notes/classes/class.ilNote.php");
 
  503        if (count($number) == 0) {
 
sprintf('%.4f', $callTime)
An exception for terminatinating execution or to throw for unit testing.
This class represents a block method of a block.
setRowTemplate($a_rowtemplatename, $a_rowtemplatedir="")
Set Row Template Name.
setData($a_data)
Set Data.
setTitle($a_title)
Set Title.
setBlockId($a_block_id=0)
Set Block Id.
addBlockCommand( $a_href, $a_text, $a_target="", $a_img="", $a_right_aligned=false, $a_checked=false, $a_html="")
Add Block Command.
getRefId()
Get Ref Id (only used if isRepositoryObject() is true).
static getInstanceByType($a_type, $a_id)
Get type instance.
static buildAjaxHash($a_node_type, $a_node_id, $a_obj_type, $a_obj_id, $a_sub_type=null, $a_sub_id=null)
Build ajax hash.
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false)
Format a date @access public.
static setUseRelativeDates($a_status)
set use relative dates
static useRelativeDates()
check if relative dates are used
@classDescription Date and time handling
static _countNotesAndComments($a_rep_obj_id, $a_sub_obj_id=null)
Get all notes related to a specific object.
static hasNotification($type, $user_id, $id)
Check notification status for object and user.
const SHOW_RESULTS_AS_PIECHART
static _lookupObjectId($a_ref_id)
lookup object id
BlockGUI class for polls.
executeCommand()
execute command
__construct()
Constructor.
getNumberOfCommentsForRedraw()
Returns comment count for JS Redraw.
static getScreenMode()
Get Screen Mode for current command.
getRepositoryObjectGUIName()
Get repository object GUI name.
static getBlockType()
Get block type.
getNumberOfComments($ref_id)
Get comment count.
setBlock($a_block)
Do most of the initialisation.
getHTML()
Get block HTML code.
static isRepositoryObject()
Is block of repository object?
commentJSCall()
Builds JavaScript Call to open CommentLayer via html link.
static getInstance()
Factory.
static sortArray( $array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
static signFile($path_to_file)