IsLogged();
$service_id = $layer->safe('service-id');
$service_type = $layer->GetData('services', 'ServiceType', 'ServiceID', $service_id);
if($service_type == 'hashtag') {
echo 'hashtag';
} else if($service_type == 'comments') {
echo 'comments';
} else if($service_type == 'mentions') {
echo 'mentions';
}
}
if(GetAction('generate-new-api')) {
$user->IsLogged();
$api = md5($UserName.time().'$hash$');
$stmt = $pdo->prepare('UPDATE users SET UserAPI = :UserAPI WHERE UserID = :UserID');
$stmt->execute(array(':UserAPI' => $api, ':UserID' => $UserID));
echo $api;
}
if(GetAction('get-user-balance')) {
$user->IsLogged();
echo $UserBalance;
}
if(GetAction('get-services')) {
$user->IsLogged();
$category_id = $layer->safe('category-id');
$stmt = $pdo->prepare('SELECT * FROM services WHERE ServiceCategoryID = :ServiceCategoryID AND ServiceActive = "Yes"');
$stmt->execute(array(':ServiceCategoryID' => $category_id));
$html = '';
foreach($stmt->fetchAll() as $row) {
$html .= '';
}
echo $html;
}
if(GetAction('get-price')) {
$user->IsLogged();
$price = $orders->GetPrice($_POST['service-id'], $_POST['quantity']);
echo $price;
}
if(GetAction('get-min-quantity')) {
$user->IsLogged();
$service_id = $layer->safe('service-id');
$quantity = $layer->GetData('services', 'ServiceMinQuantity', 'ServiceID', $service_id);
echo $quantity;
}
if(GetAction('get-max-quantity')) {
$user->IsLogged();
$service_id = $layer->safe('service-id');
$quantity = $layer->GetData('services', 'ServiceMaxQuantity', 'ServiceID', $service_id);
echo $quantity;
}
if(GetAction('get-description')) {
$user->IsLogged();
$service_id = $layer->safe('service-id');
$description = $layer->GetData('services', 'ServiceDescription', 'ServiceID', $service_id);
echo $description;
}
if(GetAction('get-link-quantity')) {
$user->IsLogged();
$service_id = $layer->safe('service-id');
$link = $_POST['link'];
if(!empty($link)) {
$link = $layer->safe('link');
$return = $orders->GetQuantityPerLink($service_id, $link);
echo $return;
} else {
echo 0;
}
}
if(GetAction('login')) {
$username = $layer->safe('username');
$password = $layer->safe('password');
$stmt = $pdo->prepare('SELECT * FROM users WHERE UserName = :UserName AND UserPassword = :UserPassword');
$stmt->execute(array(':UserName' => $username, ':UserPassword' => md5($password)));
if($stmt->rowCount() == 1) {
$row = $stmt->fetch();
if($settings['IPLock'] == 'Yes') {
if($row['UserIPAddress'] != $ip) {
echo 'Ваш IP-адрес регистрации не соответствует вашему текущему.';
echo 'Если вы считаете, что это проблема, не стесняйтесь обращаться в нашу службу поддержки.';
exit();
}
}
$stmt = $pdo->prepare('SELECT * FROM users_banned WHERE UserBannedID = :UserBannedID');
$stmt->execute(array(':UserBannedID' => $row['UserID']));
if($stmt->rowCount() == 1) {
$ban_row = $stmt->fetch();
if(time() > $ban_row['UserBannedExpireDate'] && $ban_row['UserBannedExpireDate'] != 0) {
$stmt = $pdo->prepare('DELETE FROM users_banned WHERE UserBannedID = :UserBannedID');
$stmt->execute(array(':UserBannedID' => $row['UserID']));
} else {
if($ban_row['UserBannedExpireDate'] == 0)
$time = 'Never';
else
$time = date('d.m.Y h:I:s', $ban_row['UserBannedExpireDate']);
echo 'Вы заблокированы!
';
echo 'Причина: '.$ban_row['UserBannedReason'].'
';
echo 'Разблокировка: '.date('d.m.Y h:I:s', $ban_row['UserBannedDate']).'
';
echo 'Осталось: '.$time.'
';
exit();
}
}
$stmt = $pdo->prepare('INSERT INTO logs (LogUserID, LogDate) VALUES (:LogUserID, :LogDate)');
$stmt->execute(array(':LogUserID' => $row['UserID'], ':LogDate' => time()));
$_SESSION['auth'] = $row['UserID'];
$layer->redirect('index.php');
} else {
echo 'Неверная информация для входа.';
}
}
if(GetAction('restore')) {
$username = $layer->safe('username');
if($username == 'demo') {
echo 'Вам не разрешается сбрасывать пароль учетной записи, пока вы регистрируетесь в качестве демонстрационного пользователя.';
} else {
if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) {
$email = $_POST['email'];
$stmt = $pdo->prepare('SELECT * FROM users WHERE UserName = :UserName AND UserEmail = :UserEmail');
$stmt->execute(array(':UserName' => $username, ':UserEmail' => $email));
if($stmt->rowCount() == 1) {
$row = $stmt->fetch();
$np = $layer->GenerateRandomString(6);
$stmt = $pdo->prepare('UPDATE users SET UserPassword = :UserPassword WHERE UserID = :UserID');
$stmt->execute(array(':UserPassword' => md5($np), ':UserID' => $row['UserID']));
echo '
Новый пароль выслан на ваш почтовый адрес
';
$msg = "Аккаунт ID: ".$row['UserName']."\n";
$msg .= "Пароль вашей учетной записи был сброшен ".$_SERVER["REMOTE_ADDR"]."\n";
$msg .= "Ваш новый пароль учетной записи: $np \n";
$msg .= "Если думаете, что это ошибка, обратитесь к администраторам веб-сайта.\n";
$msg = wordwrap($msg,70);
// send email
@mail($email,"Восстановление пароля учетной записи",$msg);
} else {
echo 'Пользователь с этими учетными данными не существует.';
}
}
}
}
if(GetAction('update-password')) {
$user->IsLogged();
if($UserName == 'demo') {
echo 'Демо-счету не разрешено изменять пароль по умолчанию.';
} else {
$current_password = $layer->safe('current-password');
$new_password = $layer->safe('new-password');
$repeat_new_password = $layer->safe('repeat-new-password');
$stmt = $pdo->prepare('SELECT * FROM users WHERE UserID = :UserID AND UserPassword = :UserPassword');
$stmt->execute(array(':UserID' => $UserID, ':UserPassword' => md5($current_password)));
if($stmt->rowCount() == 1) {
if($new_password == $repeat_new_password) {
if(strlen($new_password) >= 4 && strlen($new_password) <= 32) {
if($current_password != $new_password) {
$stmt = $pdo->prepare('UPDATE users SET UserPassword = :UserPassword WHERE UserID = :UserID');
$stmt->execute(array(':UserPassword' => md5($new_password), ':UserID' => $UserID));
echo 'Пароль успешно изменен.
';
} else {
echo 'Ваш новый пароль похож на текущий. Пожалуйста, попробуйте другой.';
}
} else {
echo 'Длина пароля должна быть от 4 до 32 символов.';
}
} else {
echo 'Повторный пароль не соответствует вашему новому паролю.';
}
} else {
echo 'Текущий пароль недействителен.';
}
}
}
if(GetAction('new-order')) {
$user->IsLogged();
if($UserName == 'demo') {
echo 'Демонстрационная учетная запись не разрешается заказывать.';
} else {
$service_id = $layer->safe('service');
$link = $layer->safe('link');
$quantity = $layer->safe('quantity');
if(isset($_POST['comments'])) {
$additional = $_POST['comments'];
$additional = str_replace("\n", ",", $additional);
} else if(isset($_POST['hashtag'])) {
$additional = $_POST['hashtag'];
} else if(isset($_POST['mentions_username'])) {
$additional = $_POST['mentions_username'];
}
$charge = $orders->GetPrice($service_id, $quantity);
$max_quantity = $layer->GetData('services', 'ServiceMaxQuantity', 'ServiceID', $service_id);
if(ctype_digit($service_id) && ctype_digit($quantity)) {
$stmt = $pdo->prepare('SELECT * FROM services WHERE ServiceID = :ServiceID');
$stmt->execute(array(':ServiceID' => $service_id));
if($stmt->rowCount() == 1) {
$row = $stmt->fetch();
if($UserBalance >= $charge) {
if($quantity >= $row['ServiceMinQuantity'] && $quantity <= $row['ServiceMaxQuantity']) {
$stmt = $pdo->prepare('SELECT * FROM orders WHERE OrderLink = :OrderLink AND OrderServiceID = :OrderServiceID');
$stmt->execute(array(':OrderLink' => $link, ':OrderServiceID' => $service_id));
if($stmt->rowCount() > 0) {
if($stmt->rowCount() == 1) {
$query_row = $stmt->fetch();
$qu_am = $query_row['OrderQuantity'];
} else {
$qu_am = 0;
foreach($stmt->fetchAll() as $qu_row) {
$qu_am += $qu_row['OrderQuantity'];
}
}
$total = $qu_am + $quantity;
$total_more = $max_quantity - $qu_am;
if($total_more < 0) {
$total_more = 0;
}
if($total > $max_quantity) {
echo $total_more.' осталось для этой услуги';
exit();
}
}
$order_id = 0;
$start_count = 0;
if(!empty($row['ServiceAPI'])) {
$URL = str_replace('[QUANTITY]', $quantity, $row['ServiceAPI']);
$URL = str_replace('[LINK]', $link, $URL);
if(isset($additional) && !empty($additional))
$URL = str_replace('[ADDON]', $additional, $URL);
$return = $layer->SendCurl($URL);
$resp = json_decode($return);
if(isset($resp) && property_exists($resp, 'order'))
$order_id = $resp->order;
}
$NewBalance = $UserBalance - $charge;
if($row['ServiceType'] != 'default') {
$stmt = $pdo->prepare('INSERT INTO orders (OrderServiceID, OrderUserID, OrderQuantity, OrderLink, OrderCharge, OrderAPIID, OrderAdditional, OrderDate)
VALUES (:OrderServiceID, :OrderUserID, :OrderQuantity, :OrderLink, :OrderCharge, :OrderAPIID, :OrderAdditional, :OrderDate)');
$stmt->execute(array(':OrderServiceID' => $service_id, ':OrderUserID' => $UserID, ':OrderQuantity' => $quantity, ':OrderLink' => $link,
':OrderCharge' => $charge, ':OrderAPIID' => $order_id, ':OrderAdditional' => $additional, ':OrderDate' => time()));
} else {
$stmt = $pdo->prepare('INSERT INTO orders (OrderServiceID, OrderUserID, OrderQuantity, OrderLink, OrderCharge, OrderAPIID, OrderDate)
VALUES (:OrderServiceID, :OrderUserID, :OrderQuantity, :OrderLink, :OrderCharge, :OrderAPIID, :OrderDate)');
$stmt->execute(array(':OrderServiceID' => $service_id, ':OrderUserID' => $UserID, ':OrderQuantity' => $quantity, ':OrderLink' => $link,
':OrderCharge' => $charge, ':OrderAPIID' => $order_id, ':OrderDate' => time()));
}
$stmt = $pdo->prepare('UPDATE users SET UserBalance = :UserBalance WHERE UserID = :UserID');
$stmt->execute(array(':UserBalance' => $NewBalance, ':UserID' => $UserID));
echo '
Заказ успешно обработан
';
} else {
echo 'Сервис мин. кол-во '.$row['ServiceMinQuantity'].', максимальное кол-во '.$row['ServiceMaxQuantity'].'.';
}
} else {
echo 'Недостаточно баланса на счете. Пополните баланс.';
}
} else {
echo 'Службы не существует.';
}
} else {
echo 'Заполните все поля.';
}
}
}
if(GetAction('lock')) {
if(isset($_SESSION['lock-screen'])) {
$username = $_SESSION['lock-screen'];
$password = $layer->safe('password');
$stmt = $pdo->prepare('SELECT * FROM users WHERE UserName = :UserName AND UserPassword = :UserPassword');
$stmt->execute(array(':UserName' => $username, ':UserPassword' => md5($password)));
if($stmt->rowCount() == 1) {
$row = $stmt->fetch();
$stmt = $pdo->prepare('SELECT * FROM users_banned WHERE UserBannedID = :UserBannedID');
$stmt->execute(array(':UserBannedID' => $row['UserID']));
if($stmt->rowCount() == 1) {
$ban_row = $stmt->fetch();
if(time() > $ban_row['UserBannedExpireDate'] && $ban_row['UserBannedExpireDate'] != 0) {
$stmt = $pdo->prepare('DELETE FROM users_banned WHERE UserBannedID = :UserBannedID');
$stmt->execute(array(':UserBannedID' => $row['UserID']));
} else {
if($ban_row['UserBannedExpireDate'] == 0)
$time = 'Never';
else
$time = date('d.m.Y h:I:s', $ban_row['UserBannedExpireDate']);
echo 'Вы заблокированы!
';
echo 'Причина: '.$ban_row['UserBannedReason'].'
';
echo 'До: '.date('d.m.Y h:I:s', $ban_row['UserBannedDate']).'
';
echo 'Осталось: '.$time.'
';
exit();
}
}
unset($_SESSION['lock-screen']);
$_SESSION['auth'] = $row['UserID'];
$layer->redirect('index.php');
} else {
echo 'Неверный пароль.';
}
}
}
if(GetAction('register')) {
if($settings['RestrictRegistrations'] == 'No') {
if(isset($_SESSION['auth'])) {
$layer->redirect('index.php');
}
$username = $layer->safe('username');
$email = $layer->safe('email');
$password = $layer->safe('password');
$re_password = $layer->safe('re_password');
if($password == $re_password) {
if(!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
if(strlen($email) >= 4 && strlen($email) <= 48) {
if(strlen($username) >= 4 && strlen($username) <= 32) {
if(strlen($password) >= 4 && strlen($password) <= 32) {
if($username != $password) {
$stmt = $pdo->prepare('SELECT * FROM users WHERE UserName = :UserName OR UserEmail = :UserEmail');
$stmt->execute(array(':UserName' => $username, ':UserEmail' => $email));
if($stmt->rowCount() == 0) {
if($settings['RequireUserFirstName'] == 'Yes') {
$first_name = $layer->safe('first_name');
if(strlen($first_name) < 2 && strlen($first_name) > 16) {
echo 'Длина имени должна быть от 2 до 16 символов.';
exit();
}
} else {
$first_name = '';
}
if($settings['RequireUserLastName'] == 'Yes') {
$last_name = $layer->safe('last_name');
if(strlen($last_name) < 2 && strlen($last_name) > 16) {
echo 'Длина фамилии должна быть от 2 до 16 символов.';
exit();
}
} else {
$last_name = '';
}
if($settings['RequireUserSkypeID'] == 'Yes') {
$skype_id = $layer->safe('skype_id');
if(strlen($skype_id) < 2 && strlen($skype_id) > 32) {
echo 'Длина Skype должна быть от 2 до 32 символов.';
exit();
}
} else {
$skype_id = '';
}
if($settings['RequireUserInstagramID'] == 'Yes') {
$instagram_id = $layer->safe('instagram_id');
if(strlen($instagram_id) < 2 && strlen($instagram_id) > 32) {
echo 'Длина Skype должна быть от 2 до 32 символов.';
exit();
}
} else {
$instagram_id = '';
}
$password = md5($password);
$api = $layer->GenerateRandomString(15);
$api = md5($api);
$stmt = $pdo->prepare('INSERT INTO users (UserName, UserPassword, UserEmail, UserAPI, UserDate, UserIPAddress, UserFirstName, UserLastName, UserSkypeID, UserInstagramID)
VALUES (:UserName, :UserPassword, :UserEmail, :UserAPI, :UserDate, :UserIPAddress, :UserFirstName, :UserLastName, :UserSkypeID, :UserInstagramID)');
$stmt->execute(array(':UserName' => $username, ':UserPassword' => $password, ':UserEmail' => $email,
':UserAPI' => $api, ':UserDate' => time(), ':UserIPAddress' => $ip, ':UserFirstName' => $first_name, ':UserLastName' => $last_name, ':UserSkypeID' => $skype_id, ':UserInstagramID' => $instagram_id));
$_SESSION['auth'] = $pdo->lastInsertId();
if(isset($_POST['referr']) && ctype_digit($_POST['referr'])) {
$stmt = $pdo->prepare('SELECT UserID FROM users WHERE UserID = :UserID');
$stmt->execute(array(':UserID' => $_POST['referr']));
if($stmt->rowCount() == 1) {
$row = $stmt->fetch();
$stmt = $pdo->prepare('INSERT INTO referrs (ReferrUserID, ReferrReferralUserID, ReferrDate)
VALUES (:ReferrUserID, :ReferrReferralUserID, :ReferrDate)');
$stmt->execute(array(':ReferrUserID' => $row['UserID'], ':ReferrReferralUserID' => $_SESSION['auth'], ':ReferrDate' => time()));
}
}
$layer->redirect('index.php');
} else {
echo 'Учетная запись с этим именем пользователя / адресом электронной почты уже зарегистрирована.';
}
} else {
echo 'Пароль не может совпадать с именем пользователя.';
}
} else {
echo 'Длина пароля должна быть между 32 символами.';
}
} else {
echo 'Длина имени пользователя должна быть от 4 до 32 символов.';
}
} else {
echo 'Длина электронной почты должна составлять от 4 до 48 символов.';
}
} else {
echo 'Недействительный адрес электронной почты. Предоставьте рабочий.';
}
} else {
echo 'Ваш повторно введенный пароль не соответствует первому.';
}
} else {
echo 'Все регистрации отключены с панели.';
}
}