コード例 #1
0
ファイル: topposters.php プロジェクト: ming-hai/XoopsCore
/**
 * 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;
}
コード例 #2
0
ファイル: SelectUser.php プロジェクト: redmexico/XoopsCore
 /**
  * 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 . '&amp;multiple=' . $multiple . '&amp;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);
 }
コード例 #3
0
ファイル: smiley.php プロジェクト: redmexico/XoopsCore
 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);
 }
コード例 #4
0
ファイル: image.php プロジェクト: ming-hai/XoopsCore
 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);
 }
コード例 #5
0
ファイル: category.php プロジェクト: redmexico/XoopsCore
 /**
  * @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');
 }
コード例 #6
0
ファイル: newmembers.php プロジェクト: ming-hai/XoopsCore
/**
 * @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;
}
コード例 #7
0
ファイル: file.php プロジェクト: ming-hai/XoopsCore
 /**
  * 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;
 }
コード例 #8
0
ファイル: archive.php プロジェクト: redmexico/XoopsCore
 $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')) . '&amp;body=' . sprintf(_CO_PUBLISHER_INTITEMFOUND, $xoops->getConfig('sitename')) . ':  ' . $item->getItemUrl();
         $xoopsTpl->append('stories', $story);
     }
コード例 #9
0
ファイル: main.php プロジェクト: redmexico/XoopsCore
 $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&amp;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);
コード例 #10
0
ファイル: category.php プロジェクト: ming-hai/XoopsCore
 /**
  * @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;
 }
コード例 #11
0
ファイル: item.php プロジェクト: ming-hai/XoopsCore
 /**
  * @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;
 }