ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
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 ilPDNewsTableGUI($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 $user_obj = new ilObjUser($a_set["user_id"]);
165 $this->tpl->setVariable("VAL_AUTHOR", $user_obj->getLogin());
166 }
167 }
168 $this->tpl->setVariable("TXT_AUTHOR", $lng->txt("author"));
169 $this->tpl->parseCurrentBlock();
170 }
171
172 // media player
173 if ($a_set["content_type"] == NEWS_AUDIO &&
174 $a_set["mob_id"] > 0 && ilObject::_exists($a_set["mob_id"]))
175 {
176 include_once("./Services/MediaObjects/classes/class.ilObjMediaObject.php");
177 include_once("./Services/MediaObjects/classes/class.ilMediaPlayerGUI.php");
178 $mob = new ilObjMediaObject($a_set["mob_id"]);
179 $med = $mob->getMediaItem("Standard");
180 $mpl = new ilMediaPlayerGUI();
181 $mpl->setFile(ilObjMediaObject::_getDirectory($a_set["mob_id"])."/".
182 $med->getLocation());
183 $this->tpl->setCurrentBlock("player");
184 $this->tpl->setVariable("PLAYER",
185 $mpl->getMp3PlayerHtml());
186 $this->tpl->parseCurrentBlock();
187 }
188
189 // access
190 if ($enable_internal_rss)
191 {
192 $this->tpl->setCurrentBlock("access");
193 include_once("./Services/Block/classes/class.ilBlockSetting.php");
194 $this->tpl->setVariable("TXT_ACCESS", $lng->txt("news_news_item_visibility"));
195 if ($a_set["visibility"] == NEWS_PUBLIC ||
196 ($a_set["priority"] == 0 &&
197 ilBlockSetting::_lookup("news", "public_notifications",
198 0, $obj_id)))
199 {
200 $this->tpl->setVariable("VAL_ACCESS", $lng->txt("news_visibility_public"));
201 }
202 else
203 {
204 $this->tpl->setVariable("VAL_ACCESS", $lng->txt("news_visibility_users"));
205 }
206 $this->tpl->parseCurrentBlock();
207 }
208
209 // content
210 if ($a_set["content"] != "")
211 {
212 $this->tpl->setCurrentBlock("content");
213 $this->tpl->setVariable("VAL_CONTENT",
214 nl2br($this->makeClickable(
215 ilNewsItem::determineNewsContent($a_set["context_obj_type"], $a_set["content"], $a_set["content_text_is_lang_var"])
216 )));
217 $this->tpl->parseCurrentBlock();
218 }
219 if ($a_set["content_long"] != "")
220 {
221 $this->tpl->setCurrentBlock("long");
222 $this->tpl->setVariable("VAL_LONG_CONTENT", ilUtil::makeClickable($a_set["content_long"], true));
223 $this->tpl->parseCurrentBlock();
224 }
225 if ($a_set["update_date"] != $a_set["creation_date"]) // update date
226 {
227 $this->tpl->setCurrentBlock("ni_update");
228 $this->tpl->setVariable("TXT_LAST_UPDATE", $lng->txt("last_update"));
229 $this->tpl->setVariable("VAL_LAST_UPDATE",
230 ilDatePresentation::formatDate(new ilDateTime($a_set["update_date"],IL_CAL_DATETIME)));
231 $this->tpl->parseCurrentBlock();
232 }
233
234 // forum hack, not nice
235 $add = "";
236 if ($obj_type == "frm" && $a_set["context_sub_obj_type"] == "pos"
237 && $a_set["context_sub_obj_id"] > 0)
238 {
239 include_once("./Modules/Forum/classes/class.ilObjForumAccess.php");
240 $pos = $a_set["context_sub_obj_id"];
241 $thread = ilObjForumAccess::_getThreadForPosting($pos);
242 if ($thread > 0)
243 {
244 $add = "_".$thread."_".$pos;
245 }
246 }
247
248 // file hack, not nice
249 if ($obj_type == "file")
250 {
251 $ilCtrl->setParameterByClass("ilrepositorygui", "ref_id", $a_set["ref_id"]);
252 $url = $ilCtrl->getLinkTargetByClass("ilrepositorygui", "sendfile");
253 $ilCtrl->setParameterByClass("ilrepositorygui", "ref_id", $_GET["ref_id"]);
254
255 include_once "Services/UIComponent/Button/classes/class.ilLinkButton.php";
256 $button = ilLinkButton::getInstance();
257 $button->setUrl($url);
258 $button->setCaption("download");
259
260 $this->tpl->setCurrentBlock("download");
261 $this->tpl->setVariable("BUTTON_DOWNLOAD", $button->render());
262 $this->tpl->parseCurrentBlock();
263 }
264
265 // wiki hack, not nice
266 if ($obj_type == "wiki" && $a_set["context_sub_obj_type"] == "wpg"
267 && $a_set["context_sub_obj_id"] > 0)
268 {
269 include_once("./Modules/Wiki/classes/class.ilWikiPage.php");
270 $wptitle = ilWikiPage::lookupTitle($a_set["context_sub_obj_id"]);
271 if ($wptitle != "")
272 {
273 $add = "_".ilWikiUtil::makeUrlTitle($wptitle);
274 }
275 }
276
277
278 $url_target = "./goto.php?client_id=".rawurlencode(CLIENT_ID)."&target=".
279 $obj_type."_".$a_set["ref_id"].$add;
280
281 // lm page hack, not nice
282 if (in_array($obj_type, array("dbk", "lm")) && $a_set["context_sub_obj_type"] == "pg"
283 && $a_set["context_sub_obj_id"] > 0)
284 {
285 $url_target = "./goto.php?client_id=".rawurlencode(CLIENT_ID)."&target=".
286 "pg_".$a_set["context_sub_obj_id"]."_".$a_set["ref_id"];
287 }
288
289
290 $this->tpl->setCurrentBlock("context");
291 $cont_loc = new ilLocatorGUI();
292 $cont_loc->addContextItems($a_set["ref_id"], true);
293 $this->tpl->setVariable("CONTEXT_LOCATOR",
294 $cont_loc->getHTML());
295 $this->tpl->setVariable("HREF_CONTEXT_TITLE", $url_target);
296 $this->tpl->setVariable("CONTEXT_TITLE", $obj_title);
297 $this->tpl->setVariable("ALT_CONTEXT_TITLE",
298 $lng->txt("icon")." ".$lng->txt("obj_".$obj_type));
299 $this->tpl->setVariable("IMG_CONTEXT_TITLE",
300 ilUtil::getImagePath("icon_".$obj_type.".svg"));
301 $this->tpl->parseCurrentBlock();
302
303 $this->tpl->setVariable("HREF_TITLE", $url_target);
304
305 // title
306 if ($a_set["content_is_lang_var"])
307 {
308 $this->tpl->setVariable("VAL_TITLE", $lng->txt($a_set["title"]));
309 }
310 else
311 {
312 $this->tpl->setVariable("VAL_TITLE", ilUtil::stripSlashes($a_set["title"])); // title
313 }
314
315 // creation date
316 $this->tpl->setVariable("VAL_CREATION_DATE",
317 ilDatePresentation::formatDate(new ilDateTime($a_set["creation_date"],IL_CAL_DATETIME)));
318 $this->tpl->setVariable("TXT_CREATED", $lng->txt("created"));
319
320 $this->tpl->parseCurrentBlock();
321 }
322
329 function makeClickable($a_str)
330 {
331 // this fixes bug 8744. We assume that strings that contain < and >
332 // already contain html, we do not handle these
333 if (is_int(strpos($a_str, ">")) && is_int(strpos($a_str, "<")))
334 {
335 return $a_str;
336 }
337
338 return ilUtil::makeClickable($a_str);
339 }
340
341}
342?>
$_GET["client_id"]
$_SESSION["AccountId"]
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.
_lookupUserPDPeriod($a_user_id)
Class ilObjMediaObject.
_getDirectory($a_mob_id)
get directory for files of media object (static)
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.
ilPDNewsTableGUI($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.
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:40
$url
Definition: shib_logout.php:72
if(!is_array($argv)) $options
global $ilUser
Definition: imgupload.php:15