ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilNewsTimelineItemGUI.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2014 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
13 {
17  protected $lng;
18 
22  protected $news_item;
23 
27  protected $obj_def;
28 
32  protected $user;
33 
37  protected $user_edit_all;
38 
44  protected $news_item_ref_id;
45 
50  protected $ref_id;
51 
55  protected $ctrl;
56 
62  protected function __construct(ilNewsItem $a_news_item, $a_news_ref_id)
63  {
64  global $DIC;
65 
66  $this->lng = $DIC->language();
67  $this->ctrl = $DIC->ctrl();
68  $this->setNewsItem($a_news_item);
69  $this->user = $DIC->user();
70  $this->obj_def = $DIC["objDefinition"];
71  $this->news_item_ref_id = $a_news_ref_id;
72 
73  $this->ref_id = (int) $_GET["ref_id"];
74  }
75 
82  public static function getInstance(ilNewsItem $a_news_item, $a_news_ref_id)
83  {
84  return new self($a_news_item, $a_news_ref_id);
85  }
86 
87 
93  public function setNewsItem(ilNewsItem $a_val)
94  {
95  $this->news_item = $a_val;
96  }
97 
103  public function getNewsItem()
104  {
105  return $this->news_item;
106  }
107 
113  public function setUserEditAll($a_val)
114  {
115  $this->user_edit_all = $a_val;
116  }
117 
123  public function getUserEditAll()
124  {
125  return $this->user_edit_all;
126  }
127 
131  public function getDateTime()
132  {
133  $i = $this->getNewsItem();
134  return new ilDateTime($i->getCreationDate(), IL_CAL_DATETIME);
135  }
136 
137 
141  public function render()
142  {
143  $i = $this->getNewsItem();
144  $tpl = new ilTemplate("tpl.timeline_item.html", true, true, "Services/News");
145 
146  include_once("./Services/News/classes/class.ilNewsRendererFactory.php");
147  $news_renderer = ilNewsRendererFactory::getRenderer($i->getContextObjType());
148  $news_renderer->setLanguage($this->lng->getLangKey());
149  $news_renderer->setNewsItem($i, $this->news_item_ref_id);
150 
151  $obj_id = $i->getContextObjId();
152 
153  // edited?
154  if ($i->getCreationDate() != $i->getUpdateDate()) {
155  $tpl->setCurrentBlock("edited");
156  $update_date = new ilDateTime($i->getUpdateDate(), IL_CAL_DATETIME);
157  $tpl->setVariable("TXT_EDITED", $this->lng->txt("cont_news_edited"));
158  if ($i->getUpdateUserId() > 0 && ($i->getUpdateUserId() != $i->getUserId())) {
159  include_once("./Services/User/classes/class.ilUserUtil.php");
160  $tpl->setVariable("TXT_USR_EDITED", ilUserUtil::getNamePresentation(
161  $i->getUpdateUserId(),
162  false,
163  true,
164  $this->ctrl->getLinkTargetByClass("ilnewstimelinegui")
165  ) . " - ");
166  }
167  include_once("./Services/Calendar/classes/class.ilDatePresentation.php");
168  $tpl->setVariable("TIME_EDITED", ilDatePresentation::formatDate($update_date));
169  $tpl->parseCurrentBlock();
170  }
171 
172 
173  // context object link
174  include_once("./Services/Link/classes/class.ilLink.php");
175  if ($this->news_item_ref_id > 0 && $this->ref_id != $this->news_item_ref_id) {
176  $tpl->setCurrentBlock("object");
177  $tpl->setVariable("OBJ_TITLE", ilObject::_lookupTitle($obj_id));
178  $tpl->setVariable("OBJ_IMG", ilObject::_getIcon($obj_id));
179  $tpl->setVariable("OBJ_HREF", $news_renderer->getObjectLink());
180  $tpl->parseCurrentBlock();
181  }
182 
183  // media
184  if ($i->getContentType() == NEWS_AUDIO &&
185  $i->getMobId() > 0 && ilObject::_exists($i->getMobId())) {
186  include_once("./Services/MediaObjects/classes/class.ilObjMediaObject.php");
187  include_once("./Services/MediaObjects/classes/class.ilMediaPlayerGUI.php");
188  $mob = new ilObjMediaObject($i->getMobId());
189  $med = $mob->getMediaItem("Standard");
190  $mpl = new ilMediaPlayerGUI("news_pl_" . $i->getMobId());
191  if (strcasecmp("Reference", $med->getLocationType()) == 0) {
192  $mpl->setFile($med->getLocation());
193  } else {
194  $mpl->setFile(ilObjMediaObject::_getURL($mob->getId()) . "/" . $med->getLocation());
195  }
196  $mpl->setDisplayHeight($med->getHeight());
197  //$mpl->setDisplayWidth("100%");
198  //$mpl->setDisplayHeight("320");
199  $tpl->setCurrentBlock("player");
200  $tpl->setVariable(
201  "PLAYER",
202  $mpl->getMp3PlayerHtml()
203  );
204  $tpl->parseCurrentBlock();
205  }
206 
207 
208  $tpl->setVariable("USER_IMAGE", ilObjUser::_getPersonalPicturePath($i->getUserId(), "xsmall"));
209  if (!$i->getContentIsLangVar()) {
210  $tpl->setVariable("TITLE", $i->getTitle());
211  } else {
212  $tpl->setVariable("TITLE", $this->lng->txt($i->getTitle()));
213  }
214 
215  // content
216  $tpl->setVariable("CONTENT", $news_renderer->getTimelineContent());
217 
218  include_once("./Services/User/classes/class.ilUserUtil.php");
219  $tpl->setVariable("TXT_USR", ilUserUtil::getNamePresentation(
220  $i->getUserId(),
221  false,
222  true,
223  $this->ctrl->getLinkTargetByClass("ilnewstimelinegui")
224  ));
225 
226  include_once("./Services/Calendar/classes/class.ilDatePresentation.php");
227  $tpl->setVariable("TIME", ilDatePresentation::formatDate($this->getDateTime()));
228 
229  // actions
230  include_once("Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php");
232  $list->setListTitle("");
233  $list->setId("news_tl_act_" . $i->getId());
234  //$list->setSelectionHeaderClass("small");
235  //$list->setItemLinkClass("xsmall");
236  //$list->setLinksMode("il_ContainerItemCommand2");
238  $list->setUseImages(false);
239 
240  if ($i->getPriority() == 1 && ($i->getUserId() == $this->user->getId() || $this->getUserEditAll())) {
241  $list->addItem(
242  $this->lng->txt("edit"),
243  "",
244  "",
245  "",
246  "",
247  "",
248  "",
249  false,
250  "il.News.edit(" . $i->getId() . ");"
251  );
252  $list->addItem(
253  $this->lng->txt("delete"),
254  "",
255  "",
256  "",
257  "",
258  "",
259  "",
260  false,
261  "il.News.delete(" . $i->getId() . ");"
262  );
263  }
264 
265  $news_renderer->addTimelineActions($list);
266 
267  $tpl->setVariable("ACTIONS", $list->getHTML());
268 
269 
270  return $tpl->get();
271  }
272 }
static _getIcon( $a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
Get icon for repository item.
Single news timeline item.
if(isset($_REQUEST['delete'])) $list
Definition: registry.php:41
getUserEditAll()
Get user can edit other users postings.
getDateTime()
Get datetime.ilDateTime timestamp
& getMediaItem($a_purpose)
get item for media purpose
const IL_CAL_DATETIME
__construct(ilNewsItem $a_news_item, $a_news_ref_id)
Constructor.
global $DIC
Definition: saml.php:7
static _exists($a_id, $a_reference=false, $a_type=null)
checks if an object exists in object_data
setFile($a_file)
Set File.
$_GET["client_id"]
$tpl
Definition: ilias.php:10
render()
Render item.string html
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false)
Format a date public.
static _lookupTitle($a_id)
lookup object title
static _getURL($a_mob_id)
get directory for files of media object (static)
user()
Definition: user.php:4
special template class to simplify handling of ITX/PEAR
Date and time handling
Class ilObjMediaObject.
Interface for timeline items.
setUserEditAll($a_val)
Set user can edit other users postings.
static getNamePresentation( $a_user_id, $a_user_image=false, $a_profile_link=false, $a_profile_back_link="", $a_force_first_lastname=false, $a_omit_login=false, $a_sortable=true, $a_return_data_array=false, $a_ctrl_path="ilpublicuserprofilegui")
Default behaviour is:
User interface class for advanced drop-down selection lists.
User interface for media player.
static getRenderer($a_context_obj_type)
Get renderer.
$i
Definition: disco.tpl.php:19
const NEWS_AUDIO
static getInstance(ilNewsItem $a_news_item, $a_news_ref_id)
Get instance.
setNewsItem(ilNewsItem $a_val)
Set news item.