Вход Регистрация
Файл: plugins/searchsys/classes/event_handler.php
Строк: 1028
<?php

class SEARCHSYS_CLASS_EventHandler
{
    
/**
     * Class instance
     *
     * @var SEARCHSYS_CLASS_EventHandler
     */
    
private static $classInstance;

    
/**
     * Returns class instance
     *
     * @return SEARCHSYS_CLASS_EventHandler
     */
    
public static function getInstance()
    {
        if ( !isset(
self::$classInstance) )
        {
            
self::$classInstance = new self();
        }

        return 
self::$classInstance;
    }

    
/**
     * @param BASE_CLASS_ConsoleItemCollector $event
     */
    
public function addConsoleSearchCmpBASE_CLASS_ConsoleItemCollector $event )
    {
        if ( !
PEEP::getUser()->isAuthorized('searchsys''site_search') )
        {
            return;
        }

        if ( !
PEEP::getConfig()->getValue('searchsys''site_search_enabled') )
        {
            return;
        }

        
$cmp = new SEARCHSYS_CMP_SiteSearch();

        
$event->addItem($cmp1000);
    }


    
/**
     * @param $found
     * @param $key
     * @return array|null
     */
    
private function getAvatarsByFoundItems$found$key )
    {
        if ( !
$found )
        {
            return 
null;
        }

        
$userIdList = array();
        foreach ( 
$found as $item )
        {
            if ( !
in_array($item[$key], $userIdList) )
            {
                
array_push($userIdList$item[$key]);
            }
        }

        
$avatars BOL_AvatarService::getInstance()->getDataForUserAvatars($userIdList);

        return 
$avatars;
    }

    
// Users
    
public function addUsersSearchResultGroupBASE_CLASS_EventCollector $ec )
    {
        
$group = array(
            
'pluginKey' => 'base',
            
'key' => 'users',
            
'priority' => 1000,
            
'label' => PEEP::getLanguage()->text('base''users'),
            
'url' => PEEP::getRouter()->urlForRoute('users')
        );

        
$ec->add($group);
    }

    public function 
searchUsersGroupBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'users' )
        {
            
$query PEEP::getDbo()->escapeString('%' $params['query'] . '%');
            
$offset = (int) $params['offset'];
            
$limit = (int) $params['limit'];

            
$queryParts BOL_UserDao::getInstance()->getUserQueryFilter("u""id", array(
                
"method" => "SEARCHSYS_CLASS_EventHandler::searchUsersGroup"
            
));

            
$questionName PEEP::getConfig()->getValue('base''display_name_question');
            
            
$realnameCond $questionName == 'realname' "OR `name` = 'realname'" '';
            
$questionsSql "SELECT `name` FROM `"BOL_QuestionDao::getInstance()->getTableName() ."`
                WHERE `type` = 'text' AND (`onSearch` = 1 
$realnameCond )
                ORDER BY `sortOrder` ASC"
;

            
$questions PEEP::getDbo()->queryForColumnList($questionsSql);
            
            switch ( 
$questionName )
            {
                case 
'username':
                    if ( 
$questions )
                    {
                        
$sql "SELECT `u`.*, `qd`.`textValue` FROM `" BOL_UserDao::getInstance()->getTableName() . "` AS `u` " .
                            
$queryParts["join"] .
                            
"LEFT JOIN `" BOL_QuestionDataDao::getInstance()->getTableName() . "` AS `qd`
                            ON (`u`.`id` = `qd`.`userId` AND `qd`.`questionName` IN (" 
PEEP::getDbo()->mergeInClause($questions) . ") ) " .
                            
" WHERE " $queryParts["where"] . 
                            
" AND ( `u`.`username` LIKE '" $query "' collate utf8_general_ci " .
                            
" OR `qd`.`textValue` LIKE '" $query "' collate utf8_general_ci ) " .
                            
" GROUP BY `u`.`id` " .
                            
" ORDER BY `u`.`activityStamp` DESC
                            LIMIT :offset, :limit"
;
                    }
                    else
                    {
                        
$sql "SELECT `u`.* FROM `" BOL_UserDao::getInstance()->getTableName() . "` AS `u` " .
                            
$queryParts["join"] .
                            
"LEFT JOIN `" BOL_QuestionDataDao::getInstance()->getTableName() . "` AS `qd`" .
                            
" WHERE " $queryParts["where"] .
                            
" AND ( `u`.`username` LIKE '" $query "' collate utf8_general_ci ) " .
                            
"ORDER BY `u`.`activityStamp` DESC
                            LIMIT :offset, :limit"
;
                    }
                    
                    break;
                
                case 
'realname':
                    
$sql "SELECT `u`.*, `qd`.`textValue` FROM `" BOL_UserDao::getInstance()->getTableName() . "` AS `u` " .
                        
$queryParts["join"] .
                        
"LEFT JOIN `" BOL_QuestionDataDao::getInstance()->getTableName() . "` AS `qd`
                            ON (`u`.`id` = `qd`.`userId` AND `qd`.`questionName` IN (" 
PEEP::getDbo()->mergeInClause($questions) . ") ) " .
                        
" WHERE " $queryParts["where"] .
                        
" AND ( `qd`.`textValue` LIKE '" $query "' collate utf8_general_ci ) " .
                        
" GROUP BY `u`.`id` " .
                        
"ORDER BY `u`.`activityStamp` DESC
                        LIMIT :offset, :limit"
;
                    
                    break;
            }

            
$found PEEP::getDbo()->queryForList($sql, array('offset' => $offset'limit' => $limit));

            
$list = array();
            if ( 
$found )
            {
                
$defAvatar BOL_AvatarService::getInstance()->getDefaultAvatarUrl();
                
$avatars $this->getAvatarsByFoundItems($found'id');

                foreach ( 
$found as $item )
                {
                    
$data = array(
                        
'id' => $key '_' $item['id'],
                        
'url' => !empty($avatars[$item['id']]) ? $avatars[$item['id']]['url'] : null,
                        
'avatar' => !empty($avatars[$item['id']]) ? $avatars[$item['id']] : $defAvatar,
                        
'text' => !empty($avatars[$item['id']]) ? $avatars[$item['id']]['title'] : null,
                        
'info' => !empty($item['textValue']) ? $item['textValue'] : ''
                    
);

                    
$list[$data['id']] = $data;
                }
            }

            
$result[$key] = $list;

            
$ec->add($result);
        }
    }

    public function 
countUsersGroupResultBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'users' )
        {
            
$query PEEP::getDbo()->escapeString('%' $params['query'] . '%');

            
$queryParts BOL_UserDao::getInstance()->getUserQueryFilter("u""id", array(
                
"method" => "SEARCHSYS_CLASS_EventHandler::searchUsersGroup"
            
));

            
$questionName PEEP::getConfig()->getValue('base''display_name_question');

            
$realnameCond $questionName == 'realname' "OR `name` = 'realname'" '';
            
$questionsSql "SELECT `name` FROM `"BOL_QuestionDao::getInstance()->getTableName() ."`
                WHERE `type` = 'text' AND (`onSearch` = 1 
$realnameCond )
                ORDER BY `sortOrder` ASC"
;

            
$questions PEEP::getDbo()->queryForColumnList($questionsSql);

            switch ( 
$questionName )
            {
                case 
'username':
                    if ( 
$questions )
                    {
                        
$sql "SELECT COUNT(DISTINCT(`u`.`id`)) FROM `" BOL_UserDao::getInstance()->getTableName() . "` AS `u` " .
                            
$queryParts["join"] .
                            
"LEFT JOIN `" BOL_QuestionDataDao::getInstance()->getTableName() . "` AS `qd`
                            ON (`u`.`id` = `qd`.`userId` AND `qd`.`questionName` IN (" 
PEEP::getDbo()->mergeInClause($questions) . ") ) " .
                            
" WHERE " $queryParts["where"] .
                            
" AND ( `u`.`username` LIKE '" $query "' collate utf8_general_ci " .
                            
" OR `qd`.`textValue` LIKE '" $query "' collate utf8_general_ci )";
                    }
                    else
                    {
                        
$sql "SELECT COUNT(DISTINCT(`u`.`id`)) FROM `" BOL_UserDao::getInstance()->getTableName() . "` AS `u` " .
                            
$queryParts["join"] .
                            
"LEFT JOIN `" BOL_QuestionDataDao::getInstance()->getTableName() . "` AS `qd`" .
                            
" WHERE " $queryParts["where"] .
                            
" AND ( `u`.`username` LIKE '" $query "' collate utf8_general_ci ) ";
                    }

                    break;

                case 
'realname':
                    
$sql "SELECT COUNT(DISTINCT(`u`.`id`)) FROM `" BOL_UserDao::getInstance()->getTableName() . "` AS `u` " .
                        
$queryParts["join"] .
                        
"LEFT JOIN `" BOL_QuestionDataDao::getInstance()->getTableName() . "` AS `qd`
                            ON (`u`.`id` = `qd`.`userId` AND `qd`.`questionName` IN (" 
PEEP::getDbo()->mergeInClause($questions) . ") ) " .
                        
" WHERE " $queryParts["where"] .
                        
" AND ( `qd`.`textValue` LIKE '" $query "' collate utf8_general_ci ) ";

                    break;
            }

            
$count PEEP::getDbo()->queryForColumn($sql, array('query' => $query));
            
$result[$key] = $count;

            
$ec->add($result);
        }
    }

    
// Stories
    
public function addStoriesSearchResultGroupBASE_CLASS_EventCollector $ec )
    {
        if ( 
PEEP::getPluginManager()->isPluginActive('stories') )
        {
            
$group = array(
                
'pluginKey' => 'stories',
                
'key' => 'stories',
                
'priority' => 90,
                
'label' => PEEP::getLanguage()->text('stories''auth_group_label'),
                
'url' => PEEP::getRouter()->urlForRoute('stories')
            );

            
$ec->add($group);
        }
    }

    public function 
searchStoriesGroupBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'stories' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];
            
$offset = (int) $params['offset'];
            
$limit = (int) $params['limit'];

            
$storyDao PostDao::getInstance();
            
$sql =
                
"SELECT * FROM `" $storyDao->getTableName() . "`
                WHERE `privacy` = 'everybody' AND `isDraft` = 0 AND (`title` LIKE :query collate utf8_general_ci OR `post` LIKE :query collate utf8_general_ci)
                ORDER BY `timestamp` DESC LIMIT :offset, :limit"
;
            
$found PEEP::getDbo()->queryForList($sql, array('query' => '%'.$query.'%''offset' => $offset'limit' => $limit));

            
$router PEEP::getRouter();
            
$list = array();
            if ( 
$found )
            {
                
$defAvatar BOL_AvatarService::getInstance()->getDefaultAvatarUrl();
                
$avatars $this->getAvatarsByFoundItems($found'authorId');

                foreach ( 
$found as $item )
                {
                    
$data = array(
                        
'id' => $key '_' $item['id'],
                        
'url' => $router->urlForRoute('post', array('id' => $item['id'])),
                        
'avatar' => !empty($avatars[$item['authorId']]) ? $avatars[$item['authorId']] : $defAvatar,
                        
'text' => $item['title'],
                        
'info' => $item['post']
                    );

                    
$list[$data['id']] = $data;
                }
            }

            
$result[$key] = $list;

            
$ec->add($result);
        }
    }

    public function 
countStoriesGroupResultBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'stories' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];

            
$storyDao PostDao::getInstance();
            
$sql =
                
"SELECT COUNT(*) FROM `" $storyDao->getTableName() . "`
                WHERE `privacy` = 'everybody' AND `isDraft` = 0 AND (`title` LIKE :query collate utf8_general_ci OR `post` LIKE :query collate utf8_general_ci)"
;

            
$count PEEP::getDbo()->queryForColumn($sql, array('query' => '%'.$query.'%'));

            
$result[$key] = $count;

            
$ec->add($result);
        }
    }

    
// Forum
    
public function addForumSearchResultGroupBASE_CLASS_EventCollector $ec )
    {
        if ( 
PEEP::getPluginManager()->isPluginActive('forum') )
        {
            
$group = array(
                
'pluginKey' => 'forum',
                
'key' => 'forum',
                
'priority' => 80,
                
'label' => PEEP::getLanguage()->text('forum''auth_group_label'),
                
'url' => PEEP::getRouter()->urlForRoute('forum-default')
            );

            
$ec->add($group);
        }
    }

    public function 
searchForumGroupBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'forum' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query PEEP::getDbo()->escapeString('%' $params['query'] . '%');
            
$offset = (int) $params['offset'];
            
$limit = (int) $params['limit'];

            
$forumService FORUM_BOL_ForumService::getInstance();
            
$router PEEP::getRouter();

            if ( 
PEEP::getUser()->isAuthorized('forum') )
            {
                
$excludeGroupIdList = array();
            }
            else
            {
                
$excludeGroupIdList $forumService->getPrivateUnavailableGroupIdList(PEEP::getUser()->getId());
            }
            
            
$excludeCond $excludeGroupIdList " AND `t`.`groupId` NOT IN (".PEEP::getDbo()->mergeInClause($excludeGroupIdList).") " "";

            
$sql "SELECT `p`.*, `t`.`title`
                FROM `"
.FORUM_BOL_TopicDao::getInstance()->getTableName()."` AS `t`
                INNER JOIN `"
.FORUM_BOL_PostDao::getInstance()->getTableName()."` AS `p` ON(`p`.`topicId` = `t`.`id`)
                WHERE `t`.`status` = 'approved' 
$excludeCond
                AND (`t`.`title` LIKE '" 
$query "' collate utf8_general_ci OR `p`.`text` LIKE '" $query "' collate utf8_general_ci)
                ORDER BY `p`.`createStamp` DESC
                LIMIT :offset, :limit"
;

            
$found PEEP::getDbo()->queryForList($sql, array('offset' => $offset'limit' => $limit));
            
$list = array();
            if ( 
$found )
            {
                
$defAvatar BOL_AvatarService::getInstance()->getDefaultAvatarUrl();
                
$avatars $this->getAvatarsByFoundItems($found'userId');

                foreach ( 
$found as $item )
                {
                    
$data = array(
                        
'id' => $key '_' $item['id'],
                        
'url' => $router->urlForRoute('topic-default', array('topicId' => $item['topicId'])),
                        
'avatar' => !empty($avatars[$item['userId']]) ? $avatars[$item['userId']] : $defAvatar,
                        
'text' => $item['title'],
                        
'info' => $item['text']
                    );

                    
$list[$data['id']] = $data;
                }
            }

            
$result[$key] = $list;

            
$ec->add($result);
        }
    }

    public function 
countForumGroupResultBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'forum' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query PEEP::getDbo()->escapeString('%' $params['query'] . '%');

            
$forumService FORUM_BOL_ForumService::getInstance();

            if ( 
PEEP::getUser()->isAuthorized('forum') )
            {
                
$excludeGroupIdList = array();
            }
            else
            {
                
$excludeGroupIdList $forumService->getPrivateUnavailableGroupIdList(PEEP::getUser()->getId());
            }
            
            
$excludeCond $excludeGroupIdList " AND `t`.`groupId` NOT IN (".PEEP::getDbo()->mergeInClause($excludeGroupIdList).") " "";

            
$sql "SELECT COUNT(`p`.`id`)
                FROM `"
.FORUM_BOL_TopicDao::getInstance()->getTableName()."` AS `t`
                INNER JOIN `"
.FORUM_BOL_PostDao::getInstance()->getTableName()."` AS `p` ON(`p`.`topicId` = `t`.`id`)
                WHERE `t`.`status` = 'approved' 
$excludeCond
                AND (`t`.`title` LIKE '" 
$query "' collate utf8_general_ci OR `p`.`text` LIKE '" $query "' collate utf8_general_ci)";

            
$count PEEP::getDbo()->queryForColumn($sql);

            
$result[$key] = $count;

            
$ec->add($result);
        }
    }

    
// Event
    
public function addEventSearchResultGroupBASE_CLASS_EventCollector $ec )
    {
        if ( 
PEEP::getPluginManager()->isPluginActive('event') )
        {
            
$group = array(
                
'pluginKey' => 'event',
                
'key' => 'event',
                
'priority' => 60,
                
'label' => PEEP::getLanguage()->text('event''auth_group_label'),
                
'url' => PEEP::getRouter()->urlForRoute('event.main_menu_route')
            );

            
$ec->add($group);
        }
    }

    public function 
searchEventGroupBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'event' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];
            
$offset = (int) $params['offset'];
            
$limit = (int) $params['limit'];

            
$eventDao EVENT_BOL_EventDao::getInstance();
            
$sql =
                
"SELECT * FROM `" $eventDao->getTableName() . "`
                WHERE `whoCanView` = 1 AND (`title` LIKE :query collate utf8_general_ci OR `description` LIKE :query collate utf8_general_ci)
                ORDER BY `createTimeStamp` DESC LIMIT :offset, :limit"
;
            
$found PEEP::getDbo()->queryForList($sql, array('query' => '%'.$query.'%''offset' => $offset'limit' => $limit));

            
$router PEEP::getRouter();
            
$eventService EVENT_BOL_EventService::getInstance();
            
$list = array();
            if ( 
$found )
            {
                foreach ( 
$found as $item )
                {
                    
$avatar $item['image'] ? $eventService->generateImageUrl($item['image'], true) : $eventService->generateDefaultImageUrl();
                    
$data = array(
                        
'id' => $key '_' $item['id'],
                        
'url' => $router->urlForRoute('event.view', array('eventId' => $item['id'])),
                    );
                    
$data['avatar'] = array('src' => $avatar'url' => $data['url']);
                    
$data['text'] = $item['title'];
                    
$data['info'] = $item['description'] ? $item['description'] : "";

                    
$list[$data['id']] = $data;
                }
            }

            
$result[$key] = $list;

            
$ec->add($result);
        }
    }

    public function 
countEventGroupResultBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'event' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];

            
$eventDao EVENT_BOL_EventDao::getInstance();
            
$sql =
                
"SELECT COUNT(*) FROM `" $eventDao->getTableName() . "`
                WHERE `whoCanView` = 1 AND (`title` LIKE :query collate utf8_general_ci OR `description` LIKE :query collate utf8_general_ci)"
;

            
$count PEEP::getDbo()->queryForColumn($sql, array('query' => '%'.$query.'%'));

            
$result[$key] = $count;

            
$ec->add($result);
        }
    }

    
// Groups
    
public function addGroupsSearchResultGroupBASE_CLASS_EventCollector $ec )
    {
        if ( 
PEEP::getPluginManager()->isPluginActive('groups') )
        {
            
$group = array(
                
'pluginKey' => 'groups',
                
'key' => 'groups',
                
'priority' => 50,
                
'label' => PEEP::getLanguage()->text('groups''auth_group_label'),
                
'url' => PEEP::getRouter()->urlForRoute('groups-index')
            );

            
$ec->add($group);
        }
    }

    public function 
searchGroupsGroupBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'groups' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];
            
$offset = (int) $params['offset'];
            
$limit = (int) $params['limit'];

            
$groupsDao GROUPS_BOL_GroupDao::getInstance();
            
$sql =
                
"SELECT * FROM `" $groupsDao->getTableName() . "`
                WHERE `whoCanView` = 'anyone' AND (`title` LIKE :query collate utf8_general_ci OR `description` LIKE :query collate utf8_general_ci)
                ORDER BY `timeStamp` DESC LIMIT :offset, :limit"
;

            
$found PEEP::getDbo()->queryForObjectList(
                
$sql,
                
$groupsDao->getDtoClassName(),
                array(
'query' => '%'.$query.'%''offset' => $offset'limit' => $limit)
            );

            
$router PEEP::getRouter();
            
$groupService GROUPS_BOL_Service::getInstance();
            
$list = array();
            if ( 
$found )
            {
                foreach ( 
$found as $item )
                {
                    
$data = array(
                        
'id' => $key '_' $item->id,
                        
'url' => $router->urlForRoute('groups-view', array('groupId' => $item->id))
                    );
                    
$data['avatar'] = array('src' => $groupService->getGroupImageUrl($item), 'url' => $data['url']);
                    
$data['text'] = $item->title;
                    
$data['info'] = $item->description $item->description "";

                    
$list[$data['id']] = $data;
                }
            }

            
$result[$key] = $list;

            
$ec->add($result);
        }
    }

    public function 
countGroupsGroupResultBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'groups' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];

            
$groupsDao GROUPS_BOL_GroupDao::getInstance();
            
$sql =
                
"SELECT COUNT(*) FROM `" $groupsDao->getTableName() . "`
                WHERE `whoCanView` = 'anyone' AND (`title` LIKE :query collate utf8_general_ci OR `description` LIKE :query collate utf8_general_ci)"
;

            
$count PEEP::getDbo()->queryForColumn($sql, array('query' => '%'.$query.'%'));

            
$result[$key] = $count;

            
$ec->add($result);
        }
    }

    
// Video
    
public function addVideoSearchResultGroupBASE_CLASS_EventCollector $ec )
    {
        if ( 
PEEP::getPluginManager()->isPluginActive('video') )
        {
            
$group = array(
                
'pluginKey' => 'video',
                
'key' => 'video',
                
'priority' => 80,
                
'label' => PEEP::getLanguage()->text('video''auth_group_label'),
                
'url' => PEEP::getRouter()->urlForRoute('video_list_index')
            );

            
$ec->add($group);
        }
    }

    public function 
searchVideoGroupBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'video' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];
            
$offset = (int) $params['offset'];
            
$limit = (int) $params['limit'];

            
$videoDao VIDEO_BOL_ClipDao::getInstance();
            
$sql =
                
"SELECT * FROM `" $videoDao->getTableName() . "`
                WHERE status = 'approved' AND `privacy` = 'everybody' AND (`title` LIKE :query collate utf8_general_ci OR `description` LIKE :query collate utf8_general_ci)
                ORDER BY `addDatetime` DESC LIMIT :offset, :limit"
;

            
$found PEEP::getDbo()->queryForObjectList(
                
$sql,
                
$videoDao->getDtoClassName(),
                array(
'query' => '%'.$query.'%''offset' => $offset'limit' => $limit)
            );

            
$router PEEP::getRouter();
            
$videoService VIDEO_BOL_ClipService::getInstance();
            
$list = array();
            if ( 
$found )
            {
                foreach ( 
$found as $item )
                {
                    
$data = array(
                        
'id' => $key '_' $item->id,
                        
'url' => $router->urlForRoute('view_clip', array('id' => $item->id))
                    );
                    
$thumb $videoService->getClipThumbUrl($item->id$item->code$item->thumbUrl);
                    if ( 
$thumb == 'undefined' )
                    {
                        
$thumb $videoService->getClipDefaultThumbUrl();
                    }
                    
$data['avatar'] = array('src' => $thumb'url' => $data['url']);
                    
$data['text'] = $item->title;
                    
$data['info'] = $item->description $item->description "";

                    
$list[$data['id']] = $data;
                }
            }

            
$result[$key] = $list;

            
$ec->add($result);
        }
    }

    public function 
countVideoGroupResultBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'video' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];

            
$videoDao VIDEO_BOL_ClipDao::getInstance();
            
$sql =
                
"SELECT COUNT(*) FROM `" $videoDao->getTableName() . "`
                WHERE `status` = 'approved' AND `privacy` = 'everybody' AND (`title` LIKE :query collate utf8_general_ci OR `description` LIKE :query collate utf8_general_ci)"
;

            
$count PEEP::getDbo()->queryForColumn($sql, array('query' => '%'.$query.'%'));

            
$result[$key] = $count;

            
$ec->add($result);
        }
    }

    
// Photo
    
public function addPhotoSearchResultGroupBASE_CLASS_EventCollector $ec )
    {
        if ( 
PEEP::getPluginManager()->isPluginActive('photo') )
        {
            
$group = array(
                
'pluginKey' => 'photo',
                
'key' => 'photo',
                
'priority' => 70,
                
'label' => PEEP::getLanguage()->text('photo''auth_group_label'),
                
'url' => PEEP::getRouter()->urlForRoute('view_photo_list')
            );

            
$ec->add($group);
        }
    }

    public function 
searchPhotoGroupBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'photo' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];
            
$offset = (int) $params['offset'];
            
$limit = (int) $params['limit'];

            
$photoDao PHOTO_BOL_PhotoDao::getInstance();
            
$sql =
                
"SELECT * FROM `" $photoDao->getTableName() . "`
                WHERE status = 'approved' AND `privacy` = 'everybody' AND `description` LIKE :query collate utf8_general_ci
                ORDER BY `addDatetime` DESC LIMIT :offset, :limit"
;

            
$found PEEP::getDbo()->queryForObjectList(
                
$sql,
                
$photoDao->getDtoClassName(),
                array(
'query' => '%'.$query.'%''offset' => $offset'limit' => $limit)
            );

            
$router PEEP::getRouter();
            
$photoService PHOTO_BOL_PhotoService::getInstance();
            
$list = array();
            if ( 
$found )
            {
                foreach ( 
$found as $item )
                {
                    
$data = array();
                    
$data['id'] = $key '_' $item->id;
                    
$data['url'] = $router->urlForRoute('view_photo', array('id' => $item->id));
                    
$data['avatar'] = array('src' => $photoService->getPhotoPreviewUrl($item->id$item->hash), 'url' => $data['url']);
                    
$data['text'] = UTIL_String::truncate($item->description30);
                    
$data['info'] = '';

                    
$list[$data['id']] = $data;
                }
            }

            
$result[$key] = $list;

            
$ec->add($result);
        }
    }

    public function 
countPhotoGroupResultBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'photo' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];

            
$photoDao PHOTO_BOL_PhotoDao::getInstance();
            
$sql =
                
"SELECT COUNT(*) FROM `" $photoDao->getTableName() . "`
                WHERE status = 'approved' AND `privacy` = 'everybody' AND `description` LIKE :query collate utf8_general_ci"
;

            
$count PEEP::getDbo()->queryForColumn($sql, array('query' => '%'.$query.'%'));

            
$result[$key] = $count;

            
$ec->add($result);
        }
    }

    
// Links
    
public function addLinksSearchResultGroupBASE_CLASS_EventCollector $ec )
    {
        if ( 
PEEP::getPluginManager()->isPluginActive('links') )
        {
            
$group = array(
                
'pluginKey' => 'links',
                
'key' => 'links',
                
'priority' => 30,
                
'label' => PEEP::getLanguage()->text('links''auth_group_label'),
                
'url' => PEEP::getRouter()->urlForRoute('links')
            );

            
$ec->add($group);
        }
    }

    public function 
searchLinksGroupBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'links' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];
            
$offset = (int) $params['offset'];
            
$limit = (int) $params['limit'];

            
$linksDao LinkDao::getInstance();
            
$sql =
                
"SELECT * FROM `" $linksDao->getTableName() . "`
                WHERE `privacy` = 'everybody' AND (`title` LIKE :query collate utf8_general_ci OR `description` LIKE :query collate utf8_general_ci)
                ORDER BY `timestamp` DESC LIMIT :offset, :limit"
;

            
$found PEEP::getDbo()->queryForList($sql, array('query' => '%'.$query.'%''offset' => $offset'limit' => $limit));

            
$router PEEP::getRouter();
            
$list = array();
            if ( 
$found )
            {
                
$defAvatar BOL_AvatarService::getInstance()->getDefaultAvatarUrl();
                
$avatars $this->getAvatarsByFoundItems($found'userId');

                foreach ( 
$found as $item )
                {
                    
$data = array();
                    
$data['id'] = $key '_' $item['id'];
                    
$data['url'] = $router->urlForRoute('link', array('id' => $item['id']));
                    
$data['avatar'] = !empty($avatars[$item['userId']]) ? $avatars[$item['userId']] : $defAvatar;
                    
$data['text'] = $item['title'];
                    
$data['info'] = $item['description'] ? $item['description'] : "";

                    
$list[$data['id']] = $data;
                }
            }

            
$result[$key] = $list;

            
$ec->add($result);
        }
    }

    public function 
countLinksGroupResultBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'links' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];

            
$linksDao LinkDao::getInstance();
            
$sql =
                
"SELECT COUNT(*) FROM `" $linksDao->getTableName() . "`
                WHERE `privacy` = 'everybody' AND (`title` LIKE :query collate utf8_general_ci OR `description` LIKE :query collate utf8_general_ci)"
;

            
$count PEEP::getDbo()->queryForColumn($sql, array('query' => '%'.$query.'%'));

            
$result[$key] = $count;

            
$ec->add($result);
        }
    }

    
    
// ShopPro
    
public function addShopProSearchResultGroupBASE_CLASS_EventCollector $ec )
    {
        if ( 
PEEP::getPluginManager()->isPluginActive('shoppro') )
        {
            
$group = array(
                
'pluginKey' => 'shoppro',
                
'key' => 'shoppro',
                
'priority' => 50,
                
'label' => PEEP::getLanguage()->text('shoppro''main_menu_item'),
                
'url' => PEEP::getRouter()->urlForRoute('shoppro.index')
            );

            
$ec->add($group);
        }
    }

    public function 
searchShopProGroupBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'shoppro' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];
            
$offset = (int) $params['offset'];
            
$limit = (int) $params['limit'];

            
$sql "SELECT * FROM `" PEEP_DB_PREFIX "shoppro_products` WHERE `active` = '1'
                AND `name` LIKE :query collate utf8_general_ci
                ORDER BY `date_add` DESC LIMIT :offset, :limit"
;

            
$found PEEP::getDbo()->queryForList(
                
$sql,
                array(
'query' => '%'.$query.'%''offset' => $offset'limit' => $limit)
            );

            
$list = array();
            
$url PEEP::getPluginManager()->getPlugin('shoppro')->getUserFilesUrl();

            if ( 
$found )
            {
                foreach ( 
$found as $item )
                {
                    
$data = array();
                    
$data['id'] = $key '_' $item['id'];
                    
$data['url'] = PEEP_URL_HOME "product/".$item['id']."/zoom/index.html";
                    
$data['avatar'] = array('src' => $url "images/product_".$item['id'].".jpg"'url' => $data['url']);
                    
$data['text'] = $item['name'];
                    
$data['info'] = $item['description'] ? UTIL_String::truncate($item['description'], 30) : "";

                    
$list[$data['id']] = $data;
                }
            }

            
$result[$key] = $list;

            
$ec->add($result);
        }
    }

    public function 
countShopProGroupResultBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'shoppro' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];

            
$sql =
                
"SELECT COUNT(*) FROM `" PEEP_DB_PREFIX "shoppro_products` WHERE `active` = '1'
                AND `name` LIKE :query collate utf8_general_ci"
;

            
$count PEEP::getDbo()->queryForColumn($sql, array('query' => '%'.$query.'%'));

            
$result[$key] = $count;

            
$ec->add($result);
        }
    }

    
// Events Extended
    
public function addEventXSearchResultGroupBASE_CLASS_EventCollector $ec )
    {
        if ( 
PEEP::getPluginManager()->isPluginActive('eventx') )
        {
            
$group = array(
                
'pluginKey' => 'eventx',
                
'key' => 'eventx',
                
'priority' => 60,
                
'label' => PEEP::getLanguage()->text('eventx''auth_group_label'),
                
'url' => PEEP::getRouter()->urlForRoute('eventx.main_menu_route')
            );

            
$ec->add($group);
        }
    }

    public function 
searchEventXGroupBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'eventx' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];
            
$offset = (int) $params['offset'];
            
$limit = (int) $params['limit'];

            
$eventXDao EVENTX_BOL_EventDao::getInstance();
            
$sql =
                
"SELECT * FROM `" $eventXDao->getTableName() . "`
                WHERE `whoCanView` = 1 AND (`title` LIKE :query collate utf8_general_ci OR `description` LIKE :query collate utf8_general_ci)
                ORDER BY `createTimeStamp` DESC LIMIT :offset, :limit"
;
            
$found PEEP::getDbo()->queryForList($sql, array('query' => '%'.$query.'%''offset' => $offset'limit' => $limit));

            
$router PEEP::getRouter();
            
$eventXService EVENTX_BOL_EventService::getInstance();
            
$list = array();
            if ( 
$found )
            {
                foreach ( 
$found as $item )
                {
                    
$avatar $item['image'] ? $eventXService->generateImageUrl($item['image'], true) : $eventXService->generateDefaultImageUrl();
                    
$data = array(
                        
'id' => $key '_' $item['id'],
                        
'url' => $router->urlForRoute('eventx.view', array('eventId' => $item['id'])),
                    );
                    
$data['avatar'] = array('src' => $avatar'url' => $data['url']);
                    
$data['text'] = $item['title'];
                    
$data['info'] = $item['description'] ? $item['description'] : "";

                    
$list[$data['id']] = $data;
                }
            }

            
$result[$key] = $list;

            
$ec->add($result);
        }
    }

    public function 
countEventXGroupResultBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'eventx' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];

            
$eventXDao EVENTX_BOL_EventDao::getInstance();
            
$sql =
                
"SELECT COUNT(*) FROM `" $eventXDao->getTableName() . "`
                WHERE `whoCanView` = 1 AND (`title` LIKE :query collate utf8_general_ci OR `description` LIKE :query collate utf8_general_ci)"
;

            
$count PEEP::getDbo()->queryForColumn($sql, array('query' => '%'.$query.'%'));

            
$result[$key] = $count;

            
$ec->add($result);
        }
    }

    
// Games
    
public function addGamesSearchResultGroupBASE_CLASS_EventCollector $ec )
    {
        if ( 
PEEP::getPluginManager()->isPluginActive('mochigames') )
        {
            
$group = array(
                
'pluginKey' => 'mochigames',
                
'key' => 'mochigames',
                
'priority' => 60,
                
'label' => PEEP::getLanguage()->text('mochigames''auth_group_label'),
                
'url' => PEEP::getRouter()->urlForRoute('mochigames')
            );

            
$ec->add($group);
        }
    }

    public function 
searchGamesGroupBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'mochigames' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];
            
$offset = (int) $params['offset'];
            
$limit = (int) $params['limit'];

            
$gamesDao MOCHIGAMES_BOL_MochigamesDao::getInstance();
            
$sql =
                
"SELECT * FROM `" $gamesDao->getTableName() . "`
                WHERE `is_enabled` = 1 AND (`name` LIKE :query collate utf8_general_ci OR `description` LIKE :query collate utf8_general_ci)
                ORDER BY `timestamp` DESC LIMIT :offset, :limit"
;
            
$found PEEP::getDbo()->queryForList($sql, array('query' => '%'.$query.'%''offset' => $offset'limit' => $limit));
            
            
$router PEEP::getRouter();
            
$gamesService MOCHIGAMES_BOL_Service::getInstance();
            
$list = array();
            if ( 
$found )
            {
                foreach ( 
$found as $item )
                {
                    
$avatar = !empty($item['thumbnail_url']) ? $item['thumbnail_url'] : $gamesService->getDefaultThumbnailUrl();
                    
$data = array(
                        
'id' => $key '_' $item['id'],
                        
'url' => $router->urlForRoute('mochigames-game', array('slug' => $item['slug'])),
                    );
                    
$data['avatar'] = array('src' => $avatar'url' => $data['url']);
                    
$data['text'] = $item['name'];
                    
$data['info'] = $item['description'] ? $item['description'] : "";

                    
$list[$data['id']] = $data;
                }
            }

            
$result[$key] = $list;

            
$ec->add($result);
        }
    }

    public function 
countGamesGroupResultBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'mochigames' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];
            
            
$gamesDao MOCHIGAMES_BOL_MochigamesDao::getInstance();
            
$sql =
                
"SELECT COUNT(*) FROM `" $gamesDao->getTableName() . "`
                WHERE `is_enabled` = 1 AND (`name` LIKE :query collate utf8_general_ci OR `description` LIKE :query collate utf8_general_ci)"
;

            
$count PEEP::getDbo()->queryForColumn($sql, array('query' => '%'.$query.'%'));
            
            
$result[$key] = $count;

            
$ec->add($result);
        }
    }

    
// Questions
    
public function addQuestionsSearchResultGroupBASE_CLASS_EventCollector $ec )
    {
        if ( 
PEEP::getPluginManager()->isPluginActive('questions') )
        {
            
$group = array(
                
'pluginKey' => 'questions',
                
'key' => 'questions',
                
'priority' => 60,
                
'label' => PEEP::getLanguage()->text('questions''auth_group_label'),
                
'url' => PEEP::getRouter()->urlForRoute('questions-index')
            );

            
$ec->add($group);
        }
    }

    public function 
searchQuestionsGroupBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'questions' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];
            
$offset = (int) $params['offset'];
            
$limit = (int) $params['limit'];

            
$qDao QUESTIONS_BOL_QuestionDao::getInstance();
            
$sql =
                
"SELECT * FROM `" $qDao->getTableName() . "`
                WHERE `text` LIKE :query collate utf8_general_ci
                ORDER BY `timeStamp` DESC LIMIT :offset, :limit"
;
            
$found PEEP::getDbo()->queryForList($sql, array('query' => '%'.$query.'%''offset' => $offset'limit' => $limit));

            
$router PEEP::getRouter();
            
$list = array();
            if ( 
$found )
            {
                
$defAvatar BOL_AvatarService::getInstance()->getDefaultAvatarUrl();
                
$avatars $this->getAvatarsByFoundItems($found'userId');
                
                foreach ( 
$found as $item )
                {
                    
$avatar = !empty($avatars[$item['userId']]) ? $avatars[$item['userId']]['src'] : $defAvatar;
                    
$data = array(
                        
'id' => $key '_' $item['id'],
                        
'url' => $router->urlForRoute('questions-question', array('qid' => $item['id'])),
                    );
                    
$data['avatar'] = array('src' => $avatar'url' => $data['url']);
                    
$data['text'] = $item['text'];
                    
$data['info'] = '';

                    
$list[$data['id']] = $data;
                }
            }

            
$result[$key] = $list;

            
$ec->add($result);
        }
    }

    public function 
countQuestionsGroupResultBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'questions' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];

            
$qDao QUESTIONS_BOL_OptionDao::getInstance();
            
$sql =
                
"SELECT COUNT(*) FROM `" $qDao->getTableName() . "`
                WHERE `text` LIKE :query collate utf8_general_ci"
;

            
$count PEEP::getDbo()->queryForColumn($sql, array('query' => '%'.$query.'%'));

            
$result[$key] = $count;

            
$ec->add($result);
        }
    }

    
// Extended Questions
    
public function addEQuestionsSearchResultGroupBASE_CLASS_EventCollector $ec )
    {
        if ( 
PEEP::getPluginManager()->isPluginActive('equestions') )
        {
            
$group = array(
                
'pluginKey' => 'equestions',
                
'key' => 'equestions',
                
'priority' => 60,
                
'label' => PEEP::getLanguage()->text('equestions''auth_group_label'),
                
'url' => PEEP::getRouter()->urlForRoute('equestions-index')
            );

            
$ec->add($group);
        }
    }

    public function 
searchEQuestionsGroupBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'equestions' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];
            
$offset = (int) $params['offset'];
            
$limit = (int) $params['limit'];

            
$qDao EQUESTIONS_BOL_QuestionDao::getInstance();
            
$sql =
                
"SELECT * FROM `" $qDao->getTableName() . "`
                WHERE `text` LIKE :query collate utf8_general_ci
                ORDER BY `timeStamp` DESC LIMIT :offset, :limit"
;
            
$found PEEP::getDbo()->queryForList($sql, array('query' => '%'.$query.'%''offset' => $offset'limit' => $limit));

            
$router PEEP::getRouter();
            
$list = array();
            if ( 
$found )
            {
                
$defAvatar BOL_AvatarService::getInstance()->getDefaultAvatarUrl();
                
$avatars $this->getAvatarsByFoundItems($found'userId');

                foreach ( 
$found as $item )
                {
                    
$avatar = !empty($avatars[$item['userId']]) ? $avatars[$item['userId']]['src'] : $defAvatar;
                    
$data = array(
                        
'id' => $key '_' $item['id'],
                        
'url' => $router->urlForRoute('equestions-question', array('qid' => $item['id'])),
                    );
                    
$data['avatar'] = array('src' => $avatar'url' => $data['url']);
                    
$data['text'] = $item['text'];
                    
$data['info'] = '';

                    
$list[$data['id']] = $data;
                }
            }

            
$result[$key] = $list;

            
$ec->add($result);
        }
    }

    public function 
countEQuestionsGroupResultBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'equestions' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];

            
$qDao EQUESTIONS_BOL_OptionDao::getInstance();
            
$sql =
                
"SELECT COUNT(*) FROM `" $qDao->getTableName() . "`
                WHERE `text` LIKE :query collate utf8_general_ci"
;

            
$count PEEP::getDbo()->queryForColumn($sql, array('query' => '%'.$query.'%'));

            
$result[$key] = $count;

            
$ec->add($result);
        }
    }

    
// IClassifieds
    
public function addIClassifiedsSearchResultGroupBASE_CLASS_EventCollector $ec )
    {
        if ( 
PEEP::getPluginManager()->isPluginActive('iclassifieds') )
        {
            
$group = array(
                
'pluginKey' => 'iclassifieds',
                
'key' => 'iclassifieds',
                
'priority' => 60,
                
'label' => PEEP::getLanguage()->text('iclassifieds''auth_group_label'),
                
'url' => PEEP::getRouter()->urlForRoute('iclassifieds_view_index')
            );

            
$ec->add($group);
        }
    }

    public function 
searchIClassifiedsGroupBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'iclassifieds' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];
            
$offset = (int) $params['offset'];
            
$limit = (int) $params['limit'];

            
$cDao ICLASSIFIEDS_BOL_ItemDao::getInstance();
            
$sql =
                
"SELECT * FROM `" $cDao->getTableName() . "`
                WHERE status = 'approved' AND privacy = 'everybody' AND (expiry >= NOW() OR expiry = '0000-00-00')
                    AND (`name` LIKE :query collate utf8_general_ci OR `description` LIKE :query collate utf8_general_ci)
                ORDER BY `timestamp` DESC LIMIT :offset, :limit"
;
            
$found PEEP::getDbo()->queryForList($sql, array('query' => '%'.$query.'%''offset' => $offset'limit' => $limit));

            
$router PEEP::getRouter();
            
$list = array();
            if ( 
$found )
            {
                foreach ( 
$found as $item )
                {
                    
$avatar ICLASSIFIEDS_BOL_ItemImageService::getInstance()->getItemMainPreviewImage($item['id']);
                    
$data = array(
                        
'id' => $key '_' $item['id'],
                        
'url' => $router->urlForRoute('iclassifieds_view_item', array('id' => $item['id'])),
                    );
                    
$data['avatar'] = array('src' => $avatar'url' => $data['url']);
                    
$data['text'] = $item['name'];
                    
$data['info'] = $item['description'] ? UTIL_HtmlTag::stripTags($item['description']) : "";

                    
$list[$data['id']] = $data;
                }
            }

            
$result[$key] = $list;

            
$ec->add($result);
        }
    }

    public function 
countIClassifiedsGroupResultBASE_CLASS_EventCollector $ec )
    {
        
$params $ec->getParams();
        
$key $params['key'];

        if ( 
$key == 'iclassifieds' && PEEP::getPluginManager()->isPluginActive($key) )
        {
            
$query $params['query'];

            
$cDao ICLASSIFIEDS_BOL_ItemDao::getInstance();
            
$sql =
                
"SELECT COUNT(*) FROM `" $cDao->getTableName() . "`
                WHERE status = 'approved' AND privacy = 'everybody' AND (expiry >= NOW() OR expiry = '0000-00-00')
                    AND (`name` LIKE :query collate utf8_general_ci OR `description` LIKE :query collate utf8_general_ci)"
;

            
$count PEEP::getDbo()->queryForColumn($sql, array('query' => '%'.$query.'%'));

            
$result[$key] = $count;

            
$ec->add($result);
        }
    }

    

    public function 
init()
    {
        
$em PEEP::getEventManager();

        
// add component to console
        
$em->bind('console.collect_items', array($this'addConsoleSearchCmp'));

        
// add searchable groups
        
$em->bind('searchsys.collect_group', array($this'addUsersSearchResultGroup'));
        
$em->bind('searchsys.collect_group', array($this'addStoriesSearchResultGroup'));
        
$em->bind('searchsys.collect_group', array($this'addForumSearchResultGroup'));
        
$em->bind('searchsys.collect_group', array($this'addEventSearchResultGroup'));
        
$em->bind('searchsys.collect_group', array($this'addGroupsSearchResultGroup'));
        
$em->bind('searchsys.collect_group', array($this'addVideoSearchResultGroup'));
        
$em->bind('searchsys.collect_group', array($this'addPhotoSearchResultGroup'));
        
$em->bind('searchsys.collect_group', array($this'addLinksSearchResultGroup'));
        
$em->bind('searchsys.collect_group', array($this'addShopProSearchResultGroup'));
        
$em->bind('searchsys.collect_group', array($this'addEventXSearchResultGroup'));
        
$em->bind('searchsys.collect_group', array($this'addGamesSearchResultGroup'));
        
$em->bind('searchsys.collect_group', array($this'addQuestionsSearchResultGroup'));
        
$em->bind('searchsys.collect_group', array($this'addEQuestionsSearchResultGroup'));
        
$em->bind('searchsys.collect_group', array($this'addIClassifiedsSearchResultGroup'));
        

        
// perform search in each group
        
$em->bind('searchsys.search_in_groups', array($this'searchUsersGroup'));
        
$em->bind('searchsys.search_in_groups', array($this'searchStoriesGroup'));
        
$em->bind('searchsys.search_in_groups', array($this'searchForumGroup'));
        
$em->bind('searchsys.search_in_groups', array($this'searchEventGroup'));
        
$em->bind('searchsys.search_in_groups', array($this'searchGroupsGroup'));
        
$em->bind('searchsys.search_in_groups', array($this'searchVideoGroup'));
        
$em->bind('searchsys.search_in_groups', array($this'searchPhotoGroup'));
        
$em->bind('searchsys.search_in_groups', array($this'searchLinksGroup'));
        
$em->bind('searchsys.search_in_groups', array($this'searchShopProGroup'));
        
$em->bind('searchsys.search_in_groups', array($this'searchEventXGroup'));
        
$em->bind('searchsys.search_in_groups', array($this'searchGamesGroup'));
        
$em->bind('searchsys.search_in_groups', array($this'searchQuestionsGroup'));
        
$em->bind('searchsys.search_in_groups', array($this'searchEQuestionsGroup'));
        
$em->bind('searchsys.search_in_groups', array($this'searchIClassifiedsGroup'));
        

        
// count search results
        
$em->bind('searchsys.count_search_result', array($this'countUsersGroupResult'));
        
$em->bind('searchsys.count_search_result', array($this'countStoriesGroupResult'));
        
$em->bind('searchsys.count_search_result', array($this'countForumGroupResult'));
        
$em->bind('searchsys.count_search_result', array($this'countEventGroupResult'));
        
$em->bind('searchsys.count_search_result', array($this'countGroupsGroupResult'));
        
$em->bind('searchsys.count_search_result', array($this'countVideoGroupResult'));
        
$em->bind('searchsys.count_search_result', array($this'countPhotoGroupResult'));
        
$em->bind('searchsys.count_search_result', array($this'countLinksGroupResult'));
        
$em->bind('searchsys.count_search_result', array($this'countShopProGroupResult'));
        
$em->bind('searchsys.count_search_result', array($this'countEventXGroupResult'));
        
$em->bind('searchsys.count_search_result', array($this'countGamesGroupResult'));
        
$em->bind('searchsys.count_search_result', array($this'countQuestionsGroupResult'));
        
$em->bind('searchsys.count_search_result', array($this'countEQuestionsGroupResult'));
        
$em->bind('searchsys.count_search_result', array($this'countIClassifiedsGroupResult'));
        
    }
}
Онлайн: 0
Реклама