activity logs... oh fun
[gwvp-mini.git] / gwvpmini / gwvpmini_db.php
1 <?php
2
3
4 global $DB_CONNECTION;\r
5 $DB_CONNECTION = false;\r
6 \r
7 \r
8 global $db_url, $db_type;\r
9 //error_log("in include for database, $db_type, $db_name");
10
11
12 function gwvpmini_DBExists()
13 {
14         global $WEB_ROOT_FS, $BASE_URL, $data_directory, $db_type, $db_name;
15         
16         // oh this isnt working. poo.
17         //error_log("checking for $db_name, $db_type");
18         
19         if($db_type == "sqlite") {
20                 if(file_exists($db_name)) {
21                         //error_log("Exists");
22                         return true;
23                 }
24                 else {
25                         //error_log("no exists");
26                         return false;
27                 }
28         }
29 }\r
30
31 function gwvpmini_getUser($username=null, $email=null, $id=null)\r
32 {\r
33         $conn = gwvpmini_ConnectDB();\r
34 \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
42 \r
43         $returns = 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
52         }\r
53 \r
54         return $returns;\r
55 \r
56 }
57
58
59 function gwvpmini_getRepo($ownerid=null, $name=null, $id=null)\r
60 {\r
61         $conn = gwvpmini_ConnectDB();
62         
63         /*
64          *      $reposql = '
65         CREATE TABLE "repos" (
66         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
67         "repos_name" TEXT,
68         "repos_description" TEXT,
69         "repos_owner" INTEGER,
70         "repos_readperms" TEXT,
71         UNIQUE(repos_name)
72         )';
73
74          */\r
75 \r
76         if($ownerid != null) {\r
77                 $res = $conn->query("select * from repos where repos_owner='$ownerid'");\r
78         } else if($name != null) {\r
79                 $res = $conn->query("select * from repos where repos_name='$name'");\r
80         } else if($id != null) {\r
81                 $res = $conn->query("select * from repos where repos_id='$id'");\r
82         } else return false;\r
83 \r
84         $returns = false;
85         if(!$res) return false;\r
86         foreach($res as $u_res) {\r
87                 $returns["id"] = $u_res["repos_id"];\r
88                 $returns["name"] = $u_res["repos_name"];\r
89                 $returns["desc"] = $u_res["repos_description"];\r
90                 $returns["ownerid"] = $u_res["repos_owner"];
91                 $returns["status"] = $u_res["repos_status"];\r
92         }\r
93 \r
94         return $returns;\r
95 \r
96 }
97
98 // $rid = repo id
99 // $uid = user id (a for "anyone", r for "registered")
100 // $acc = 0 or 1, 0 = no access, 1 = read access, 2 = write
101 // first part of ths is the "base" repo permissions
102 // this is spec'd as b:t where t = a (anyone can read), r (only registered can read) or x (explicit read perms)
103 function gwvpmini_ChangeRepoPerm($rid, $uid, $acc)
104 {
105         $conn = gwvpmini_ConnectDB();
106         
107         $sql = "select repos_perms from repos where repos_id='$rid'";
108         
109         $res = $conn->query($sql);
110         
111         error_log("CHANGEREPOPERMS: call with $rid, $uid, $acc");
112         
113         $cperms_t = "";
114         foreach($res as $row) {
115                 $cperms_t = $row[0];
116         }
117         
118         if($cperms_t === false) return false;
119         
120         $permsarray = array();
121         if($uid != "b") {
122                 if($cperms_t == "") {
123                         $permsarray[$uid] = $acc;
124                 } else {
125                         $permsarray = unserialize(base64_decode($cperms_t));
126                         $permsarray[$uid] = $acc;
127                         if($acc == 0) {
128                                 error_log("PERMSUPDATE: REMOVE $uid");
129                                 unset($permsarray[$uid]);
130                         }
131                 }
132         } else {
133                 error_log("CHANGEREPOPERMS for b of $acc");
134                 $permsarray["b"] = $acc;
135         }
136         
137         // check if base is now r or a, we can drop any 1's
138         if($permsarray["b"] == "a" || $permsarray["b"] == "r") {
139                 foreach($permsarray as $key => $val) {
140                         if($val == 1) {
141                                 error_log("CHANGEREPOPERMS removed $key $val for base perm change");
142                                 unset($permsarray[$key]);
143                         }
144                 }
145         }
146         
147         if(is_array($permsarray)) {
148                 if(!isset($permsarray["b"])) {
149                         // something went wrong, repalce b bit
150                         $permsarray["b"] = "a";
151                 }
152         } else {
153                 // something went even wronger
154                 $permsarray["b"] = "a";
155         }
156         
157
158         $encperms = base64_encode(serialize($permsarray));
159         
160         $sql = "update repos set repos_perms='$encperms' where repos_id='$rid'";\r
161
162         error_log("PERMSARRAYNOW $sql ".print_r($permsarray,true));\r
163         
164         $conn->query($sql);
165         
166 }
167
168 function gwvpmini_GetRepoPerms($rid)
169 {
170         $conn = gwvpmini_ConnectDB();\r
171         \r
172         $sql = "select repos_perms from repos where repos_id='$rid'";\r
173         \r
174         $res = $conn->query($sql);\r
175         \r
176         $cperms_t = false;\r
177         if($res !== false) foreach($res as $row) {\r
178                 $cperms_t = $row[0];\r
179         }\r
180         \r
181         if($cperms_t === false) return false;\r
182         \r
183         $permsarray = unserialize(base64_decode($cperms_t));
184         
185         return $permsarray;
186 }
187
188 //returns 0 for none, 1 for read, 2 for writes
189 function gwvpmini_GetRepoPerm($rid, $uid)
190 {
191         $conn = gwvpmini_ConnectDB();\r
192         \r
193         $dets = gwvpmini_getRepo(null, null, $rid);
194         
195         $sql = "select repos_perms from repos where repos_id='$rid'";\r
196         \r
197         $res = $conn->query($sql);
198         
199         $cperms_t = false;\r
200         if($res !== false) foreach($res as $row) {\r
201                 $cperms_t = $row[0];\r
202         }\r
203         \r
204         if($cperms_t === false) return 0;
205         
206         error_log("PERMSCHECK $rid, $uid:".print_r($dets, true));\r
207         \r
208         if($dets === false) return 0;
209         
210         if($dets["ownerid"] == $uid) return 2;\r
211         \r
212         $permsarray = unserialize(base64_decode($cperms_t));
213         
214         error_log("PERMSARRAY: ".print_r($permsarray,true));
215         
216         
217         $perm = 0;
218         if($uid != "a") {
219                 if(isset($permsarray[$uid])) {
220                         $perm = $permsarray[$uid];
221                 } else if($permsarray["b"] == "a" ||$permsarray["b"] == "r") {
222                         $perm = 1;
223                 }
224         } else {
225                 if($permsarray["b"] == "a") $perm = 1;
226         }
227         
228         return $perm;\r
229
230 }
231
232 function gwvpmini_RemoveRepoDB($id)
233 {
234         $conn = gwvpmini_ConnectDB();\r
235         \r
236         if($id < 0) return;\r
237         \r
238         $sql = "delete from repos where repos_id='$id'";\r
239         \r
240         return $conn->query($sql);\r
241         
242 }
243
244 function gwvpmini_RemoveUser($uid)
245 {
246         $conn = gwvpmini_ConnectDB();\r
247         
248         if($uid < 0) return;
249         
250         $sql = "delete from users where user_id='$uid'";
251         
252         return $conn->query($sql);
253 }
254
255 function gwvpmini_DisableUser($uid)\r
256 {\r
257         $conn = gwvpmini_ConnectDB();\r
258 \r
259         if($uid < 0) return;\r
260 \r
261         $sql = "update users set user_status=1 where user_id='$uid'";\r
262 \r
263         return $conn->query($sql);\r
264 }
265
266 function gwvpmini_UpdateRepoDescription($rid, $desc)
267 {
268         $conn = gwvpmini_ConnectDB();\r
269         
270         // remove any tag elements
271         $newdesc_r = preg_replace("/[\<\>\;]+/", "", $desc);
272         $newdesc = preg_replace("/\n/", "<br>", $newdesc_r);
273         
274         $sql = "update repos set repos_description='$newdesc' where repos_id='$rid'";
275         
276         return $conn->query($sql);
277 }\r
278 \r
279 function gwvpmini_EnableUser($uid)\r
280 {\r
281         $conn = gwvpmini_ConnectDB();\r
282 \r
283         if($uid < 0) return;\r
284 \r
285         $sql = "update users set user_status=0 where user_id='$uid'";\r
286 \r
287         return $conn->query($sql);\r
288 }\r
289 \r
290 function gwvpmini_DisableRepo($rid)
291 {
292         $conn = gwvpmini_ConnectDB();\r
293         \r
294         if($rid < 0) return;\r
295         \r
296         $sql = "update repos set repos_status=1 where repos_id='$rid'";\r
297         \r
298         return $conn->query($sql);
299 }\r
300
301 function gwvpmini_EnableRepo($rid)\r
302 {\r
303         $conn = gwvpmini_ConnectDB();\r
304 \r
305         if($rid < 0) return;
306         
307         $sql = "update repos set repos_status=0 where repos_id='$rid'";
308         \r
309         return $conn->query($sql);\r
310 }\r
311 \r
312
313 function gwvpmini_ConnectDB()\r
314 {\r
315         global $WEB_ROOT_FS, $BASE_URL, $data_directory, $db_type, $db_name, $DB_CONNECTION;\r
316 \r
317         // first check if $DB_CONNECTION IS live\r
318         //error_log("in connection $db_type, $db_name");\r
319 \r
320         if($DB_CONNECTION != false) return $DB_CONNECTION;\r
321 \r
322         if($db_type == "sqlite") {\r
323                 $db_url = $db_name;\r
324                 if(!file_exists($db_name)) {\r
325                         //error_log("$db_name does not exist - problem");
326                         // TODO: NEED A SETUP AGENT!
327                         gwvpmini_dbCreateSQLiteStructure($db_name);
328                         gwvpmini_setConfigVal("repodir", "$data_directory/repos");\r
329                 }\r
330         }\r
331 \r
332         // and here we go with pdo.\r
333         //error_log("attmpting to open db, $db_type:$db_url");\r
334         try {\r
335                 $DB_CONNECTION = new PDO("$db_type:$db_url");\r
336         } catch(PDOException $exep) {\r
337                 error_log("execpt on db open");\r
338                 return false;\r
339         }\r
340 \r
341         return $DB_CONNECTION;\r
342 }
343
344 function gwvpmini_UpdateStatusFromConfirm($confirmhash)
345 {
346         $conn = gwvpmini_ConnectDB();\r
347         \r
348         $sql = "select count(*) from users where user_status='2:$confirmhash'";
349         
350         $res = $conn->query($sql);
351         
352         if(!$res) return false;
353         
354         foreach($res as $row) {
355                 $retval = $row[0];
356         }
357         
358         if($retval > 0) {
359                 $sql = "update users set user_status='0' where user_status='2:$confirmhash'";
360                 return $conn->query($sql);
361         } else return false;
362 }
363
364
365 function gwvpmini_AddUser($username, $password, $fullname, $email, $desc, $level, $status)
366 {
367         \r
368         
369         \r
370         $conn = gwvpmini_ConnectDB();\r
371         \r
372         $sql = "insert into 'users' values ( null, '$fullname', '".sha1($password)."', '$username', '$email', '$desc', '$level', '$status')";\r
373         \r
374         $res = $conn->query($sql);
375         if(!$res) return -1;
376         
377         $sql = "select user_id from users where user_username='$username'";\r
378         $res = $conn->query($sql);\r
379         if(!$res) return -1;\r
380         
381         $retval = -1;
382         foreach($res as $row) {
383                 $retval = $row[0];
384         }
385         
386         return $retval;
387 }\r
388
389
390 function gwvpmini_dbCreateSQLiteStructure($dbloc)\r
391 {\r
392         $usersql = '\r
393         CREATE TABLE "users" (\r
394         "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,\r
395         "user_full_name" TEXT,\r
396         "user_password" TEXT,\r
397         "user_username" TEXT,\r
398         "user_email" TEXT,\r
399         "user_desc" TEXT,
400         "user_level" TEXT,\r
401         "user_status" TEXT,
402         UNIQUE(user_username)\r
403         )';\r
404 \r
405         $initialuser_admin = '
406         insert into "users" values ( null, "Administrator", "'.sha1("password").'", "admin", "admin@localhost", "the admin", "1", "0");\r
407         ';\r
408
409         $initialuser_user = '\r
410         insert into "users" values ( null, "User", "'.sha1("password").'", "user", "user@localhost", "the user", "0", "0");\r
411         ';\r
412         \r
413         $reposql = '\r
414         CREATE TABLE "repos" (\r
415         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,\r
416         "repos_name" TEXT,\r
417         "repos_description" TEXT,\r
418         "repos_owner" INTEGER,
419         "repos_perms" TEXT,
420         "repos_status" TEXT,
421         UNIQUE(repos_name)\r
422         )';\r
423 \r
424         // this looks like null, <repoid>, <read|visible|write>, user:<uid>|group:<gid>|authed|anon\r
425         // where authed = any authenticated user, anon = everyone (logged in, not logged in, etc)\r
426         // read|visible|write = can clone from repo|can see repo exists and see description but not clone from it|can push to repo\r
427         // TODO: is this sufficient? i have to think about it
428         
429         
430         // type for now will only be "git"
431         // date is obvious
432         // desc is a desction of the activity
433         // link is of the form "repo,reponame,repoid:user,username,useremail,userid" so it
434         // can be attached simply
435         // viewby is a simple list of uid's that should be able to see it... "r" for all registered
436         // "a" for everyone
437         $activitysql = '
438         CREATE TABLE "activity" (
439                 "activity_type" TEXT,
440                 "activity_date" TEXT,
441                 "activity_desc" TEXT,
442                 "activity_link" TEXT,
443                 "activity_viewby" TEXT
444         )';\r
445 \r
446         $configsql = '\r
447         CREATE TABLE "config" (\r
448         "config_name" TEXT,\r
449         "config_value" TEXT\r
450         )';\r
451 \r
452         try {\r
453                 $DB_CONNECTION = new PDO("sqlite:$dbloc");\r
454         } catch(PDOException $exep) {\r
455                 error_log("execpt on db open");\r
456                 return false;\r
457         }\r
458
459         $DB_CONNECTION->query($usersql);\r
460         $DB_CONNECTION->query($initialuser_admin);
461         $DB_CONNECTION->query($initialuser_user);
462         $DB_CONNECTION->query($reposql);\r
463         $DB_CONNECTION->query($configsql);
464         $DB_CONNECTION->query($activitysql);\r
465 }
466
467 function gwvpmini_getConfigVal($confname)\r
468 {\r
469         /*\r
470          *      $configsql = '\r
471         CREATE TABLE "config" (\r
472                         "config_name" TEXT,\r
473                         "config_value" TEXT\r
474         )';\r
475 \r
476         */\r
477 \r
478         $conn = gwvpmini_ConnectDB();\r
479 \r
480         $sql = "select config_value from config where config_name='$confname'";\r
481 \r
482         $res = $conn->query($sql);\r
483 \r
484         $return = null;\r
485         foreach($res as $val) {\r
486                 $return = $val["config_value"];\r
487         }\r
488 \r
489         return $return;\r
490 }\r
491 \r
492 function gwvpmini_eraseConfigVal($confname)\r
493 {\r
494         /*\r
495          *      $configsql = '\r
496         CREATE TABLE "config" (\r
497                         "config_name" TEXT,\r
498                         "config_value" TEXT\r
499         )';\r
500 \r
501         */\r
502 \r
503         $conn = gwvpmini_ConnectDB();\r
504 \r
505         $sql = "delete from config where config_name='$confname'";\r
506 \r
507         return $conn->query($sql);\r
508 }
509
510 function gwvpmini_GetRepoId($reponame)
511 {
512
513         /*
514          *      $reposql = '
515         CREATE TABLE "repos" (
516         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
517         "repos_name" TEXT,
518         "repos_description" TEXT,
519         "repos_owner" INTEGER
520         )';
521
522          */
523         
524         $conn = gwvpmini_ConnectDB();
525         
526         $sql = "select repos_id from repos where repos_name='$reponame'";
527         
528         $res = $conn->query($sql);
529         
530         $retval = -1;
531         if(!$res) return -1;
532         foreach($res as $row) {
533                 $retval = (int)$row[0];
534         }
535         
536         return $retval;
537 }
538
539 function gwvpmini_GetRepoDescFromName($reponame)\r
540 {\r
541 \r
542         /*\r
543          *      $reposql = '\r
544         CREATE TABLE "repos" (\r
545                         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,\r
546                         "repos_name" TEXT,\r
547                         "repos_description" TEXT,\r
548                         "repos_owner" INTEGER\r
549         )';\r
550 \r
551         */\r
552 \r
553         $conn = gwvpmini_ConnectDB();\r
554 \r
555         $sql = "select repos_description from repos where repos_name='$reponame'";
556         error_log("desc for name sql: $sql");\r
557 \r
558         $res = $conn->query($sql);\r
559 \r
560         $retval = -1;\r
561         if(!$res) return -1;\r
562         foreach($res as $row) {\r
563                 $retval = $row[0];\r
564         }\r
565 \r
566         return $retval;\r
567 }
568 \r
569 function gwvpmini_GetRepoOwnerDetailsFromName($reponame)\r
570 {\r
571 \r
572         /*\r
573          *      $reposql = '\r
574         CREATE TABLE "repos" (\r
575                         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,\r
576                         "repos_name" TEXT,\r
577                         "repos_description" TEXT,\r
578                         "repos_owner" INTEGER\r
579         )';
580         
581                 "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
582         "user_full_name" TEXT,
583         "user_password" TEXT,
584         "user_username" TEXT,
585         "user_email" TEXT,
586         "user_desc" TEXT,
587         "user_level" TEXT,
588         "user_status" TEXT,
589         UNIQUE(user_username)\r
590 \r
591         */\r
592 \r
593         $conn = gwvpmini_ConnectDB();\r
594 \r
595         $sql = "select users.* from repos,users where repos_name='$reponame' and repos_owner=user_id";\r
596 \r
597         $res = $conn->query($sql);\r
598 \r
599         $retval = -1;\r
600         if(!$res) return -1;\r
601         foreach($res as $row) {
602                 $retval = array();
603                 error_log("STUFF2: ".print_r($row,true));\r
604                 $retval["id"] = $row["user_id"];
605                 $retval["fullname"] = $row["user_full_name"];
606                 $retval["username"] = $row["user_username"];
607                 $retval["email"] = $row["user_email"];
608                 $retval["desc"] = $row["user_desc"];
609                 $retval["level"] = $row["user_level"];
610                 $retval["status"] = $row["user_status"];\r
611         }\r
612 \r
613         return $retval;\r
614 }\r
615 \r
616 function gwvpmini_setConfigVal($confname, $confval)\r
617 {\r
618         /*\r
619          *      $configsql = '\r
620         CREATE TABLE "config" (\r
621                         "config_name" TEXT,\r
622                         "config_value" TEXT\r
623         )';\r
624 \r
625         */\r
626         gwvpmini_eraseConfigVal($confname);\r
627 \r
628         $conn = gwvpmini_ConnectDB();
629         
630         $sql = "delete from config where config_name='$confname'";
631         $conn->query($sql);\r
632 \r
633         $sql = "insert into config values('$confname', '$confval')";\r
634 \r
635         return $conn->query($sql);\r
636 }
637
638 function gwvpmini_AddRepo($name, $desc, $ownerid)
639 {
640         
641         error_log("addrepo in db for $name, $desc, $ownerid");
642         $conn = gwvpmini_ConnectDB();\r
643         
644         $perms["b"] = "a";
645         
646         $encperms = base64_encode(serialize($perms));
647         \r
648         $sql = "insert into repos values (null, '$name', '$desc', '$ownerid', '$encperms', 0)";\r
649         \r
650         $conn->query($sql);\r
651 }
652
653 function gwvpmini_GetUserId($username)
654 {
655         $conn = gwvpmini_ConnectDB();\r
656         
657         $sql = "select user_id from users where user_username='$username'";
658
659         error_log("userid sql $sql");\r
660         
661         $res = $conn->query($sql);
662         
663         $retval = false;
664         foreach($res as $row) {
665                 $retval = $row[0];
666         }
667         
668         return $retval;
669 }
670
671 function gwvpmini_GetUserNameFromEmail($email)\r
672 {\r
673         $conn = gwvpmini_ConnectDB();\r
674 \r
675         $sql = "select user_username from users where user_email='$email'";\r
676 \r
677         error_log("username sql $sql");\r
678 \r
679         $res = $conn->query($sql);\r
680 \r
681         $retval = false;\r
682         foreach($res as $row) {\r
683                 $retval = $row[0];\r
684         }\r
685 \r
686         return $retval;\r
687 }
688
689 function gwvpmini_GetOwnedRepos($username)\r
690 {
691         /*
692          *      CREATE TABLE "repos" (
693         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
694         "repos_name" TEXT,
695         "repos_description" TEXT,
696         "repos_owner" INTEGER
697         )';
698
699          */
700         $conn = gwvpmini_ConnectDB();
701         
702         
703         $uid = gwvpmini_GetUserId($username);
704         $sql = "select * from repos where repos_owner='$uid'";
705         error_log("owned repos sql $sql for username $username");
706         $res = $conn->query($sql);
707         if($username == "") return false;\r
708         
709         $retval = false;
710         foreach($res as $row) {
711                 $id = $row["repos_id"];
712                 $retval[$id]["name"] = $row["repos_name"];
713                 $retval[$id]["desc"] = $row["repos_description"];
714                 $retval[$id]["id"] = $row["repos_id"];
715                 $retval[$id]["status"] = $row["repos_status"];
716                 error_log(print_r($row, true));
717         }
718         
719         error_log(print_r($retval, true));\r
720         return $retval;\r
721 }
722
723 function gwvpmini_GetContributedRepos($username)\r
724 {\r
725         /*\r
726          *      CREATE TABLE "repos" (\r
727                         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,\r
728                         "repos_name" TEXT,\r
729                         "repos_description" TEXT,\r
730                         "repos_owner" INTEGER\r
731          )';\r
732 \r
733         */\r
734         $conn = gwvpmini_ConnectDB();\r
735 \r
736 \r
737         $uid = gwvpmini_GetUserId($username);\r
738         $sql = "select repos_id,repos_description,repos_perms,repos_owner,repos_status,repos_name from repos";\r
739         $res = $conn->query($sql);\r
740         if($username == "") return false;\r
741 \r
742         $retval = false;
743         $rids = null;
744         $i = 0;\r
745         foreach($res as $row) {
746                 $perms = unserialize(base64_decode($row["repos_perms"]));
747                 error_log("CONTRIB: $uid for ".$row["repos_id"]." - ".print_r($perms,true));
748                 if(isset($perms["$uid"])) if($perms["$uid"] > 1) {
749                         $rids[$i]["id"] = $row["repos_id"];
750                         $rids[$i]["desc"] = $row["repos_description"];
751                         $rids[$i]["owner"] = $row["repos_owner"];
752                         $rids[$i]["status"] = $row["repos_status"];
753                         $rids[$i]["name"] = $row["repos_name"];
754                         $i++;
755                 }
756         }
757         $retval = $rids;
758         
759         if($i == 0) {
760                 error_log("CONTRIBREPOS: no repos found?");
761                 return false;
762         }\r
763 \r
764         error_log("CONTRIBREPOS: ".print_r($retval, true));\r
765         return $retval;\r
766 }
767
768 function gwvpmini_userLevel($id)
769 {
770         $conn = gwvpmini_ConnectDB();
771         
772         $sql = "select user_level from users where user_id='$id'";
773         
774         $res = $conn->query($sql);
775         
776         $lev = -1;
777         if(!$res) return -1;
778         foreach($res as $row) {
779                 $lev = (int)$row[0];
780         }
781         
782         return $lev;
783 }
784
785 function gwvpmini_GetUsers($startat = 0, $num = 10)
786 {
787         $conn = gwvpmini_ConnectDB();
788         
789         /*
790          *      CREATE TABLE "users" (
791         "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
792         "user_full_name" TEXT,
793         "user_password" TEXT,
794         "user_username" TEXT,
795         "user_email" TEXT,
796         "user_desc" TEXT,
797         "user_level" TEXT,
798         "user_status" TEXT
799
800          */\r
801         \r
802         $sql = "select * from users where user_id>='$startat' order by user_id asc limit $num";
803         
804         $res = $conn->query($sql);
805         
806         $retval = false;
807         foreach($res as $row) {
808                 $id = $row["user_id"];
809                 $retval[$id]["fullname"] = $row["user_full_name"];
810                 $retval[$id]["username"] = $row["user_username"];
811                 $retval[$id]["email"] = $row["user_email"];
812                 $retval[$id]["desc"] = $row["user_desc"];
813                 $retval[$id]["level"] = $row["user_level"];
814                 $retval[$id]["status"] = $row["user_status"];
815                 $retval[$id]["id"] = $row["user_id"];
816         }
817         
818         return $retval;
819 }\r
820
821 function gwvpmini_findPeopleLike($search)\r
822 {\r
823         $conn = gwvpmini_ConnectDB();
824         
825         $sql = "select * from users where user_username like '%$search%' or user_full_name like '%$search%'";\r
826         \r
827         $res = $conn->query($sql);
828         
829         if(!$res) {
830                 error_log("SERACHUSER: $sql returned false");
831                 return false;
832         } else {
833                 error_log("SERACHUSER: $sql returned true");
834         }\r
835         \r
836         $retval = false;\r
837         foreach($res as $row) {\r
838                 $id = $row["user_id"];\r
839                 $retval[$id]["fullname"] = $row["user_full_name"];\r
840                 $retval[$id]["username"] = $row["user_username"];\r
841                 $retval[$id]["email"] = $row["user_email"];\r
842                 $retval[$id]["desc"] = $row["user_desc"];\r
843                 $retval[$id]["level"] = $row["user_level"];\r
844                 $retval[$id]["status"] = $row["user_status"];\r
845                 $retval[$id]["id"] = $row["user_id"];\r
846         }\r
847         
848         error_log("SEARCHUSER: array is ".print_r($retval, true));\r
849         return $retval;
850 }
851
852 function gwvpmini_GetRepos($startat=0, $num=200)\r
853 {\r
854         $conn = gwvpmini_ConnectDB();\r
855         \r
856         /*\r
857          *      CREATE TABLE "repos" (
858         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
859         "repos_name" TEXT,
860         "repos_description" TEXT,
861         "repos_owner" INTEGER
862         )';
863         \r
864                         */\r
865         \r
866         $sql = "select * from repos where repos_id > '$startat' order by repos_id asc limit $num";\r
867         \r
868         $res = $conn->query($sql);\r
869         \r
870         $retval = false;\r
871         foreach($res as $row) {\r
872                 $id = $row["repos_id"];\r
873                 $retval[$id]["name"] = $row["repos_name"];\r
874                 $retval[$id]["desc"] = $row["repos_description"];\r
875                 $retval[$id]["owner"] = $row["repos_owner"];\r
876                 $retval[$id]["id"] = $row["repos_id"];
877                 $retval[$id]["status"] = $row["repos_status"];          
878         }\r
879         \r
880         return $retval;\r
881         \r
882         \r
883 }\r
884
885 function gwvpmini_findReposLike($search)\r
886 {\r
887         $conn = gwvpmini_ConnectDB();
888         
889         /*
890          *      CREATE TABLE "repos" (
891         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
892         "repos_name" TEXT,
893         "repos_description" TEXT,
894         "repos_owner" INTEGER
895         )';
896         
897                         */
898         
899         $sql = "select * from repos where repos_name like '%$search%' or repos_description like '%$search%'";
900         
901         $res = $conn->query($sql);
902         
903         if(!$res) return false;
904         
905         $retval = false;
906         foreach($res as $row) {
907                 $id = $row["repos_id"];
908                 $retval[$id]["name"] = $row["repos_name"];
909                 $retval[$id]["desc"] = $row["repos_description"];
910                 $retval[$id]["owner"] = $row["repos_owner"];
911                 $retval[$id]["id"] = $row["repos_id"];
912                 $retval[$id]["status"] = $row["repos_status"];
913         }
914         
915         return $retval;
916         \r
917 }\r
918 \r
919 function gwvpmini_GetNRepos()
920 {
921         $conn = gwvpmini_ConnectDB();
922
923         $sql = "select count(*) from repos";
924         
925         $res = $conn->query($sql);
926         
927         $retval = -1;
928         foreach($res as $row) {
929                 $retval = $row[0];
930         }
931         
932         return $retval;
933 }
934
935 \r
936 function gwvpmini_GetNUsers()\r
937 {\r
938         $conn = gwvpmini_ConnectDB();\r
939 \r
940         $sql = "select count(*) from users";\r
941 \r
942         $res = $conn->query($sql);\r
943 \r
944         $retval = -1;\r
945         foreach($res as $row) {\r
946                 $retval = $row[0];\r
947         }\r
948 \r
949         return $retval;\r
950 }\r
951
952
953 ?>