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 XOOPS Project https://xoops.org/
14: * @license GNU GPL 2.0 or later (https://www.gnu.org/licenses/gpl-2.0.html)
15: * @package
16: * @since
17: * @author XOOPS Development Team, Kazumi Ono (AKA onokazu)
18: */
19:
20: include_once $GLOBALS['xoops']->path('class/xoopsformloader.php');
21:
22: /**
23: * @return array|bool
24: */
25: function b_system_online_show()
26: {
27: global $xoopsUser, $xoopsModule;
28: /** @var XoopsOnlineHandler $online_handler */
29: $online_handler = xoops_getHandler('online');
30: // set gc probabillity to 10% for now..
31: if (mt_rand(1, 100) < 11) {
32: $online_handler->gc(300);
33: }
34: if (is_object($xoopsUser)) {
35: $uid = $xoopsUser->getVar('uid');
36: $uname = $xoopsUser->getVar('uname');
37: } else {
38: $uid = 0;
39: $uname = '';
40: }
41: $requestIp = \Xmf\IPAddress::fromRequest()->asReadable();
42: $requestIp = (false === $requestIp) ? '0.0.0.0' : $requestIp;
43: if (is_object($xoopsModule)) {
44: $online_handler->write($uid, $uname, time(), $xoopsModule->getVar('mid'), $requestIp);
45: } else {
46: $online_handler->write($uid, $uname, time(), 0, $requestIp);
47: }
48: $onlines = $online_handler->getAll();
49: if (!empty($onlines)) {
50: $total = count($onlines);
51: $block = array();
52: $guests = 0;
53: $members = '';
54: for ($i = 0; $i < $total; ++$i) {
55: if ($onlines[$i]['online_uid'] > 0) {
56: $members .= ' <a href="' . XOOPS_URL . '/userinfo.php?uid=' . $onlines[$i]['online_uid'] . '" title="' . $onlines[$i]['online_uname'] . '">' . $onlines[$i]['online_uname'] . '</a>,';
57: } else {
58: ++$guests;
59: }
60: }
61: $block['online_total'] = sprintf(_ONLINEPHRASE, $total);
62: if (is_object($xoopsModule)) {
63: $mytotal = $online_handler->getCount(new Criteria('online_module', $xoopsModule->getVar('mid')));
64: $block['online_total'] .= ' (' . sprintf(_ONLINEPHRASEX, $mytotal, $xoopsModule->getVar('name')) . ')';
65: }
66: $block['lang_members'] = _MEMBERS;
67: $block['lang_guests'] = _GUESTS;
68: $block['online_names'] = $members;
69: $block['online_members'] = $total - $guests;
70: $block['online_guests'] = $guests;
71: $block['lang_more'] = _MORE;
72:
73: return $block;
74: } else {
75: return false;
76: }
77: }
78:
79: /**
80: * @return array|bool
81: */
82: function b_system_login_show()
83: {
84: global $xoopsUser, $xoopsConfig;
85: if (!$xoopsUser) {
86: $block = array();
87: $block['lang_username'] = _USERNAME;
88: $block['unamevalue'] = '';
89: $block['lang_password'] = _PASSWORD;
90: $block['lang_login'] = _LOGIN;
91: $block['lang_lostpass'] = _MB_SYSTEM_LPASS;
92: $block['lang_registernow'] = _MB_SYSTEM_RNOW;
93: //$block['lang_rememberme'] = _MB_SYSTEM_REMEMBERME;
94: if ($xoopsConfig['use_ssl'] == 1 && $xoopsConfig['sslloginlink'] != '') {
95: $block['sslloginlink'] = "<a href=\"javascript:openWithSelfMain('" . $xoopsConfig['sslloginlink'] . "', 'ssllogin', 300, 200);\">" . _MB_SYSTEM_SECURE . '</a>';
96: } elseif ($GLOBALS['xoopsConfig']['usercookie']) {
97: $block['lang_rememberme'] = _MB_SYSTEM_REMEMBERME;
98: }
99:
100: return $block;
101: }
102:
103: return false;
104: }
105:
106: /**
107: * @return array
108: */
109: function b_system_main_show()
110: {
111: global $xoopsUser, $xoopsModule;
112: $block = array();
113: $block['lang_home'] = _MB_SYSTEM_HOME;
114: $block['lang_close'] = _CLOSE;
115: $module_handler = xoops_getHandler('module');
116: $criteria = new CriteriaCompo(new Criteria('hasmain', 1));
117: $criteria->add(new Criteria('isactive', 1));
118: $criteria->add(new Criteria('weight', 0, '>'));
119: $modules = $module_handler->getObjects($criteria, true);
120: /** @var XoopsGroupPermHandler $moduleperm_handler */
121: $moduleperm_handler = xoops_getHandler('groupperm');
122: $groups = is_object($xoopsUser) ? $xoopsUser->getGroups() : XOOPS_GROUP_ANONYMOUS;
123: $read_allowed = $moduleperm_handler->getItemIds('module_read', $groups);
124: $block['modules'] = array();
125: foreach (array_keys($modules) as $i) {
126: if (in_array($i, $read_allowed)) {
127: $block['modules'][$i]['name'] = $modules[$i]->getVar('name');
128: $block['modules'][$i]['directory'] = $modules[$i]->getVar('dirname');
129: $sublinks = $modules[$i]->subLink();
130: if ((!empty($xoopsModule)) && ($i == $xoopsModule->getVar('mid'))) {
131: $block['modules'][$i]['highlight'] = true;
132: $block['nothome'] = true;
133: }
134: if ((!empty($xoopsModule)) && ($i == $xoopsModule->getVar('mid'))) {
135: $block['modules'][$i]['highlight'] = true;
136: $block['nothome'] = true;
137: }
138: if ((count($sublinks) > 0) && (!empty($xoopsModule)) && ($i == $xoopsModule->getVar('mid'))) {
139: foreach ($sublinks as $sublink) {
140: $block['modules'][$i]['sublinks'][] = array(
141: 'name' => $sublink['name'],
142: 'url' => XOOPS_URL . '/modules/' . $modules[$i]->getVar('dirname') . '/' . $sublink['url']);
143: }
144: } else {
145: $block['modules'][$i]['sublinks'] = array();
146: }
147: }
148: }
149:
150: return $block;
151: }
152:
153: /**
154: * @return array
155: */
156: function b_system_search_show()
157: {
158: $block = array();
159: $block['lang_search'] = _MB_SYSTEM_SEARCH;
160: $block['lang_advsearch'] = _MB_SYSTEM_ADVS;
161:
162: return $block;
163: }
164:
165: /**
166: * @return array|bool
167: */
168: function b_system_user_show()
169: {
170: global $xoopsUser;
171: if (!is_object($xoopsUser)) {
172: return false;
173: }
174: $block = array();
175: $block['lang_youraccount'] = _MB_SYSTEM_VACNT;
176: $block['lang_editaccount'] = _MB_SYSTEM_EACNT;
177: $block['lang_notifications'] = _MB_SYSTEM_NOTIF;
178: $block['uid'] = $xoopsUser->getVar('uid');
179: $block['lang_logout'] = _MB_SYSTEM_LOUT;
180: $criteria = new CriteriaCompo(new Criteria('read_msg', 0));
181: $criteria->add(new Criteria('to_userid', $xoopsUser->getVar('uid')));
182:
183: $pm_handler = xoops_getHandler('privmessage');
184:
185: $xoopsPreload = XoopsPreload::getInstance();
186: $xoopsPreload->triggerEvent('system.blocks.system_blocks.usershow', array(&$pm_handler));
187:
188: $block['user_avatar'] = $xoopsUser->getVar('user_avatar');
189: $block['uname'] = $xoopsUser->getVar('uname');
190: $block['new_messages'] = $pm_handler->getCount($criteria);
191: $block['lang_inbox'] = _MB_SYSTEM_INBOX;
192: $block['lang_adminmenu'] = _MB_SYSTEM_ADMENU;
193:
194: return $block;
195: }
196:
197: // this block is deprecated
198: /**
199: * @return array
200: */
201: function b_system_waiting_show()
202: {
203: global $xoopsUser;
204: $xoopsDB = XoopsDatabaseFactory::getDatabaseConnection();
205: /** @var XoopsModuleHandler $module_handler */
206: $module_handler = xoops_getHandler('module');
207: $block = array();
208:
209: // waiting content for news
210: if (xoops_isActiveModule('news') && $module_handler->getCount(new Criteria('dirname', 'news'))) {
211: $sql = 'SELECT COUNT(*) FROM ' . $xoopsDB->prefix('stories') . ' WHERE published=0';
212: $result = $xoopsDB->query($sql);
213: if ($xoopsDB->isResultSet($result)) {
214: $block['modules'][0]['adminlink'] = XOOPS_URL . '/modules/news/admin/index.php?op=newarticle';
215: list($block['modules'][0]['pendingnum']) = $xoopsDB->fetchRow($result);
216: $block['modules'][0]['lang_linkname'] = _MB_SYSTEM_SUBMS;
217: }
218: }
219:
220: // waiting content for mylinks
221: if (xoops_isActiveModule('mylinks') && $module_handler->getCount(new Criteria('dirname', 'mylinks'))) {
222: $sql = 'SELECT COUNT(*) FROM ' . $xoopsDB->prefix('mylinks_links') . ' WHERE status=0';
223: $result = $xoopsDB->query($sql);
224: if ($xoopsDB->isResultSet($result)) {
225: $block['modules'][1]['adminlink'] = XOOPS_URL . '/modules/mylinks/admin/index.php?op=listNewLinks';
226: list($block['modules'][1]['pendingnum']) = $xoopsDB->fetchRow($result);
227: $block['modules'][1]['lang_linkname'] = _MB_SYSTEM_WLNKS;
228: }
229:
230: $sql = 'SELECT COUNT(*) FROM ' . $xoopsDB->prefix('mylinks_broken');
231: $result = $xoopsDB->query($sql);
232: if ($xoopsDB->isResultSet($result)) {
233: $block['modules'][2]['adminlink'] = XOOPS_URL . '/modules/mylinks/admin/index.php?op=listBrokenLinks';
234: list($block['modules'][2]['pendingnum']) = $xoopsDB->fetchRow($result);
235: $block['modules'][2]['lang_linkname'] = _MB_SYSTEM_BLNK;
236: }
237:
238: $sql = 'SELECT COUNT(*) FROM ' . $xoopsDB->prefix('mylinks_mod');
239: $result = $xoopsDB->query($sql);
240: if ($xoopsDB->isResultSet($result)) {
241: $block['modules'][3]['adminlink'] = XOOPS_URL . '/modules/mylinks/admin/index.php?op=listModReq';
242: list($block['modules'][3]['pendingnum']) = $xoopsDB->fetchRow($result);
243: $block['modules'][3]['lang_linkname'] = _MB_SYSTEM_MLNKS;
244: }
245: }
246:
247: // waiting content for mydownloads
248: if (xoops_isActiveModule('mydownloads') && $module_handler->getCount(new Criteria('dirname', 'mydownloads'))) {
249: $sql = 'SELECT COUNT(*) FROM ' . $xoopsDB->prefix('mydownloads_downloads') . ' WHERE status=0';
250: $result = $xoopsDB->query($sql);
251: if ($xoopsDB->isResultSet($result)) {
252: $block['modules'][4]['adminlink'] = XOOPS_URL . '/modules/mydownloads/admin/index.php?op=listNewDownloads';
253: list($block['modules'][4]['pendingnum']) = $xoopsDB->fetchRow($result);
254: $block['modules'][4]['lang_linkname'] = _MB_SYSTEM_WDLS;
255: }
256:
257: $sql = 'SELECT COUNT(*) FROM ' . $xoopsDB->prefix('mydownloads_broken') . '';
258: $result = $xoopsDB->query($sql);
259: if ($xoopsDB->isResultSet($result)) {
260: $block['modules'][5]['adminlink'] = XOOPS_URL . '/modules/mydownloads/admin/index.php?op=listBrokenDownloads';
261: list($block['modules'][5]['pendingnum']) = $xoopsDB->fetchRow($result);
262: $block['modules'][5]['lang_linkname'] = _MB_SYSTEM_BFLS;
263: }
264:
265: $sql = 'SELECT COUNT(*) FROM ' . $xoopsDB->prefix('mydownloads_mod') . '';
266: $result = $xoopsDB->query($sql);
267: if ($xoopsDB->isResultSet($result)) {
268: $block['modules'][6]['adminlink'] = XOOPS_URL . '/modules/mydownloads/admin/index.php?op=listModReq';
269: list($block['modules'][6]['pendingnum']) = $xoopsDB->fetchRow($result);
270: $block['modules'][6]['lang_linkname'] = _MB_SYSTEM_MFLS;
271: }
272: }
273:
274: // waiting content for xoops comments
275: $sql = 'SELECT COUNT(*) FROM ' . $xoopsDB->prefix('xoopscomments') . ' WHERE com_status=1';
276: $result = $xoopsDB->query($sql);
277: if ($xoopsDB->isResultSet($result)) {
278: $block['modules'][7]['adminlink'] = XOOPS_URL . '/modules/system/admin.php?module=0&amp;status=1&fct=comments';
279: list($block['modules'][7]['pendingnum']) = $xoopsDB->fetchRow($result);
280: $block['modules'][7]['lang_linkname'] = _MB_SYSTEM_COMPEND;
281: }
282:
283: // waiting content for TDMDownloads
284: if (xoops_isActiveModule('TDMdownloads') && $module_handler->getCount(new Criteria('dirname', 'TDMDownloads'))) {
285: $sql = 'SELECT COUNT(*) FROM ' . $xoopsDB->prefix('tdmdownloads_downloads') . ' WHERE status=0';
286: $result = $xoopsDB->query($sql);
287: if ($xoopsDB->isResultSet($result)) {
288: $block['modules'][8]['adminlink'] = XOOPS_URL . '/modules/TDMDownloads/admin/downloads.php?op=list&statut_display=0';
289: list($block['modules'][8]['pendingnum']) = $xoopsDB->fetchRow($result);
290: $block['modules'][8]['lang_linkname'] = _MB_SYSTEM_TDMDOWNLOADS;
291: }
292: }
293:
294: // waiting content for extgallery
295: if (xoops_isActiveModule('extgallery') && $module_handler->getCount(new Criteria('dirname', 'extgallery'))) {
296: $sql = 'SELECT COUNT(*) FROM ' . $xoopsDB->prefix('extgallery_publicphoto') . ' WHERE photo_approved=0';
297: $result = $xoopsDB->query($sql);
298: if ($xoopsDB->isResultSet($result)) {
299: $block['modules'][9]['adminlink'] = XOOPS_URL . '/modules/extgallery/admin/photo.php#pending-photo';
300: list($block['modules'][9]['pendingnum']) = $xoopsDB->fetchRow($result);
301: $block['modules'][9]['lang_linkname'] = _MB_SYSTEM_EXTGALLERY;
302: }
303: }
304:
305: // waiting content for smartsection
306: if (xoops_isActiveModule('smartsection') && $module_handler->getCount(new Criteria('dirname', 'smartsection'))) {
307: $sql = 'SELECT COUNT(*) FROM ' . $xoopsDB->prefix('smartsection_items') . ' WHERE status=1';
308: $result = $xoopsDB->query($sql);
309: if ($xoopsDB->isResultSet($result)) {
310: $block['modules'][10]['adminlink'] = XOOPS_URL . '/modules/smartsection/admin/item.php';
311: list($block['modules'][10]['pendingnum']) = $xoopsDB->fetchRow($result);
312: $block['modules'][10]['lang_linkname'] = _MB_SYSTEM_SMARTSECTION;
313: }
314: }
315: $GLOBALS['xoopsLogger']->addDeprecated("Block 'Waiting Contents' is deprecated since XOOPS 2.5.11, please use waiting module");
316: return $block;
317: }
318:
319: /**
320: * @param $options
321: *
322: * @return array
323: */
324: function b_system_info_show($options)
325: {
326: global $xoopsConfig, $xoopsUser;
327: $xoopsDB = XoopsDatabaseFactory::getDatabaseConnection();
328: $myts = \MyTextSanitizer::getInstance();
329: $block = array();
330: if (!empty($options[3])) {
331: $block['showgroups'] = true;
332: $sql = 'SELECT u.uid, u.uname, u.email, u.user_viewemail, u.user_avatar, g.name AS groupname FROM ' . $xoopsDB->prefix('groups_users_link') . ' l LEFT JOIN ' . $xoopsDB->prefix('users') . ' u ON l.uid=u.uid LEFT JOIN ' . $xoopsDB->prefix('groups') . " g ON l.groupid=g.groupid WHERE g.group_type='Admin' ORDER BY l.groupid, u.uid";
333: $result = $xoopsDB->query($sql);
334: if ($xoopsDB->isResultSet($result) && $xoopsDB->getRowsNum($result) > 0) {
335: $prev_caption = '';
336: $i = 0;
337: while (false !== ($userinfo = $xoopsDB->fetchArray($result))) {
338: if ($prev_caption != $userinfo['groupname']) {
339: $prev_caption = $userinfo['groupname'];
340: $block['groups'][$i]['name'] = $myts->htmlSpecialChars($userinfo['groupname']);
341: }
342: if (isset($xoopsUser) && is_object($xoopsUser)) {
343: $block['groups'][$i]['users'][] = array(
344: 'id' => $userinfo['uid'],
345: 'name' => $myts->htmlSpecialChars($userinfo['uname']),
346: 'msglink' => "<a href=\"javascript:openWithSelfMain('" . XOOPS_URL . '/pmlite.php?send2=1&amp;to_userid=' . $userinfo['uid'] . "','pmlite',565,500);\"><img src=\"" . XOOPS_URL . "/images/icons/pm_small.gif\" border=\"0\" width=\"27\" height=\"17\" alt=\"\" /></a>",
347: 'avatar' => XOOPS_UPLOAD_URL . '/' . $userinfo['user_avatar']);
348: } else {
349: if ($userinfo['user_viewemail']) {
350: $block['groups'][$i]['users'][] = array(
351: 'id' => $userinfo['uid'],
352: 'name' => $myts->htmlSpecialChars($userinfo['uname']),
353: 'msglink' => '<a href="mailto:' . $userinfo['email'] . '"><img src="' . XOOPS_URL . '/images/icons/em_small.gif" border="0" width="16" height="14" alt="" /></a>',
354: 'avatar' => XOOPS_UPLOAD_URL . '/' . $userinfo['user_avatar']);
355: } else {
356: $block['groups'][$i]['users'][] = array(
357: 'id' => $userinfo['uid'],
358: 'name' => $myts->htmlSpecialChars($userinfo['uname']),
359: 'msglink' => '&nbsp;',
360: 'avatar' => XOOPS_UPLOAD_URL . '/' . $userinfo['user_avatar']);
361: }
362: }
363: ++$i;
364: }
365: }
366: } else {
367: $block['showgroups'] = false;
368: }
369: $block['logourl'] = XOOPS_URL . '/images/' . $options[2];
370: $block['recommendlink'] = "<a href=\"javascript:openWithSelfMain('" . XOOPS_URL . '/misc.php?action=showpopups&amp;type=friend&amp;op=sendform&amp;t=' . time() . "','friend'," . $options[0] . ',' . $options[1] . ")\">" . _MB_SYSTEM_RECO . '</a>';
371:
372: return $block;
373: }
374:
375: /**
376: * @param $options
377: *
378: * @return array
379: */
380: function b_system_newmembers_show($options)
381: {
382: $block = array();
383: $criteria = new CriteriaCompo(new Criteria('level', 0, '>'));
384: $limit = (!empty($options[0])) ? $options[0] : 10;
385: $criteria->setOrder('DESC');
386: $criteria->setSort('user_regdate');
387: $criteria->setLimit($limit);
388: /** @var XoopsMemberHandler $member_handler */
389: $member_handler = xoops_getHandler('member');
390: $newmembers = $member_handler->getUsers($criteria);
391: $count = count($newmembers);
392: for ($i = 0; $i < $count; ++$i) {
393: if ($options[1] == 1) {
394: $block['users'][$i]['avatar'] = $newmembers[$i]->getVar('user_avatar') !== 'blank.gif' ? XOOPS_UPLOAD_URL . '/' . $newmembers[$i]->getVar('user_avatar') : '';
395: } else {
396: $block['users'][$i]['avatar'] = '';
397: }
398: $block['users'][$i]['id'] = $newmembers[$i]->getVar('uid');
399: $block['users'][$i]['name'] = $newmembers[$i]->getVar('uname');
400: $block['users'][$i]['joindate'] = formatTimestamp($newmembers[$i]->getVar('user_regdate'), 's');
401: }
402:
403: return $block;
404: }
405:
406: /**
407: * @param $options
408: *
409: * @return array
410: */
411: function b_system_topposters_show($options)
412: {
413: $block = array();
414: $criteria = new CriteriaCompo(new Criteria('level', 0, '>'));
415: $criteria->add(new Criteria('posts', 0, '>'));
416: $limit = (!empty($options[0])) ? $options[0] : 10;
417: $size = count($options);
418: for ($i = 2; $i < $size; ++$i) {
419: $criteria->add(new Criteria('rank', $options[$i], '<>'));
420: }
421: $criteria->setOrder('DESC');
422: $criteria->setSort('posts');
423: $criteria->setLimit($limit);
424: /** @var XoopsMemberHandler $member_handler */
425: $member_handler = xoops_getHandler('member');
426: $topposters = $member_handler->getUsers($criteria);
427: $count = count($topposters);
428: for ($i = 0; $i < $count; ++$i) {
429: $block['users'][$i]['rank'] = $i + 1;
430: if ($options[1] == 1) {
431: $block['users'][$i]['avatar'] = $topposters[$i]->getVar('user_avatar') !== 'blank.gif' ? XOOPS_UPLOAD_URL . '/' . $topposters[$i]->getVar('user_avatar') : '';
432: } else {
433: $block['users'][$i]['avatar'] = '';
434: }
435: $block['users'][$i]['id'] = $topposters[$i]->getVar('uid');
436: $block['users'][$i]['name'] = $topposters[$i]->getVar('uname');
437: $block['users'][$i]['posts'] = $topposters[$i]->getVar('posts');
438: }
439:
440: return $block;
441: }
442:
443: /**
444: * @param $options
445: *
446: * @return array
447: */
448: function b_system_comments_show($options)
449: {
450: $block = array();
451: include_once XOOPS_ROOT_PATH . '/include/comment_constants.php';
452: $comment_handler = xoops_getHandler('comment');
453: $criteria = new CriteriaCompo(new Criteria('com_status', XOOPS_COMMENT_ACTIVE));
454: $criteria->setLimit((int)$options[0]);
455: $criteria->setSort('com_created');
456: $criteria->setOrder('DESC');
457:
458: // Check modules permissions
459: global $xoopsUser;
460: $moduleperm_handler = xoops_getHandler('groupperm');
461: $gperm_groupid = is_object($xoopsUser) ? $xoopsUser->getGroups() : array(XOOPS_GROUP_ANONYMOUS);
462: $criteria1 = new CriteriaCompo(new Criteria('gperm_name', 'module_read', '='));
463: $criteria1->add(new Criteria('gperm_groupid', '(' . implode(',', $gperm_groupid) . ')', 'IN'));
464: $perms = $moduleperm_handler->getObjects($criteria1, true);
465: $modIds = array();
466: foreach ($perms as $item) {
467: $modIds[] = $item->getVar('gperm_itemid');
468: }
469: if (count($modIds) > 0) {
470: $modIds = array_unique($modIds);
471: $criteria->add(new Criteria('com_modid', '(' . implode(',', $modIds) . ')', 'IN'));
472: }
473: // Check modules permissions
474:
475: $comments = $comment_handler->getObjects($criteria, true);
476: /** @var XoopsMemberHandler $member_handler */
477: $member_handler = xoops_getHandler('member');
478: /** @var XoopsModuleHandler $module_handler */
479: $module_handler = xoops_getHandler('module');
480: $modules = $module_handler->getObjects(new Criteria('hascomments', 1), true);
481: $comment_config = array();
482: foreach (array_keys($comments) as $i) {
483: $mid = $comments[$i]->getVar('com_modid');
484: $com['module'] = '<a href="' . XOOPS_URL . '/modules/' . $modules[$mid]->getVar('dirname') . '/">' . $modules[$mid]->getVar('name') . '</a>';
485: if (!isset($comment_config[$mid])) {
486: $comment_config[$mid] = $modules[$mid]->getInfo('comments');
487: }
488: $com['id'] = $i;
489: $com['title'] = '<a href="' . XOOPS_URL . '/modules/' . $modules[$mid]->getVar('dirname') . '/' . $comment_config[$mid]['pageName'] . '?' . $comment_config[$mid]['itemName'] . '=' . $comments[$i]->getVar('com_itemid') . '&amp;com_id=' . $i . '&amp;com_rootid=' . $comments[$i]->getVar('com_rootid') . '&amp;' . htmlspecialchars($comments[$i]->getVar('com_exparams'), ENT_QUOTES) . '#comment' . $i . '">' . $comments[$i]->getVar('com_title') . '</a>';
490: $com['icon'] = htmlspecialchars($comments[$i]->getVar('com_icon'), ENT_QUOTES);
491: $com['icon'] = ($com['icon'] != '') ? $com['icon'] : 'icon1.gif';
492: $com['time'] = formatTimestamp($comments[$i]->getVar('com_created'), 'm');
493: if ($comments[$i]->getVar('com_uid') > 0) {
494: $poster = $member_handler->getUser($comments[$i]->getVar('com_uid'));
495: if (is_object($poster)) {
496: $com['poster'] = '<a href="' . XOOPS_URL . '/userinfo.php?uid=' . $comments[$i]->getVar('com_uid') . '">' . $poster->getVar('uname') . '</a>';
497: } else {
498: $com['poster'] = $GLOBALS['xoopsConfig']['anonymous'];
499: }
500: } else {
501: $com['poster'] = $GLOBALS['xoopsConfig']['anonymous'];
502: }
503: $block['comments'][] =& $com;
504: unset($com);
505: }
506:
507: return $block;
508: }
509:
510: // RMV-NOTIFY
511: /**
512: * @return array|bool
513: */
514: function b_system_notification_show()
515: {
516: global $xoopsConfig, $xoopsUser, $xoopsModule;
517: include_once XOOPS_ROOT_PATH . '/include/notification_functions.php';
518: include_once XOOPS_ROOT_PATH . '/language/' . $xoopsConfig['language'] . '/notification.php';
519: // Notification must be enabled, and user must be logged in
520: if (empty($xoopsUser) || !notificationEnabled('block')) {
521: return false; // do not display block
522: }
523: $notification_handler = xoops_getHandler('notification');
524: // Now build the nested associative array of info to pass
525: // to the block template.
526: $block = array();
527: $categories =& notificationSubscribableCategoryInfo();
528: if (empty($categories)) {
529: return false;
530: }
531: foreach ($categories as $category) {
532: $section['name'] = $category['name'];
533: $section['title'] = $category['title'];
534: $section['description'] = $category['description'];
535: $section['itemid'] = $category['item_id'];
536: $section['events'] = array();
537: $subscribed_events = $notification_handler->getSubscribedEvents($category['name'], $category['item_id'], $xoopsModule->getVar('mid'), $xoopsUser->getVar('uid'));
538: foreach (notificationEvents($category['name'], true) as $event) {
539: if (!empty($event['admin_only']) && !$xoopsUser->isAdmin($xoopsModule->getVar('mid'))) {
540: continue;
541: }
542: $subscribed = in_array($event['name'], $subscribed_events) ? 1 : 0;
543: $section['events'][$event['name']] = array(
544: 'name' => $event['name'],
545: 'title' => $event['title'],
546: 'caption' => $event['caption'],
547: 'description' => $event['description'],
548: 'subscribed' => $subscribed);
549: }
550: $block['categories'][$category['name']] = $section;
551: }
552: // Additional form data
553: $block['target_page'] = 'notification_update.php';
554: // FIXME: better or more standardized way to do this?
555: $script_url = explode('/', $_SERVER['PHP_SELF']);
556: $script_name = $script_url[count($script_url) - 1];
557: $block['redirect_script'] = $script_name;
558: $block['submit_button'] = _NOT_UPDATENOW;
559: $block['notification_token'] = $GLOBALS['xoopsSecurity']->createToken();
560:
561: return $block;
562: }
563:
564: /**
565: * @param $options
566: *
567: * @return string
568: */
569: function b_system_comments_edit($options)
570: {
571: $inputtag = "<input type='text' name='options[]' value='" . (int)$options[0] . "' />";
572: $form = sprintf(_MB_SYSTEM_DISPLAYC, $inputtag);
573:
574: return $form;
575: }
576:
577: /**
578: * @param $options
579: *
580: * @return string
581: */
582: function b_system_topposters_edit($options)
583: {
584: include_once XOOPS_ROOT_PATH . '/class/xoopslists.php';
585: $inputtag = "<input type='text' name='options[]' value='" . (int)$options[0] . "' />";
586: $form = sprintf(_MB_SYSTEM_DISPLAY, $inputtag);
587: $form .= '<br>' . _MB_SYSTEM_DISPLAYA . "&nbsp;<input type='radio' id='options[]' name='options[]' value='1'";
588: if ($options[1] == 1) {
589: $form .= " checked";
590: }
591: $form .= ' />&nbsp;' . _YES . "<input type='radio' id='options[]' name='options[]' value='0'";
592: if ($options[1] == 0) {
593: $form .= " checked";
594: }
595: $form .= ' />&nbsp;' . _NO . '';
596: $form .= '<br>' . _MB_SYSTEM_NODISPGR . "<br><select id='options[]' name='options[]' multiple='multiple'>";
597: $ranks = XoopsLists::getUserRankList();
598: $size = count($options);
599: foreach ($ranks as $k => $v) {
600: $sel = '';
601: for ($i = 2; $i < $size; ++$i) {
602: if ($k == $options[$i]) {
603: $sel = " selected";
604: }
605: }
606: $form .= "<option value='$k'$sel>$v</option>";
607: }
608: $form .= '</select>';
609:
610: return $form;
611: }
612:
613: /**
614: * @param $options
615: *
616: * @return string
617: */
618: function b_system_newmembers_edit($options)
619: {
620: $inputtag = "<input type='text' name='options[]' value='" . $options[0] . "' />";
621: $form = sprintf(_MB_SYSTEM_DISPLAY, $inputtag);
622: $form .= '<br>' . _MB_SYSTEM_DISPLAYA . "&nbsp;<input type='radio' id='options[]' name='options[]' value='1'";
623: if ($options[1] == 1) {
624: $form .= " checked";
625: }
626: $form .= ' />&nbsp;' . _YES . "<input type='radio' id='options[]' name='options[]' value='0'";
627: if ($options[1] == 0) {
628: $form .= " checked";
629: }
630: $form .= ' />&nbsp;' . _NO . '';
631:
632: return $form;
633: }
634:
635: /**
636: * @param $options
637: *
638: * @return string
639: */
640: function b_system_info_edit($options)
641: {
642: $form = _MB_SYSTEM_PWWIDTH . '&nbsp;';
643: $form .= "<input type='text' name='options[]' value='" . $options[0] . "' />";
644: $form .= '<br>' . _MB_SYSTEM_PWHEIGHT . '&nbsp;';
645: $form .= "<input type='text' name='options[]' value='" . $options[1] . "' />";
646: $form .= '<br>' . sprintf(_MB_SYSTEM_LOGO, XOOPS_URL . '/images/') . '&nbsp;';
647: $form .= "<input type='text' name='options[]' value='" . $options[2] . "' />";
648: $chk = '';
649: $form .= '<br>' . _MB_SYSTEM_SADMIN . '&nbsp;';
650: if ($options[3] == 1) {
651: $chk = " checked";
652: }
653: $form .= "<input type='radio' name='options[3]' value='1'" . $chk . ' />&nbsp;' . _YES . '';
654: $chk = '';
655: if ($options[3] == 0) {
656: $chk = " checked";
657: }
658: $form .= "&nbsp;<input type='radio' name='options[3]' value='0'" . $chk . ' />' . _NO . '';
659:
660: return $form;
661: }
662:
663: /**
664: * @param $options
665: *
666: * @return array
667: */
668: function b_system_themes_show($options)
669: {
670: global $xoopsConfig;
671: $block = array();
672:
673: if (!isset($options[2])) {
674: $options[2] = 3; // this was the fixed value pre 2.5.8
675: }
676: $selectSize = ($options[0] == 1) ? 1 : (int) $options[2];
677: $select = new XoopsFormSelect('', 'xoops_theme_select', $xoopsConfig['theme_set'], $selectSize);
678: foreach ($xoopsConfig['theme_set_allowed'] as $theme) {
679: $select->addOption($theme, $theme);
680: }
681:
682: if ($options[0] == 1) {
683: $themeSelect = '<img vspace="2" id="xoops_theme_img" src="'
684: . XOOPS_THEME_URL . '/' . $xoopsConfig['theme_set'] . '/shot.gif" '
685: . ' alt="screenshot" width="' . (int)$options[1] . '" />'
686: . '<br>';
687: $select->setExtra(' onchange="showImgSelected(\'xoops_theme_img\', \'xoops_theme_select\', \'themes\', \'/shot.gif\', '
688: . '\'' . XOOPS_URL . '\');" ');
689: $selectTray = new XoopsFormElementTray('');
690: $selectTray->addElement($select);
691: $selectTray->addElement(new XoopsFormButton('', 'submit', _GO, 'submit'));
692: $themeSelect .= '<div class="form-inline">';
693: $themeSelect .= $selectTray->render();
694: $themeSelect .= '</div>';
695: } else {
696: $select->setExtra(' onchange="submit();" ');
697: $themeSelect = $select->render();
698: }
699:
700: $block['theme_select'] = $themeSelect . '<br>(' . sprintf(_MB_SYSTEM_NUMTHEME, '<strong>'
701: . count($xoopsConfig['theme_set_allowed']) . '</strong>') . ')<br>';
702:
703: return $block;
704: }
705:
706: /**
707: * @param $options
708: *
709: * @return string
710: */
711: function b_system_themes_edit($options)
712: {
713: $chk = '';
714: $form = _MB_SYSTEM_THSHOW . '&nbsp;';
715: if (!isset($options[2])) {
716: $options[2] = 3; // this was the fixed value pre 2.5.8
717: }
718: if ($options[0] == 1) {
719: $chk = " checked";
720: }
721: $form .= "<input type='radio' name='options[0]' value='1'" . $chk . ' />&nbsp;' . _YES;
722: $chk = '';
723: if ($options[0] == 0) {
724: $chk = ' checked';
725: }
726: $form .= '&nbsp;<input type="radio" name="options[0]" value="0"' . $chk . ' />' . _NO;
727: $form .= '<br>' . _MB_SYSTEM_THWIDTH . '&nbsp;';
728: $form .= "<input type='text' name='options[1]' value='" . $options[1] . "' />";
729: $form .= '<br>' . _MB_SYSTEM_BLOCK_HEIGHT . '&nbsp;';
730: $form .= "<input type='text' name='options[2]' value='" . $options[2] . "' />";
731:
732: return $form;
733: }
734: