These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | /* |
||
3 | * You may not change or alter any portion of this comment or credits |
||
4 | * of supporting developers from this source code or any supporting source code |
||
5 | * which is considered copyrighted (c) material of the original comment or credit authors. |
||
6 | * |
||
7 | * This program is distributed in the hope that it will be useful, |
||
8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
||
9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
||
10 | */ |
||
11 | |||
12 | /** |
||
13 | * @copyright {@link https://xoops.org/ XOOPS Project} |
||
14 | * @license {@link http://www.gnu.org/licenses/gpl-2.0.html GNU GPL 2 or later} |
||
15 | * @package |
||
16 | * @since |
||
17 | * @author XOOPS Development Team |
||
18 | */ |
||
19 | |||
20 | /** |
||
21 | * Article's page |
||
22 | * |
||
23 | * This page is used to see an article (or story) and is mainly called from |
||
24 | * the module's index page. |
||
25 | * |
||
26 | * If no story Id has been placed on the URL or if the story is not yet published |
||
27 | * then the page will redirect user to the module's index. |
||
28 | * If the user does not have the permissions to see the article, he is also redirected |
||
29 | * to the module's index page but with a error message saying : |
||
30 | * "Sorry, you don't have the permission to access this area" |
||
31 | * |
||
32 | * Each time a page is seen, and only if we are on the first page, its counter of hits is |
||
33 | * updated |
||
34 | * |
||
35 | * Each file(s) attached to the article is visible at the bottom of the article and can |
||
36 | * be downloaded |
||
37 | * |
||
38 | * Notes : |
||
39 | * - To create more than one page in your story, use the tag [pagebreak] |
||
40 | * - If you are a module's admin, you have the possibility to see two links at the bottom |
||
41 | * of the article, "Edit & Delete" |
||
42 | * |
||
43 | * @package News |
||
44 | * @author Xoops Modules Dev Team |
||
45 | * @copyright (c) XOOPS Project (https://xoops.org) |
||
46 | * |
||
47 | * Parameters received by this page : |
||
48 | * |
||
49 | * @param int storyid Id of the story we want to see |
||
50 | * @param int page page's number (in the case where there are more than one page) |
||
51 | * |
||
52 | * @page_title Article's title - Topic's title - Module's name |
||
53 | * |
||
54 | * @template_name news_article.html wich will call news_item.html |
||
55 | * |
||
56 | * Template's variables : |
||
57 | * @template_var string pagenav some links to navigate thru pages |
||
58 | * @template_var array story Contains all the information about the story |
||
59 | * Structure : |
||
60 | * @template_var int id Story's ID |
||
61 | * @template_var string posttime Story's date of publication |
||
62 | * @template_var string title A link to go and see all the articles in the same topic and the story's title |
||
63 | * @template_var string news_title Just the news title |
||
64 | * @template_var string topic_title Just the topic's title |
||
65 | * @template_var string text Defined as "The scoop" |
||
66 | * @template_var string poster A link to see the author's profil and his name or "Anonymous" |
||
67 | * @template_var int posterid Author's uid (or 0 if it's an anonymous or a user wich does not exist any more) |
||
68 | * @template_var string morelink Never used ???? May be it could be deleted |
||
69 | * @template_var string adminlink A link to Edit or Delete the story or a blank string if you are not the module's admin |
||
70 | * @template_var string topicid News topic's Id |
||
71 | * @template_var string topic_color Topic's color |
||
72 | * @template_var string imglink A link to go and see the topic of the story with the topic's picture (if it exists) |
||
73 | * @template_var string align Topic's image alignement |
||
74 | * @template_var int hits Story's counter of visits |
||
75 | * @template_var string mail_link A link (with a mailto) to email the story's URL to someone |
||
76 | * @template_var string lang_printerpage Used in the link and picture to have a "printable version" (fixed text) |
||
77 | * @template_var string lang_on Fixed text "On" ("published on") |
||
78 | * @template_var string lang_postedby Fixed text "Posted by" |
||
79 | * @template_var string lang_reads Fixed text "Reads" |
||
80 | * @template_var string news_by_the_same_author_link According the the module's option named "newsbythisauthor", it contains a link to see all the article's stories |
||
81 | * @template_var int summary_count Number of stories really visibles in the summary table |
||
82 | * @template_var boolean showsummary According to the module's option named "showsummarytable", this contains "True" of "False" |
||
83 | * @template_var array summary Contains the required information to create a summary table at the bottom of the article. Note, we use the module's option "storyhome" to determine the maximum number of stories visibles in this summary table |
||
84 | * Structure : |
||
85 | * @template_var int story_id Story's ID |
||
86 | * @template_var string story_title Story's title |
||
87 | * @template_var int story_hits Counter of hits |
||
88 | * @template_var string story_published Story's date of creation |
||
89 | * @template_var string lang_attached_files Fixed text "Attached Files:" |
||
90 | * @template_var int attached_files_count Number of files attached to the story |
||
91 | * @template_var array attached_files Contains the list of all the files attached to the story |
||
92 | * Structure : |
||
93 | * @template_var int file_id File's ID |
||
94 | * @template_var string visitlink Link to download the file |
||
95 | * @template_var string file_realname Original filename (not the real one use to store the file but the one it have when it was on the user hard disk) |
||
96 | * @template_var string file_attacheddate Date to wich the file was attached to the story (in general that's equal to the article's creation date) |
||
97 | * @template_var string file_mimetype File's mime type |
||
98 | * @template_var string file_downloadname Real name of the file on the webserver's disk (changed by the module) |
||
99 | * @template_var boolean nav_links According to the module's option named "showprevnextlink" it contains "True" or "False" to know if we have to show two links to go to the previous and next article |
||
100 | * @template_var int previous_story_id Id of the previous story (according to the published date and to the perms) |
||
101 | * @template_var int next_story_id Id of the next story (according to the published date and to the perms) |
||
102 | * @template_var string previous_story_title Title of the previous story |
||
103 | * @template_var string next_story_title Title of the next story |
||
104 | * @template_var string lang_previous_story Fixed text "Previous article" |
||
105 | * @template_var string lang_next_story Fixed text "Next article" |
||
106 | * @template_var string lang_other_story Fixed text "Other articles" |
||
107 | * @template_var boolean rates To know if rating is enable or not |
||
108 | * @template_var string lang_ratingc Fixed text "Rating: " |
||
109 | * @template_var string lang_ratethisnews Fixed text "Rate this News" |
||
110 | * @template_var float rating Article's rating |
||
111 | * @template_var string votes "1 vote" or "X votes" |
||
112 | * @template_var string topic_path A path from the root to the current topic (of the current news) |
||
113 | */ |
||
114 | include __DIR__ . '/../../mainfile.php'; |
||
115 | require_once XOOPS_ROOT_PATH . '/modules/news/class/class.newsstory.php'; |
||
116 | require_once XOOPS_ROOT_PATH . '/modules/news/class/class.sfiles.php'; |
||
117 | require_once XOOPS_ROOT_PATH . '/modules/news/class/tree.php'; |
||
118 | require_once XOOPS_ROOT_PATH . '/modules/news/class/utility.php'; |
||
119 | require_once XOOPS_ROOT_PATH . '/modules/news/class/class.newstopic.php'; |
||
120 | require_once XOOPS_ROOT_PATH . '/modules/news/class/keyhighlighter.class.php'; |
||
121 | require_once XOOPS_ROOT_PATH . '/modules/news/config.php'; |
||
122 | |||
123 | $storyid = isset($_GET['storyid']) ? (int)$_GET['storyid'] : 0; |
||
124 | |||
125 | if (empty($storyid)) { |
||
126 | redirect_header(XOOPS_URL . '/modules/news/index.php', 2, _NW_NOSTORY); |
||
127 | } |
||
128 | |||
129 | $myts = MyTextSanitizer::getInstance(); |
||
130 | |||
131 | // Not yet published |
||
132 | $article = new NewsStory($storyid); |
||
133 | View Code Duplication | if (0 == $article->published() || $article->published() > time()) { |
|
134 | redirect_header(XOOPS_URL . '/modules/news/index.php', 2, _NW_NOTYETSTORY); |
||
135 | } |
||
136 | // Expired |
||
137 | if (0 != $article->expired() && $article->expired() < time()) { |
||
138 | redirect_header(XOOPS_URL . '/modules/news/index.php', 2, _NW_NOSTORY); |
||
139 | } |
||
140 | |||
141 | $gpermHandler = xoops_getHandler('groupperm'); |
||
142 | if (is_object($xoopsUser)) { |
||
143 | $groups = $xoopsUser->getGroups(); |
||
144 | } else { |
||
145 | $groups = XOOPS_GROUP_ANONYMOUS; |
||
146 | } |
||
147 | if (!$gpermHandler->checkRight('news_view', $article->topicid(), $groups, $xoopsModule->getVar('mid'))) { |
||
148 | redirect_header(XOOPS_URL . '/modules/news/index.php', 3, _NOPERM); |
||
149 | } |
||
150 | |||
151 | $storypage = isset($_GET['page']) ? (int)$_GET['page'] : 0; |
||
152 | $dateformat = NewsUtility::getModuleOption('dateformat'); |
||
153 | $hcontent = ''; |
||
154 | |||
155 | /** |
||
156 | * update counter only when viewing top page and when you are not the author or an admin |
||
157 | */ |
||
158 | if (empty($_GET['com_id']) && 0 == $storypage) { |
||
159 | if (is_object($xoopsUser)) { |
||
160 | if (($xoopsUser->getVar('uid') == $article->uid()) || NewsUtility::isAdminGroup()) { |
||
161 | // nothing ! ;-) |
||
162 | } else { |
||
163 | $article->updateCounter(); |
||
164 | } |
||
165 | } else { |
||
166 | $article->updateCounter(); |
||
167 | } |
||
168 | } |
||
169 | $GLOBALS['xoopsOption']['template_main'] = 'news_article.tpl'; |
||
170 | require_once XOOPS_ROOT_PATH . '/header.php'; |
||
171 | |||
172 | $story['id'] = $storyid; |
||
173 | $story['posttime'] = formatTimestamp($article->published(), $dateformat); |
||
174 | $story['news_title'] = $article->title(); |
||
175 | $story['title'] = $article->textlink() . ' : ' . $article->title(); |
||
176 | $story['subtitle'] = $article->subtitle(); |
||
177 | $story['topic_title'] = $article->textlink(); |
||
178 | |||
179 | $story['text'] = $article->hometext(); |
||
180 | $bodytext = $article->bodytext(); |
||
181 | |||
182 | if ('' !== xoops_trim($bodytext)) { |
||
183 | $articletext = []; |
||
184 | if (NewsUtility::getModuleOption('enhanced_pagenav')) { |
||
185 | $articletext = preg_split('/(\[pagebreak:|\[pagebreak)(.*)(\])/iU', $bodytext); |
||
186 | $arr_titles = []; |
||
187 | $auto_summary = $article->auto_summary($bodytext, $arr_titles); |
||
188 | $bodytext = str_replace('[summary]', $auto_summary, $bodytext); |
||
189 | $articletext[$storypage] = str_replace('[summary]', $auto_summary, $articletext[$storypage]); |
||
190 | $story['text'] = str_replace('[summary]', $auto_summary, $story['text']); |
||
191 | } else { |
||
192 | $articletext = explode('[pagebreak]', $bodytext); |
||
193 | } |
||
194 | |||
195 | $story_pages = count($articletext); |
||
196 | |||
197 | if ($story_pages > 1) { |
||
198 | require_once XOOPS_ROOT_PATH . '/modules/news/include/pagenav.php'; |
||
199 | $pagenav = new XoopsPageNav($story_pages, 1, $storypage, 'page', 'storyid=' . $storyid); |
||
200 | if (NewsUtility::isBot()) { // A bot is reading the articles, we are going to show him all the links to the pages |
||
201 | $xoopsTpl->assign('pagenav', $pagenav->renderNav($story_pages)); |
||
202 | } else { |
||
203 | if (NewsUtility::getModuleOption('enhanced_pagenav')) { |
||
204 | $xoopsTpl->assign('pagenav', $pagenav->renderEnhancedSelect(true, $arr_titles)); |
||
205 | } else { |
||
206 | $xoopsTpl->assign('pagenav', $pagenav->renderNav()); |
||
207 | } |
||
208 | } |
||
209 | |||
210 | if (0 == $storypage) { |
||
211 | $story['text'] = $story['text'] . '<br>' . NewsUtility::getModuleOption('advertisement') . '<br>' . $articletext[$storypage]; |
||
212 | } else { |
||
213 | $story['text'] = $articletext[$storypage]; |
||
214 | } |
||
215 | } else { |
||
216 | $story['text'] = $story['text'] . '<br>' . NewsUtility::getModuleOption('advertisement') . '<br>' . $bodytext; |
||
217 | } |
||
218 | } |
||
219 | // Publicit� |
||
220 | $xoopsTpl->assign('advertisement', NewsUtility::getModuleOption('advertisement')); |
||
221 | |||
222 | // **************************************************************************************************************** |
||
223 | /** |
||
224 | * @param $matches |
||
225 | * |
||
226 | * @return string |
||
227 | */ |
||
228 | function my_highlighter($matches) |
||
229 | { |
||
230 | $color = NewsUtility::getModuleOption('highlightcolor'); |
||
231 | if ('#' !== substr($color, 0, 1)) { |
||
232 | $color = '#' . $color; |
||
233 | } |
||
234 | |||
235 | return '<span style="font-weight: bolder; background-color: ' . $color . ';">' . $matches[0] . '</span>'; |
||
236 | } |
||
237 | |||
238 | $highlight = false; |
||
239 | $highlight = NewsUtility::getModuleOption('keywordshighlight'); |
||
240 | |||
241 | if ($highlight && isset($_GET['keywords'])) { |
||
242 | $keywords = $myts->htmlSpecialChars(trim(urldecode($_GET['keywords']))); |
||
243 | $h = new keyhighlighter($keywords, true, 'my_highlighter'); |
||
244 | $story['text'] = $h->highlight($story['text']); |
||
245 | } |
||
246 | // **************************************************************************************************************** |
||
247 | |||
248 | $story['poster'] = $article->uname(); |
||
249 | if ($story['poster']) { |
||
250 | $story['posterid'] = $article->uid(); |
||
251 | $story['poster'] = '<a href="' . XOOPS_URL . '/userinfo.php?uid=' . $story['posterid'] . '">' . $story['poster'] . '</a>'; |
||
252 | $tmp_user = new XoopsUser($article->uid()); |
||
253 | $story['poster_avatar'] = XOOPS_UPLOAD_URL . '/' . $tmp_user->getVar('user_avatar'); |
||
254 | $story['poster_signature'] = $tmp_user->getVar('user_sig'); |
||
255 | $story['poster_email'] = $tmp_user->getVar('email'); |
||
256 | $story['poster_url'] = $tmp_user->getVar('url'); |
||
257 | $story['poster_from'] = $tmp_user->getVar('user_from'); |
||
258 | unset($tmp_user); |
||
259 | } else { |
||
260 | $story['poster'] = ''; |
||
261 | $story['posterid'] = 0; |
||
262 | $story['poster_avatar'] = ''; |
||
263 | $story['poster_signature'] = ''; |
||
264 | $story['poster_email'] = ''; |
||
265 | $story['poster_url'] = ''; |
||
266 | $story['poster_from'] = ''; |
||
267 | if (3 != NewsUtility::getModuleOption('displayname')) { |
||
268 | $story['poster'] = $xoopsConfig['anonymous']; |
||
269 | } |
||
270 | } |
||
271 | $story['morelink'] = ''; |
||
272 | $story['adminlink'] = ''; |
||
273 | unset($isadmin); |
||
274 | |||
275 | if (is_object($xoopsUser)) { |
||
276 | if ($xoopsUser->isAdmin($xoopsModule->getVar('mid')) |
||
277 | || (NewsUtility::getModuleOption('authoredit') |
||
278 | && $article->uid() == $xoopsUser->getVar('uid'))) { |
||
279 | $isadmin = true; |
||
280 | // $story['adminlink'] = $article->adminlink(); |
||
281 | } |
||
282 | } |
||
283 | $story['topicid'] = $article->topicid(); |
||
284 | $story['topic_color'] = '#' . $myts->displayTarea($article->topic_color); |
||
285 | |||
286 | $story['imglink'] = ''; |
||
287 | $story['align'] = ''; |
||
288 | if ($article->topicdisplay()) { |
||
289 | $story['imglink'] = $article->imglink(); |
||
290 | $story['align'] = $article->topicalign(); |
||
291 | } |
||
292 | $story['hits'] = $article->counter(); |
||
293 | $story['mail_link'] = 'mailto:?subject=' . sprintf(_NW_INTARTICLE, $xoopsConfig['sitename']) . '&body=' . sprintf(_NW_INTARTFOUND, $xoopsConfig['sitename']) . ': ' . XOOPS_URL . '/modules/news/article.php?storyid=' . $article->storyid(); |
||
294 | $xoopsTpl->assign('lang_printerpage', _NW_PRINTERFRIENDLY); |
||
295 | $xoopsTpl->assign('lang_sendstory', _NW_SENDSTORY); |
||
296 | $xoopsTpl->assign('lang_pdfstory', _NW_MAKEPDF); |
||
297 | $xoopsTpl->assign('lang_on', _ON); |
||
298 | $xoopsTpl->assign('lang_postedby', _POSTEDBY); |
||
299 | $xoopsTpl->assign('lang_reads', _READS); |
||
300 | $xoopsTpl->assign('mail_link', 'mailto:?subject=' . sprintf(_NW_INTARTICLE, $xoopsConfig['sitename']) . '&body=' . sprintf(_NW_INTARTFOUND, $xoopsConfig['sitename']) . ': ' . XOOPS_URL . '/modules/news/article.php?storyid=' . $article->storyid()); |
||
301 | |||
302 | if ('' !== xoops_trim($article->picture())) { |
||
303 | $story['picture'] = XOOPS_URL . '/uploads/news/image/' . $article->picture(); |
||
304 | $story['pictureinfo'] = $article->pictureinfo(); |
||
305 | } else { |
||
306 | $story['picture'] = ''; |
||
307 | $story['pictureinfo'] = ''; |
||
308 | } |
||
309 | |||
310 | $xoopsTpl->assign('lang_attached_files', _NW_ATTACHEDFILES); |
||
311 | $sfiles = new sFiles(); |
||
312 | $filesarr = $newsfiles = []; |
||
313 | $filesarr = $sfiles->getAllbyStory($storyid); |
||
314 | $filescount = count($filesarr); |
||
315 | $xoopsTpl->assign('attached_files_count', $filescount); |
||
316 | if ($filescount > 0) { |
||
317 | foreach ($filesarr as $onefile) { |
||
318 | $newsfiles[] = [ |
||
319 | 'file_id' => $onefile->getFileid(), |
||
320 | 'visitlink' => XOOPS_URL . '/modules/news/visit.php?fileid=' . $onefile->getFileid(), |
||
321 | 'file_realname' => $onefile->getFileRealName(), |
||
322 | 'file_attacheddate' => formatTimestamp($onefile->getDate(), $dateformat), |
||
323 | 'file_mimetype' => $onefile->getMimetype(), |
||
324 | 'file_downloadname' => XOOPS_UPLOAD_URL . '/' . $onefile->getDownloadname() |
||
325 | ]; |
||
326 | } |
||
327 | $xoopsTpl->assign('attached_files', $newsfiles); |
||
328 | } |
||
329 | |||
330 | /** |
||
331 | * Create page's title |
||
332 | */ |
||
333 | $complement = ''; |
||
334 | if (NewsUtility::getModuleOption('enhanced_pagenav') |
||
335 | && (isset($arr_titles) && is_array($arr_titles) |
||
336 | && isset($arr_titles, $storypage) |
||
337 | && $storypage > 0)) { |
||
338 | $complement = ' - ' . $arr_titles[$storypage]; |
||
339 | } |
||
340 | $xoopsTpl->assign('xoops_pagetitle', $article->title() . $complement . ' - ' . $article->topic_title() . ' - ' . $xoopsModule->name('s')); |
||
341 | |||
342 | if (NewsUtility::getModuleOption('newsbythisauthor')) { |
||
343 | $xoopsTpl->assign('news_by_the_same_author_link', sprintf("<a href='%s?uid=%d'>%s</a>", XOOPS_URL . '/modules/news/newsbythisauthor.php', $article->uid(), _NW_NEWSSAMEAUTHORLINK)); |
||
344 | } |
||
345 | |||
346 | /** |
||
347 | * Create a clickable path from the root to the current topic (if we are viewing a topic) |
||
348 | * Actually this is not used in the default's templates but you can use it as you want |
||
349 | * Uncomment the code to be able to use it |
||
350 | */ |
||
351 | if ($cfg['create_clickable_path']) { |
||
352 | $mytree = new MyXoopsObjectTree($xoopsDB->prefix('news_topics'), 'topic_id', 'topic_pid'); |
||
353 | $topicpath = $mytree->getNicePathFromId($article->topicid(), 'topic_title', 'index.php?op=1'); |
||
354 | $xoopsTpl->assign('topic_path', $topicpath); |
||
355 | unset($mytree); |
||
356 | } |
||
357 | |||
358 | /** |
||
359 | * Summary table |
||
360 | * |
||
361 | * When you are viewing an article, you can see a summary table containing |
||
362 | * the first n links to the last published news. |
||
363 | * This summary table is visible according to a module's option (showsummarytable) |
||
364 | * The number of items is equal to the module's option "storyhome" ("Select the number |
||
365 | * of news items to display on top page") |
||
366 | * We also use the module's option "restrictindex" ("Restrict Topics on Index Page"), like |
||
367 | * this you (the webmaster) select if users can see restricted stories or not. |
||
368 | */ |
||
369 | if (NewsUtility::getModuleOption('showsummarytable')) { |
||
370 | $xoopsTpl->assign('showsummary', true); |
||
371 | $xoopsTpl->assign('lang_other_story', _NW_OTHER_ARTICLES); |
||
372 | $count = 0; |
||
373 | $tmparticle = new NewsStory(); |
||
374 | $infotips = NewsUtility::getModuleOption('infotips'); |
||
375 | $sarray = NewsStory::getAllPublished($cfg['article_summary_items_count'], 0, $xoopsModuleConfig['restrictindex']); |
||
376 | if (count($sarray) > 0) { |
||
377 | foreach ($sarray as $onearticle) { |
||
378 | ++$count; |
||
379 | $htmltitle = ''; |
||
380 | $tooltips = ''; |
||
381 | $htmltitle = ''; |
||
382 | if ($infotips > 0) { |
||
383 | $tooltips = NewsUtility::makeInfotips($onearticle->hometext()); |
||
384 | $htmltitle = ' title="' . $tooltips . '"'; |
||
385 | } |
||
386 | $xoopsTpl->append('summary', [ |
||
387 | 'story_id' => $onearticle->storyid(), |
||
388 | 'htmltitle' => $htmltitle, |
||
389 | 'infotips' => $tooltips, |
||
390 | 'story_title' => $onearticle->title(), |
||
391 | 'story_hits' => $onearticle->counter(), |
||
392 | 'story_published' => formatTimestamp($onearticle->published, $dateformat) |
||
393 | ]); |
||
394 | } |
||
395 | } |
||
396 | $xoopsTpl->assign('summary_count', $count); |
||
397 | unset($tmparticle); |
||
398 | } else { |
||
399 | $xoopsTpl->assign('showsummary', false); |
||
400 | } |
||
401 | |||
402 | /** |
||
403 | * Show a link to go to the previous article and to the next article |
||
404 | * |
||
405 | * According to a module's option "showprevnextlink" ("Show Previous and Next link?") |
||
406 | * you can display, at the bottom of each article, two links used to navigate thru stories. |
||
407 | * This feature uses the module's option "restrictindex" so that we can, or can't see |
||
408 | * restricted stories |
||
409 | */ |
||
410 | if (NewsUtility::getModuleOption('showprevnextlink')) { |
||
411 | $xoopsTpl->assign('nav_links', true); |
||
412 | $tmparticle = new NewsStory(); |
||
413 | $nextId = $previousId = -1; |
||
414 | $next = $previous = []; |
||
415 | $previousTitle = $nextTitle = ''; |
||
416 | |||
417 | $next = $tmparticle->getNextArticle($storyid, $xoopsModuleConfig['restrictindex']); |
||
418 | if (count($next) > 0) { |
||
419 | $nextId = $next['storyid']; |
||
420 | $nextTitle = $next['title']; |
||
421 | } |
||
422 | |||
423 | $previous = $tmparticle->getPreviousArticle($storyid, $xoopsModuleConfig['restrictindex']); |
||
424 | if (count($previous) > 0) { |
||
425 | $previousId = $previous['storyid']; |
||
426 | $previousTitle = $previous['title']; |
||
427 | } |
||
428 | |||
429 | $xoopsTpl->assign('previous_story_id', $previousId); |
||
430 | $xoopsTpl->assign('next_story_id', $nextId); |
||
431 | if ($previousId > 0) { |
||
432 | $xoopsTpl->assign('previous_story_title', $previousTitle); |
||
433 | $hcontent .= sprintf("<link rel=\"Prev\" title=\"%s\" href=\"%s/\">\n", $previousTitle, XOOPS_URL . '/modules/news/article.php?storyid=' . $previousId); |
||
434 | } |
||
435 | |||
436 | if ($nextId > 0) { |
||
437 | $xoopsTpl->assign('next_story_title', $nextTitle); |
||
438 | $hcontent .= sprintf("<link rel=\"Next\" title=\"%s\" href=\"%s/\">\n", $nextTitle, XOOPS_URL . '/modules/news/article.php?storyid=' . $nextId); |
||
439 | } |
||
440 | $xoopsTpl->assign('lang_previous_story', _NW_PREVIOUS_ARTICLE); |
||
441 | $xoopsTpl->assign('lang_next_story', _NW_NEXT_ARTICLE); |
||
442 | unset($tmparticle); |
||
443 | } else { |
||
444 | $xoopsTpl->assign('nav_links', false); |
||
445 | } |
||
446 | |||
447 | /** |
||
448 | * Manage all the meta datas |
||
449 | */ |
||
450 | NewsUtility::createMetaDatas($article); |
||
451 | |||
452 | /** |
||
453 | * Show a "Bookmark this article at these sites" block ? |
||
454 | */ |
||
455 | if (NewsUtility::getModuleOption('bookmarkme')) { |
||
456 | $xoopsTpl->assign('bookmarkme', true); |
||
457 | $xoopsTpl->assign('encoded_title', rawurlencode($article->title())); |
||
458 | } else { |
||
459 | $xoopsTpl->assign('bookmarkme', false); |
||
460 | } |
||
461 | |||
462 | /** |
||
463 | * Use Facebook Comments Box? |
||
464 | */ |
||
465 | if (NewsUtility::getModuleOption('fbcomments')) { |
||
466 | $xoopsTpl->assign('fbcomments', true); |
||
467 | } else { |
||
468 | $xoopsTpl->assign('fbcomments', false); |
||
469 | } |
||
470 | |||
471 | /** |
||
472 | * Enable users to vote |
||
473 | * |
||
474 | * According to a module's option, "ratenews", you can display a link to rate the current news |
||
475 | * The actual rate in showed (and the number of votes) |
||
476 | * Possible modification, restrict votes to registred users |
||
477 | */ |
||
478 | $other_test = true; |
||
479 | if ($cfg['config_rating_registred_only']) { |
||
480 | if (isset($xoopsUser) && is_object($xoopsUser)) { |
||
481 | $other_test = true; |
||
482 | } else { |
||
483 | $other_test = false; |
||
484 | } |
||
485 | } |
||
486 | |||
487 | if (NewsUtility::getModuleOption('ratenews') && $other_test) { |
||
488 | $xoopsTpl->assign('rates', true); |
||
489 | $xoopsTpl->assign('lang_ratingc', _NW_RATINGC); |
||
490 | $xoopsTpl->assign('lang_ratethisnews', _NW_RATETHISNEWS); |
||
491 | $story['rating'] = number_format($article->rating(), 2); |
||
492 | if (1 == $article->votes) { |
||
493 | $story['votes'] = _NW_ONEVOTE; |
||
494 | } else { |
||
495 | $story['votes'] = sprintf(_NW_NUMVOTES, $article->votes); |
||
496 | } |
||
497 | } else { |
||
498 | $xoopsTpl->assign('rates', false); |
||
499 | } |
||
500 | |||
501 | $xoopsTpl->assign('story', $story); |
||
502 | |||
503 | // Added in version 1.63, TAGS |
||
504 | if (xoops_isActiveModule('tag') && NewsUtility::getModuleOption('tags')) { |
||
505 | require_once XOOPS_ROOT_PATH . '/modules/tag/include/tagbar.php'; |
||
506 | $xoopsTpl->assign('tags', true); |
||
507 | $xoopsTpl->assign('tagbar', tagBar($storyid, 0)); |
||
508 | } else { |
||
509 | $xoopsTpl->assign('tags', false); |
||
510 | } |
||
511 | |||
512 | $xoopsTpl->assign('share', $xoopsModuleConfig['share']); |
||
513 | $xoopsTpl->assign('showicons', $xoopsModuleConfig['showicons']); |
||
514 | |||
515 | $canPdf = 1; |
||
516 | if (!is_object($GLOBALS['xoopsUser']) && 0 == $xoopsModuleConfig['show_pdficon']) { |
||
517 | $canPdf = 0; |
||
518 | } |
||
519 | $xoopsTpl->assign('showPdfIcon', $canPdf); |
||
520 | |||
521 | |||
522 | View Code Duplication | if (1 == NewsUtility::getModuleOption('displaytopictitle')) { |
|
0 ignored issues
–
show
|
|||
523 | $xoopsTpl->assign('displaytopictitle', true); |
||
524 | } else { |
||
525 | $xoopsTpl->assign('displaytopictitle', false); |
||
526 | } |
||
527 | |||
528 | //Add style css |
||
529 | $xoTheme->addStylesheet('modules/news/assets/css/style.css'); |
||
530 | |||
531 | require_once XOOPS_ROOT_PATH . '/include/comment_view.php'; |
||
532 | require_once XOOPS_ROOT_PATH . '/footer.php'; |
||
533 |
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.