В компоненте JomSocial (com_community) есть возможность поиска пользователей. Но есть один минус — обычный поиск ищет только по имени и e-mail, а расширенный поиск не очень удобен для использования.
После анализа кода, выяснилось что можно очень просто сделать поиск по всем полям профиля.
Надо только «приделать» с обычной форме, поисковый механизм от расширенной.
Для этого меняем файл /components/com_community/controllers/search.php
Строку
$data->result = $model->searchPeople( $search );
меняем на следующий код
if(isset($search) && $data->query!="") {
CFactory::load('libraries', 'advancesearch');
$filter=array();
$SFields=CAdvanceSearch::getFields();
foreach($SFields AS $group) {
foreach($group->fields AS $fl) {
$f = new stdClass();
$f->condition="contain";
$f->value=$data->query;
$f->fieldType=$fl->type;
$f->field=$fl->fieldcode;
$filter[]=$f;
unset($f);
}
}
$model =& $this->getModel('search');
$data->result = $model->getAdvanceSearch($filter, "or");
} else {
$data->result=array();
}
Что тут делается. Мы формируем массив фильтров для расширенного поиска. А для этого проходим по всем полям профиля и добавляем их в профиль. По факту это равносильно тому что бы пользователь в расширенном режиме сделал бы поиск по всем возможным полям, но при этом использовал одну и ту же строку.