Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/User/Group/GroupList.php
Строк: 112
<?php
namespace ConcreteCoreUserGroup;

use 
ConcreteCoreSearchItemListDatabaseItemList as DatabaseItemList;
use 
ConcreteCoreSearchPaginationPagination;
use 
Loader;
use 
Config;
use 
PagerfantaAdapterDoctrineDbalAdapter;
use 
Permissions;

class 
GroupList extends DatabaseItemList
{

    protected 
$includeAllGroups false;

    protected 
$autoSortColumns = array('gName''gID');

    public function 
includeAllGroups()
    {
        
$this->includeAllGroups true;
    }

    
/**
     * Filters keyword fields by keywords (including name and description).
     * @param $keywords
     */
    
public function filterByKeywords($keywords)
    {
        
$expressions = array(
            
$this->query->expr()->like('g.gName'':keywords'),
            
$this->query->expr()->like('g.gDescription'':keywords')
        );

        
$expr $this->query->expr();
        
$this->query->andWhere(call_user_func_array(array($expr'orX'), $expressions));
        
$this->query->setParameter('keywords''%' $keywords '%');
    }

    public function 
filterByExpirable()
    {
        
$this->query->andWhere('gUserExpirationIsEnabled'':gUserExpirationIsEnabled');
        
$this->query->setParameter('gUserExpirationIsEnabled'1);
    }

    
/**
     * Only return groups the user has the ability to assign.
     */
    
public function filterByAssignable()
    {
        if (
Config::get('concrete.permissions.model') != 'simple') {
            
// there's gotta be a more reasonable way than this but right now i'm not sure what that is.
            
$excludeGroupIDs = array(GUEST_GROUP_IDREGISTERED_GROUP_ID);
            
$db Loader::db();
            
$r $db->Execute('select gID from Groups where gID > ?', array(REGISTERED_GROUP_ID));
            while (
$row $r->FetchRow()) {
                
$g Group::getByID($row['gID']);
                
$gp = new Permissions($g);
                if (!
$gp->canAssignGroup()) {
                    
$excludeGroupIDs[] = $row['gID'];
                }
            }
            
$this->query->andWhere(
                
$this->query->expr()->notIn('g.gId'array_map(array($db'quote'), $excludeGroupIDs))
            );
        }
    }

    public function 
filterByUserID($uID)
    {
        
$this->query->innerJoin('g''UserGroups''ug''g.gID = ug.gID');
        
$this->query->andWhere('ug.uID = :uID');
        
$this->query->setParameter('uID'$uID);
    }

    public function 
createQuery()
    {
        
$this->query->select('g.gID')
            ->
from('Groups''g');
    }

    public function 
finalizeQuery(DoctrineDBALQueryQueryBuilder $query)
    {
        if (!
$this->includeAllGroups) {
            
$query->andWhere('g.gID > :minGroupID');
            
$query->setParameter('minGroupID'REGISTERED_GROUP_ID);
        }
        return 
$query;
    }

    
/**
     * The total results of the query
     * @return int
     */
    
public function getTotalResults()
    {
        
$query $this->deliverQueryObject();
        return 
$query->select('count(g.gID)')->setMaxResults(1)->execute()->fetchColumn();
    }

    
/**
     * Gets the pagination object for the query.
     * @return Pagination
     */
    
protected function createPaginationObject()
    {
        
$adapter = new DoctrineDbalAdapter($this->deliverQueryObject(), function ($query) {
            
$query->select('count(g.gID)')->setMaxResults(1);
        });
        
$pagination = new Pagination($this$adapter);
        return 
$pagination;
    }

    
/**
     * @param $queryRow
     * @return ConcreteCoreUserGroupGroup
     */
    
public function getResult($queryRow)
    {
        
$g Group::getByID($queryRow['gID']);
        return 
$g;
    }


}
Онлайн: 2
Реклама