4 global $DB_CONNECTION;
\r
5 $DB_CONNECTION = false;
\r
8 global $db_url, $db_type;
\r
9 error_log("in include for database, $db_type, $db_name");
12 function gwvpmini_DBExists()
14 global $WEB_ROOT_FS, $BASE_URL, $data_directory, $db_type, $db_name;
16 // oh this isnt working. poo.
17 error_log("checking for $db_name, $db_type");
19 if($db_type == "sqlite") {
20 if(file_exists($db_name)) {
25 error_log("no exists");
31 function gwvpmini_getUser($username=null, $email=null, $id=null)
\r
33 $conn = gwvpmini_ConnectDB();
\r
35 if($username != null) {
\r
36 $res = $conn->query("select * from users where user_username='$username'");
\r
37 } else if($email != null) {
\r
38 $res = $conn->query("select * from users where user_email='$email'");
\r
39 } else if($id != null) {
\r
40 $res = $conn->query("select * from users where user_id='$id'");
\r
41 } else return false;
\r
44 foreach($res as $u_res) {
\r
45 $returns["id"] = $u_res["user_id"];
\r
46 $returns["fullname"] = $u_res["user_full_name"];
\r
47 $returns["password"] = $u_res["user_password"];
\r
48 $returns["username"] = $u_res["user_username"];
\r
49 $returns["email"] = $u_res["user_email"];
\r
50 $returns["desc"] = $u_res["user_desc"];
\r
51 $returns["status"] = $u_res["user_status"];
\r
58 function gwvpmini_RemoveUser($uid)
60 $conn = gwvpmini_ConnectDB();
\r
64 $sql = "delete from users where user_id='$uid'";
66 return $conn->query($sql);
69 function gwvpmini_DisableUser($uid)
71 $conn = gwvpmini_ConnectDB();
\r
73 if($uid < 0) return;
\r
75 $sql = "update users set user_status=1 where user_id='$uid'";
\r
77 return $conn->query($sql);
80 function gwvpmini_EnableUser($uid)
\r
82 $conn = gwvpmini_ConnectDB();
\r
84 if($uid < 0) return;
\r
86 $sql = "update users set user_status=0 where user_id='$uid'";
\r
88 return $conn->query($sql);
\r
92 function gwvpmini_ConnectDB()
\r
94 global $WEB_ROOT_FS, $BASE_URL, $data_directory, $db_type, $db_name, $DB_CONNECTION;
\r
96 // first check if $DB_CONNECTION IS live
\r
97 error_log("in connection $db_type, $db_name");
\r
99 if($DB_CONNECTION != false) return $DB_CONNECTION;
\r
101 if($db_type == "sqlite") {
\r
102 $db_url = $db_name;
\r
103 if(!file_exists($db_name)) {
\r
104 error_log("$db_name does not exist - problem");
105 // TODO: NEED A SETUP AGENT!
106 gwvpmini_dbCreateSQLiteStructure($db_name);
107 gwvpmini_setConfigVal("repodir", "$data_directory/repos");
\r
111 // and here we go with pdo.
\r
112 error_log("attmpting to open db, $db_type:$db_url");
\r
114 $DB_CONNECTION = new PDO("$db_type:$db_url");
\r
115 } catch(PDOException $exep) {
\r
116 error_log("execpt on db open");
\r
120 return $DB_CONNECTION;
\r
123 function gwvpmini_UpdateStatusFromConfirm($confirmhash)
125 $conn = gwvpmini_ConnectDB();
\r
127 $sql = "select count(*) from users where user_status='2:$confirmhash'";
129 $res = $conn->query($sql);
131 if(!$res) return false;
133 foreach($res as $row) {
138 $sql = "update users set user_status='0' where user_status='2:$confirmhash'";
139 return $conn->query($sql);
144 function gwvpmini_AddUser($username, $password, $fullname, $email, $desc, $level, $status)
149 $conn = gwvpmini_ConnectDB();
\r
151 $sql = "insert into 'users' values ( null, '$fullname', '".sha1($password)."', '$username', '$email', '$desc', '$level', '$status')";
\r
153 $res = $conn->query($sql);
156 $sql = "select user_id from users where user_username='$username'";
\r
157 $res = $conn->query($sql);
\r
158 if(!$res) return -1;
\r
161 foreach($res as $row) {
169 function gwvpmini_dbCreateSQLiteStructure($dbloc)
\r
172 CREATE TABLE "users" (
\r
173 "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
174 "user_full_name" TEXT,
\r
175 "user_password" TEXT,
\r
176 "user_username" TEXT,
\r
181 UNIQUE(user_username)
\r
184 $initialuser_admin = '
185 insert into "users" values ( null, "Administrator", "'.sha1("password").'", "admin", "admin@localhost", "the admin", "1", "0");
\r
188 $initialuser_user = '
\r
189 insert into "users" values ( null, "User", "'.sha1("password").'", "user", "user@localhost", "the user", "0", "0");
\r
193 CREATE TABLE "repos" (
\r
194 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
196 "repos_description" TEXT,
\r
197 "repos_owner" INTEGER,
198 "repos_readperms" TEXT,
202 // this looks like null, <repoid>, <read|visible|write>, user:<uid>|group:<gid>|authed|anon
\r
203 // where authed = any authenticated user, anon = everyone (logged in, not logged in, etc)
\r
204 // read|visible|write = can clone from repo|can see repo exists and see description but not clone from it|can push to repo
\r
205 // TODO: is this sufficient? i have to think about it
\r
208 CREATE TABLE "config" (
\r
209 "config_name" TEXT,
\r
210 "config_value" TEXT
\r
214 $DB_CONNECTION = new PDO("sqlite:$dbloc");
\r
215 } catch(PDOException $exep) {
\r
216 error_log("execpt on db open");
\r
220 $DB_CONNECTION->query($usersql);
\r
221 $DB_CONNECTION->query($initialuser_admin);
222 $DB_CONNECTION->query($initialuser_user);
223 $DB_CONNECTION->query($reposql);
\r
224 $DB_CONNECTION->query($configsql);
\r
227 function gwvpmini_getConfigVal($confname)
\r
231 CREATE TABLE "config" (
\r
232 "config_name" TEXT,
\r
233 "config_value" TEXT
\r
238 $conn = gwvpmini_ConnectDB();
\r
240 $sql = "select config_value from config where config_name='$confname'";
\r
242 $res = $conn->query($sql);
\r
245 foreach($res as $val) {
\r
246 $return = $val["config_value"];
\r
252 function gwvpmini_eraseConfigVal($confname)
\r
256 CREATE TABLE "config" (
\r
257 "config_name" TEXT,
\r
258 "config_value" TEXT
\r
263 $conn = gwvpmini_ConnectDB();
\r
265 $sql = "delete from config where config_name='$confname'";
\r
267 return $conn->query($sql);
\r
270 function gwvpmini_GetRepoId($reponame)
275 CREATE TABLE "repos" (
276 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
278 "repos_description" TEXT,
279 "repos_owner" INTEGER
284 $conn = gwvpmini_ConnectDB();
286 $sql = "select repos_id from repos where repos_name='$reponame'";
288 $res = $conn->query($sql);
292 foreach($res as $row) {
293 $reval = (int)$row[0];
299 function gwvpmini_GetRepoDescFromName($reponame)
\r
304 CREATE TABLE "repos" (
\r
305 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
307 "repos_description" TEXT,
\r
308 "repos_owner" INTEGER
\r
313 $conn = gwvpmini_ConnectDB();
\r
315 $sql = "select repos_description from repos where repos_name='$reponame'";
316 error_log("desc for name sql: $sql");
\r
318 $res = $conn->query($sql);
\r
321 if(!$res) return -1;
\r
322 foreach($res as $row) {
\r
329 function gwvpmini_GetRepoOwnerDetailsFromName($reponame)
\r
334 CREATE TABLE "repos" (
\r
335 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
337 "repos_description" TEXT,
\r
338 "repos_owner" INTEGER
\r
341 "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
342 "user_full_name" TEXT,
343 "user_password" TEXT,
344 "user_username" TEXT,
349 UNIQUE(user_username)
\r
353 $conn = gwvpmini_ConnectDB();
\r
355 $sql = "select users.* from repos,users where repos_name='$reponame' and repos_owner=user_id";
\r
357 $res = $conn->query($sql);
\r
360 if(!$res) return -1;
\r
361 foreach($res as $row) {
363 error_log("STUFF2: ".print_r($row,true));
\r
364 $retval["id"] = $row["user_id"];
365 $retval["fullname"] = $row["user_full_name"];
366 $retval["username"] = $row["user_username"];
367 $retval["email"] = $row["user_email"];
368 $retval["desc"] = $row["user_desc"];
369 $retval["level"] = $row["user_level"];
370 $retval["status"] = $row["user_status"];
\r
376 function gwvpmini_setConfigVal($confname, $confval)
\r
380 CREATE TABLE "config" (
\r
381 "config_name" TEXT,
\r
382 "config_value" TEXT
\r
386 gwvpmini_eraseConfigVal($confname);
\r
388 $conn = gwvpmini_ConnectDB();
390 $sql = "delete from config where config_name='$confname'";
391 $conn->query($sql);
\r
393 $sql = "insert into config values('$confname', '$confval')";
\r
395 return $conn->query($sql);
\r
398 function gwvpmini_AddRepo($name, $desc, $ownerid, $perms = "perms-public")
401 error_log("addrepo in db for $name, $desc, $ownerid");
402 $conn = gwvpmini_ConnectDB();
\r
404 $sql = "insert into repos values (null, '$name', '$desc', '$ownerid', '$perms')";
\r
406 $conn->query($sql);
\r
409 function gwvpmini_GetUserId($username)
411 $conn = gwvpmini_ConnectDB();
\r
413 $sql = "select user_id from users where user_username='$username'";
415 error_log("userid sql $sql");
\r
417 $res = $conn->query($sql);
420 foreach($res as $row) {
427 function gwvpmini_GetUserNameFromEmail($email)
\r
429 $conn = gwvpmini_ConnectDB();
\r
431 $sql = "select user_username from users where user_email='$email'";
\r
433 error_log("username sql $sql");
\r
435 $res = $conn->query($sql);
\r
438 foreach($res as $row) {
\r
444 function gwvpmini_GetOwnedRepos($username)
\r
447 * CREATE TABLE "repos" (
448 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
450 "repos_description" TEXT,
451 "repos_owner" INTEGER
455 $conn = gwvpmini_ConnectDB();
457 $uid = gwvpmini_GetUserId($username);
458 $sql = "select * from repos where repos_owner='$uid'";
459 error_log("owned repos sql $sql");
460 $res = $conn->query($sql);
463 foreach($res as $row) {
464 $id = $row["repos_id"];
465 $retval[$id]["name"] = $row["repos_name"];
466 $retval[$id]["desc"] = $row["repos_description"];
467 error_log(print_r($row, true));
470 error_log(print_r($retval, true));
\r
474 function gwvpmini_userLevel($id)
476 $conn = gwvpmini_ConnectDB();
478 $sql = "select user_level from users where user_id='$id'";
480 $res = $conn->query($sql);
484 foreach($res as $row) {
491 function gwvpmini_GetUsers($startat = 0, $num = 10)
493 $conn = gwvpmini_ConnectDB();
496 * CREATE TABLE "users" (
497 "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
498 "user_full_name" TEXT,
499 "user_password" TEXT,
500 "user_username" TEXT,
508 $sql = "select * from users where user_id>='$startat' order by user_id asc limit $num";
510 $res = $conn->query($sql);
513 foreach($res as $row) {
514 $id = $row["user_id"];
515 $retval[$id]["fullname"] = $row["user_full_name"];
516 $retval[$id]["username"] = $row["user_username"];
517 $retval[$id]["email"] = $row["user_email"];
518 $retval[$id]["desc"] = $row["user_desc"];
519 $retval[$id]["level"] = $row["user_level"];
520 $retval[$id]["status"] = $row["user_status"];
526 function gwvpmini_GetRepos($startat=0, $num=200)
\r
528 $conn = gwvpmini_ConnectDB();
\r
531 * CREATE TABLE "repos" (
532 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
534 "repos_description" TEXT,
535 "repos_owner" INTEGER
540 $sql = "select * from repos where repos_id > '$startat' order by repos_id asc limit $num";
\r
542 $res = $conn->query($sql);
\r
545 foreach($res as $row) {
\r
546 $id = $row["repos_id"];
\r
547 $retval[$id]["name"] = $row["repos_name"];
\r
548 $retval[$id]["desc"] = $row["repos_description"];
\r
549 $retval[$id]["owner"] = $row["repos_owner"];
\r
557 function gwvpmini_GetNRepos()
559 $conn = gwvpmini_ConnectDB();
561 $sql = "select count(*) from repos";
563 $res = $conn->query($sql);
566 foreach($res as $row) {
574 function gwvpmini_GetNUsers()
\r
576 $conn = gwvpmini_ConnectDB();
\r
578 $sql = "select count(*) from users";
\r
580 $res = $conn->query($sql);
\r
583 foreach($res as $row) {
\r