ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
class.ilPDNewsTableGUI.php
Go to the documentation of this file.
1<?php
2/*
3 +-----------------------------------------------------------------------------+
4 | ILIAS open source |
5 +-----------------------------------------------------------------------------+
6 | Copyright (c) 1998-2006 ILIAS open source, University of Cologne |
7 | |
8 | This program is free software; you can redistribute it and/or |
9 | modify it under the terms of the GNU General Public License |
10 | as published by the Free Software Foundation; either version 2 |
11 | of the License, or (at your option) any later version. |
12 | |
13 | This program is distributed in the hope that it will be useful, |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 | GNU General Public License for more details. |
17 | |
18 | You should have received a copy of the GNU General Public License |
19 | along with this program; if not, write to the Free Software |
20 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21 +-----------------------------------------------------------------------------+
22*/
23
24include_once("Services/Table/classes/class.ilTable2GUI.php");
25
35{
39 protected $ctrl;
40
44 protected $user;
45
46
47 public function __construct(
48 $a_parent_obj,
49 $a_parent_cmd = "",
50 $a_contexts,
51 $a_selected_context
52 ) {
53 global $DIC;
54
55 $this->ctrl = $DIC->ctrl();
56 $this->lng = $DIC->language();
57 $this->user = $DIC->user();
58 $ilCtrl = $DIC->ctrl();
59
60 parent::__construct($a_parent_obj, $a_parent_cmd);
61
62 $this->contexts = $a_contexts;
63 $this->selected_context = $a_selected_context;
64 $this->addColumn("");
65 $this->setFormAction($ilCtrl->getFormAction($a_parent_obj));
66 $this->setRowTemplate(
67 "tpl.table_row_pd_news.html",
68 "Services/News"
69 );
70 $this->setDefaultOrderField("update_date");
71 $this->setDefaultOrderDirection("desc");
72 $this->setEnableTitle(false);
73 $this->setEnableHeader(false);
74 $this->setIsDataTable(false);
75 $this->initFilter();
76 }
77
81 public function initFilter()
82 {
85
86 // period
87 $per = ($_SESSION["news_pd_news_per"] != "")
88 ? $_SESSION["news_pd_news_per"]
90 $news_set = new ilSetting("news");
91 $allow_shorter_periods = $news_set->get("allow_shorter_periods");
92 $allow_longer_periods = $news_set->get("allow_longer_periods");
94
95 $options = array(
96 2 => sprintf($lng->txt("news_period_x_days"), 2),
97 3 => sprintf($lng->txt("news_period_x_days"), 3),
98 5 => sprintf($lng->txt("news_period_x_days"), 5),
99 7 => $lng->txt("news_period_1_week"),
100 14 => sprintf($lng->txt("news_period_x_weeks"), 2),
101 30 => $lng->txt("news_period_1_month"),
102 60 => sprintf($lng->txt("news_period_x_months"), 2),
103 120 => sprintf($lng->txt("news_period_x_months"), 4),
104 180 => sprintf($lng->txt("news_period_x_months"), 6),
105 366 => $lng->txt("news_period_1_year"));
106
107 $unset = array();
108 foreach ($options as $k => $opt) {
109 if (!$allow_shorter_periods && ($k < $default_per)) {
110 $unset[$k] = $k;
111 }
112 if (!$allow_longer_periods && ($k > $default_per)) {
113 $unset[$k] = $k;
114 }
115 }
116 foreach ($unset as $k) {
117 unset($options[$k]);
118 }
119
120 include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
121 $si = new ilSelectInputGUI($this->lng->txt("news_time_period"), "news_per");
122 $si->setOptions($options);
123 $si->setValue($per);
124 $this->addFilterItem($si);
125
126 // related to...
127 $si = new ilSelectInputGUI($this->lng->txt("context"), "news_ref_id");
128 $si->setOptions($this->contexts);
129 $si->setValue($this->selected_context);
130 $this->addFilterItem($si);
131 }
132
133
138 protected function fillRow($a_set)
139 {
142
143 $news_set = new ilSetting("news");
144 $enable_internal_rss = $news_set->get("enable_rss_for_internal");
145
146 // context
147 $obj_id = ilObject::_lookupObjId($a_set["ref_id"]);
148 $obj_type = ilObject::_lookupType($obj_id);
149 $obj_title = ilObject::_lookupTitle($obj_id);
150
151 // user
152 if ($a_set["user_id"] > 0) {
153 $this->tpl->setCurrentBlock("user_info");
154 if ($obj_type == "frm") {
155 include_once("./Modules/Forum/classes/class.ilForumProperties.php");
156 if (ilForumProperties::_isAnonymized($a_set["context_obj_id"])) {
157 if ($a_set["context_sub_obj_type"] == "pos" &&
158 $a_set["context_sub_obj_id"] > 0) {
159 include_once("./Modules/Forum/classes/class.ilForumPost.php");
160 $post = new ilForumPost($a_set["context_sub_obj_id"]);
161 if ($post->getUserAlias() != "") {
162 $this->tpl->setVariable("VAL_AUTHOR", ilUtil::stripSlashes($post->getUserAlias()));
163 } else {
164 $this->tpl->setVariable("VAL_AUTHOR", $lng->txt("forums_anonymous"));
165 }
166 } else {
167 $this->tpl->setVariable("VAL_AUTHOR", $lng->txt("forums_anonymous"));
168 }
169 } else {
170 if (ilObject::_exists($a_set["user_id"])) {
171 $user_obj = new ilObjUser($a_set["user_id"]);
172 $this->tpl->setVariable("VAL_AUTHOR", $user_obj->getLogin());
173 }
174 }
175 } else {
176 if (ilObject::_exists($a_set["user_id"])) {
177 $this->tpl->setVariable("VAL_AUTHOR", ilObjUser::_lookupLogin($a_set["user_id"]));
178 }
179 }
180 $this->tpl->setVariable("TXT_AUTHOR", $lng->txt("author"));
181 $this->tpl->parseCurrentBlock();
182 }
183
184 // media player
185 if ($a_set["content_type"] == NEWS_AUDIO &&
186 $a_set["mob_id"] > 0 && ilObject::_exists($a_set["mob_id"])) {
187 include_once("./Services/MediaObjects/classes/class.ilObjMediaObject.php");
188 include_once("./Services/MediaObjects/classes/class.ilMediaPlayerGUI.php");
189 $mob = new ilObjMediaObject($a_set["mob_id"]);
190 $med = $mob->getMediaItem("Standard");
191 $mpl = new ilMediaPlayerGUI();
192 $mpl->setFile(ilObjMediaObject::_getDirectory($a_set["mob_id"]) . "/" .
193 $med->getLocation());
194 $this->tpl->setCurrentBlock("player");
195 $this->tpl->setVariable(
196 "PLAYER",
197 $mpl->getMp3PlayerHtml()
198 );
199 $this->tpl->parseCurrentBlock();
200 }
201
202 // access
203 if ($enable_internal_rss) {
204 $this->tpl->setCurrentBlock("access");
205 include_once("./Services/Block/classes/class.ilBlockSetting.php");
206 $this->tpl->setVariable("TXT_ACCESS", $lng->txt("news_news_item_visibility"));
207 if ($a_set["visibility"] == NEWS_PUBLIC ||
208 ($a_set["priority"] == 0 &&
210 "news",
211 "public_notifications",
212 0,
213 $obj_id
214 ))) {
215 $this->tpl->setVariable("VAL_ACCESS", $lng->txt("news_visibility_public"));
216 } else {
217 $this->tpl->setVariable("VAL_ACCESS", $lng->txt("news_visibility_users"));
218 }
219 $this->tpl->parseCurrentBlock();
220 }
221
222 // content
223 if ($a_set["content"] != "") {
224 $this->tpl->setCurrentBlock("content");
225 $this->tpl->setVariable(
226 "VAL_CONTENT",
227 nl2br($this->makeClickable(
228 ilNewsItem::determineNewsContent($a_set["context_obj_type"], $a_set["content"], $a_set["content_text_is_lang_var"])
229 ))
230 );
231 $this->tpl->parseCurrentBlock();
232 }
233 if ($a_set["content_long"] != "") {
234 $this->tpl->setCurrentBlock("long");
235 $this->tpl->setVariable("VAL_LONG_CONTENT", ilUtil::makeClickable($a_set["content_long"], true));
236 $this->tpl->parseCurrentBlock();
237 }
238 if ($a_set["update_date"] != $a_set["creation_date"]) { // update date
239 $this->tpl->setCurrentBlock("ni_update");
240 $this->tpl->setVariable("TXT_LAST_UPDATE", $lng->txt("last_update"));
241 $this->tpl->setVariable(
242 "VAL_LAST_UPDATE",
244 );
245 $this->tpl->parseCurrentBlock();
246 }
247
248 // forum hack, not nice
249 $add = "";
250 if ($obj_type == "frm" && $a_set["context_sub_obj_type"] == "pos"
251 && $a_set["context_sub_obj_id"] > 0) {
252 include_once("./Modules/Forum/classes/class.ilObjForumAccess.php");
253 $pos = $a_set["context_sub_obj_id"];
255 if ($thread > 0) {
256 $add = "_" . $thread . "_" . $pos;
257 }
258 }
259
260 // file hack, not nice
261 if ($obj_type == "file") {
262 $ilCtrl->setParameterByClass("ilrepositorygui", "ref_id", $a_set["ref_id"]);
263 $url = $ilCtrl->getLinkTargetByClass("ilrepositorygui", "sendfile");
264 $ilCtrl->setParameterByClass("ilrepositorygui", "ref_id", $_GET["ref_id"]);
265
266 include_once "Services/UIComponent/Button/classes/class.ilLinkButton.php";
267 $button = ilLinkButton::getInstance();
268 $button->setUrl($url);
269 $button->setCaption("download");
270
271 $this->tpl->setCurrentBlock("download");
272 $this->tpl->setVariable("BUTTON_DOWNLOAD", $button->render());
273 $this->tpl->parseCurrentBlock();
274 }
275
276 // wiki hack, not nice
277 if ($obj_type == "wiki" && $a_set["context_sub_obj_type"] == "wpg"
278 && $a_set["context_sub_obj_id"] > 0) {
279 include_once("./Modules/Wiki/classes/class.ilWikiPage.php");
280 $wptitle = ilWikiPage::lookupTitle($a_set["context_sub_obj_id"]);
281 if ($wptitle != "") {
282 $add = "_" . ilWikiUtil::makeUrlTitle($wptitle);
283 }
284 }
285
286
287 $url_target = "./goto.php?client_id=" . rawurlencode(CLIENT_ID) . "&target=" .
288 $obj_type . "_" . $a_set["ref_id"] . $add;
289
290 // lm page hack, not nice
291 if (in_array($obj_type, array("dbk", "lm")) && $a_set["context_sub_obj_type"] == "pg"
292 && $a_set["context_sub_obj_id"] > 0) {
293 $url_target = "./goto.php?client_id=" . rawurlencode(CLIENT_ID) . "&target=" .
294 "pg_" . $a_set["context_sub_obj_id"] . "_" . $a_set["ref_id"];
295 }
296
297
298 $this->tpl->setCurrentBlock("context");
299 $cont_loc = new ilLocatorGUI();
300 $cont_loc->addContextItems($a_set["ref_id"], true);
301 $this->tpl->setVariable(
302 "CONTEXT_LOCATOR",
303 $cont_loc->getHTML()
304 );
305 $this->tpl->setVariable("HREF_CONTEXT_TITLE", $url_target);
306 $this->tpl->setVariable("CONTEXT_TITLE", $obj_title);
307 $this->tpl->setVariable(
308 "ALT_CONTEXT_TITLE",
309 $lng->txt("icon") . " " . $lng->txt("obj_" . $obj_type)
310 );
311 $this->tpl->setVariable(
312 "IMG_CONTEXT_TITLE",
313 ilObject::_getIcon($a_set["context_obj_id"])
314 );
315 $this->tpl->parseCurrentBlock();
316
317 $this->tpl->setVariable("HREF_TITLE", $url_target);
318
319 // title
320 $this->tpl->setVariable(
321 "VAL_TITLE",
322 ilNewsItem::determineNewsTitle($a_set["context_obj_type"], $a_set["title"], $a_set["content_is_lang_var"])
323 );
324
325 // creation date
326 $this->tpl->setVariable(
327 "VAL_CREATION_DATE",
328 ilDatePresentation::formatDate(new ilDateTime($a_set["creation_date"], IL_CAL_DATETIME))
329 );
330 $this->tpl->setVariable("TXT_CREATED", $lng->txt("created"));
331
332 $this->tpl->parseCurrentBlock();
333 }
334
341 public function makeClickable($a_str)
342 {
343 // this fixes bug 8744. We assume that strings that contain < and >
344 // already contain html, we do not handle these
345 if (is_int(strpos($a_str, ">")) && is_int(strpos($a_str, "<"))) {
346 return $a_str;
347 }
348
349 return ilUtil::makeClickable($a_str);
350 }
351}
user()
Definition: user.php:4
$_GET["client_id"]
$_SESSION["AccountId"]
An exception for terminatinating execution or to throw for unit testing.
const IL_CAL_DATETIME
const NEWS_AUDIO
const NEWS_PUBLIC
static _lookup($a_type, $a_setting, $a_user=0, $a_block_id=0)
Lookup setting from database.
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date @access public.
@classDescription Date and time handling
static _isAnonymized($a_obj_id)
static getInstance()
Factory.
locator handling class
User interface for media player.
static determineNewsContent($a_context_obj_type, $a_content, $a_is_lang_var)
Determine new content.
static _lookupUserPDPeriod($a_user_id)
static _lookupDefaultPDPeriod()
static determineNewsTitle( $a_context_obj_type, $a_title, $a_content_is_lang_var, $a_agg_ref_id=0, $a_aggregation="")
Determine title for news item entry.
static _getThreadForPosting($a_pos_id)
Get thread id for posting.
Class ilObjMediaObject.
static _getDirectory($a_mob_id)
Get absolute directory.
static _lookupLogin($a_user_id)
lookup login
static _lookupObjId($a_id)
static _lookupTitle($a_id)
lookup object title
static _exists($a_id, $a_reference=false, $a_type=null)
checks if an object exists in object_data@access public
static _lookupType($a_id, $a_reference=false)
lookup object type
Personal desktop news table.
makeClickable($a_str)
Make clickable.
fillRow($a_set)
Standard Version of Fill Row.
__construct( $a_parent_obj, $a_parent_cmd="", $a_contexts, $a_selected_context)
This class represents a selection list property in a property form.
ILIAS Setting Class.
Class ilTable2GUI.
setEnableHeader($a_enableheader)
Set Enable Header.
setIsDataTable($a_val)
Set is data table.
setEnableTitle($a_enabletitle)
Set Enable Title.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
addFilterItem($a_input_item, $a_optional=false)
Add filter item.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
addColumn( $a_text, $a_sort_field="", $a_width="", $a_is_checkbox_action_column=false, $a_class="", $a_tooltip="", $a_tooltip_with_html=false)
Add a column to the header.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
static makeClickable($a_text, $detectGotoLinks=false)
makeClickable In Texten enthaltene URLs und Mail-Adressen klickbar machen
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
static lookupTitle($a_page_id)
Checks whether a page with given title exists.
static makeUrlTitle($a_par)
Set page parameter for Url Embedding.
global $ilCtrl
Definition: ilias.php:18
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
$url
$ilUser
Definition: imgupload.php:18
$DIC
Definition: xapitoken.php:46