View file application/backstage/Search.php

File size: 2.15Kb
<?PHP
	require(__DIR__ . '/../start.php');
	
	/*
		Проверка валидности
	*/
	IsValidActions();
	
	/*
		Проверка на авторизацию
	*/
	if(empty($_SESSION['id'])) {
		AlertError(getLang('backstage_auth'));
	}
	
	/*
		Поиск
	*/
	if(isset($_POST['Search'])) {
		try {
$searchTerm = $_POST['q'];

// Разбиваем входную строку на отдельные слова
$searchTerms = explode(" ", $searchTerm);

// Формируем части запроса для каждого слова
$conditions = [];
$params = []; // Массив для хранения параметров
foreach ($searchTerms as $index => $term) {
    $paramName = ":param$index"; // Уникальное имя параметра для каждого слова
    $conditions[] = "`first_name` LIKE $paramName OR `last_name` LIKE $paramName";
    $params[$paramName] = "%$term%"; // Заполняем массив параметров
}

// Объединяем части запроса с помощью оператора OR
$query = 'SELECT * FROM `users` WHERE (' . implode(' OR ', $conditions) . ') AND `approved`=\'1\'';

$sth = pdo()->prepare($query);

// Привязываем каждый параметр к запросу
foreach ($params as $paramName => $paramValue) {
    $sth->bindValue($paramName, $paramValue);
}

$sth->execute();



			
			if(!$sth->rowCount()) {
				AlertError(getLang('search_error'));
			}
			
			while($Result = $sth->fetch(PDO::FETCH_OBJ)) {
				tpl()->AddCell('resultSearch', tpl()->Set([
					'{id}' => $Result->id,
					'{image}' => $Result->image,
					'{first_name}' => $Result->first_name,
					'{last_name}' => $Result->last_name,
					'{online}' => users()->isOnline($Result->id) ? getLang('system_online') : timeElapsedString($Result->date_online),
					'{login}' => $Result->login
				], isset($_POST['type']) ? tpl()->Get('elements/search/people_clip') : tpl()->Get('elements/search/people')));
			}
			
			AlertSuccess(
				tpl()->Execute(tpl()->GetCell('resultSearch'))
			);
		}
		catch(Exception $e) {
			AlertError($e->getMessage());
		}
	}