PageRenderTime 52ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/www/caches/scripts/SQLiteDB.php

http://ds-pro-chat.googlecode.com/
PHP | 123 lines | 109 code | 14 blank | 0 comment | 3 complexity | 8de43cddef56a3e69d7bb2fb969e127a MD5 | raw file
Possible License(s): MIT
  1. <?php
  2. $DB = SQLite_Open(PrivateFolder . 'database.sqlite', 0666, $Err);
  3. If(!$DB || $Err)
  4. {
  5. Header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);
  6. Echo '500 Internal Server Error ' . __FILE__ . '; Line: ' . __LINE__;
  7. EXIT;
  8. }
  9. $Tables = Array();
  10. $rows = SQLite_Query($DB, 'SELECT name FROM sqlite_master WHERE type = "table"');
  11. While($Row = SQLite_Fetch_Array($rows, SQLITE_ASSOC))
  12. {
  13. $Tables[$Row['name']] = $Row['name'];
  14. }
  15. If(!IsSet($Tables['tbl_users']))
  16. {
  17. SQLite_Exec($DB, '
  18. CREATE TABLE tbl_users (
  19. userid INTEGER PRIMARY KEY,
  20. gid UNSIGNED INTEGER(10) NOT NULL DEFAULT 0,
  21. avatar UNSIGNED INTEGER(10) NOT NULL DEFAULT 0,
  22. banreasonid UNSIGNED INTEGER(10) NOT NULL DEFAULT 0,
  23. passwd NVARCHAR(32) NOT NULL DEFAULT "",
  24. salt NVARCHAR(5) NOT NULL DEFAULT "",
  25. email VARCHAR(100) NOT NULL DEFAULT "",
  26. login VARCHAR(50) NOT NULL DEFAULT "",
  27. displayname VARCHAR(200) NOT NULL DEFAULT ""
  28. );
  29. CREATE UNIQUE INDEX tbl_users_uidx_login ON tbl_users(login);
  30. CREATE UNIQUE INDEX tbl_users_uidx_displayname ON tbl_users(displayname);
  31. ');
  32. }
  33. If(!IsSet($Tables['tbl_banreasons']))
  34. {
  35. SQLite_Exec($DB, '
  36. CREATE TABLE tbl_banreasons (
  37. banreasonid INTEGER PRIMARY KEY,
  38. untiltime INTEGER(10) NOT NULL DEFAULT 0,
  39. bannedtime INTEGER(10) NOT NULL DEFAULT 0,
  40. banby INTEGER(10) NOT NULL DEFAULT 0,
  41. reason VARCHAR(255) NOT NULL DEFAULT ""
  42. );
  43. ');
  44. }
  45. If(!IsSet($Tables['tbl_uuids']))
  46. {
  47. SQLite_Exec($DB, '
  48. CREATE TABLE tbl_uuids (
  49. uuidid INTEGER PRIMARY KEY,
  50. uuid NVARCHAR(64) NOT NULL,
  51. banreasonid UNSIGNED INTEGER(10) NOT NULL DEFAULT 0
  52. );
  53. CREATE UNIQUE INDEX tbl_uuids_uidx_uuid ON tbl_uuids(uuid);
  54. ');
  55. }
  56. If(!IsSet($Tables['tbl_userids_uuids']))
  57. {
  58. SQLite_Exec($DB, '
  59. CREATE TABLE tbl_userids_uuids (
  60. uuidid UNSIGNED INTEGER(10) NOT NULL DEFAULT 0,
  61. userid UNSIGNED INTEGER(10) NOT NULL DEFAULT 0
  62. );
  63. CREATE UNIQUE INDEX tbl_userids_uuids_uidx_uuidid ON tbl_userids_uuids(uuidid, userid);
  64. CREATE UNIQUE INDEX tbl_userids_uuids_uidx_userid ON tbl_userids_uuids(userid, uuidid);
  65. ');
  66. }
  67. SQLite_Create_Function($DB, 'MD5WithSalt', 'fSQLite_MD5WithSalt', 2);
  68. Function fSQLite_MD5WithSalt($Str, $salt)
  69. {
  70. Return MD5($salt . $Str . $salt);
  71. }
  72. Define('DB_UNBUF', 1);
  73. Define('DB_QUERY', 2);
  74. Define('DB_EXEC', 3);
  75. Function CheckQueryOkEx($Query = False, $Execute = False, $Err500 = False)
  76. {
  77. GLOBAL $DB, $ERRORS;
  78. If(!$ERRORS || !Is_Array($ERRORS))
  79. {
  80. $ERRORS = Array();
  81. }
  82. If($Query)
  83. {
  84. SWITCH($Execute)
  85. {
  86. Case DB_UNBUF: $result = SQLite_Unbuffered_Query($DB, $Query); Break;
  87. Case DB_QUERY: $result = SQLite_Query($DB, $Query); Break;
  88. Case DB_EXEC: $result = SQLite_Exec($DB, $Query); Break;
  89. Default: $result = True; Break;
  90. }
  91. }
  92. $No = SQLite_Last_Error($DB);
  93. If($No)
  94. {
  95. If($Err500)
  96. {
  97. If(!Headers_Sent())
  98. {
  99. Header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);
  100. }
  101. Echo '500 Internal Server Error';
  102. EXIT;
  103. }
  104. $ERRORS[] = '?????? ?????????? SQL ???????. SQLite Error ? ' . $No . ': ' . SQLite_Error_String($No) . ($Query && DEBUG ? ('<br /><pre>' . $Query . '</pre>') : '');
  105. Return False;
  106. }
  107. Return $result;
  108. }
  109. ?>