ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
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 {
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  {
83  $lng = $this->lng;
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");
93  $default_per = ilNewsItem::_lookupDefaultPDPeriod();
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  {
140  $lng = $this->lng;
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",
243  ilDatePresentation::formatDate(new ilDateTime($a_set["update_date"], IL_CAL_DATETIME))
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  ilUtil::getImagePath("icon_" . $obj_type . ".svg")
314  );
315  $this->tpl->parseCurrentBlock();
316 
317  $this->tpl->setVariable("HREF_TITLE", $url_target);
318 
319  // title
320  if ($a_set["content_is_lang_var"]) {
321  $this->tpl->setVariable("VAL_TITLE", $lng->txt($a_set["title"]));
322  } else {
323  $this->tpl->setVariable("VAL_TITLE", ilUtil::stripSlashes($a_set["title"])); // title
324  }
325 
326  // creation date
327  $this->tpl->setVariable(
328  "VAL_CREATION_DATE",
329  ilDatePresentation::formatDate(new ilDateTime($a_set["creation_date"], IL_CAL_DATETIME))
330  );
331  $this->tpl->setVariable("TXT_CREATED", $lng->txt("created"));
332 
333  $this->tpl->parseCurrentBlock();
334  }
335 
342  public function makeClickable($a_str)
343  {
344  // this fixes bug 8744. We assume that strings that contain < and >
345  // already contain html, we do not handle these
346  if (is_int(strpos($a_str, ">")) && is_int(strpos($a_str, "<"))) {
347  return $a_str;
348  }
349 
350  return ilUtil::makeClickable($a_str);
351  }
352 }
static _lookupLogin($a_user_id)
lookup login
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 _getThreadForPosting($a_pos_id)
Get thread id for posting.
global $DIC
Definition: saml.php:7
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)
__construct( $a_parent_obj, $a_parent_cmd="", $a_contexts, $a_selected_context)
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false)
Format a date public.
addFilterItem($a_input_item, $a_optional=false)
Add filter item.
static _lookupTitle($a_id)
lookup object title
setIsDataTable($a_val)
Set is data table.
user()
Definition: user.php:4
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
static determineNewsContent($a_context_obj_type, $a_content, $a_is_lang_var)
Determine new content.
static makeUrlTitle($a_par)
Set page parameter for Url Embedding.
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.
$post
Definition: post.php:34
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.
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.
const NEWS_AUDIO
setEnableHeader($a_enableheader)
Set Enable Header.
$url
setEnableTitle($a_enabletitle)
Set Enable Title.
static _lookupDefaultPDPeriod()
if(!isset($_REQUEST['ReturnTo'])) if(!isset($_REQUEST['AuthId'])) $options
Definition: as_login.php:20