Файл: InstantSocial/uploud/api/wallpost.php
Строк: 100
<?php
/*******************************************************************************/
// InstantCMS v1.8 //
// http://www.instantcms.ru/ //
// API to http://nextgame.ru //
// written by Marat Fatikhov //
// (nickname Марат on a site) //
// E-mail: f-marat@mail.ru //
// //
// LICENSED BY GNU/GPL v2 //
// //
/********************************************************************************/
define("VALID_CMS", 1);
define('PATH', $_SERVER['DOCUMENT_ROOT']);
include(PATH.'/core/cms.php');
include(PATH.'/includes/nextgame.inc.php');
$inCore = cmsCore::getInstance();
$inDB = cmsDatabase::getInstance();
$inCore->loadClass('user');
$inUser = cmsUser::getInstance();
$poster_type = $inCore->request('poster_type', 'str', '');
$poster_id = $inCore->request('poster_id', 'int', 0);
$uid = $inCore->request('uid', 'str', '');
$message = $inCore->request('message', 'str', '');
$time = $inCore->request('time', 'str', '');
$sig = $inCore->request('sig', 'str', '');
if (!$poster_type || !$poster_id || !$uid || !$message || !$time || !$sig ){
echo ErrorReply('1', 'Неверные параметры запроса');
exit();
}
//проверяем сигнатуру
if(!isSignatureValid ()){
echo ErrorReply('2', 'Неверная сигнатура');
exit();
}
$message = iconv('utf-8', 'cp1251', $message);
//начинаем формировать ответ сайта
$site_reply = '<?xml version="1.0" encoding="UTF-8"?><posts>';
// заносим id пользователей в массив $users
$users = explode(',', $uid);
//перебираем массив и заполняем для каждого данные в ответ
foreach($users as $value ){
$user_id = $value;
// проверяем, является ли получатель пользователем
if(!$inDB->get_field('cms_users', "id= {$user_id}", 'id')) {
echo ErrorReply('3', 'Пользователь не найден');
exit();
}
//проверяем условия и готовим разные сообщения
switch($poster_type){
case 'user':
// проверяем отправителя на пользователя
if(!$inDB->get_field('cms_users', "id= {$poster_id}", 'id')) {
echo ErrorReply('4', 'Отправитель сообщения не найден');
exit();
}
$inCore->loadModel('users');
$model = new cms_model_users();
$usr = $model->getUserShort($user_id);
if (!$usr) { cmsCore::error404(); }
$sql = "INSERT INTO cms_user_wall (user_id, author_id, pubdate, content, usertype)
VALUES ('$user_id', '$poster_id', NOW(), '$message', 'user')";
$inDB->query($sql);
$wall_id = $inDB->get_last_id('cms_user_wall');
//отправляем сообщение получателю, если подписан
$usr['email_newmsg'] = $inDB->get_field('cms_user_profiles', "user_id='{$user_id}'", 'email_newmsg');
if ($usr['email_newmsg'] && $user_id != $poster_id){
$inConf = cmsConfig::getInstance();
$to_email = $inDB->get_field('cms_users', 'id='.$user_id, 'email');
$postdate = date('d/m/Y H:i:s');
$from_nick = $inDB->get_field('cms_users', "id='{$poster_id}'", 'nickname');
$host = 'http://'.$_SERVER['SERVER_NAME'];
$profilelink = $host . cmsUser::getProfileURL($usr['login']);
$letter_path = PATH.'/includes/letters/newwallpost.txt';
$letter = file_get_contents($letter_path);
$letter= str_replace('{sitename}', $inConf->sitename, $letter);
$letter= str_replace('{profilelink}', $profilelink, $letter);
$letter= str_replace('{date}', $postdate, $letter);
$letter= str_replace('{from}', $from_nick, $letter);
global $_LANG;
$inCore->mailText($to_email, $_LANG['NEW_POST_ON_WALL'].'! - '.$inConf->sitename, $letter);
}
//формируем ответ сайта
$site_reply .= '<post_id="'.$wall_id.'"><user_id="'.$user_id.'">';
break;
case 'app':
//формируем код для получения ссылки на игру
$first_sql = "SELECT id
FROM cms_user_wall
ORDER BY id DESC LIMIT 1 " ;
$result = $inDB->query($first_sql);
$wall_id = 0;
if($inDB->num_rows($result)) {
$info = $inDB->fetch_assoc($result);
$wall_id = $info['id']+1; }
$url = 'http://api2.nextgame.ru/iframe/js/link/?app_id='.$poster_id.'&site_id='.SITE_ID.'&post_id='.$wall_id.'&poster_id='.$user_id.'&linktype=1' ;
$code = '<script type='text/javascript' src=''.$url.''></script>';
$message_text = 'Сообщение от приложения '.$code.' :<br>"'.$message.'"';
$message_text = mysql_real_escape_string($message_text);
$sql = "INSERT INTO cms_user_wall (user_id, author_id, pubdate, content, usertype)
VALUES ('$user_id', '$user_id', NOW(), '$message_text', 'user')";
$inDB->query($sql);
$wall_id = $inDB->get_last_id('cms_user_wall');
$url = 'http://api2.nextgame.ru/iframe/js/link/?app_id='.$poster_id.'&site_id='.SITE_ID.'&post_id='.$wall_id.'&poster_id='.$user_id.'&linktype=1' ;
$code = '<script type='text/javascript' src=''.$url.''></script>';
$message_text = 'Сообщение от приложения '.$code.' :<br>"'.$message.'"';
$message_text = mysql_real_escape_string($message_text);
$sql = "UPDATE cms_user_wall
SET content='{$message_text}'
WHERE id='{$wall_id}' ";
$inDB->query($sql);
//формируем ответ сайта
$site_reply .= '<post_id="'.$wall_id.'"><user_id="'.$user_id.'">';
break;
}
}
//отправляем ответ платформе
$site_reply .= '</posts>';
echo iconv('cp1251', 'utf-8', $site_reply);
?>