Агент для инстанта

 
Посетитель
small user social cms
Медаль
Сообщений: 100
Здраствуйте. Словом решил переделать агент для инстанта который разрабатывался для 1.9 версии. Все супер, подружил его с 1.10.3 . Проблема в отправке и приеме сообщений. При отправке с мессенджера в базу записываются пустые сообщения. При отправке с сайта мессенджер выдает пустую строку (но с указанием отправителя). Пользователей показует в нормальном режиме. Я понимаю что проблема в кодировке но не могу понять где именно. Вот два файла которые используються самим мессенджером. Думаю копать надо в них
Код PHP:
  1. <?
  2.  
  3. /******************************************************************************/
  4. // ICM v 2.0 for InstantCMS 1.7 //
  5. // 2011 FREEWARE //
  6. // //
  7. // //
  8. /******************************************************************************/
  9. define('PATH', $_SERVER['DOCUMENT_ROOT']);
  10. define('HOST', 'http://' . $_SERVER['HTTP_HOST']);
  11. define("VALID_CMS", 1);
  12. //header('Content-Type: text/html;charset=windows-1251');
  13. include('core/cms.php');
  14. include('components/users/includes/usercore.php');
  15.  
  16. $inCore = cmsCore::getInstance();
  17. $inCore->loadClass('user');
  18.  
  19. $inDB= cmsDatabase::getInstance();
  20. $inUser= cmsUser::getInstance();
  21. $inUser->update();
  22. $inCore->onlineStats();
  23. $user_id=$inUser->id;
  24. $inCore->loadModel('users');
  25. $dom=new DOMDocument('1.0', 'UTF-8');
  26.  
  27. function idtonick($uid){
  28.  
  29. $inDB= cmsDatabase::getInstance();
  30.  
  31. $sq="SELECT nickname FROM cms_users WHERE id=$uid LIMIT 1";
  32. $result=$inDB->query($sq);
  33. if ($inDB->num_rows($result)){
  34. $nick = $inDB->fetch_assoc($result);
  35. return $nick['nickname'];
  36.  
  37. }
  38. else return "";
  39. }
  40.  
  41. if ($user_id){
  42. if ($inCore->inRequest('cmd')){
  43. $cmd = $inCore->request('cmd', 'str');
  44. if ($cmd=='enter'){
  45. $sq="DELETE FROM cms_imchat_online WHERE user=$user_id";
  46. $inDB->query($sq);
  47. $sq="INSERT INTO cms_imchat_online (user) VALUES ($user_id)";
  48. $inDB->query($sq);
  49.  
  50. }
  51.  
  52. if ($cmd=="exit"){
  53.  
  54. $sq="DELETE FROM cms_imchat_online WHERE user=$user_id";
  55. $inDB->query($sq);
  56. }
  57.  
  58. if ($cmd=="refresh"){
  59. if($inCore->inRequest('lmes')){$lastmsg=$inCore->request('lmes','int');}
  60. $sq="SELECT * FROM cms_imchat where id>$lastmsg ORDER BY id";
  61. $result=$inDB->query($sq);
  62. $root=$dom->createElement('response');
  63. if ($inDB->num_rows($result)){
  64.  
  65. while($nmes = $inDB->fetch_assoc($result)){
  66. if($nmes['to']<>$user_id && $nmes['privat']==1&& $nmes['from']<>$user_id){}
  67. else{
  68. $name=$dom->createElement('name');
  69. $root->appendChild($name);
  70. $nsender=idtonick($nmes['from']);
  71. $nto=idtonick($nmes['to']);
  72. $name->appendChild($dom->createElement('sender',iconv ("windows-1251","utf-8",$nsender)));
  73. $name->appendChild($dom->createElement('to',iconv ("windows-1251","utf-8",$nto)));
  74. $name->appendChild($dom->createElement('time',$nmes['time']));
  75. $name->appendChild($dom->createElement('msg',iconv ("windows-1251","utf-8",$nmes['msg'])));
  76. $name->appendChild($dom->createElement('privat',$nmes['privat']));
  77. $name->appendChild($dom->createElement('lastmsg',$nmes['id']));
  78. }
  79. }
  80.  
  81. }
  82. $dom->appendChild($root);
  83. echo $dom->saveXML();
  84.  
  85.  
  86. }
  87.  
  88.  
  89. if ($cmd=='say'){
  90. $to=$inCore->request('to','int');
  91. $time=date('m.d.y H:i:s');
  92. $msg=$inCore->request('msg','str');
  93. $prv=$inCore->request('prv','int');
  94. if($to>=0){
  95. $sq="INSERT INTO cms_imchat (`from`,`to`,`time`,msg,privat) VALUES ($user_id,$to,'{$time}','{$msg}',$prv)";
  96.  
  97. $inDB->query($sq);
  98. $lastid=$inDB->get_last_id('cms_imchat');
  99. $sq="DELETE FROM cms_imchat WHERE id <$lastid-20";
  100. $inDB->query($sq);
  101.  
  102.  
  103.  
  104. }
  105.  
  106.  
  107. }
  108.  
  109. if ($cmd=='online'){
  110. $sq="SELECT user from cms_imchat_online";
  111. $result=$inDB->query($sq);
  112. $root=$dom->createElement('response');
  113. if ($inDB->num_rows($result)){
  114. while($rec = $inDB->fetch_assoc($result)){
  115. $name=$dom->createElement('name');
  116. $root->appendChild($name);
  117. $nick=idtonick($rec['user']);
  118. $name->appendChild($dom->createElement('id',$rec['user']));
  119. $name->appendChild($dom->createElement('nick',iconv ("windows-1251","utf-8",$nick)));
  120.  
  121.  
  122. }
  123.  
  124.  
  125.  
  126. }
  127.  
  128. $dom->appendChild($root);
  129. echo $dom->saveXML();
  130.  
  131.  
  132. }
  133.  
  134.  
  135.  
  136.  
  137.  
  138. }
  139. }
  140. ?>
Код PHP:
  1. <?
  2. /******************************************************************************/
  3. // ICM v 2.0 for InstantCMS 1.7 //
  4. // 2011 FREEWARE //
  5. // //
  6. // //
  7. /******************************************************************************/
  8.  
  9. define('PATH', $_SERVER['DOCUMENT_ROOT']);
  10. define('HOST', 'http://' . $_SERVER['HTTP_HOST']);
  11. define("VALID_CMS", 1);
  12. //header('Content-Type: text/html;charset=windows-1251');
  13. include('core/cms.php');
  14. include('components/users/includes/usercore.php');
  15. $inCore = cmsCore::getInstance();
  16. $inCore->loadClass('user');
  17. $inDB= cmsDatabase::getInstance();
  18. $inUser= cmsUser::getInstance();
  19. $inUser->update();
  20. $inCore->onlineStats();
  21. $user_id=$inUser->id;
  22. $inCore->loadModel('users');
  23.  
  24. $model=new cms_model_users();
  25. $dom=new DOMDocument('1.0', 'UTF-8');
  26. $root=$dom->createElement('response');
  27. if (!$user_id){
  28. $code=$inCore->request('code', 'str');
  29. $inCore->setCookie('userid', $code, time()+60*60*24*30);
  30. $inUser->autoLogin();
  31. $inUser->update();
  32. $inCore->onlineStats();
  33. $user_id=$inUser->id;
  34.  
  35. }
  36.  
  37.  
  38.  
  39. if ($user_id){
  40.  
  41. if ($inCore->inRequest('cmd')){
  42. $cmd = $inCore->request('cmd', 'str');
  43.  
  44.  
  45.  
  46.  
  47. if ($cmd=='islogin'){
  48. $mas=$model->getUser($user_id);
  49. $img=explode ('"',usrImage($user_id));
  50. $name=$dom->createElement('name');
  51. $root->appendChild($name);
  52. $name->appendChild($dom->createElement('id',$user_id));
  53. $name->appendChild($dom->createElement('nick',iconv ("windows-1251","utf-8",$mas['nickname'])));
  54. $name->appendChild($dom->createElement('status_text',iconv ("windows-1251","utf-8",$mas['status_text'])));
  55. $name->appendChild($dom->createElement('img',$img[5]));
  56.  
  57. }
  58.  
  59.  
  60. if($cmd=='clist'){
  61. $clist=$inUser->getFriends($user_id);
  62.  
  63.  
  64. foreach($clist as $val){
  65. $img=explode ('"',usrImage($val['id']));
  66. if($inUser->isOnline($val['id'])){$status='online';}else{$status='offline';};
  67. $status_text=$model->getUser($val['id']);
  68. $name=$dom->createElement('name');
  69. $root->appendChild($name);
  70. $name->appendChild($dom->createElement('nick',iconv ("windows-1251","utf-8",$val['nickname'])));
  71. $name->appendChild($dom->createElement('img',$img[5]));
  72. $name->appendChild($dom->createElement('id',$val['id']));
  73. $name->appendChild($dom->createElement('status',$status));
  74. $name->appendChild($dom->createElement('st_text',iconv ("windows-1251","utf-8",$status_text['status_text'])));
  75.  
  76.  
  77.  
  78. }
  79.  
  80.  
  81. }
  82.  
  83.  
  84. if($cmd=='getstatuslist'){
  85. $clist=$inUser->getFriends($user_id);
  86. foreach($clist as $val){
  87. if($inUser->isOnline($val['id'])){$status='online';}else{$status='offline';};
  88. $status_text=$model->getUser($val['id']);
  89. $name=$dom->createElement('name');
  90. $root->appendChild($name);
  91. $name->appendChild($dom->createElement('id',$val['id']));
  92. $name->appendChild($dom->createElement('status',$status));
  93. $name->appendChild($dom->createElement('st_text',iconv ("windows-1251","utf-8",$status_text['status_text'])));
  94.  
  95.  
  96. }
  97.  
  98.  
  99. }
  100.  
  101. if($cmd=='goprofile'){
  102. if ($inCore->inRequest('id')){$_id=$inCore->request('id','str');
  103. $user = $inDB->get_fields('cms_users', 'id='.$_id, 'login');
  104. $url=HOST."/users/".$user['login'];
  105. $inCore->redirect($url);
  106.  
  107. }
  108.  
  109.  
  110. }
  111.  
  112. if ($cmd=='gourl'){
  113. if ($inCore->inRequest('url')){$path=$inCore->request('url','str');
  114. $url=HOST."/".$path;
  115. $inCore->redirect($url);
  116.  
  117.  
  118. }
  119.  
  120. }
  121.  
  122. if ($cmd=="ping"){
  123. $name=$dom->createElement('name');
  124. $root->appendChild($name);
  125. $name->appendChild($dom->createElement('reply',"ok"));
  126.  
  127. }
  128.  
  129.  
  130.  
  131. if ($cmd=='nmess'){
  132. $sql="SELECT m.id, m.senddate as fpubdate, m.from_id as sender_id, u.nickname as author, u.login as author_login, m.message
  133. FROM cms_user_msg m
  134. LEFT JOIN cms_users u ON m.from_id = u.id
  135. WHERE (m.to_id = $user_id)AND(m.is_new=1)
  136. ORDER BY senddate DESC";
  137. $result = $inDB->query($sql);
  138. if ($inDB->num_rows($result)){
  139.  
  140. while($record = $inDB->fetch_assoc($result)){
  141. $name=$dom->createElement('name');
  142. $root->appendChild($name);
  143. $name->appendChild($dom->createElement('sender',$record['sender_id']));
  144. $name->appendChild($dom->createElement('author',iconv ("windows-1251","utf-8",$record['author'])));
  145. $name->appendChild($dom->createElement('date',$record['fpubdate']));
  146.  
  147. $message=str_replace('<', '[', str_replace('>',']',$record['message']));
  148. $message=htmlspecialchars($message);
  149. $name->appendChild($dom->createElement('message',iconv ("windows-1251","utf-8",$message)));
  150. $inDB->query("UPDATE cms_user_msg SET is_new = 0 WHERE id = ".$record['id']);
  151.  
  152. }
  153.  
  154.  
  155. }
  156.  
  157. }
  158.  
  159. if ($cmd=='send'){
  160. if ($inCore->inRequest('to')){$to_id=$inCore->request('to','str');
  161. if ($inCore->inRequest('mess')){$mess=$inCore->request('mess','str');
  162. $mess=$inCore->parseSmiles($mess,true);
  163. $inUser->sendMessage($user_id,$to_id,$mess);
  164.  
  165. }
  166.  
  167.  
  168. }
  169.  
  170.  
  171. }
  172. //copy from user>frontend.php
  173. if ($cmd=='search'){
  174. $s = '';
  175.  
  176.  
  177. if (@$_REQUEST['gender']){
  178. $val = $inCore->request('gender', 'str', 'm');
  179. if ($val=='m'){
  180. $s .= " AND p.gender = 'm'";
  181.  
  182. }
  183.  
  184. elseif ($val=='f') {
  185. $s .= " AND p.gender = 'f'";
  186.  
  187. }
  188. }
  189.  
  190. if (@$_REQUEST['agefrom']){
  191. $val = $inCore->request('agefrom', 'int', 18);
  192. $s .= ' AND DATEDIFF(NOW(), u.birthdate) >= '.($val*365);
  193.  
  194. }
  195.  
  196. if (@$_REQUEST['ageto']){
  197. $val = $inCore->request('ageto', 'int');
  198. $s .= ' AND DATEDIFF(NOW(), u.birthdate) <= '.($val*365);
  199.  
  200. }
  201.  
  202. if (@$_REQUEST['name']){
  203. $val = $inCore->request('name', 'str', '');
  204. $val = strtolower($val);
  205. $s .= ' AND LOWER(u.nickname) LIKE \'%'.$val.'%\'';
  206.  
  207. }
  208.  
  209. if (@$_REQUEST['city']){
  210. $val = $inCore->request('city', 'str', '');
  211. $val = strtolower($val);
  212. $s .= ' AND LOWER(p.city) LIKE \''.$val.'%\'';
  213.  
  214. }
  215.  
  216. if (@$_REQUEST['hobby']){
  217. $val = $inCore->request('hobby', 'str', '');
  218. $val = strtolower($val);
  219. $s .= ' AND (LOWER(p.description) LIKE \'%'.$val.'%\' OR LOWER(p.formsdata) LIKE \'%'.$val.'%\')';
  220.  
  221. }
  222. // ostavit budet nuzhno [email protected]
  223. $sql = "SELECT u.*, p.*, u.id as id, u.status as microstatus,
  224. u.regdate as fregdate,
  225. u.logdate as flogdate,
  226. u.status as microstatus
  227. FROM cms_users u, cms_user_profiles p
  228. WHERE u.is_deleted = 0 AND u.is_locked = 0 AND p.user_id = u.id $s
  229. ";
  230.  
  231. $result= $inDB->query($sql);
  232. $is_users = $inDB->num_rows($result);
  233.  
  234.  
  235. if ($is_users){
  236. while($usr = $inDB->fetch_assoc($result)){
  237.  
  238. if($inUser->isOnline($usr['id'])){$status='online';}else{$status='offline';};
  239. $name=$dom->createElement('name');
  240. $root->appendChild($name);
  241. $name->appendChild($dom->createElement('id',$usr['id']));
  242. $name->appendChild($dom->createElement('login',$usr['login']));
  243. $name->appendChild($dom->createElement('nickname',$usr['nickname']));
  244. $name->appendChild($dom->createElement('gender',$usr['gender']));
  245. $name->appendChild($dom->createElement('status_text',$usr['microstatus']));
  246. $name->appendChild($dom->createElement('status',$status));
  247. $name->appendChild($dom->createElement('karma',$usr['karma']));
  248. $name->appendChild($dom->createElement('rating',$usr['rating']));
  249. $name->appendChild($dom->createElement('bdate',$usr['birthdate']));
  250. $name->appendChild($dom->createElement('imgurl',$usr['imageurl']));
  251.  
  252.  
  253.  
  254.  
  255. }
  256.  
  257.  
  258.  
  259. }
  260.  
  261.  
  262.  
  263. }
  264.  
  265. if ($cmd=='upstatus'){
  266. if ($inCore->inRequest('st')){$status=$inCore->request('st','str','');
  267.  
  268. if (strlen($status)>100){ $status = substr($status, 0, 100); }
  269.  
  270. $sql = "UPDATE cms_users
  271. SET status = '{$status}', status_date = NOW()
  272. WHERE id = {$user_id}
  273. LIMIT 1";
  274.  
  275. $inDB->query($sql);
  276.  
  277.  
  278.  
  279.  
  280. }
  281.  
  282. }
  283.  
  284.  
  285. if ($cmd=='whoonline'){
  286.  
  287. $mas=$inUser->getOnlineCount();
  288. $name=$dom->createElement('name');
  289. $root->appendChild($name);
  290. $name->appendChild($dom->createElement('users',$mas['users']));
  291. $name->appendChild($dom->createElement('quests',$mas['quests']));
  292.  
  293. }
  294.  
  295.  
  296.  
  297.  
  298.  
  299. }
  300.  
  301. }
  302.  
  303.  
  304. $dom->appendChild($root);
  305. echo $dom->saveXML();
  306. ?>
Посетитель
small user social cms
Медаль
Сообщений: 100
Чтоб подружить агент и систему установил на поддомене версию 1.9 и просто вручную заменил настройки к БД. Это так инфо для размышления. Я просто перепробовал уже все что можно но так и не могу додуматься в чем проблема.
Посетитель
small user social cms
Медаль
Сообщений: 100
Все сделал кому интересно тут реализация http://melnychuk.info/35-agent-dlya-instantcms-1103-pdhodit-na-16-19.html
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: