<?php

/**
 * Изменение пароля пользователя admin
 *
 * Порядок использования:
 * 1) Загрузите файл https://www.hostcms.ru/download/install/restore_password.php
 * 2) Разместите файл restore_password.php в корне сайта и вызовите http://адрес_сайта/restore_password.php
 * 3) Запомните выведенные логин и пароль.
 *
 * УДАЛЕНИЕ ФАЙЛА:
 * После выполнения файл пытается удалиться самостоятельно, если этого не произошло,
 * удалите файл restore_password.php с сайта вручную.
 */

require_once('bootstrap.php');

$aMessages = array();
$login = Core_Array::getPost('login', '', 'trim');

if (Core_Array::getPost('apply'))
{
	if ($login != '')
	{
		$oUser = Core_Entity::factory('User')->getByLogin($login);

		if ($oUser)
		{
			$password = Core_Password::get();
			$oUser->password = Core_Hash::instance()->hash($password);
			if (isset($oUser->active))
			{
				$oUser->active = 1;
			}
			$oUser->save();

			$aMessages['success'][] = 'New login is: <b>' . htmlspecialchars($login) . '</b>';
			$aMessages['success'][] = 'New password is: <b>' . htmlspecialchars($password) . '</b>';
		}
		else
		{
			$aMessages['danger'][] = 'User ' . htmlspecialchars($login) . ' not found';
		}
	}
	else
	{
		$aMessages['danger'][] = 'Users not found!';
	}

	Core_File::delete(CMS_FOLDER . 'restore_password.php');
}

$aUserOptions = array();

$oUsers = Core_Entity::factory('User');
$oUsers->queryBuilder()
	->clearOrderBy()
	->orderBy('users.login');

isset($oUsers->active) && $oUsers->queryBuilder()
	->where('users.active', '=', 1);

isset($oUsers->dismissed) && $oUsers->queryBuilder()
	->where('users.dismissed', '=', 0);

$aUsers = $oUsers->findAll(FALSE);
foreach ($aUsers as $oUser)
{
	$aUserOptions[] = $oUser->login;
}
?>

<!doctype html>
<html lang="ru">
	<head>
		<meta charset="UTF-8"/>
		<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
		<title>Restore Password</title>
		<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" type="text/css"/>
		<!--[if lt IE 9]>
		<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
		<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
		<![endif]-->
		<style>
			.margin-top-10 { margin-top: 10px !important; }
		</style>
	</head>
	<body>
		<div class="container">
			<form class="form-inline margin-top-10" action="restore_password.php" method="POST">
				<div class="row">
					<div class="col-xs-2">
						<!-- <div class="form-group"> -->
							<select name="login" class="form-control">
								<?php
								foreach ($aUserOptions as $name)
								{
									$selected = $name == $login
										? ' selected="selected"'
										: '';

									?><option <?php echo $selected?> value="<?php echo $name?>"><?php echo htmlspecialchars($name)?></option><?php
								}
								?>
							</select>
						<!-- </div> -->
					</div>

					<div class="col-xs-10">
						<button type="submit" name="apply" value="apply" class="btn btn-info">Сбросить пароль</button>
					</div>
				</div>
			</form>

			<?php
			foreach ($aMessages as $status => $aMessage)
			{
				foreach ($aMessage as $sMessage)
				{
					?><div class="alert alert-<?php echo $status?> margin-top-10" role="alert"><?php echo $sMessage?></div><?php
				}
			}
			?>
		</div>
	</body>
</html>