PageRenderTime 50ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/webroot/profile.php

https://bitbucket.org/AlethiaGrid/os-profile-module
PHP | 683 lines | 481 code | 151 blank | 51 comment | 45 complexity | dcf4799f07a40949452aa579b8328eee MD5 | raw file
  1. <?php
  2. include("databaseinfo.php");
  3. //
  4. // Search DB
  5. //
  6. mysql_connect ($DB_HOST, $DB_USER, $DB_PASSWORD);
  7. mysql_select_db ($DB_NAME);
  8. #
  9. # Copyright (c)Melanie Thielker (http://opensimulator.org/)
  10. #
  11. ###################### No user serviceable parts below #####################
  12. $zeroUUID = "00000000-0000-0000-0000-000000000000";
  13. #
  14. # The XMLRPC server object
  15. #
  16. $xmlrpc_server = xmlrpc_server_create();
  17. #
  18. # Classifieds
  19. #
  20. # Avatar Classifieds Request
  21. xmlrpc_server_register_method($xmlrpc_server, "avatarclassifiedsrequest",
  22. "avatarclassifiedsrequest");
  23. function avatarclassifiedsrequest($method_name, $params, $app_data)
  24. {
  25. $req = $params[0];
  26. $uuid = $req['uuid'];
  27. $result = mysql_query("SELECT * FROM classifieds WHERE ".
  28. "creatoruuid = '". mysql_real_escape_string($uuid) ."'");
  29. $data = array();
  30. while (($row = mysql_fetch_assoc($result)))
  31. {
  32. $data[] = array(
  33. "classifiedid" => $row["classifieduuid"],
  34. "name" => $row["name"]);
  35. }
  36. $response_xml = xmlrpc_encode(array(
  37. 'success' => True,
  38. 'data' => $data
  39. ));
  40. print $response_xml;
  41. }
  42. # Classifieds Update
  43. xmlrpc_server_register_method($xmlrpc_server, "classified_update",
  44. "classified_update");
  45. function classified_update($method_name, $params, $app_data)
  46. {
  47. global $zeroUUID;
  48. $req = $params[0];
  49. $classifieduuid = $req['classifiedUUID'];
  50. $creator = $req['creatorUUID'];
  51. $category = $req['category'];
  52. $name = $req['name'];
  53. $description = $req['description'];
  54. $parceluuid = $req['parcelUUID'];
  55. $parentestate = $req['parentestate'];
  56. $snapshotuuid = $req['snapshotUUID'];
  57. $simname = $req['sim_name'];
  58. $parcelname = $req['parcelname'];
  59. $globalpos = $req['globalpos'];
  60. $classifiedflag = $req['classifiedFlags'];
  61. $priceforlist = $req['classifiedPrice'];
  62. // Check if we already have this one in the database
  63. $check = mysql_query("SELECT COUNT(*) FROM classifieds WHERE ".
  64. "classifieduuid = '". mysql_real_escape_string($classifieduuid) ."'");
  65. while ($row = mysql_fetch_row($check))
  66. {
  67. $ready = $row[0];
  68. }
  69. // Doing some late checking
  70. // Should be done by the module but let's see what happens when
  71. // I do it here
  72. if ($parcelname == "")
  73. $parcelname = "Unknown";
  74. if ($parceluuid == "")
  75. $parceluuid = $zeroUUID;
  76. if ($description == "")
  77. $description = "No Description";
  78. if ($ready == 0)
  79. {
  80. if ($classifiedflag == 0)
  81. {
  82. $creationdate = time();
  83. $expirationdate = time() + (7 * 24 * 60 * 60);
  84. }
  85. else /* classifiedflag == 32 */
  86. {
  87. $creationdate = time();
  88. $expirationdate = time() + (52 * 7 * 24 * 60 * 60);
  89. }
  90. $sql = "INSERT INTO classifieds VALUES ".
  91. "('". mysql_real_escape_string($classifieduuid) ."',".
  92. "'". mysql_real_escape_string($creator) ."',".
  93. "". mysql_real_escape_string($creationdate) .",".
  94. "". mysql_real_escape_string($expirationdate) .",".
  95. "'". mysql_real_escape_string($category) ."',".
  96. "'". mysql_real_escape_string($name) ."',".
  97. "'". mysql_real_escape_string($description) ."',".
  98. "'". mysql_real_escape_string($parceluuid) ."',".
  99. "". mysql_real_escape_string($parentestate) .",".
  100. "'". mysql_real_escape_string($snapshotuuid) ."',".
  101. "'". mysql_real_escape_string($simname) ."',".
  102. "'". mysql_real_escape_string($globalpos) ."',".
  103. "'". $parcelname ."',".
  104. "". mysql_real_escape_string($classifiedflag) .",".
  105. "". mysql_real_escape_string($priceforlist) .")";
  106. }
  107. else
  108. {
  109. $expirationdate = $creationdate + (52 * 7 * 24 * 60 * 60);
  110. $sql = "UPDATE classifieds SET ".
  111. "`creatoruuid`='". mysql_real_escape_string($creator)."',".
  112. "`expirationdate`=". mysql_real_escape_string($expirationdate).",".
  113. "`category`='". mysql_real_escape_string($category)."',".
  114. "`name`='". mysql_real_escape_string($name)."',".
  115. "`description`='". mysql_real_escape_string($description)."',".
  116. "`parceluuid`='". mysql_real_escape_string($parceluuid)."',".
  117. "`parentestate`=". mysql_real_escape_string($parentestate).",".
  118. "`snapshotuuid`='". mysql_real_escape_string($snapshotuuid)."',".
  119. "`simname`='". mysql_real_escape_string($simname)."',".
  120. "`posglobal`='". mysql_real_escape_string($globalpos)."',".
  121. "`parcelname`='". $parcelname."',".
  122. "`classifiedflags`=". mysql_real_escape_string($classifiedflag).",".
  123. "`priceforlisting`=". mysql_real_escape_string($priceforlist).
  124. " WHERE ".
  125. "`classifieduuid`='". mysql_real_escape_string($classifieduuid)."'";
  126. }
  127. // Create a new record for this classified
  128. $result = mysql_query($sql);
  129. $response_xml = xmlrpc_encode(array(
  130. 'success' => $result,
  131. 'errorMessage' => mysql_error()
  132. ));
  133. print $response_xml;
  134. }
  135. # Classifieds Delete
  136. xmlrpc_server_register_method($xmlrpc_server, "classified_delete",
  137. "classified_delete");
  138. function classified_delete($method_name, $params, $app_data)
  139. {
  140. $req = $params[0];
  141. $classifieduuid = $req['classifiedID'];
  142. $result = mysql_query("DELETE FROM classifieds WHERE ".
  143. "classifieduuid = '".mysql_real_escape_string($classifieduuid) ."'");
  144. $response_xml = xmlrpc_encode(array(
  145. 'success' => True,
  146. 'data' => $data
  147. ));
  148. print $response_xml;
  149. }
  150. #
  151. # Picks
  152. #
  153. # Avatar Picks Request
  154. xmlrpc_server_register_method($xmlrpc_server, "avatarpicksrequest",
  155. "avatarpicksrequest");
  156. function avatarpicksrequest($method_name, $params, $app_data)
  157. {
  158. $req = $params[0];
  159. $uuid = $req['uuid'];
  160. $data = array();
  161. $result = mysql_query("SELECT `pickuuid`,`name` FROM userpicks WHERE ".
  162. "creatoruuid = '". mysql_real_escape_string($uuid) ."'");
  163. while (($row = mysql_fetch_assoc($result)))
  164. {
  165. $data[] = array(
  166. "pickid" => $row["pickuuid"],
  167. "name" => $row["name"]);
  168. }
  169. $response_xml = xmlrpc_encode(array(
  170. 'success' => True,
  171. 'data' => $data
  172. ));
  173. print $response_xml;
  174. }
  175. # Request Picks for User
  176. xmlrpc_server_register_method($xmlrpc_server, "pickinforequest",
  177. "pickinforequest");
  178. function pickinforequest($method_name, $params, $app_data)
  179. {
  180. $req = $params[0];
  181. $uuid = $req['avatar_id'];
  182. $pick = $req['pick_id'];
  183. $data = array();
  184. $result = mysql_query("SELECT * FROM userpicks WHERE ".
  185. "creatoruuid = '". mysql_real_escape_string($uuid) ."' AND ".
  186. "pickuuid = '". mysql_real_escape_string($pick) ."'");
  187. $row = mysql_fetch_assoc($result);
  188. if ($row != False)
  189. {
  190. if ($row["description"] == null || $row["description"] == "")
  191. $row["description"] = "No description given";
  192. $data[] = array(
  193. "pickuuid" => $row["pickuuid"],
  194. "creatoruuid" => $row["creatoruuid"],
  195. "toppick" => $row["toppick"],
  196. "parceluuid" => $row["parceluuid"],
  197. "name" => $row["name"],
  198. "description" => $row["description"],
  199. "snapshotuuid" => $row["snapshotuuid"],
  200. "user" => $row["user"],
  201. "originalname" => $row["originalname"],
  202. "simname" => $row["simname"],
  203. "posglobal" => $row["posglobal"],
  204. "sortorder"=> $row["sortorder"],
  205. "enabled" => $row["enabled"]);
  206. }
  207. $response_xml = xmlrpc_encode(array(
  208. 'success' => True,
  209. 'data' => $data
  210. ));
  211. print $response_xml;
  212. }
  213. # Picks Update
  214. xmlrpc_server_register_method($xmlrpc_server, "picks_update",
  215. "picks_update");
  216. function picks_update($method_name, $params, $app_data)
  217. {
  218. global $zeroUUID;
  219. $req = $params[0];
  220. $pickuuid = $req['pick_id'];
  221. $creator = $req['creator_id'];
  222. $toppick = $req['top_pick'];
  223. $name = $req['name'];
  224. $description = $req['desc'];
  225. $parceluuid = $req['parcel_uuid'];
  226. $snapshotuuid = $req['snapshot_id'];
  227. $user = $req['user'];
  228. $simname = $req['sim_name'];
  229. $posglobal = $req['pos_global'];
  230. $sortorder = $req['sort_order'];
  231. $enabled = $req['enabled'];
  232. if ($parceluuid == "")
  233. $parceluuid = $zeroUUID;
  234. if ($description == "")
  235. $description = "No Description";
  236. // Check if we already have this one in the database
  237. $check = mysql_query("SELECT COUNT(*) FROM userpicks WHERE ".
  238. "pickuuid = '". mysql_real_escape_string($pickuuid) ."'");
  239. $row = mysql_fetch_row($check);
  240. if ($row[0] == 0)
  241. {
  242. if ($user == null || $user == "")
  243. $user = "Unknown";
  244. //The original parcel name is the same as the name of the
  245. //profile pick when a new profile pick is being created.
  246. $original = $name;
  247. $query = "INSERT INTO userpicks VALUES ".
  248. "('". mysql_real_escape_string($pickuuid) ."',".
  249. "'". mysql_real_escape_string($creator) ."',".
  250. "'". mysql_real_escape_string($toppick) ."',".
  251. "'". mysql_real_escape_string($parceluuid) ."',".
  252. "'". mysql_real_escape_string($name) ."',".
  253. "'". mysql_real_escape_string($description) ."',".
  254. "'". mysql_real_escape_string($snapshotuuid) ."',".
  255. "'". mysql_real_escape_string($user) ."',".
  256. "'". mysql_real_escape_string($original) ."',".
  257. "'". mysql_real_escape_string($simname) ."',".
  258. "'". mysql_real_escape_string($posglobal) ."',".
  259. "'". mysql_real_escape_string($sortorder) ."',".
  260. "'". mysql_real_escape_string($enabled) ."')";
  261. }
  262. else
  263. {
  264. $query = "UPDATE userpicks SET " .
  265. "parceluuid = '". mysql_real_escape_string($parceluuid) . "', " .
  266. "name = '". mysql_real_escape_string($name) . "', " .
  267. "description = '". mysql_real_escape_string($description) . "', " .
  268. "snapshotuuid = '". mysql_real_escape_string($snapshotuuid) . "' WHERE ".
  269. "pickuuid = '". mysql_real_escape_string($pickuuid) ."'";
  270. }
  271. $result = mysql_query($query);
  272. if ($result != False)
  273. $result = True;
  274. $response_xml = xmlrpc_encode(array(
  275. 'success' => $result,
  276. 'errorMessage' => mysql_error()
  277. ));
  278. print $response_xml;
  279. }
  280. # Picks Delete
  281. xmlrpc_server_register_method($xmlrpc_server, "picks_delete",
  282. "picks_delete");
  283. function picks_delete($method_name, $params, $app_data)
  284. {
  285. $req = $params[0];
  286. $pickuuid = $req['pick_id'];
  287. $result = mysql_query("DELETE FROM userpicks WHERE ".
  288. "pickuuid = '".mysql_real_escape_string($pickuuid) ."'");
  289. if ($result != False)
  290. $result = True;
  291. $response_xml = xmlrpc_encode(array(
  292. 'success' => $result,
  293. 'errorMessage' => mysql_error()
  294. ));
  295. print $response_xml;
  296. }
  297. #
  298. # Notes
  299. #
  300. # Avatar Notes Request
  301. xmlrpc_server_register_method($xmlrpc_server, "avatarnotesrequest",
  302. "avatarnotesrequest");
  303. function avatarnotesrequest($method_name, $params, $app_data)
  304. {
  305. $req = $params[0];
  306. $uuid = $req['avatar_id'];
  307. $targetuuid = $req['uuid'];
  308. $result = mysql_query("SELECT notes FROM usernotes WHERE ".
  309. "useruuid = '". mysql_real_escape_string($uuid) ."' AND ".
  310. "targetuuid = '". mysql_real_escape_string($targetuuid) ."'");
  311. $row = mysql_fetch_row($result);
  312. if ($row == False)
  313. $notes = "";
  314. else
  315. $notes = $row[0];
  316. $data[] = array(
  317. "targetid" => $targetuuid,
  318. "notes" => $notes);
  319. $response_xml = xmlrpc_encode(array(
  320. 'success' => True,
  321. 'data' => $data
  322. ));
  323. print $response_xml;
  324. }
  325. # Avatar Notes Update
  326. xmlrpc_server_register_method($xmlrpc_server, "avatar_notes_update",
  327. "avatar_notes_update");
  328. function avatar_notes_update($method_name, $params, $app_data)
  329. {
  330. $req = $params[0];
  331. $uuid = $req['avatar_id'];
  332. $targetuuid = $req['target_id'];
  333. $notes = $req['notes'];
  334. // Check if we already have this one in the database
  335. $check = mysql_query("SELECT COUNT(*) FROM usernotes WHERE ".
  336. "useruuid = '". mysql_real_escape_string($uuid) ."' AND ".
  337. "targetuuid = '". mysql_real_escape_string($targetuuid) ."'");
  338. $row = mysql_fetch_row($check);
  339. if ($row[0] == 0)
  340. {
  341. // Create a new record for this avatar note
  342. $result = mysql_query("INSERT INTO usernotes VALUES ".
  343. "('". mysql_real_escape_string($uuid) ."',".
  344. "'". mysql_real_escape_string($targetuuid) ."',".
  345. "'". mysql_real_escape_string($notes) ."')");
  346. }
  347. else if ($notes == "")
  348. {
  349. // Delete the record for this avatar note
  350. $result = mysql_query("DELETE FROM usernotes WHERE ".
  351. "useruuid = '". mysql_real_escape_string($uuid) ."' AND ".
  352. "targetuuid = '". mysql_real_escape_string($targetuuid) ."'");
  353. }
  354. else
  355. {
  356. // Update the existing record
  357. $result = mysql_query("UPDATE usernotes SET ".
  358. "notes = '". mysql_real_escape_string($notes) ."' WHERE ".
  359. "useruuid = '". mysql_real_escape_string($uuid) ."' AND ".
  360. "targetuuid = '". mysql_real_escape_string($targetuuid) ."'");
  361. }
  362. $response_xml = xmlrpc_encode(array(
  363. 'success' => True
  364. ));
  365. print $response_xml;
  366. }
  367. # Profile bits
  368. xmlrpc_server_register_method($xmlrpc_server, "avatar_properties_request",
  369. "avatar_properties_request");
  370. function avatar_properties_request($method_name, $params, $app_data)
  371. {
  372. global $zeroUUID;
  373. $req = $params[0];
  374. $uuid = $req['avatar_id'];
  375. $result = mysql_query("SELECT * FROM userprofile WHERE ".
  376. "useruuid = '". mysql_real_escape_string($uuid) ."'");
  377. $row = mysql_fetch_assoc($result);
  378. if ($row != False)
  379. {
  380. $data[] = array(
  381. "ProfileUrl" => $row["profileURL"],
  382. "Image" => $row["profileImage"],
  383. "AboutText" => $row["profileAboutText"],
  384. "FirstLifeImage" => $row["profileFirstImage"],
  385. "FirstLifeAboutText" => $row["profileFirstText"],
  386. "Partner" => $row["profilePartner"],
  387. //Return interest data along with avatar properties
  388. "wantmask" => $row["profileWantToMask"],
  389. "wanttext" => $row["profileWantToText"],
  390. "skillsmask" => $row["profileSkillsMask"],
  391. "skillstext" => $row["profileSkillsText"],
  392. "languages" => $row["profileLanguages"]);
  393. }
  394. else
  395. {
  396. //Insert empty record for avatar.
  397. //FIXME: Should this only be done when asking for ones own profile?
  398. $sql = "INSERT INTO userprofile VALUES ( ".
  399. "'". mysql_real_escape_string($uuid) ."', ".
  400. "'$zeroUUID', 0, 0, '', 0, '', 0, '', '', ".
  401. "'$zeroUUID', '', '$zeroUUID', '')";
  402. $result = mysql_query($sql);
  403. $data[] = array(
  404. "ProfileUrl" => "",
  405. "Image" => $zeroUUID,
  406. "AboutText" => "",
  407. "FirstLifeImage" => $zeroUUID,
  408. "FirstLifeAboutText" => "",
  409. "Partner" => $zeroUUID,
  410. "wantmask" => 0,
  411. "wanttext" => "",
  412. "skillsmask" => 0,
  413. "skillstext" => "",
  414. "languages" => "");
  415. }
  416. $response_xml = xmlrpc_encode(array(
  417. 'success' => True,
  418. 'data' => $data
  419. ));
  420. print $response_xml;
  421. }
  422. xmlrpc_server_register_method($xmlrpc_server, "avatar_properties_update",
  423. "avatar_properties_update");
  424. function avatar_properties_update($method_name, $params, $app_data)
  425. {
  426. $req = $params[0];
  427. $uuid = $req['avatar_id'];
  428. $profileURL = $req['ProfileUrl'];
  429. $image = $req['Image'];
  430. $abouttext = $req['AboutText'];
  431. $firstlifeimage = $req['FirstLifeImage'];
  432. $firstlifetext = $req['FirstLifeAboutText'];
  433. $result=mysql_query("UPDATE userprofile SET ".
  434. "profileURL='". mysql_real_escape_string($profileURL) ."', ".
  435. "profileImage='". mysql_real_escape_string($image) ."', ".
  436. "profileAboutText='". mysql_real_escape_string($abouttext) ."', ".
  437. "profileFirstImage='". mysql_real_escape_string($firstlifeimage) ."', ".
  438. "profileFirstText='". mysql_real_escape_string($firstlifetext) ."' ".
  439. "WHERE useruuid='". mysql_real_escape_string($uuid) ."'"
  440. );
  441. $response_xml = xmlrpc_encode(array(
  442. 'success' => $result,
  443. 'errorMessage' => mysql_error()
  444. ));
  445. print $response_xml;
  446. }
  447. // Profile Interests
  448. xmlrpc_server_register_method($xmlrpc_server, "avatar_interests_update",
  449. "avatar_interests_update");
  450. function avatar_interests_update($method_name, $params, $app_data)
  451. {
  452. $req = $params[0];
  453. $uuid = $req['avatar_id'];
  454. $wanttext = $req['wanttext'];
  455. $wantmask = $req['wantmask'];
  456. $skillstext = $req['skillstext'];
  457. $skillsmask = $req['skillsmask'];
  458. $languages = $req['languages'];
  459. $result = mysql_query("UPDATE userprofile SET ".
  460. "profileWantToMask = ". mysql_real_escape_string($wantmask) .",".
  461. "profileWantToText = '". mysql_real_escape_string($wanttext) ."',".
  462. "profileSkillsMask = ". mysql_real_escape_string($skillsmask) .",".
  463. "profileSkillsText = '". mysql_real_escape_string($skillstext) ."',".
  464. "profileLanguages = '". mysql_real_escape_string($languages) ."' ".
  465. "WHERE useruuid = '". mysql_real_escape_string($uuid) ."'"
  466. );
  467. $response_xml = xmlrpc_encode(array(
  468. 'success' => True
  469. ));
  470. print $response_xml;
  471. }
  472. // User Preferences
  473. xmlrpc_server_register_method($xmlrpc_server, "user_preferences_request",
  474. "user_preferences_request");
  475. function user_preferences_request($method_name, $params, $app_data)
  476. {
  477. $req = $params[0];
  478. $uuid = $req['avatar_id'];
  479. $result = mysql_query("SELECT imviaemail,visible,email FROM usersettings WHERE ".
  480. "useruuid = '". mysql_real_escape_string($uuid) ."'");
  481. $row = mysql_fetch_assoc($result);
  482. if ($row != False)
  483. {
  484. $data[] = array(
  485. "imviaemail" => $row["imviaemail"],
  486. "visible" => $row["visible"],
  487. "email" => $row["email"]);
  488. }
  489. else
  490. {
  491. //Insert empty record for avatar.
  492. //NOTE: The 'false' values here are enums defined in database
  493. $sql = "INSERT INTO usersettings VALUES ".
  494. "('". mysql_real_escape_string($uuid) ."', ".
  495. "'false', 'false', '')";
  496. $result = mysql_query($sql);
  497. $data[] = array(
  498. "imviaemail" => False,
  499. "visible" => False,
  500. "email" => "");
  501. }
  502. $response_xml = xmlrpc_encode(array(
  503. 'success' => True,
  504. 'data' => $data
  505. ));
  506. print $response_xml;
  507. }
  508. xmlrpc_server_register_method($xmlrpc_server, "user_preferences_update",
  509. "user_preferences_update");
  510. function user_preferences_update($method_name, $params, $app_data)
  511. {
  512. $req = $params[0];
  513. $uuid = $req['avatar_id'];
  514. $wantim = $req['imViaEmail'];
  515. $directory = $req['visible'];
  516. $result = mysql_query("UPDATE usersettings SET ".
  517. "imviaemail = '".mysql_real_escape_string($wantim) ."', ".
  518. "visible = '".mysql_real_escape_string($directory) ."' WHERE ".
  519. "useruuid = '". mysql_real_escape_string($uuid) ."'");
  520. $response_xml = xmlrpc_encode(array(
  521. 'success' => True,
  522. 'data' => $data
  523. ));
  524. print $response_xml;
  525. }
  526. #
  527. # Process the request
  528. #
  529. $request_xml = $HTTP_RAW_POST_DATA;
  530. xmlrpc_server_call_method($xmlrpc_server, $request_xml, '');
  531. xmlrpc_server_destroy($xmlrpc_server);
  532. ?>