some auth debugging nonsense
[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 }\r
265 \r
266 function gwvpmini_EnableUser($uid)\r
267 {\r
268         $conn = gwvpmini_ConnectDB();\r
269 \r
270         if($uid < 0) return;\r
271 \r
272         $sql = "update users set user_status=0 where user_id='$uid'";\r
273 \r
274         return $conn->query($sql);\r
275 }\r
276 \r
277 function gwvpmini_DisableRepo($rid)
278 {
279         $conn = gwvpmini_ConnectDB();\r
280         \r
281         if($rid < 0) return;\r
282         \r
283         $sql = "update repos set repos_status=1 where repos_id='$rid'";\r
284         \r
285         return $conn->query($sql);
286 }\r
287
288 function gwvpmini_EnableRepo($rid)\r
289 {\r
290         $conn = gwvpmini_ConnectDB();\r
291 \r
292         if($rid < 0) return;
293         
294         $sql = "update repos set repos_status=0 where repos_id='$rid'";
295         \r
296         return $conn->query($sql);\r
297 }\r
298 \r
299
300 function gwvpmini_ConnectDB()\r
301 {\r
302         global $WEB_ROOT_FS, $BASE_URL, $data_directory, $db_type, $db_name, $DB_CONNECTION;\r
303 \r
304         // first check if $DB_CONNECTION IS live\r
305         //error_log("in connection $db_type, $db_name");\r
306 \r
307         if($DB_CONNECTION != false) return $DB_CONNECTION;\r
308 \r
309         if($db_type == "sqlite") {\r
310                 $db_url = $db_name;\r
311                 if(!file_exists($db_name)) {\r
312                         //error_log("$db_name does not exist - problem");
313                         // TODO: NEED A SETUP AGENT!
314                         gwvpmini_dbCreateSQLiteStructure($db_name);
315                         gwvpmini_setConfigVal("repodir", "$data_directory/repos");\r
316                 }\r
317         }\r
318 \r
319         // and here we go with pdo.\r
320         //error_log("attmpting to open db, $db_type:$db_url");\r
321         try {\r
322                 $DB_CONNECTION = new PDO("$db_type:$db_url");\r
323         } catch(PDOException $exep) {\r
324                 error_log("execpt on db open");\r
325                 return false;\r
326         }\r
327 \r
328         return $DB_CONNECTION;\r
329 }
330
331 function gwvpmini_UpdateStatusFromConfirm($confirmhash)
332 {
333         $conn = gwvpmini_ConnectDB();\r
334         \r
335         $sql = "select count(*) from users where user_status='2:$confirmhash'";
336         
337         $res = $conn->query($sql);
338         
339         if(!$res) return false;
340         
341         foreach($res as $row) {
342                 $retval = $row[0];
343         }
344         
345         if($retval > 0) {
346                 $sql = "update users set user_status='0' where user_status='2:$confirmhash'";
347                 return $conn->query($sql);
348         } else return false;
349 }
350
351
352 function gwvpmini_AddUser($username, $password, $fullname, $email, $desc, $level, $status)
353 {
354         \r
355         
356         \r
357         $conn = gwvpmini_ConnectDB();\r
358         \r
359         $sql = "insert into 'users' values ( null, '$fullname', '".sha1($password)."', '$username', '$email', '$desc', '$level', '$status')";\r
360         \r
361         $res = $conn->query($sql);
362         if(!$res) return -1;
363         
364         $sql = "select user_id from users where user_username='$username'";\r
365         $res = $conn->query($sql);\r
366         if(!$res) return -1;\r
367         
368         $retval = -1;
369         foreach($res as $row) {
370                 $retval = $row[0];
371         }
372         
373         return $retval;
374 }\r
375
376
377 function gwvpmini_dbCreateSQLiteStructure($dbloc)\r
378 {\r
379         $usersql = '\r
380         CREATE TABLE "users" (\r
381         "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,\r
382         "user_full_name" TEXT,\r
383         "user_password" TEXT,\r
384         "user_username" TEXT,\r
385         "user_email" TEXT,\r
386         "user_desc" TEXT,
387         "user_level" TEXT,\r
388         "user_status" TEXT,
389         UNIQUE(user_username)\r
390         )';\r
391 \r
392         $initialuser_admin = '
393         insert into "users" values ( null, "Administrator", "'.sha1("password").'", "admin", "admin@localhost", "the admin", "1", "0");\r
394         ';\r
395
396         $initialuser_user = '\r
397         insert into "users" values ( null, "User", "'.sha1("password").'", "user", "user@localhost", "the user", "0", "0");\r
398         ';\r
399         \r
400         $reposql = '\r
401         CREATE TABLE "repos" (\r
402         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,\r
403         "repos_name" TEXT,\r
404         "repos_description" TEXT,\r
405         "repos_owner" INTEGER,
406         "repos_perms" TEXT,
407         "repos_status" TEXT,
408         UNIQUE(repos_name)\r
409         )';\r
410 \r
411         // this looks like null, <repoid>, <read|visible|write>, user:<uid>|group:<gid>|authed|anon\r
412         // where authed = any authenticated user, anon = everyone (logged in, not logged in, etc)\r
413         // read|visible|write = can clone from repo|can see repo exists and see description but not clone from it|can push to repo\r
414         // TODO: is this sufficient? i have to think about it\r
415 \r
416         $configsql = '\r
417         CREATE TABLE "config" (\r
418         "config_name" TEXT,\r
419         "config_value" TEXT\r
420         )';\r
421 \r
422         try {\r
423                 $DB_CONNECTION = new PDO("sqlite:$dbloc");\r
424         } catch(PDOException $exep) {\r
425                 error_log("execpt on db open");\r
426                 return false;\r
427         }\r
428
429         $DB_CONNECTION->query($usersql);\r
430         $DB_CONNECTION->query($initialuser_admin);
431         $DB_CONNECTION->query($initialuser_user);
432         $DB_CONNECTION->query($reposql);\r
433         $DB_CONNECTION->query($configsql);\r
434 }
435
436 function gwvpmini_getConfigVal($confname)\r
437 {\r
438         /*\r
439          *      $configsql = '\r
440         CREATE TABLE "config" (\r
441                         "config_name" TEXT,\r
442                         "config_value" TEXT\r
443         )';\r
444 \r
445         */\r
446 \r
447         $conn = gwvpmini_ConnectDB();\r
448 \r
449         $sql = "select config_value from config where config_name='$confname'";\r
450 \r
451         $res = $conn->query($sql);\r
452 \r
453         $return = null;\r
454         foreach($res as $val) {\r
455                 $return = $val["config_value"];\r
456         }\r
457 \r
458         return $return;\r
459 }\r
460 \r
461 function gwvpmini_eraseConfigVal($confname)\r
462 {\r
463         /*\r
464          *      $configsql = '\r
465         CREATE TABLE "config" (\r
466                         "config_name" TEXT,\r
467                         "config_value" TEXT\r
468         )';\r
469 \r
470         */\r
471 \r
472         $conn = gwvpmini_ConnectDB();\r
473 \r
474         $sql = "delete from config where config_name='$confname'";\r
475 \r
476         return $conn->query($sql);\r
477 }
478
479 function gwvpmini_GetRepoId($reponame)
480 {
481
482         /*
483          *      $reposql = '
484         CREATE TABLE "repos" (
485         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
486         "repos_name" TEXT,
487         "repos_description" TEXT,
488         "repos_owner" INTEGER
489         )';
490
491          */
492         
493         $conn = gwvpmini_ConnectDB();
494         
495         $sql = "select repos_id from repos where repos_name='$reponame'";
496         
497         $res = $conn->query($sql);
498         
499         $retval = -1;
500         if(!$res) return -1;
501         foreach($res as $row) {
502                 $retval = (int)$row[0];
503         }
504         
505         return $retval;
506 }
507
508 function gwvpmini_GetRepoDescFromName($reponame)\r
509 {\r
510 \r
511         /*\r
512          *      $reposql = '\r
513         CREATE TABLE "repos" (\r
514                         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,\r
515                         "repos_name" TEXT,\r
516                         "repos_description" TEXT,\r
517                         "repos_owner" INTEGER\r
518         )';\r
519 \r
520         */\r
521 \r
522         $conn = gwvpmini_ConnectDB();\r
523 \r
524         $sql = "select repos_description from repos where repos_name='$reponame'";
525         error_log("desc for name sql: $sql");\r
526 \r
527         $res = $conn->query($sql);\r
528 \r
529         $retval = -1;\r
530         if(!$res) return -1;\r
531         foreach($res as $row) {\r
532                 $retval = $row[0];\r
533         }\r
534 \r
535         return $retval;\r
536 }
537 \r
538 function gwvpmini_GetRepoOwnerDetailsFromName($reponame)\r
539 {\r
540 \r
541         /*\r
542          *      $reposql = '\r
543         CREATE TABLE "repos" (\r
544                         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,\r
545                         "repos_name" TEXT,\r
546                         "repos_description" TEXT,\r
547                         "repos_owner" INTEGER\r
548         )';
549         
550                 "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
551         "user_full_name" TEXT,
552         "user_password" TEXT,
553         "user_username" TEXT,
554         "user_email" TEXT,
555         "user_desc" TEXT,
556         "user_level" TEXT,
557         "user_status" TEXT,
558         UNIQUE(user_username)\r
559 \r
560         */\r
561 \r
562         $conn = gwvpmini_ConnectDB();\r
563 \r
564         $sql = "select users.* from repos,users where repos_name='$reponame' and repos_owner=user_id";\r
565 \r
566         $res = $conn->query($sql);\r
567 \r
568         $retval = -1;\r
569         if(!$res) return -1;\r
570         foreach($res as $row) {
571                 $retval = array();
572                 error_log("STUFF2: ".print_r($row,true));\r
573                 $retval["id"] = $row["user_id"];
574                 $retval["fullname"] = $row["user_full_name"];
575                 $retval["username"] = $row["user_username"];
576                 $retval["email"] = $row["user_email"];
577                 $retval["desc"] = $row["user_desc"];
578                 $retval["level"] = $row["user_level"];
579                 $retval["status"] = $row["user_status"];\r
580         }\r
581 \r
582         return $retval;\r
583 }\r
584 \r
585 function gwvpmini_setConfigVal($confname, $confval)\r
586 {\r
587         /*\r
588          *      $configsql = '\r
589         CREATE TABLE "config" (\r
590                         "config_name" TEXT,\r
591                         "config_value" TEXT\r
592         )';\r
593 \r
594         */\r
595         gwvpmini_eraseConfigVal($confname);\r
596 \r
597         $conn = gwvpmini_ConnectDB();
598         
599         $sql = "delete from config where config_name='$confname'";
600         $conn->query($sql);\r
601 \r
602         $sql = "insert into config values('$confname', '$confval')";\r
603 \r
604         return $conn->query($sql);\r
605 }
606
607 function gwvpmini_AddRepo($name, $desc, $ownerid)
608 {
609         
610         error_log("addrepo in db for $name, $desc, $ownerid");
611         $conn = gwvpmini_ConnectDB();\r
612         
613         $perms["b"] = "a";
614         
615         $encperms = base64_encode(serialize($perms));
616         \r
617         $sql = "insert into repos values (null, '$name', '$desc', '$ownerid', '$encperms', 0)";\r
618         \r
619         $conn->query($sql);\r
620 }
621
622 function gwvpmini_GetUserId($username)
623 {
624         $conn = gwvpmini_ConnectDB();\r
625         
626         $sql = "select user_id from users where user_username='$username'";
627
628         error_log("userid sql $sql");\r
629         
630         $res = $conn->query($sql);
631         
632         $retval = false;
633         foreach($res as $row) {
634                 $retval = $row[0];
635         }
636         
637         return $retval;
638 }
639
640 function gwvpmini_GetUserNameFromEmail($email)\r
641 {\r
642         $conn = gwvpmini_ConnectDB();\r
643 \r
644         $sql = "select user_username from users where user_email='$email'";\r
645 \r
646         error_log("username sql $sql");\r
647 \r
648         $res = $conn->query($sql);\r
649 \r
650         $retval = false;\r
651         foreach($res as $row) {\r
652                 $retval = $row[0];\r
653         }\r
654 \r
655         return $retval;\r
656 }
657 function gwvpmini_GetOwnedRepos($username)\r
658 {
659         /*
660          *      CREATE TABLE "repos" (
661         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
662         "repos_name" TEXT,
663         "repos_description" TEXT,
664         "repos_owner" INTEGER
665         )';
666
667          */
668         $conn = gwvpmini_ConnectDB();
669         
670         
671         $uid = gwvpmini_GetUserId($username);
672         $sql = "select * from repos where repos_owner='$uid'";
673         error_log("owned repos sql $sql for username $username");
674         $res = $conn->query($sql);
675         if($username == "") return false;\r
676         
677         $retval = false;
678         foreach($res as $row) {
679                 $id = $row["repos_id"];
680                 $retval[$id]["name"] = $row["repos_name"];
681                 $retval[$id]["desc"] = $row["repos_description"];
682                 $retval[$id]["id"] = $row["repos_id"];
683                 error_log(print_r($row, true));
684         }
685         
686         error_log(print_r($retval, true));\r
687         return $retval;\r
688 }
689
690 function gwvpmini_userLevel($id)
691 {
692         $conn = gwvpmini_ConnectDB();
693         
694         $sql = "select user_level from users where user_id='$id'";
695         
696         $res = $conn->query($sql);
697         
698         $lev = -1;
699         if(!$res) return -1;
700         foreach($res as $row) {
701                 $lev = (int)$row[0];
702         }
703         
704         return $lev;
705 }
706
707 function gwvpmini_GetUsers($startat = 0, $num = 10)
708 {
709         $conn = gwvpmini_ConnectDB();
710         
711         /*
712          *      CREATE TABLE "users" (
713         "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
714         "user_full_name" TEXT,
715         "user_password" TEXT,
716         "user_username" TEXT,
717         "user_email" TEXT,
718         "user_desc" TEXT,
719         "user_level" TEXT,
720         "user_status" TEXT
721
722          */\r
723         \r
724         $sql = "select * from users where user_id>='$startat' order by user_id asc limit $num";
725         
726         $res = $conn->query($sql);
727         
728         $retval = false;
729         foreach($res as $row) {
730                 $id = $row["user_id"];
731                 $retval[$id]["fullname"] = $row["user_full_name"];
732                 $retval[$id]["username"] = $row["user_username"];
733                 $retval[$id]["email"] = $row["user_email"];
734                 $retval[$id]["desc"] = $row["user_desc"];
735                 $retval[$id]["level"] = $row["user_level"];
736                 $retval[$id]["status"] = $row["user_status"];
737                 $retval[$id]["id"] = $row["user_id"];
738         }
739         
740         return $retval;
741 }\r
742
743 function gwvpmini_findPeopleLike($search)\r
744 {\r
745         $conn = gwvpmini_ConnectDB();
746         
747         $sql = "select * from users where user_username like '%$search%' or user_full_name like '%$search%'";\r
748         \r
749         $res = $conn->query($sql);
750         
751         if(!$res) {
752                 error_log("SERACHUSER: $sql returned false");
753                 return false;
754         } else {
755                 error_log("SERACHUSER: $sql returned true");
756         }\r
757         \r
758         $retval = false;\r
759         foreach($res as $row) {\r
760                 $id = $row["user_id"];\r
761                 $retval[$id]["fullname"] = $row["user_full_name"];\r
762                 $retval[$id]["username"] = $row["user_username"];\r
763                 $retval[$id]["email"] = $row["user_email"];\r
764                 $retval[$id]["desc"] = $row["user_desc"];\r
765                 $retval[$id]["level"] = $row["user_level"];\r
766                 $retval[$id]["status"] = $row["user_status"];\r
767                 $retval[$id]["id"] = $row["user_id"];\r
768         }\r
769         
770         error_log("SEARCHUSER: array is ".print_r($retval, true));\r
771         return $retval;
772 }
773
774 function gwvpmini_GetRepos($startat=0, $num=200)\r
775 {\r
776         $conn = gwvpmini_ConnectDB();\r
777         \r
778         /*\r
779          *      CREATE TABLE "repos" (
780         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
781         "repos_name" TEXT,
782         "repos_description" TEXT,
783         "repos_owner" INTEGER
784         )';
785         \r
786                         */\r
787         \r
788         $sql = "select * from repos where repos_id > '$startat' order by repos_id asc limit $num";\r
789         \r
790         $res = $conn->query($sql);\r
791         \r
792         $retval = false;\r
793         foreach($res as $row) {\r
794                 $id = $row["repos_id"];\r
795                 $retval[$id]["name"] = $row["repos_name"];\r
796                 $retval[$id]["desc"] = $row["repos_description"];\r
797                 $retval[$id]["owner"] = $row["repos_owner"];\r
798                 $retval[$id]["id"] = $row["repos_id"];
799                 $retval[$id]["status"] = $row["repos_status"];          
800         }\r
801         \r
802         return $retval;\r
803         \r
804         \r
805 }\r
806
807 function gwvpmini_findReposLike($search)\r
808 {\r
809         $conn = gwvpmini_ConnectDB();
810         
811         /*
812          *      CREATE TABLE "repos" (
813         "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
814         "repos_name" TEXT,
815         "repos_description" TEXT,
816         "repos_owner" INTEGER
817         )';
818         
819                         */
820         
821         $sql = "select * from repos where repos_name like '%$search%' or repos_description like '%$search%'";
822         
823         $res = $conn->query($sql);
824         
825         if(!$res) return false;
826         
827         $retval = false;
828         foreach($res as $row) {
829                 $id = $row["repos_id"];
830                 $retval[$id]["name"] = $row["repos_name"];
831                 $retval[$id]["desc"] = $row["repos_description"];
832                 $retval[$id]["owner"] = $row["repos_owner"];
833                 $retval[$id]["id"] = $row["repos_id"];
834                 $retval[$id]["status"] = $row["repos_status"];
835         }
836         
837         return $retval;
838         \r
839 }\r
840 \r
841 function gwvpmini_GetNRepos()
842 {
843         $conn = gwvpmini_ConnectDB();
844
845         $sql = "select count(*) from repos";
846         
847         $res = $conn->query($sql);
848         
849         $retval = -1;
850         foreach($res as $row) {
851                 $retval = $row[0];
852         }
853         
854         return $retval;
855 }
856
857 \r
858 function gwvpmini_GetNUsers()\r
859 {\r
860         $conn = gwvpmini_ConnectDB();\r
861 \r
862         $sql = "select count(*) from users";\r
863 \r
864         $res = $conn->query($sql);\r
865 \r
866         $retval = -1;\r
867         foreach($res as $row) {\r
868                 $retval = $row[0];\r
869         }\r
870 \r
871         return $retval;\r
872 }\r
873
874
875 ?>