ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilPollBlock.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4include_once("./Services/Block/classes/class.ilCustomBlock.php");
5
13{
14 protected $poll; // [ilObjPoll]
15 protected $answers; // [array]
16 protected $visible; // [bool]
17 protected $active; // [bool]
18
24 public function setRefId($a_id)
25 {
26 include_once "Modules/Poll/classes/class.ilObjPoll.php";
27 $this->poll = new ilObjPoll($a_id, true);
28 $this->answers = $this->poll->getAnswers();
29 }
30
36 public function getPoll()
37 {
38 return $this->poll;
39 }
40
47 public function hasAnyContent($a_user_id, $a_ref_id)
48 {
49 if(!sizeof($this->answers))
50 {
51 return false;
52 }
53
54 include_once "Modules/Poll/classes/class.ilObjPollAccess.php";
55 $this->active = ilObjPollAccess::_isActivated($a_ref_id);
56 if(!$this->active)
57 {
58 return false;
59 }
60
61 if(!$this->mayVote($a_user_id) &&
62 !$this->maySeeResults($a_user_id))
63 {
64 return false;
65 }
66
67 return true;
68 }
69
70 public function mayVote($a_user_id)
71 {
72 if(!$this->active)
73 {
74 return false;
75 }
76
77 if($a_user_id == ANONYMOUS_USER_ID)
78 {
79 return false;
80 }
81
82 if($this->poll->hasUserVoted($a_user_id))
83 {
84 return false;
85 }
86
87 if($this->poll->getVotingPeriod() &&
88 ($this->poll->getVotingPeriodBegin() > time() ||
89 $this->poll->getVotingPeriodEnd() < time()))
90 {
91 return false;
92 }
93
94 return true;
95 }
96
97 public function mayNotResultsYet()
98 {
99 if($this->poll->getViewResults() == ilObjPoll::VIEW_RESULTS_AFTER_PERIOD &&
100 $this->poll->getVotingPeriod() &&
101 $this->poll->getVotingPeriodEnd() > time())
102 {
103 return true;
104 }
105 return false;
106 }
107
108 public function maySeeResults($a_user_id)
109 {
110 if(!$this->active)
111 {
112 return false;
113 }
114
115 switch($this->poll->getViewResults())
116 {
118 return false;
119
121 // fallthrough
122
123 // #12023 - see mayNotResultsYet()
125 return true;
126
128 if($this->poll->hasUserVoted($a_user_id))
129 {
130 return true;
131 }
132 return false;
133 }
134 }
135
136 public function getMessage($a_user_id)
137 {
138 global $lng;
139
140 if(!sizeof($this->answers))
141 {
142 return $lng->txt("poll_block_message_no_answers");
143 }
144
145 if(!$this->active)
146 {
147 if(!$this->poll->isOnline())
148 {
149 return $lng->txt("poll_block_message_offline");
150 }
151 if($this->poll->getAccessBegin() > time())
152 {
153 $date = ilDatePresentation::formatDate(new ilDateTime($this->poll->getAccessBegin(), IL_CAL_UNIX));
154 return sprintf($lng->txt("poll_block_message_inactive"), $date);
155 }
156 }
157 }
158
164 public function showResultsAs()
165 {
166 return $this->poll->getShowResultsAs();
167 }
168
173 public function showComments()
174 {
175 return $this->poll->getShowComments();
176 }
177}
178
179?>
const IL_CAL_UNIX
This is the super class of all custom blocks.
static formatDate(ilDateTime $date)
Format a date @access public.
@classDescription Date and time handling
static _isActivated($a_ref_id)
Is activated?
Class ilObjPoll.
const VIEW_RESULTS_ALWAYS
const VIEW_RESULTS_AFTER_VOTE
const VIEW_RESULTS_AFTER_PERIOD
const VIEW_RESULTS_NEVER
Custom block for polls.
mayVote($a_user_id)
maySeeResults($a_user_id)
setRefId($a_id)
Set ref id (needed for poll access)
showResultsAs()
Show Results as (Barchart or Piechart)
hasAnyContent($a_user_id, $a_ref_id)
Check if user will see any content (vote/result)
showComments()
Are Comments enabled or disabled.
getPoll()
Get poll object.
getMessage($a_user_id)
global $lng
Definition: privfeed.php:40