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 
24 include_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"]
70  : ilNewsItem::_lookupUserPDPeriod($ilUser->getId());
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");
74  $default_per = ilNewsItem::_lookupDefaultPDPeriod();
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 ?>
static _lookupLogin($a_user_id)
lookup login
ILIAS Setting Class.
static lookupTitle($a_page_id)
Checks whether a page with given title exists.
makeClickable($a_str)
Make clickable.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
const IL_CAL_DATETIME
$_SESSION["AccountId"]
This class represents a selection list property in a property form.
static _exists($a_id, $a_reference=false, $a_type=null)
checks if an object exists in object_data
$_GET["client_id"]
static _lookupUserPDPeriod($a_user_id)
addFilterItem($a_input_item, $a_optional=false)
Add filter item.
static _lookupTitle($a_id)
lookup object title
setIsDataTable($a_val)
Set is data table.
$url
Definition: shib_logout.php:72
static _getDirectory($a_mob_id)
get directory for files of media object (static)
Personal desktop news table.
fillRow($a_set)
Standard Version of Fill Row.
locator handling class
global $ilCtrl
Definition: ilias.php:18
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
static _isAnonymized($a_obj_id)
Class ilTable2GUI.
const NEWS_PUBLIC
if(!is_array($argv)) $options
static determineNewsContent($a_context_obj_type, $a_content, $a_is_lang_var)
Determine new content.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
static _lookupObjId($a_id)
static makeClickable($a_text, $detectGotoLinks=false)
makeClickable In Texten enthaltene URLs und Mail-Adressen klickbar machen
static _lookup($a_type, $a_setting, $a_user=0, $a_block_id=0)
Lookup setting from database.
static formatDate(ilDateTime $date)
Format a date public.
Date and time handling
$ilUser
Definition: imgupload.php:18
Class ilObjMediaObject.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
setRowTemplate($a_template, $a_template_dir="")
Set row template.
Create styles array
The data for the language used.
static _lookupType($a_id, $a_reference=false)
lookup object type
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
User interface for media player.
__construct($a_parent_obj, $a_parent_cmd="", $a_contexts, $a_selected_context)
global $lng
Definition: privfeed.php:17
const NEWS_AUDIO
setEnableHeader($a_enableheader)
Set Enable Header.
setEnableTitle($a_enabletitle)
Set Enable Title.
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.
static _lookupDefaultPDPeriod()