ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
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{
36
37 function __construct($a_parent_obj, $a_parent_cmd = "", $a_contexts,
38 $a_selected_context)
39 {
40 global $ilCtrl, $lng;
41
42 parent::__construct($a_parent_obj, $a_parent_cmd);
43
44 $this->contexts = $a_contexts;
45 $this->selected_context = $a_selected_context;
46 $this->addColumn("");
47 //$this->addColumn($lng->txt("date"), "creation_date", "1");
48 //$this->addColumn($lng->txt("news_news_item_content"), "");
49 $this->setFormAction($ilCtrl->getFormAction($a_parent_obj));
50 $this->setRowTemplate("tpl.table_row_pd_news.html",
51 "Services/News");
52 $this->setDefaultOrderField("update_date");
53 $this->setDefaultOrderDirection("desc");
54 $this->setEnableTitle(false);
55 $this->setEnableHeader(false);
56 $this->setIsDataTable(false);
57 $this->initFilter();
58 }
59
63 function initFilter()
64 {
65 global $lng, $ilUser;
66
67 // period
68 $per = ($_SESSION["news_pd_news_per"] != "")
69 ? $_SESSION["news_pd_news_per"]
71 $news_set = new ilSetting("news");
72 $allow_shorter_periods = $news_set->get("allow_shorter_periods");
73 $allow_longer_periods = $news_set->get("allow_longer_periods");
75
76 $options = array(
77 2 => sprintf($lng->txt("news_period_x_days"), 2),
78 3 => sprintf($lng->txt("news_period_x_days"), 3),
79 5 => sprintf($lng->txt("news_period_x_days"), 5),
80 7 => $lng->txt("news_period_1_week"),
81 14 => sprintf($lng->txt("news_period_x_weeks"), 2),
82 30 => $lng->txt("news_period_1_month"),
83 60 => sprintf($lng->txt("news_period_x_months"), 2),
84 120 => sprintf($lng->txt("news_period_x_months"), 4),
85 180 => sprintf($lng->txt("news_period_x_months"), 6),
86 366 => $lng->txt("news_period_1_year"));
87
88 $unset = array();
89 foreach($options as $k => $opt)
90 {
91 if (!$allow_shorter_periods && ($k < $default_per)) $unset[$k] = $k;
92 if (!$allow_longer_periods && ($k > $default_per)) $unset[$k] = $k;
93 }
94 foreach($unset as $k)
95 {
96 unset($options[$k]);
97 }
98
99 include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
100 $si = new ilSelectInputGUI($this->lng->txt("news_time_period"), "news_per");
101 $si->setOptions($options);
102 $si->setValue($per);
103 $this->addFilterItem($si);
104
105 // related to...
106 $si = new ilSelectInputGUI($this->lng->txt("context"), "news_ref_id");
107 $si->setOptions($this->contexts);
108 $si->setValue($this->selected_context);
109 $this->addFilterItem($si);
110 }
111
112
117 protected function fillRow($a_set)
118 {
119 global $lng, $ilCtrl;
120
121 $news_set = new ilSetting("news");
122 $enable_internal_rss = $news_set->get("enable_rss_for_internal");
123
124 // context
125 $obj_id = ilObject::_lookupObjId($a_set["ref_id"]);
126 $obj_type = ilObject::_lookupType($obj_id);
127 $obj_title = ilObject::_lookupTitle($obj_id);
128
129 // user
130 if ($a_set["user_id"] > 0)
131 {
132 $this->tpl->setCurrentBlock("user_info");
133 if ($obj_type == "frm")
134 {
135 include_once("./Modules/Forum/classes/class.ilForumProperties.php");
136 if (ilForumProperties::_isAnonymized($a_set["context_obj_id"]))
137 {
138 if ($a_set["context_sub_obj_type"] == "pos" &&
139 $a_set["context_sub_obj_id"] > 0)
140 {
141 include_once("./Modules/Forum/classes/class.ilForumPost.php");
142 $post = new ilForumPost($a_set["context_sub_obj_id"]);
143 if ($post->getUserAlias() != "") $this->tpl->setVariable("VAL_AUTHOR", ilUtil::stripSlashes($post->getUserAlias()));
144 else $this->tpl->setVariable("VAL_AUTHOR", $lng->txt("forums_anonymous"));
145 }
146 else
147 {
148 $this->tpl->setVariable("VAL_AUTHOR", $lng->txt("forums_anonymous"));
149 }
150 }
151 else
152 {
153 if (ilObject::_exists($a_set["user_id"]))
154 {
155 $user_obj = new ilObjUser($a_set["user_id"]);
156 $this->tpl->setVariable("VAL_AUTHOR", $user_obj->getLogin());
157 }
158 }
159 }
160 else
161 {
162 if (ilObject::_exists($a_set["user_id"]))
163 {
164 $this->tpl->setVariable("VAL_AUTHOR", ilObjUser::_lookupLogin($a_set["user_id"]));
165 }
166 }
167 $this->tpl->setVariable("TXT_AUTHOR", $lng->txt("author"));
168 $this->tpl->parseCurrentBlock();
169 }
170
171 // media player
172 if ($a_set["content_type"] == NEWS_AUDIO &&
173 $a_set["mob_id"] > 0 && ilObject::_exists($a_set["mob_id"]))
174 {
175 include_once("./Services/MediaObjects/classes/class.ilObjMediaObject.php");
176 include_once("./Services/MediaObjects/classes/class.ilMediaPlayerGUI.php");
177 $mob = new ilObjMediaObject($a_set["mob_id"]);
178 $med = $mob->getMediaItem("Standard");
179 $mpl = new ilMediaPlayerGUI();
180 $mpl->setFile(ilObjMediaObject::_getDirectory($a_set["mob_id"])."/".
181 $med->getLocation());
182 $this->tpl->setCurrentBlock("player");
183 $this->tpl->setVariable("PLAYER",
184 $mpl->getMp3PlayerHtml());
185 $this->tpl->parseCurrentBlock();
186 }
187
188 // access
189 if ($enable_internal_rss)
190 {
191 $this->tpl->setCurrentBlock("access");
192 include_once("./Services/Block/classes/class.ilBlockSetting.php");
193 $this->tpl->setVariable("TXT_ACCESS", $lng->txt("news_news_item_visibility"));
194 if ($a_set["visibility"] == NEWS_PUBLIC ||
195 ($a_set["priority"] == 0 &&
196 ilBlockSetting::_lookup("news", "public_notifications",
197 0, $obj_id)))
198 {
199 $this->tpl->setVariable("VAL_ACCESS", $lng->txt("news_visibility_public"));
200 }
201 else
202 {
203 $this->tpl->setVariable("VAL_ACCESS", $lng->txt("news_visibility_users"));
204 }
205 $this->tpl->parseCurrentBlock();
206 }
207
208 // content
209 if ($a_set["content"] != "")
210 {
211 $this->tpl->setCurrentBlock("content");
212 $this->tpl->setVariable("VAL_CONTENT",
213 nl2br($this->makeClickable(
214 ilNewsItem::determineNewsContent($a_set["context_obj_type"], $a_set["content"], $a_set["content_text_is_lang_var"])
215 )));
216 $this->tpl->parseCurrentBlock();
217 }
218 if ($a_set["content_long"] != "")
219 {
220 $this->tpl->setCurrentBlock("long");
221 $this->tpl->setVariable("VAL_LONG_CONTENT", ilUtil::makeClickable($a_set["content_long"], true));
222 $this->tpl->parseCurrentBlock();
223 }
224 if ($a_set["update_date"] != $a_set["creation_date"]) // update date
225 {
226 $this->tpl->setCurrentBlock("ni_update");
227 $this->tpl->setVariable("TXT_LAST_UPDATE", $lng->txt("last_update"));
228 $this->tpl->setVariable("VAL_LAST_UPDATE",
229 ilDatePresentation::formatDate(new ilDateTime($a_set["update_date"],IL_CAL_DATETIME)));
230 $this->tpl->parseCurrentBlock();
231 }
232
233 // forum hack, not nice
234 $add = "";
235 if ($obj_type == "frm" && $a_set["context_sub_obj_type"] == "pos"
236 && $a_set["context_sub_obj_id"] > 0)
237 {
238 include_once("./Modules/Forum/classes/class.ilObjForumAccess.php");
239 $pos = $a_set["context_sub_obj_id"];
240 $thread = ilObjForumAccess::_getThreadForPosting($pos);
241 if ($thread > 0)
242 {
243 $add = "_".$thread."_".$pos;
244 }
245 }
246
247 // file hack, not nice
248 if ($obj_type == "file")
249 {
250 $ilCtrl->setParameterByClass("ilrepositorygui", "ref_id", $a_set["ref_id"]);
251 $url = $ilCtrl->getLinkTargetByClass("ilrepositorygui", "sendfile");
252 $ilCtrl->setParameterByClass("ilrepositorygui", "ref_id", $_GET["ref_id"]);
253
254 include_once "Services/UIComponent/Button/classes/class.ilLinkButton.php";
255 $button = ilLinkButton::getInstance();
256 $button->setUrl($url);
257 $button->setCaption("download");
258
259 $this->tpl->setCurrentBlock("download");
260 $this->tpl->setVariable("BUTTON_DOWNLOAD", $button->render());
261 $this->tpl->parseCurrentBlock();
262 }
263
264 // wiki hack, not nice
265 if ($obj_type == "wiki" && $a_set["context_sub_obj_type"] == "wpg"
266 && $a_set["context_sub_obj_id"] > 0)
267 {
268 include_once("./Modules/Wiki/classes/class.ilWikiPage.php");
269 $wptitle = ilWikiPage::lookupTitle($a_set["context_sub_obj_id"]);
270 if ($wptitle != "")
271 {
272 $add = "_".ilWikiUtil::makeUrlTitle($wptitle);
273 }
274 }
275
276
277 $url_target = "./goto.php?client_id=".rawurlencode(CLIENT_ID)."&target=".
278 $obj_type."_".$a_set["ref_id"].$add;
279
280 // lm page hack, not nice
281 if (in_array($obj_type, array("dbk", "lm")) && $a_set["context_sub_obj_type"] == "pg"
282 && $a_set["context_sub_obj_id"] > 0)
283 {
284 $url_target = "./goto.php?client_id=".rawurlencode(CLIENT_ID)."&target=".
285 "pg_".$a_set["context_sub_obj_id"]."_".$a_set["ref_id"];
286 }
287
288
289 $this->tpl->setCurrentBlock("context");
290 $cont_loc = new ilLocatorGUI();
291 $cont_loc->addContextItems($a_set["ref_id"], true);
292 $this->tpl->setVariable("CONTEXT_LOCATOR",
293 $cont_loc->getHTML());
294 $this->tpl->setVariable("HREF_CONTEXT_TITLE", $url_target);
295 $this->tpl->setVariable("CONTEXT_TITLE", $obj_title);
296 $this->tpl->setVariable("ALT_CONTEXT_TITLE",
297 $lng->txt("icon")." ".$lng->txt("obj_".$obj_type));
298 $this->tpl->setVariable("IMG_CONTEXT_TITLE",
299 ilUtil::getImagePath("icon_".$obj_type.".svg"));
300 $this->tpl->parseCurrentBlock();
301
302 $this->tpl->setVariable("HREF_TITLE", $url_target);
303
304 // title
305 if ($a_set["content_is_lang_var"])
306 {
307 $this->tpl->setVariable("VAL_TITLE", $lng->txt($a_set["title"]));
308 }
309 else
310 {
311 $this->tpl->setVariable("VAL_TITLE", ilUtil::stripSlashes($a_set["title"])); // title
312 }
313
314 // creation date
315 $this->tpl->setVariable("VAL_CREATION_DATE",
316 ilDatePresentation::formatDate(new ilDateTime($a_set["creation_date"],IL_CAL_DATETIME)));
317 $this->tpl->setVariable("TXT_CREATED", $lng->txt("created"));
318
319 $this->tpl->parseCurrentBlock();
320 }
321
328 function makeClickable($a_str)
329 {
330 // this fixes bug 8744. We assume that strings that contain < and >
331 // already contain html, we do not handle these
332 if (is_int(strpos($a_str, ">")) && is_int(strpos($a_str, "<")))
333 {
334 return $a_str;
335 }
336
337 return ilUtil::makeClickable($a_str);
338 }
339
340}
341?>
sprintf('%.4f', $callTime)
$_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)
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()
Class ilObjMediaObject.
static _getDirectory($a_mob_id)
get directory for files of media object (static)
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.
__construct($a_parent_obj, $a_parent_cmd="", $a_contexts, $a_selected_context)
fillRow($a_set)
Standard Version of Fill Row.
This class represents a selection list property in a property form.
ILIAS Setting Class.
Class ilTable2GUI.
setEnableHeader($a_enableheader)
Set Enable Header.
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.
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.
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 getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
static lookupTitle($a_page_id)
Checks whether a page with given title exists.
global $ilCtrl
Definition: ilias.php:18
global $lng
Definition: privfeed.php:17
$url
Definition: shib_logout.php:72
if(!is_array($argv)) $options
$ilUser
Definition: imgupload.php:18