/** * 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_topposters_show($options) { $xoops = Xoops::getInstance(); $block = array(); $criteria = new CriteriaCompo(new Criteria('level', 0, '>')); $limit = !empty($options[0]) ? $options[0] : 10; $size = count($options); for ($i = 2; $i < $size; ++$i) { $criteria->add(new Criteria('rank', $options[$i], '<>')); } $criteria->setOrder('DESC'); $criteria->setSort('posts'); $criteria->setLimit($limit); $member_handler = $xoops->getHandlerMember(); $topposters = $member_handler->getUsers($criteria); $count = count($topposters); for ($i = 0; $i < $count; ++$i) { $block['users'][$i]['rank'] = $i + 1; if ($options[1] == 1) { $block['users'][$i]['avatar'] = $topposters[$i]->getVar('user_avatar') !== 'blank.gif' ? \XoopsBaseConfig::get('uploads-url') . '/' . $topposters[$i]->getVar('user_avatar') : ''; } else { $block['users'][$i]['avatar'] = ''; } $block['users'][$i]['id'] = $topposters[$i]->getVar('uid'); $block['users'][$i]['name'] = $topposters[$i]->getVar('uname'); $block['users'][$i]['posts'] = $topposters[$i]->getVar('posts'); } return $block; }
/** * Constructor * * @param string $caption caption * @param string $name element name * @param bool $include_anon Include user "anonymous"? * @param mixed $value Pre-selected value (or array of them). * For an item with massive members, such as "Registered Users", * "$value" should be used to store selected temporary users only * instead of all members of that item * @param int $size Number or rows. "1" makes a drop-down-list. * @param bool $multiple Allow multiple selections? */ public function __construct($caption, $name, $include_anon = false, $value = null, $size = 1, $multiple = false) { $xoops = \Xoops::getInstance(); $limit = 200; $select_element = new Select('', $name, $value, $size, $multiple); if ($include_anon) { $select_element->addOption(0, $xoops->getConfig('anonymous')); } $member_handler = $xoops->getHandlerMember(); $user_count = $member_handler->getUserCount(); $value = is_array($value) ? $value : (empty($value) ? array() : array($value)); if ($user_count > $limit && count($value) > 0) { $criteria = new CriteriaCompo(new Criteria('uid', '(' . implode(',', $value) . ')', 'IN')); } else { $criteria = new CriteriaCompo(); $criteria->setLimit($limit); } $criteria->setSort('uname'); $criteria->setOrder('ASC'); $users = $member_handler->getUserList($criteria); $select_element->addOptionArray($users); if ($user_count <= $limit) { parent::__construct($caption, "", $name); $this->addElement($select_element); return; } $js_addusers = "<script type='text/javascript'>\n function addusers(opts){\n var num = opts.substring(0, opts.indexOf(':'));\n opts = opts.substring(opts.indexOf(':')+1, opts.length);\n var sel = xoopsGetElementById('" . $name . "');\n var arr = new Array(num);\n for (var n=0; n < num; n++) {\n var nm = opts.substring(0, opts.indexOf(':'));\n opts = opts.substring(opts.indexOf(':')+1, opts.length);\n var val = opts.substring(0, opts.indexOf(':'));\n opts = opts.substring(opts.indexOf(':')+1, opts.length);\n var txt = opts.substring(0, nm - val.length);\n opts = opts.substring(nm - val.length, opts.length);\n var added = false;\n for (var k = 0; k < sel.options.length; k++) {\n if(sel.options[k].value == val){\n added = true;\n break;\n }\n }\n if (added == false) {\n sel.options[k] = new Option(txt, val);\n sel.options[k].selected = true;\n }\n }\n return true;\n }\n </script>"; $token = $xoops->security()->createToken(); $action_tray = new ElementTray("", " | "); $action_tray->addElement(new Label('', '<a href="#" onclick="var sel = xoopsGetElementById(\'' . $name . '\');for (var i = sel.options.length-1; i >= 0; i--) {if (!sel.options[i].selected) ' . '{sel.options[i] = null;}}; return false;">' . \XoopsLocale::REMOVE_UNSELECTED_USERS . "</a>")); $action_tray->addElement(new Label('', '<a href="#" onclick="openWithSelfMain(\'' . \XoopsBaseConfig::get('url') . '/include/findusers.php?target=' . $name . '&multiple=' . $multiple . '&token=' . $token . '\', \'userselect\', 800, 600, null); return false;" >' . \XoopsLocale::SEARCH_USERS . "</a>" . $js_addusers)); parent::__construct($caption, '<br /><br />', $name); $this->addElement($select_element); $this->addElement($action_tray); }
public function getSmilies($start = 0, $limit = 0, $asobject = true) { $criteria = new CriteriaCompo(); $criteria->setSort('smiley_id'); $criteria->setOrder('ASC'); $criteria->setStart($start); $criteria->setLimit($limit); return parent::getAll($criteria, false, $asobject); }
public function getByCategory($imgcat_id, $start = 0, $limit = 0, $asobject = true) { $criteria = new CriteriaCompo(); $criteria->add(new Criteria('imgcat_id', $imgcat_id)); $criteria->setSort('image_weight'); $criteria->setOrder('ASC'); $criteria->setStart($start); $criteria->setLimit($limit); return parent::getObjects($criteria, null, $asobject); }
/** * @param CriteriaElement|null $criteria * @param bool $id_as_key * * @return array */ public function getPermittedObjects($criteria = null, $start = 0, $limit = 0, $id_as_key = false, $asobject = true) { $this->table_link = $this->db2->prefix('system_permission'); if (isset($criteria)) { $criteria = new CriteriaCompo($criteria); } else { $criteria = new CriteriaCompo(); } $criteria->setSort('o.imgcat_weight, o.imgcat_id'); $criteria->setOrder('ASC'); $criteria->setStart($start); $criteria->setLimit($limit); return parent::getByLink($criteria, null, $asobject, 'gperm_itemid', 'imgcat_id'); }
/** * @return array|bool|string */ function b_system_newmembers_show($options) { $xoops = Xoops::getInstance(); $block = array(); $criteria = new CriteriaCompo(new Criteria('level', 0, '>')); $limit = !empty($options[0]) ? $options[0] : 10; $criteria->setOrder('DESC'); $criteria->setSort('user_regdate'); $criteria->setLimit($limit); $member_handler = $xoops->getHandlerMember(); $newmembers = $member_handler->getUsers($criteria); $count = count($newmembers); for ($i = 0; $i < $count; ++$i) { if ($options[1] == 1) { $block['users'][$i]['avatar'] = $newmembers[$i]->getVar('user_avatar') !== 'blank.gif' ? \XoopsBaseConfig::get('uploads-url') . '/' . $newmembers[$i]->getVar('user_avatar') : ''; } else { $block['users'][$i]['avatar'] = ''; } $block['users'][$i]['id'] = $newmembers[$i]->getVar('uid'); $block['users'][$i]['name'] = $newmembers[$i]->getVar('uname'); $block['users'][$i]['joindate'] = XoopsLocale::formatTimestamp($newmembers[$i]->getVar('user_regdate'), 's'); } return $block; }
/** * retrieve all files * * @param int $itemid * @param int $status * @param int $limit * @param int $start * @param string $sort * @param string $order * @param array $category * * @return array array of {@link PublisherFile} objects */ public function &getAllFiles($itemid = 0, $status = -1, $limit = 0, $start = 0, $sort = 'datesub', $order = 'DESC', $category = array()) { $this->table_link = $this->db2->prefix('publisher_items'); $this->field_object = 'itemid'; $this->field_link = 'itemid'; $hasStatusCriteria = false; $criteriaStatus = new CriteriaCompo(); if (is_array($status)) { $hasStatusCriteria = true; foreach ($status as $v) { $criteriaStatus->add(new Criteria('o.status', $v), 'OR'); } } elseif ($status != -1) { $hasStatusCriteria = true; $criteriaStatus->add(new Criteria('o.status', $status), 'OR'); } $hasCategoryCriteria = false; $criteriaCategory = new CriteriaCompo(); $category = (array) $category; if (count($category) > 0 && $category[0] != 0) { $hasCategoryCriteria = true; foreach ($category as $cat) { $criteriaCategory->add(new Criteria('l.categoryid', $cat), 'OR'); } } $criteriaItemid = new Criteria('o.itemid', $itemid); $criteria = new CriteriaCompo(); if ($itemid != 0) { $criteria->add($criteriaItemid); } if ($hasStatusCriteria) { $criteria->add($criteriaStatus); } if ($hasCategoryCriteria) { $criteria->add($criteriaCategory); } $criteria->setSort($sort); $criteria->setOrder($order); $criteria->setLimit($limit); $criteria->setStart($start); $files = $this->getByLink($criteria, array('o.*'), true); return $files; }
$itemhandler->table_link = $xoops->db()->prefix('publisher_categories'); $itemhandler->field_link = 'categoryid'; $itemhandler->field_object = 'categoryid'; // Categories for which user has access $categoriesGranted = $publisher->getPermissionHandler()->getGrantedItems('category_read'); $grantedCategories = new Criteria('l.categoryid', "(" . implode(',', $categoriesGranted) . ")", 'IN'); $criteria = new CriteriaCompo(); $criteria->add($grantedCategories, 'AND'); $criteria->add(new Criteria('o.status', 2), 'AND'); $critdatesub = new CriteriaCompo(); $critdatesub->add(new Criteria('o.datesub', $monthstart, '>'), 'AND'); $critdatesub->add(new Criteria('o.datesub', $monthend, '<='), 'AND'); $criteria->add($critdatesub); $criteria->setSort('o.datesub'); $criteria->setOrder('DESC'); $criteria->setLimit(3000); $storyarray = $itemhandler->getByLink($criteria); //Query Efficiency? /* @var $item PublisherItem */ $count = count($storyarray); if (is_array($storyarray) && $count > 0) { foreach ($storyarray as $item) { $story = array(); $htmltitle = ''; $story['title'] = "<a href='" . \XoopsBaseConfig::get('url') . '/modules/publisher/category.php?categoryid=' . $item->getVar('categoryid') . "'>" . $item->getCategoryName() . "</a>: <a href='" . $item->getItemUrl() . "'" . $htmltitle . ">" . $item->title() . "</a>"; $story['counter'] = $item->getVar('counter'); $story['date'] = $item->datesub(); $story['print_link'] = \XoopsBaseConfig::get('url') . '/modules/publisher/print.php?itemid=' . $item->getVar('itemid'); $story['mail_link'] = 'mailto:?subject=' . sprintf(_CO_PUBLISHER_INTITEM, $xoops->getConfig('sitename')) . '&body=' . sprintf(_CO_PUBLISHER_INTITEMFOUND, $xoops->getConfig('sitename')) . ': ' . $item->getItemUrl(); $xoopsTpl->append('stories', $story); }
$admin_page->addBreadcrumbLink(SystemLocale::CONTROL_PANEL, \XoopsBaseConfig::get('url') . '/admin.php', true); $admin_page->addBreadcrumbLink(SystemLocale::GROUPS_MANAGER, $system->adminVersion('groups', 'adminpath')); $admin_page->addBreadcrumbLink(XoopsLocale::MAIN); $admin_page->addItemButton(SystemLocale::ADD_NEW_GROUP, 'admin.php?fct=groups&op=groups_add', 'add'); $admin_page->addTips(SystemLocale::GROUPS_TIPS_1); $admin_page->renderBreadcrumb(); $admin_page->renderTips(); $admin_page->renderButton(); // Get start pager $start = $system->cleanVars($_REQUEST, 'start', 0, 'int'); // Criteria $criteria = new CriteriaCompo(); $criteria->setSort("groupid"); $criteria->setOrder("ASC"); $criteria->setStart($start); $criteria->setLimit($nb_group); $groups_arr = $groups_handler->getAll($criteria); // Count group $groups_count = count($groups_arr); // Assign Template variables $xoops->tpl()->assign('groups_count', $groups_count); /* @var $group XoopsGroup */ foreach ($groups_arr as $group) { $groups_id = $group->getVar("groupid"); $groups['groups_id'] = $groups_id; $groups['name'] = $group->getVar("name"); $groups['description'] = $group->getVar("description"); $member_handler = $xoops->getHandlerMember(); if ($groups_id != 3) { $group_id_arr[0] = $groups_id; $nb_users_by_groups = $member_handler->getUserCountByGroupLink($group_id_arr);
/** * @param int $limit * @param int $start * @param int $parentid * @param string $sort * @param string $order * @param bool $id_as_key * * @return array */ public function &getCategories($limit = 0, $start = 0, $parentid = 0, $sort = 'weight', $order = 'ASC', $id_as_key = true) { $xoops = Xoops::getInstance(); $ret = array(); $criteria = new CriteriaCompo(); $criteria->setSort($sort); $criteria->setOrder($order); if ($parentid != -1) { $criteria->add(new Criteria('parentid', $parentid)); } if (!PublisherUtils::IsUserAdmin()) { $categoriesGranted = $this->publisher->getPermissionHandler()->getGrantedItems('category_read'); if (count($categoriesGranted) > 0) { $criteria->add(new Criteria('categoryid', '(' . implode(',', $categoriesGranted) . ')', 'IN')); } else { return $ret; } if ($xoops->isUser()) { $criteria->add(new Criteria('moderator', $xoops->user->getVar('uid')), 'OR'); } } $criteria->setStart($start); $criteria->setLimit($limit); $ret = $this->getObjects($criteria, $id_as_key); return $ret; }
/** * @param array $queryarray * @param string $andor * @param int $limit * @param int $offset * @param int $userid * @param array $categories * @param int $sortby * @param string $searchin * @param string $extra * * @return array */ public function getItemsFromSearch($queryarray = array(), $andor = 'AND', $limit = 0, $offset = 0, $userid = 0, $categories = array(), $sortby = 0, $searchin = "", $extra = "") { $xoops = Xoops::getInstance(); $ret = array(); $gperm_handler = $xoops->getHandlerGroupPermission(); $groups = $xoops->getUserGroups(); $searchin = empty($searchin) ? array("title", "body", "summary") : (is_array($searchin) ? $searchin : array($searchin)); if (in_array("all", $searchin) || count($searchin) == 0) { $searchin = array("title", "subtitle", "body", "summary", "meta_keywords"); } if (is_array($userid) && count($userid) > 0) { $userid = array_map("intval", $userid); $criteriaUser = new CriteriaCompo(); $criteriaUser->add(new Criteria('uid', '(' . implode(',', $userid) . ')', 'IN'), 'OR'); } elseif (is_numeric($userid) && $userid > 0) { $criteriaUser = new CriteriaCompo(); $criteriaUser->add(new Criteria('uid', $userid), 'OR'); } $count = count($queryarray); if (is_array($queryarray) && $count > 0) { $criteriaKeywords = new CriteriaCompo(); for ($i = 0; $i < count($queryarray); ++$i) { $criteriaKeyword = new CriteriaCompo(); if (in_array('title', $searchin)) { $criteriaKeyword->add(new Criteria('title', '%' . $queryarray[$i] . '%', 'LIKE'), 'OR'); } if (in_array('subtitle', $searchin)) { $criteriaKeyword->add(new Criteria('subtitle', '%' . $queryarray[$i] . '%', 'LIKE'), 'OR'); } if (in_array('body', $searchin)) { $criteriaKeyword->add(new Criteria('body', '%' . $queryarray[$i] . '%', 'LIKE'), 'OR'); } if (in_array('summary', $searchin)) { $criteriaKeyword->add(new Criteria('summary', '%' . $queryarray[$i] . '%', 'LIKE'), 'OR'); } if (in_array('meta_keywords', $searchin)) { $criteriaKeyword->add(new Criteria('meta_keywords', '%' . $queryarray[$i] . '%', 'LIKE'), 'OR'); } $criteriaKeywords->add($criteriaKeyword, $andor); unset($criteriaKeyword); } } if (!PublisherUtils::IsUserAdmin() && count($categories) > 0) { $criteriaPermissions = new CriteriaCompo(); // Categories for which user has access $categoriesGranted = $gperm_handler->getItemIds('category_read', $groups, $this->publisher->getModule()->getVar('mid')); if (count($categories) > 0) { $categoriesGranted = array_intersect($categoriesGranted, $categories); } if (count($categoriesGranted) == 0) { return $ret; } $grantedCategories = new Criteria('categoryid', "(" . implode(',', $categoriesGranted) . ")", 'IN'); $criteriaPermissions->add($grantedCategories, 'AND'); } elseif (count($categories) > 0) { $criteriaPermissions = new CriteriaCompo(); $grantedCategories = new Criteria('categoryid', "(" . implode(',', $categories) . ")", 'IN'); $criteriaPermissions->add($grantedCategories, 'AND'); } $criteriaItemsStatus = new CriteriaCompo(); $criteriaItemsStatus->add(new Criteria('status', _PUBLISHER_STATUS_PUBLISHED)); $criteria = new CriteriaCompo(); if (!empty($criteriaUser)) { $criteria->add($criteriaUser, 'AND'); } if (!empty($criteriaKeywords)) { $criteria->add($criteriaKeywords, 'AND'); } if (!empty($criteriaPermissions)) { $criteria->add($criteriaPermissions); } if (!empty($criteriaItemsStatus)) { $criteria->add($criteriaItemsStatus, 'AND'); } $criteria->setLimit($limit); $criteria->setStart($offset); if (empty($sortby)) { $sortby = "datesub"; } $criteria->setSort($sortby); $order = 'ASC'; if ($sortby === "datesub") { $order = 'DESC'; } $criteria->setOrder($order); $ret = $this->getItemObjects($criteria); return $ret; }