basic permissions work
[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($cperms_t == "") {
122                 $permsarray[$uid] = $acc;
123         } else {
124                 $permsarray = unserialize(base64_decode($cperms_t));
125                 $permsarray[$uid] = $acc; 
126         }
127         
128         // check if base is now r or a, we can drop any 1's
129         if($permsarray["b"] == "a" || $permsarray["b"] == "r") {
130                 foreach($permsarray as $key => $val) {
131                         if($val == 1) {
132                                 unset($permsarray[$key]);
133                         }
134                 }
135         }
136         
137         $encperms = base64_encode(serialize($permsarray));
138         
139         $sql = "update repos set repos_perms='$encperms' where repos_id='$rid'";\r
140         
141         $conn->query($sql);
142         
143 }
144
145 //returns 0 for none, 1 for read, 2 for writes
146 function gwvpmini_GetRepoPerm($rid, $uid)
147 {
148         $conn = gwvpmini_ConnectDB();\r
149         \r
150         $dets = gwvpmini_getRepo(null, null, $rid);
151         
152         $sql = "select repos_perms from repos where repos_id='$rid'";\r
153         \r
154         $res = $conn->query($sql);
155         
156         error_log("PERMCHECK: FUCK U! $sql");\r
157         \r
158         $cperms_t = false;\r
159         if($res !== false) foreach($res as $row) {\r
160                 $cperms_t = $row[0];\r
161         }\r
162         \r
163         if($cperms_t === false) return 0;
164         
165         error_log("PERMSCHECK $rid, $uid:".print_r($dets, true));\r
166         \r
167         if($dets === false) return 0;
168         
169         if($dets["ownerid"] == $uid) return 2;\r
170         \r
171         $permsarray = unserialize(base64_decode($cperms_t));
172         
173         error_log("PERMSARRAY: ".print_r($permsarray,true));
174         
175         
176         $perm = 0;
177         if($uid != "a") {
178                 if(isset($permsarray[$uid])) {
179                         $perm = $permsarray[$uid];
180                 } else if($permsarray["b"] == "a" ||$permsarray["b"] == "r") {
181                         $perm = 1;
182                 }
183         } else {
184                 if($permsarray["b"] == "a") $perm = 1;
185         }
186         
187         return $perm;\r
188
189 }
190
191 function gwvpmini_RemoveRepoDB($id)
192 {
193         $conn = gwvpmini_ConnectDB();\r
194         \r
195         if($id < 0) return;\r
196         \r
197         $sql = "delete from repos where repos_id='$id'";\r
198         \r
199         return $conn->query($sql);\r
200         
201 }
202
203 function gwvpmini_RemoveUser($uid)
204 {
205         $conn = gwvpmini_ConnectDB();\r
206         
207         if($uid < 0) return;
208         
209         $sql = "delete from users where user_id='$uid'";
210         
211         return $conn->query($sql);
212 }
213
214 function gwvpmini_DisableUser($uid)\r
215 {\r
216         $conn = gwvpmini_ConnectDB();\r
217 \r
218         if($uid < 0) return;\r
219 \r
220         $sql = "update users set user_status=1 where user_id='$uid'";\r
221 \r
222         return $conn->query($sql);\r
223 }\r
224 \r
225 function gwvpmini_EnableUser($uid)\r
226 {\r
227         $conn = gwvpmini_ConnectDB();\r
228 \r
229         if($uid < 0) return;\r
230 \r
231         $sql = "update users set user_status=0 where user_id='$uid'";\r
232 \r
233         return $conn->query($sql);\r
234 }\r
235 \r
236 function gwvpmini_DisableRepo($rid)
237 {
238         $conn = gwvpmini_ConnectDB();\r
239         \r
240         if($rid < 0) return;\r
241         \r
242         $sql = "update repos set repos_status=1 where repos_id='$rid'";\r
243         \r
244         return $conn->query($sql);
245 }\r
246
247 function gwvpmini_EnableRepo($rid)\r
248 {\r
249         $conn = gwvpmini_ConnectDB();\r
250 \r
251         if($rid < 0) return;
252         
253         $sql = "update repos set repos_status=0 where repos_id='$rid'";
254         \r
255         return $conn->query($sql);\r
256 }\r
257 \r
258
259 function gwvpmini_ConnectDB()\r
260 {\r
261         global $WEB_ROOT_FS, $BASE_URL, $data_directory, $db_type, $db_name, $DB_CONNECTION;\r
262 \r
263         // first check if $DB_CONNECTION IS live\r
264         error_log("in connection $db_type, $db_name");\r
265 \r
266         if($DB_CONNECTION != false) return $DB_CONNECTION;\r
267 \r
268         if($db_type == "sqlite") {\r
269                 $db_url = $db_name;\r
270                 if(!file_exists($db_name)) {\r
271                         error_log("$db_name does not exist - problem");
272                         // TODO: NEED A SETUP AGENT!
273                         gwvpmini_dbCreateSQLiteStructure($db_name);
274                         gwvpmini_setConfigVal("repodir", "$data_directory/repos");\r
275                 }\r
276         }\r
277 \r
278         // and here we go with pdo.\r
279         error_log("attmpting to open db, $db_type:$db_url");\r
280         try {\r
281                 $DB_CONNECTION = new PDO("$db_type:$db_url");\r
282         } catch(PDOException $exep) {\r
283                 error_log("execpt on db open");\r
284                 return false;\r
285         }\r
286 \r
287         return $DB_CONNECTION;\r
288 }
289
290 function gwvpmini_UpdateStatusFromConfirm($confirmhash)
291 {
292         $conn = gwvpmini_ConnectDB();\r
293         \r
294         $sql = "select count(*) from users where user_status='2:$confirmhash'";
295         
296         $res = $conn->query($sql);
297         
298         if(!$res) return false;
299         
300         foreach($res as $row) {
301                 $retval = $row[0];
302         }
303         
304         if($retval > 0) {
305                 $sql = "update users set user_status='0' where user_status='2:$confirmhash'";
306                 return $conn->query($sql);
307         } else return false;
308 }
309
310
311 function gwvpmini_AddUser($username, $password, $fullname, $email, $desc, $level, $status)
312 {
313         \r
314         
315         \r
316         $conn = gwvpmini_ConnectDB();\r
317         \r
318         $sql = "insert into 'users' values ( null, '$fullname', '".sha1($password)."', '$username', '$email', '$desc', '$level', '$status')";\r
319         \r
320         $res = $conn->query($sql);
321         if(!$res) return -1;
322         
323         $sql = "select user_id from users where user_username='$username'";\r
324         $res = $conn->query($sql);\r
325         if(!$res) return -1;\r
326         
327         $retval = -1;
328         foreach($res as $row) {
329                 $retval = $row[0];
330         }
331         
332         return $retval;
333 }\r
334
335
336 function gwvpmini_dbCreateSQLiteStructure($dbloc)\r
337 {\r
338         $usersql = '\r
339         CREATE TABLE "users" (\r
340         "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,\r
341         "user_full_name" TEXT,\r
342         "user_password" TEXT,\r
343         "user_username" TEXT,\r
344         "user_email" TEXT,\r
345         "user_desc" TEXT,
346         "user_level" TEXT,\r
347         "user_status" TEXT,
348         UNIQUE(user_username)\r
349         )';\r
350 \r
351         $initialuser_admin = '
352         insert into "users" values ( null, "Administrator", "'.sha1("password").'", "admin", "admin@localhost", "the admin", "1", "0");\r
353         ';\r
354
355         $initialuser_user = '\r
356         insert into "users" values ( null, "User", "'.sha1("password").'", "user", "user@localhost", "the user", "0", "0");\r
357         ';\r
358         \r
359         $reposql = '\r
360         CREATE TABLE "repos" (\r
361         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,\r
362         "repos_name" TEXT,\r
363         "repos_description" TEXT,\r
364         "repos_owner" INTEGER,
365         "repos_perms" TEXT,
366         "repos_status" TEXT,
367         UNIQUE(repos_name)\r
368         )';\r
369 \r
370         // this looks like null, <repoid>, <read|visible|write>, user:<uid>|group:<gid>|authed|anon\r
371         // where authed = any authenticated user, anon = everyone (logged in, not logged in, etc)\r
372         // read|visible|write = can clone from repo|can see repo exists and see description but not clone from it|can push to repo\r
373         // TODO: is this sufficient? i have to think about it\r
374 \r
375         $configsql = '\r
376         CREATE TABLE "config" (\r
377         "config_name" TEXT,\r
378         "config_value" TEXT\r
379         )';\r
380 \r
381         try {\r
382                 $DB_CONNECTION = new PDO("sqlite:$dbloc");\r
383         } catch(PDOException $exep) {\r
384                 error_log("execpt on db open");\r
385                 return false;\r
386         }\r
387
388         $DB_CONNECTION->query($usersql);\r
389         $DB_CONNECTION->query($initialuser_admin);
390         $DB_CONNECTION->query($initialuser_user);
391         $DB_CONNECTION->query($reposql);\r
392         $DB_CONNECTION->query($configsql);\r
393 }
394
395 function gwvpmini_getConfigVal($confname)\r
396 {\r
397         /*\r
398          *      $configsql = '\r
399         CREATE TABLE "config" (\r
400                         "config_name" TEXT,\r
401                         "config_value" TEXT\r
402         )';\r
403 \r
404         */\r
405 \r
406         $conn = gwvpmini_ConnectDB();\r
407 \r
408         $sql = "select config_value from config where config_name='$confname'";\r
409 \r
410         $res = $conn->query($sql);\r
411 \r
412         $return = null;\r
413         foreach($res as $val) {\r
414                 $return = $val["config_value"];\r
415         }\r
416 \r
417         return $return;\r
418 }\r
419 \r
420 function gwvpmini_eraseConfigVal($confname)\r
421 {\r
422         /*\r
423          *      $configsql = '\r
424         CREATE TABLE "config" (\r
425                         "config_name" TEXT,\r
426                         "config_value" TEXT\r
427         )';\r
428 \r
429         */\r
430 \r
431         $conn = gwvpmini_ConnectDB();\r
432 \r
433         $sql = "delete from config where config_name='$confname'";\r
434 \r
435         return $conn->query($sql);\r
436 }
437
438 function gwvpmini_GetRepoId($reponame)
439 {
440
441         /*
442          *      $reposql = '
443         CREATE TABLE "repos" (
444         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
445         "repos_name" TEXT,
446         "repos_description" TEXT,
447         "repos_owner" INTEGER
448         )';
449
450          */
451         
452         $conn = gwvpmini_ConnectDB();
453         
454         $sql = "select repos_id from repos where repos_name='$reponame'";
455         
456         $res = $conn->query($sql);
457         
458         $retval = -1;
459         if(!$res) return -1;
460         foreach($res as $row) {
461                 $retval = (int)$row[0];
462         }
463         
464         return $retval;
465 }
466
467 function gwvpmini_GetRepoDescFromName($reponame)\r
468 {\r
469 \r
470         /*\r
471          *      $reposql = '\r
472         CREATE TABLE "repos" (\r
473                         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,\r
474                         "repos_name" TEXT,\r
475                         "repos_description" TEXT,\r
476                         "repos_owner" INTEGER\r
477         )';\r
478 \r
479         */\r
480 \r
481         $conn = gwvpmini_ConnectDB();\r
482 \r
483         $sql = "select repos_description from repos where repos_name='$reponame'";
484         error_log("desc for name sql: $sql");\r
485 \r
486         $res = $conn->query($sql);\r
487 \r
488         $retval = -1;\r
489         if(!$res) return -1;\r
490         foreach($res as $row) {\r
491                 $retval = $row[0];\r
492         }\r
493 \r
494         return $retval;\r
495 }
496 \r
497 function gwvpmini_GetRepoOwnerDetailsFromName($reponame)\r
498 {\r
499 \r
500         /*\r
501          *      $reposql = '\r
502         CREATE TABLE "repos" (\r
503                         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,\r
504                         "repos_name" TEXT,\r
505                         "repos_description" TEXT,\r
506                         "repos_owner" INTEGER\r
507         )';
508         
509                 "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
510         "user_full_name" TEXT,
511         "user_password" TEXT,
512         "user_username" TEXT,
513         "user_email" TEXT,
514         "user_desc" TEXT,
515         "user_level" TEXT,
516         "user_status" TEXT,
517         UNIQUE(user_username)\r
518 \r
519         */\r
520 \r
521         $conn = gwvpmini_ConnectDB();\r
522 \r
523         $sql = "select users.* from repos,users where repos_name='$reponame' and repos_owner=user_id";\r
524 \r
525         $res = $conn->query($sql);\r
526 \r
527         $retval = -1;\r
528         if(!$res) return -1;\r
529         foreach($res as $row) {
530                 $retval = array();
531                 error_log("STUFF2: ".print_r($row,true));\r
532                 $retval["id"] = $row["user_id"];
533                 $retval["fullname"] = $row["user_full_name"];
534                 $retval["username"] = $row["user_username"];
535                 $retval["email"] = $row["user_email"];
536                 $retval["desc"] = $row["user_desc"];
537                 $retval["level"] = $row["user_level"];
538                 $retval["status"] = $row["user_status"];\r
539         }\r
540 \r
541         return $retval;\r
542 }\r
543 \r
544 function gwvpmini_setConfigVal($confname, $confval)\r
545 {\r
546         /*\r
547          *      $configsql = '\r
548         CREATE TABLE "config" (\r
549                         "config_name" TEXT,\r
550                         "config_value" TEXT\r
551         )';\r
552 \r
553         */\r
554         gwvpmini_eraseConfigVal($confname);\r
555 \r
556         $conn = gwvpmini_ConnectDB();
557         
558         $sql = "delete from config where config_name='$confname'";
559         $conn->query($sql);\r
560 \r
561         $sql = "insert into config values('$confname', '$confval')";\r
562 \r
563         return $conn->query($sql);\r
564 }
565
566 function gwvpmini_AddRepo($name, $desc, $ownerid)
567 {
568         
569         error_log("addrepo in db for $name, $desc, $ownerid");
570         $conn = gwvpmini_ConnectDB();\r
571         
572         $perms["b"] = "a";
573         
574         $encperms = base64_encode(serialize($perms));
575         \r
576         $sql = "insert into repos values (null, '$name', '$desc', '$ownerid', '$encperms', 0)";\r
577         \r
578         $conn->query($sql);\r
579 }
580
581 function gwvpmini_GetUserId($username)
582 {
583         $conn = gwvpmini_ConnectDB();\r
584         
585         $sql = "select user_id from users where user_username='$username'";
586
587         error_log("userid sql $sql");\r
588         
589         $res = $conn->query($sql);
590         
591         $retval = false;
592         foreach($res as $row) {
593                 $retval = $row[0];
594         }
595         
596         return $retval;
597 }
598
599 function gwvpmini_GetUserNameFromEmail($email)\r
600 {\r
601         $conn = gwvpmini_ConnectDB();\r
602 \r
603         $sql = "select user_username from users where user_email='$email'";\r
604 \r
605         error_log("username sql $sql");\r
606 \r
607         $res = $conn->query($sql);\r
608 \r
609         $retval = false;\r
610         foreach($res as $row) {\r
611                 $retval = $row[0];\r
612         }\r
613 \r
614         return $retval;\r
615 }
616 function gwvpmini_GetOwnedRepos($username)\r
617 {
618         /*
619          *      CREATE TABLE "repos" (
620         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
621         "repos_name" TEXT,
622         "repos_description" TEXT,
623         "repos_owner" INTEGER
624         )';
625
626          */
627         $conn = gwvpmini_ConnectDB();
628         
629         
630         $uid = gwvpmini_GetUserId($username);
631         $sql = "select * from repos where repos_owner='$uid'";
632         error_log("owned repos sql $sql for username $username");
633         $res = $conn->query($sql);
634         if($username == "") return false;\r
635         
636         $retval = false;
637         foreach($res as $row) {
638                 $id = $row["repos_id"];
639                 $retval[$id]["name"] = $row["repos_name"];
640                 $retval[$id]["desc"] = $row["repos_description"];
641                 $retval[$id]["id"] = $row["repos_id"];
642                 error_log(print_r($row, true));
643         }
644         
645         error_log(print_r($retval, true));\r
646         return $retval;\r
647 }
648
649 function gwvpmini_userLevel($id)
650 {
651         $conn = gwvpmini_ConnectDB();
652         
653         $sql = "select user_level from users where user_id='$id'";
654         
655         $res = $conn->query($sql);
656         
657         $lev = -1;
658         if(!$res) return -1;
659         foreach($res as $row) {
660                 $lev = (int)$row[0];
661         }
662         
663         return $lev;
664 }
665
666 function gwvpmini_GetUsers($startat = 0, $num = 10)
667 {
668         $conn = gwvpmini_ConnectDB();
669         
670         /*
671          *      CREATE TABLE "users" (
672         "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
673         "user_full_name" TEXT,
674         "user_password" TEXT,
675         "user_username" TEXT,
676         "user_email" TEXT,
677         "user_desc" TEXT,
678         "user_level" TEXT,
679         "user_status" TEXT
680
681          */\r
682         \r
683         $sql = "select * from users where user_id>='$startat' order by user_id asc limit $num";
684         
685         $res = $conn->query($sql);
686         
687         $retval = false;
688         foreach($res as $row) {
689                 $id = $row["user_id"];
690                 $retval[$id]["fullname"] = $row["user_full_name"];
691                 $retval[$id]["username"] = $row["user_username"];
692                 $retval[$id]["email"] = $row["user_email"];
693                 $retval[$id]["desc"] = $row["user_desc"];
694                 $retval[$id]["level"] = $row["user_level"];
695                 $retval[$id]["status"] = $row["user_status"];
696                 $retval[$id]["id"] = $row["user_id"];
697         }
698         
699         return $retval;
700 }\r
701
702 function gwvpmini_findPeopleLike($search)\r
703 {\r
704         $conn = gwvpmini_ConnectDB();
705         
706         $sql = "select * from users where user_username like '%$search%' or user_full_name like '%$search%'";\r
707         \r
708         $res = $conn->query($sql);
709         
710         if(!$res) {
711                 error_log("SERACHUSER: $sql returned false");
712                 return false;
713         } else {
714                 error_log("SERACHUSER: $sql returned true");
715         }\r
716         \r
717         $retval = false;\r
718         foreach($res as $row) {\r
719                 $id = $row["user_id"];\r
720                 $retval[$id]["fullname"] = $row["user_full_name"];\r
721                 $retval[$id]["username"] = $row["user_username"];\r
722                 $retval[$id]["email"] = $row["user_email"];\r
723                 $retval[$id]["desc"] = $row["user_desc"];\r
724                 $retval[$id]["level"] = $row["user_level"];\r
725                 $retval[$id]["status"] = $row["user_status"];\r
726                 $retval[$id]["id"] = $row["user_id"];\r
727         }\r
728         
729         error_log("SEARCHUSER: array is ".print_r($retval, true));\r
730         return $retval;
731 }
732
733 function gwvpmini_GetRepos($startat=0, $num=200)\r
734 {\r
735         $conn = gwvpmini_ConnectDB();\r
736         \r
737         /*\r
738          *      CREATE TABLE "repos" (
739         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
740         "repos_name" TEXT,
741         "repos_description" TEXT,
742         "repos_owner" INTEGER
743         )';
744         \r
745                         */\r
746         \r
747         $sql = "select * from repos where repos_id > '$startat' order by repos_id asc limit $num";\r
748         \r
749         $res = $conn->query($sql);\r
750         \r
751         $retval = false;\r
752         foreach($res as $row) {\r
753                 $id = $row["repos_id"];\r
754                 $retval[$id]["name"] = $row["repos_name"];\r
755                 $retval[$id]["desc"] = $row["repos_description"];\r
756                 $retval[$id]["owner"] = $row["repos_owner"];\r
757                 $retval[$id]["id"] = $row["repos_id"];
758                 $retval[$id]["status"] = $row["repos_status"];          
759         }\r
760         \r
761         return $retval;\r
762         \r
763         \r
764 }\r
765
766 function gwvpmini_findReposLike($search)\r
767 {\r
768         $conn = gwvpmini_ConnectDB();
769         
770         /*
771          *      CREATE TABLE "repos" (
772         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
773         "repos_name" TEXT,
774         "repos_description" TEXT,
775         "repos_owner" INTEGER
776         )';
777         
778                         */
779         
780         $sql = "select * from repos where repos_name like '%$search%' or repos_description like '%$search%'";
781         
782         $res = $conn->query($sql);
783         
784         if(!$res) return false;
785         
786         $retval = false;
787         foreach($res as $row) {
788                 $id = $row["repos_id"];
789                 $retval[$id]["name"] = $row["repos_name"];
790                 $retval[$id]["desc"] = $row["repos_description"];
791                 $retval[$id]["owner"] = $row["repos_owner"];
792                 $retval[$id]["id"] = $row["repos_id"];
793                 $retval[$id]["status"] = $row["repos_status"];
794         }
795         
796         return $retval;
797         \r
798 }\r
799 \r
800 function gwvpmini_GetNRepos()
801 {
802         $conn = gwvpmini_ConnectDB();
803
804         $sql = "select count(*) from repos";
805         
806         $res = $conn->query($sql);
807         
808         $retval = -1;
809         foreach($res as $row) {
810                 $retval = $row[0];
811         }
812         
813         return $retval;
814 }
815
816 \r
817 function gwvpmini_GetNUsers()\r
818 {\r
819         $conn = gwvpmini_ConnectDB();\r
820 \r
821         $sql = "select count(*) from users";\r
822 \r
823         $res = $conn->query($sql);\r
824 \r
825         $retval = -1;\r
826         foreach($res as $row) {\r
827                 $retval = $row[0];\r
828         }\r
829 \r
830         return $retval;\r
831 }\r
832
833
834 ?>