func.pwn 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. CreateMapID(mapname[]) {
  2. format(g_QueryString, sizeof g_QueryString, "INSERT INTO maps (name) VALUES ('%q')", mapname);
  3. db_free_result( db_query(g_MapDB, g_QueryString) );
  4. }
  5. DestroyMapID(mapid) {
  6. format(g_QueryString, sizeof g_QueryString, "DELETE FROM maps WHERE mapid = '%i'", mapid);
  7. db_free_result( db_query(g_MapDB, g_QueryString) );
  8. }
  9. GetMapID(mapname[]) {
  10. new mapid = INVALID_MAP_ID;
  11. format(g_QueryString, sizeof g_QueryString, "SELECT mapid FROM maps WHERE lower(name) = lower('%q')", mapname);
  12. g_DBResult = db_query(g_MapDB, g_QueryString);
  13. if( db_num_rows(g_DBResult) > 0 ) {
  14. mapid = db_get_field_int(g_DBResult);
  15. }
  16. db_free_result(g_DBResult);
  17. return mapid;
  18. }
  19. GetMapName(mapid, name[], name_size) {
  20. format(g_QueryString, sizeof g_QueryString, "SELECT name FROM maps WHERE mapid = '%i'", mapid);
  21. g_DBResult = db_query(g_MapDB, g_QueryString);
  22. new mapfound = db_num_rows(g_DBResult) > 0;
  23. if( mapfound ) {
  24. db_get_field(g_DBResult, 0, name, name_size);
  25. } else {
  26. format(name, name_size, "Unknown Map");
  27. }
  28. db_free_result(g_DBResult);
  29. return mapfound;
  30. }
  31. FindMaps(result[], result_size, search[], offset, &max_offset) {
  32. new rows_added;
  33. if( isempty(search) ) {
  34. format(g_QueryString, sizeof g_QueryString, "\
  35. SELECT mapid, \
  36. (SELECT COUNT(*) FROM maps) AS max_rowcount \
  37. FROM maps \
  38. LIMIT %i OFFSET %i",
  39. result_size, offset
  40. );
  41. } else {
  42. format(g_QueryString, sizeof g_QueryString, "\
  43. SELECT mapid, \
  44. (SELECT COUNT(*) FROM maps WHERE mapid LIKE '%%%q%%' OR name LIKE '%%%q%%') AS max_rowcount \
  45. FROM maps \
  46. WHERE mapid LIKE '%%%q%%' OR name LIKE '%%%q%%' \
  47. LIMIT %i OFFSET %i",
  48. search, search,
  49. search, search,
  50. result_size, offset
  51. );
  52. }
  53. g_DBResult = db_query(g_MapDB, g_QueryString);
  54. new result_rows = db_num_rows(g_DBResult);
  55. if( result_rows > 0 ) {
  56. max_offset = db_get_field_assoc_int(g_DBResult, "max_rowcount") - 1;
  57. if( max_offset < 0 ) {
  58. max_offset = 0;
  59. }
  60. }
  61. for(new row; row < result_rows; row ++) {
  62. if( rows_added >= result_size ) {
  63. break;
  64. }
  65. result[rows_added ++] = db_get_field_assoc_int(g_DBResult, "mapid");
  66. db_next_row(g_DBResult);
  67. }
  68. db_free_result(g_DBResult);
  69. return rows_added;
  70. }