/** * synchronize number of posts credited to user * * @param int $uid uid of user row * @param string $type type of processing, 'user' for one user, 'all users' for all * * @return void */ function synchronize($uid, $type) { $xoops = Xoops::getInstance(); $db = $xoops->db(); switch ($type) { case 'user': $total_posts = 0; /* @var $plugin SystemPluginInterface */ $plugins = \Xoops\Module\Plugin::getPlugins(); foreach ($plugins as $plugin) { if ($res = $plugin->userPosts($uid)) { $total_posts += $res; } } $query = $db->createXoopsQueryBuilder()->updatePrefix('system_user')->set('posts', ':posts')->where('uid = :uid')->setParameter(':posts', $total_posts)->setParameter(':uid', $uid); $result = $query->execute(); //if (!$result) { // $xoops->redirect("admin.php?fct=users", 1, XoopsLocale::E_USER_NOT_UPDATED); //} break; case 'all users': $sql = $db->createXoopsQueryBuilder()->select('uid')->fromPrefix('system_user', 'u'); $result = $sql->execute(); if (!$result) { $xoops->redirect("admin.php?fct=users", 1, XoopsLocale::E_USER_ID_NOT_FETCHED); } $rows = $result->fetchAll(); foreach ($rows as $row) { synchronize($row['uid'], "user"); } break; } }
/** * Blocks functions * * @copyright XOOPS Project (http://xoops.org) * @license GNU GPL 2 or later (http://www.gnu.org/licenses/gpl-2.0.html) * @author Kazumi Ono (AKA onokazu) * @package system * @version $Id$ */ function b_system_user_show() { $xoops = Xoops::getInstance(); if (!$xoops->isUser()) { return false; } $block = array(); $block['modules'] = array(); $plugins = \Xoops\Module\Plugin::getPlugins('system'); $i = 0; /* @var $plugin SystemPluginInterface */ foreach ($plugins as $dirname => $plugin) { $menu = $plugin->userMenus(); if (is_array($menu) && !empty($menu)) { $block['modules'][$i]['name'] = $menu['name']; $block['modules'][$i]['link'] = $xoops->url('modules/' . $dirname . '/' . $menu['link']); $block['modules'][$i]['image'] = $menu['image']; $block['modules'][$i]['icon'] = 'icon-tags'; $block['modules'][$i]['dirname'] = $dirname; //todo, remove this hardcoded call if ($xoops->isModule() && $xoops->module->getVar('dirname') == $dirname && ($plugin = \Xoops\Module\Plugin::getPlugin($dirname, 'menus'))) { if (method_exists($plugin, 'subMenus')) { $sublinks = $plugin->subMenus(); foreach ($sublinks as $sublink) { $block['modules'][$i]['sublinks'][] = array('name' => $sublink['name'], 'url' => \XoopsBaseConfig::get('url') . '/modules/' . $dirname . '/' . $sublink['url']); } } } ++$i; } } // View Account array_unshift($block['modules'], array('name' => XoopsLocale::VIEW_ACCOUNT, 'link' => $xoops->url('userinfo.php?uid=' . $xoops->user->getVar('uid')), 'icon' => 'icon-user')); // Edit Account array_unshift($block['modules'], array('name' => XoopsLocale::EDIT_ACCOUNT, 'link' => $xoops->url('edituser.php'), 'icon' => 'icon-user')); // Administration Menu if ($xoops->isAdmin()) { array_unshift($block['modules'], array('name' => SystemLocale::ADMINISTRATION_MENU, 'link' => $xoops->url('admin.php'), 'rel' => 'external', 'icon' => 'icon-wrench')); } // Inbox $criteria = new CriteriaCompo(new Criteria('read_msg', 0)); $criteria->add(new Criteria('to_userid', $xoops->user->getVar('uid'))); $pm_handler = $xoops->getHandlerPrivateMessage(); $xoops->preload()->triggerEvent('system.blocks.system_blocks.usershow', array(&$pm_handler)); $name = XoopsLocale::INBOX; $class = ''; if ($pm_count = $pm_handler->getCount($criteria)) { $name = XoopsLocale::INBOX . ' <strong>' . $pm_count . '</strong>'; $class = 'highlight'; } array_push($block['modules'], array('name' => $name, 'link' => $xoops->url('viewpmsg.php'), 'icon' => 'icon-envelope', 'class' => $class)); // Logout array_push($block['modules'], array('name' => XoopsLocale::A_LOGOUT, 'link' => $xoops->url('user.php?op=logout'), 'icon' => 'icon-off')); $block['active_url'] = \Xoops\Core\HttpRequest::getInstance()->getUrl(); return $block; }
function xoops_module_pre_uninstall_notifications(&$module) { $xoops = Xoops::getInstance(); XoopsLoad::loadFile($xoops->path('modules/notifications/class/helper.php')); $helper = Notifications::getInstance(); $plugins = \Xoops\Module\Plugin::getPlugins('notifications'); foreach (array_keys($plugins) as $dirname) { $helper->deleteModuleRelations($xoops->getModuleByDirname($dirname)); } return true; }
/** * expects an array of array containing: * name, Name of the submenu * url, Url of the submenu relative to the module * ex: return array(0 => array( * 'name' => _MI_PUBLISHER_SUB_SMNAME3; * 'url' => "search.php"; * )); * * @return array */ public function subMenus() { $ret = array(); $xoops = \Xoops::getInstance(); if ($plugins = \Xoops\Module\Plugin::getPlugins('userconfigs')) { foreach (array_keys($plugins) as $dirname) { $mHelper = $xoops->getModuleHelper($dirname); $ret[$dirname]['name'] = $mHelper->getModule()->getVar('name'); $ret[$dirname]['url'] = 'index.php?op=showmod&mid=' . $mHelper->getModule()->getVar('mid'); } } return $ret; }
/** * Blocks functions * * @copyright XOOPS Project (http://xoops.org) * @license GNU GPL 2 or later (http://www.gnu.org/licenses/gpl-2.0.html) * @author Kazumi Ono (AKA onokazu) * @package system * @version $Id$ */ function b_system_waiting_show() { $block = array(); $plugins = \Xoops\Module\Plugin::getPlugins('system'); /* @var $plugin SystemPluginInterface */ foreach ($plugins as $plugin) { if (is_array($res = $plugin->waiting())) { if (isset($res['count']) && isset($res['name']) && isset($res['link'])) { $block['waiting'][] = $res; } } } return $block; }
public function getSearchFrom($andor, $queries, $mids, $mid) { $xoops = Xoops::getInstance(); $search = Search::getInstance(); // create form parent::__construct(_MD_SEARCH, 'search', 'index.php', 'get'); // create form elements $this->addElement(new Xoops\Form\Text(_MD_SEARCH_KEYWORDS, 'query', 30, 255, htmlspecialchars(stripslashes($this->queryArrayToString($queries)), ENT_QUOTES)), true); $type_select = new Xoops\Form\Select(_MD_SEARCH_TYPE, 'andor', $andor); $type_select->addOptionArray(array('AND' => _MD_SEARCH_ALL, 'OR' => _MD_SEARCH_ANY)); $this->addElement($type_select); if (!empty($mids)) { $mods_checkbox = new Xoops\Form\Checkbox(_MD_SEARCH_SEARCHIN, 'mids[]', $mids); } else { $mods_checkbox = new Xoops\Form\Checkbox(_MD_SEARCH_SEARCHIN, 'mids[]', $mid); } if (empty($modules)) { $gperm_handler = $xoops->getHandlerGroupperm(); $available_modules = $gperm_handler->getItemIds('module_read', $xoops->getUserGroups()); $available_plugins = \Xoops\Module\Plugin::getPlugins('search'); //todo, would be nice to have the module ids availabe also $criteria = new CriteriaCompo(); $criteria->add(new Criteria('dirname', "('" . implode("','", array_keys($available_plugins)) . "')", 'IN')); if (isset($available_modules) && !empty($available_modules)) { $criteria->add(new Criteria('mid', '(' . implode(',', $available_modules) . ')', 'IN')); } $module_handler = $xoops->getHandlerModule(); $mods_checkbox->addOptionArray($module_handler->getNameList($criteria)); } else { /* @var $module XoopsModule */ $module_array = array(); foreach ($modules as $mid => $module) { $module_array[$mid] = $module->getVar('name'); } $mods_checkbox->addOptionArray($module_array); } $this->addElement($mods_checkbox); if ($search->getConfig('keyword_min') > 0) { $this->addElement(new Xoops\Form\Label(_MD_SEARCH_SEARCHRULE, sprintf(_MD_SEARCH_KEYIGNORE, $search->getConfig('keyword_min')))); } $this->addElement(new Xoops\Form\Hidden('action', 'results')); $this->addElement(new Xoops\Form\Token('id')); $this->addElement(new Xoops\Form\Button('', 'submit', _MD_SEARCH, 'submit')); return $this; }
/** * @param XoopsModule|null $mod */ public function getModulesForm($mod = null) { $xoops = Xoops::getInstance(); $mid = 0; if ($mod instanceof XoopsModule) { $mid = $mod->getVar('mid'); } /* @var $plugin UserconfigsPluginInterface */ if ($plugins = \Xoops\Module\Plugin::getPlugins('userconfigs')) { parent::__construct('', 'pref_form', 'index.php', 'post', true, 'inline'); $ele = new Xoops\Form\Select(_MD_USERCONFIGS_CHOOSE_MODULE, 'mid', $mid); foreach (array_keys($plugins) as $dirname) { $mHelper = $xoops->getModuleHelper($dirname); $ele->addOption($mHelper->getModule()->getVar('mid'), $mHelper->getModule()->getVar('name')); } $this->addElement($ele); $this->addElement(new Xoops\Form\Hidden('op', 'showmod')); $this->addElement(new Xoops\Form\Button('', 'button', XoopsLocale::A_SUBMIT, 'submit')); } }
$system = System::getInstance(); if (!$xoops->isUser() || !$xoops->isModule() || !$xoops->user->isAdmin($xoops->module->mid())) { exit(XoopsLocale::E_NO_ACCESS_PERMISSION); } $xoops->logger()->quiet(); //$xoops->disableErrorReporting(); if (isset($_REQUEST["op"])) { $op = $_REQUEST["op"]; } else { @($op = "default"); } switch ($op) { // Display post case 'display_post': include_once $xoops->path('modules/system/include/functions.php'); $uid = $system->cleanVars($_REQUEST, 'uid', 'int'); $total_posts = 0; /* @var $plugin SystemPluginInterface */ $plugins = \Xoops\Module\Plugin::getPlugins(); foreach ($plugins as $plugin) { if ($res = $plugin->userPosts($uid)) { $total_posts += $res; } } $qb = $xoops->db()->createXoopsQueryBuilder(); $eb = $qb->expr(); $sql = $qb->updatePrefix('users')->set('posts', ':posts')->where('uid = :uid')->setParameter(':posts', $total_posts)->setParameter(':uid', $uid); $row_count = $sql->execute(); echo $row_count; break; }
} else { if ($action === "showall") { if ($query == "" || empty($mid)) { $xoops->redirect("index.php", 1, _MD_SEARCH_PLZENTER); } } else { if ($action === "showallbyuser") { if (empty($mid) || empty($uid)) { $xoops->redirect("index.php", 1, _MD_SEARCH_PLZENTER); } } } } $gperm_handler = $xoops->getHandlerGroupPermission(); $available_modules = $gperm_handler->getItemIds('module_read', $xoops->getUserGroups()); $available_plugins = \Xoops\Module\Plugin::getPlugins('search'); if ($action === 'search') { $xoops->header(); /* @var $formHandler SearchSearchForm */ $formHandler = $search->getForm(null, 'search'); $form = $formHandler->getSearchFrom($andor, $queries, $mids, $mid); $form->display(); $xoops->footer(); } if ($andor !== "OR" && $andor !== "exact" && $andor !== "AND") { $andor = "AND"; } $ignored_queries = array(); // holds kewords that are shorter than allowed minmum length $queries_pattern = array(); $myts = \Xoops\Core\Text\Sanitizer::getInstance();
$op = $system->cleanVars($_REQUEST, 'op', 'default', 'string'); // Call Header $xoops->header('admin:comments/comments.tpl'); $admin_page = new \Xoops\Module\Admin(); $admin_page->renderNavigation('main.php'); $limit_array = array(20, 50, 100); $status_array = array(COMMENTS_PENDING => _MD_COMMENTS_PENDING, COMMENTS_ACTIVE => _MD_COMMENTS_ACTIVE, COMMENTS_HIDDEN => _MD_COMMENTS_HIDDEN); $status_array2 = array(COMMENTS_PENDING => '<span style="text-decoration: none; font-weight: bold; color: #008000;">' . _MD_COMMENTS_PENDING . '</span>', COMMENTS_ACTIVE => '<span style="text-decoration: none; font-weight: bold; color: #ff0000;">' . _MD_COMMENTS_ACTIVE . '</span>', COMMENTS_HIDDEN => '<span style="text-decoration: none; font-weight: bold; color: #0000ff;">' . _MD_COMMENTS_HIDDEN . '</span>'); $start = 0; $status_array[0] = _AM_COMMENTS_FORM_ALL_STATUS; $comments = array(); $status = !isset($_REQUEST['status']) || !in_array((int) $_REQUEST['status'], array_keys($status_array)) ? 0 : (int) $_REQUEST['status']; $module = !isset($_REQUEST['module']) ? 0 : (int) $_REQUEST['module']; $modules_array = array(); $module_handler = $xoops->getHandlerModule(); $available_plugins = \Xoops\Module\Plugin::getPlugins('comments'); if (!empty($available_plugins)) { $criteria = new Criteria('dirname', "('" . implode("','", array_keys($available_plugins)) . "')", 'IN'); $module_array = $module_handler->getNameList($criteria); } $module_array[0] = _AM_COMMENTS_FORM_ALL_MODS; $comment_handler = $helper->getHandlerComment(); switch ($op) { case 'comments_jump': $id = $system->cleanVars($_GET, 'item_id', 0, 'int'); if ($id > 0) { $comment = $comment_handler->get($id); if (is_object($comment)) { /* @var $plugin CommentsPluginInterface */ $module = $xoops->getModuleById($comment->getVar('modid')); $plugin = Xoops\Module\Plugin::getPlugin($module->getVar('dirname'), 'comments');
/** * @copyright XOOPS Project (http://xoops.org) * @license GNU GPL 2 or later (http://www.gnu.org/licenses/gpl-2.0.html) * @package Comments * @author trabis <*****@*****.**> * @author Kazumi Ono (AKA onokazu) http://www.myweb.ne.jp/, http://jp.xoops.org/ * @version $Id$ */ function b_comments_show($options) { $xoops = Xoops::getInstance(); $helper = $xoops->getModuleHelper('comments'); $block = array(); $available_modules = \Xoops\Module\Plugin::getPlugins('comments'); if (empty($available_modules)) { return $block; } $comment_handler = $helper->getHandlerComment(); $criteria = new CriteriaCompo(new Criteria('status', Comments::STATUS_ACTIVE)); $criteria->setLimit((int) $options[0]); $criteria->setSort('created'); $criteria->setOrder('DESC'); // Check modules permissions $moduleperm_handler = $xoops->getHandlerGroupPermission(); $gperm_groupid = $xoops->getUserGroups(); $criteria1 = new CriteriaCompo(new Criteria('gperm_name', 'module_read', '=')); $criteria1->add(new Criteria('gperm_groupid', '(' . implode(',', $gperm_groupid) . ')', 'IN')); $perms = $moduleperm_handler->getObjects($criteria1, true); $modIds = array(); foreach ($perms as $item) { $modIds[] = $item->getVar('gperm_itemid'); } if (count($modIds) > 0) { $modIds = array_unique($modIds); $criteria->add(new Criteria('modid', '(' . implode(',', $modIds) . ')', 'IN')); } else { return $block; } $comments = $comment_handler->getObjects($criteria, true); $member_handler = $xoops->getHandlerMember(); $module_handler = $xoops->getHandlerModule(); $modules = $module_handler->getObjectsArray(new Criteria('dirname', "('" . implode("','", array_keys($available_modules)) . "')", 'IN'), true); $comment_config = array(); foreach (array_keys($comments) as $i) { $mid = $comments[$i]->getVar('modid'); $com['module'] = '<a href="' . \XoopsBaseConfig::get('url') . '/modules/' . $modules[$mid]->getVar('dirname') . '/">' . $modules[$mid]->getVar('name') . '</a>'; if (!isset($comment_config[$mid])) { $comment_config[$mid] = \Xoops\Module\Plugin::getPlugin($modules[$mid]->getVar('dirname'), 'comments'); } $com['id'] = $i; $com['title'] = '<a href="' . \XoopsBaseConfig::get('url') . '/modules/' . $modules[$mid]->getVar('dirname') . '/' . $comment_config[$mid]->pageName() . '?' . $comment_config[$mid]->itemName() . '=' . $comments[$i]->getVar('itemid') . '&com_id=' . $i . '&com_rootid=' . $comments[$i]->getVar('rootid') . '&' . htmlspecialchars($comments[$i]->getVar('exparams')) . '#comment' . $i . '">' . $comments[$i]->getVar('title') . '</a>'; $com['icon'] = htmlspecialchars($comments[$i]->getVar('icon'), ENT_QUOTES); $com['icon'] = $com['icon'] != '' ? $com['icon'] : 'icon1.gif'; $com['time'] = XoopsLocale::formatTimestamp($comments[$i]->getVar('created'), 'm'); if ($comments[$i]->getVar('uid') > 0) { $poster = $member_handler->getUser($comments[$i]->getVar('uid')); if (is_object($poster)) { $com['poster'] = '<a href="' . \XoopsBaseConfig::get('url') . '/userinfo.php?uid=' . $comments[$i]->getVar('uid') . '">' . $poster->getVar('uname') . '</a>'; } else { $com['poster'] = $xoops->getConfig('anonymous'); } } else { $com['poster'] = $xoops->getConfig('anonymous'); } $block['comments'][] = $com; unset($com); } return $block; }