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)) {
21 //// error_log("Exists");
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_GetActivityLog($nentries = 20, $forid=-1)
61 * "activity_id" INTEGER PRIMARY KEY AUTOINCREMENT,
66 "activity_commitid" TEXT,
67 "activity_commitlog" TEXT,
68 "activity_visibleto" TEXT
71 $conn = gwvpmini_ConnectDB();
\r
74 // we're searching for anonymous ones
75 $sql = "select * from activity where activity_visibleto='a' order by activity_date desc limit $nentries";
77 $sql = "select * from activity where activity_visibleto='a' or activity_visibleto='r' or activity_visibleto like '%:$forid:%' order by activity_date desc limit $nentries";
80 $vls = $conn->query($sql);
84 if($vls !== false) foreach($vls as $vals) {
85 $ret[$nent]["type"] = $vals["activity_type"];
86 $ret[$nent]["date"] = $vals["activity_date"];
87 $ret[$nent]["userid"] = $vals["activity_user"];
88 $ret[$nent]["repoid"] = $vals["activity_repo"];
89 $ret[$nent]["commitid"] = $vals["activity_commitid"];
90 $ret[$nent]["commitlog"] = $vals["activity_commitlog"];
94 if($nent == 0) return false;
99 function gwvpmini_getRepo($ownerid=null, $name=null, $id=null)
\r
101 $conn = gwvpmini_ConnectDB();
105 CREATE TABLE "repos" (
106 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
108 "repos_description" TEXT,
109 "repos_owner" INTEGER,
110 "repos_readperms" TEXT,
116 if($ownerid != null) {
\r
117 $res = $conn->query("select * from repos where repos_owner='$ownerid'");
\r
118 } else if($name != null) {
\r
119 $res = $conn->query("select * from repos where repos_name='$name'");
\r
120 } else if($id != null) {
\r
121 $res = $conn->query("select * from repos where repos_id='$id'");
\r
122 } else return false;
\r
125 if(!$res) return false;
\r
126 foreach($res as $u_res) {
\r
127 $returns["id"] = $u_res["repos_id"];
\r
128 $returns["name"] = $u_res["repos_name"];
\r
129 $returns["desc"] = $u_res["repos_description"];
\r
130 $returns["ownerid"] = $u_res["repos_owner"];
131 $returns["status"] = $u_res["repos_status"];
\r
139 // $uid = user id (a for "anyone", r for "registered")
140 // $acc = 0 or 1, 0 = no access, 1 = read access, 2 = write
141 // first part of ths is the "base" repo permissions
142 // this is spec'd as b:t where t = a (anyone can read), r (only registered can read) or x (explicit read perms)
143 function gwvpmini_ChangeRepoPerm($rid, $uid, $acc)
145 $conn = gwvpmini_ConnectDB();
147 $sql = "select repos_perms from repos where repos_id='$rid'";
149 $res = $conn->query($sql);
151 // error_log("CHANGEREPOPERMS: call with $rid, $uid, $acc");
154 foreach($res as $row) {
158 if($cperms_t === false) return false;
160 $permsarray = array();
162 if($cperms_t == "") {
163 $permsarray[$uid] = $acc;
165 $permsarray = unserialize(base64_decode($cperms_t));
166 $permsarray[$uid] = $acc;
168 // error_log("PERMSUPDATE: REMOVE $uid");
169 unset($permsarray[$uid]);
173 // error_log("CHANGEREPOPERMS for b of $acc");
174 $permsarray["b"] = $acc;
177 // check if base is now r or a, we can drop any 1's
178 if($permsarray["b"] == "a" || $permsarray["b"] == "r") {
179 foreach($permsarray as $key => $val) {
181 // error_log("CHANGEREPOPERMS removed $key $val for base perm change");
182 unset($permsarray[$key]);
187 if(is_array($permsarray)) {
188 if(!isset($permsarray["b"])) {
189 // something went wrong, repalce b bit
190 $permsarray["b"] = "a";
193 // something went even wronger
194 $permsarray["b"] = "a";
198 $encperms = base64_encode(serialize($permsarray));
200 $sql = "update repos set repos_perms='$encperms' where repos_id='$rid'";
\r
202 // error_log("PERMSARRAYNOW $sql ".print_r($permsarray,true));
\r
208 function gwvpmini_GetRepoPerms($rid)
210 $conn = gwvpmini_ConnectDB();
\r
212 $sql = "select repos_perms from repos where repos_id='$rid'";
\r
214 $res = $conn->query($sql);
\r
217 if($res !== false) foreach($res as $row) {
\r
218 $cperms_t = $row[0];
\r
221 if($cperms_t === false) return false;
\r
223 $permsarray = unserialize(base64_decode($cperms_t));
228 //returns 0 for none, 1 for read, 2 for writes
229 function gwvpmini_GetRepoPerm($rid, $uid)
231 $conn = gwvpmini_ConnectDB();
\r
233 $dets = gwvpmini_getRepo(null, null, $rid);
235 $sql = "select repos_perms from repos where repos_id='$rid'";
\r
237 $res = $conn->query($sql);
240 if($res !== false) foreach($res as $row) {
\r
241 $cperms_t = $row[0];
\r
244 if($cperms_t === false) return 0;
246 // error_log("PERMSCHECK $rid, $uid:".print_r($dets, true));
\r
248 if($dets === false) return 0;
250 if($dets["ownerid"] == $uid) return 2;
\r
252 $permsarray = unserialize(base64_decode($cperms_t));
254 // error_log("PERMSARRAY: ".print_r($permsarray,true));
259 if(isset($permsarray[$uid])) {
260 $perm = $permsarray[$uid];
261 } else if($permsarray["b"] == "a" ||$permsarray["b"] == "r") {
265 if($permsarray["b"] == "a") $perm = 1;
272 function gwvpmini_RemoveRepoDB($id)
274 $conn = gwvpmini_ConnectDB();
\r
276 if($id < 0) return;
\r
278 $sql = "delete from repos where repos_id='$id'";
\r
280 return $conn->query($sql);
\r
284 function gwvpmini_RemoveUser($uid)
286 $conn = gwvpmini_ConnectDB();
\r
290 $sql = "delete from users where user_id='$uid'";
292 return $conn->query($sql);
295 function gwvpmini_UpdateUserEmail($uid, $email)
297 $conn = gwvpmini_ConnectDB();
\r
299 if($uid < 0) return;
\r
301 $sql = "update users set user_email='$email' where user_id='$uid'";
\r
303 return $conn->query($sql);
306 function gwvpmini_UpdateUserDesc($uid, $desc)
\r
308 $conn = gwvpmini_ConnectDB();
\r
310 if($uid < 0) return;
\r
312 $sql = "update users set user_desc='$desc' where user_id='$uid'";
\r
314 return $conn->query($sql);
\r
317 function gwvpmini_SetUserStatusAdmin($uid, $adminstat)
319 $conn = gwvpmini_ConnectDB();
\r
321 if($uid < 0) return;
\r
323 $sql = "update users set user_level='$adminstat' where user_id='$uid'";
\r
325 return $conn->query($sql);
328 function gwvpmini_UpdateUserPassword($uid, $pass)
330 $conn = gwvpmini_ConnectDB();
334 $sql = "update users set user_password='".sha1($pass)."' where user_id='$uid'";
336 return $conn->query($sql);
339 function gwvpmini_DisableUser($uid)
\r
341 $conn = gwvpmini_ConnectDB();
\r
343 if($uid < 0) return;
\r
345 $sql = "update users set user_status=1 where user_id='$uid'";
\r
347 return $conn->query($sql);
\r
350 function gwvpmini_UpdateRepoDescription($rid, $desc)
352 $conn = gwvpmini_ConnectDB();
\r
354 // remove any tag elements
355 $newdesc_r = preg_replace("/[\<\>\;]+/", "", $desc);
356 $newdesc = preg_replace("/\n/", "<br>", $newdesc_r);
358 $sql = "update repos set repos_description='$newdesc' where repos_id='$rid'";
360 return $conn->query($sql);
363 function gwvpmini_EnableUser($uid)
\r
365 $conn = gwvpmini_ConnectDB();
\r
367 if($uid < 0) return;
\r
369 $sql = "update users set user_status=0 where user_id='$uid'";
\r
371 return $conn->query($sql);
\r
374 function gwvpmini_DisableRepo($rid)
376 $conn = gwvpmini_ConnectDB();
\r
378 if($rid < 0) return;
\r
380 $sql = "update repos set repos_status=1 where repos_id='$rid'";
\r
382 return $conn->query($sql);
385 function gwvpmini_EnableRepo($rid)
\r
387 $conn = gwvpmini_ConnectDB();
\r
391 $sql = "update repos set repos_status=0 where repos_id='$rid'";
393 return $conn->query($sql);
\r
397 function gwvpmini_ConnectDB()
\r
399 global $WEB_ROOT_FS, $BASE_URL, $data_directory, $db_type, $db_name, $DB_CONNECTION;
\r
401 // first check if $DB_CONNECTION IS live
\r
402 //// error_log("in connection $db_type, $db_name");
405 if($DB_CONNECTION != false) return $DB_CONNECTION;
\r
407 if($db_type == "sqlite") {
\r
408 $db_url = $db_name;
\r
409 if(!file_exists($db_name)) {
\r
410 //// error_log("$db_name does not exist - problem");
411 // TODO: NEED A SETUP AGENT!
412 gwvpmini_dbCreateSQLiteStructure($db_name);
413 gwvpmini_setConfigVal("repodir", "$data_directory/repos");
\r
417 // and here we go with pdo.
\r
418 // error_log("attmpting to open db, $db_type:$db_url");
\r
420 $DB_CONNECTION = new PDO("$db_type:$db_url");
\r
421 } catch(PDOException $exep) {
\r
422 // error_log("execpt on db open");
\r
426 return $DB_CONNECTION;
\r
429 function gwvpmini_UpdateStatusFromConfirm($confirmhash)
431 $conn = gwvpmini_ConnectDB();
\r
433 $sql = "select count(*) from users where user_status='2:$confirmhash'";
435 $res = $conn->query($sql);
437 if(!$res) return false;
439 foreach($res as $row) {
444 $sql = "update users set user_status='0' where user_status='2:$confirmhash'";
445 return $conn->query($sql);
450 function gwvpmini_AddUser($username, $password, $fullname, $email, $desc, $level, $status)
455 $conn = gwvpmini_ConnectDB();
\r
457 $sql = "insert into 'users' values ( null, '$fullname', '".sha1($password)."', '$username', '$email', '$desc', '$level', '$status')";
\r
459 $res = $conn->query($sql);
462 $sql = "select user_id from users where user_username='$username'";
\r
463 $res = $conn->query($sql);
\r
464 if(!$res) return -1;
\r
467 foreach($res as $row) {
474 function gwvpmini_AddActivityLog($type, $userid, $repoid, $commitid, $commitlog, $visibleto="a")
477 * CREATE TABLE "activity" (
478 "activity_id" INTEGER PRIMARY KEY AUTOINCREMENT,
479 "activity_type" TEXT,
480 "activity_date" TEXT,
481 "activity_user" TEXT,
482 "activity_repo" TEXT,
483 "activity_commitid" TEXT,
484 "activity_commitlog" TEXT,
485 "activity_visibleto" TEXT
490 $conn = gwvpmini_ConnectDB();
492 // TODO: implement visibility
493 //$visibleto = "a";
\r
495 $sql = "insert into 'activity' values ( null, '$type', '".time()."', '$userid', '$repoid', '$commitid', '$commitlog', '$visibleto')";
497 // error_log("SQL IS $sql");
\r
499 $res = $conn->query($sql);
\r
504 function gwvpmini_dbCreateSQLiteStructure($dbloc)
\r
507 CREATE TABLE "users" (
\r
508 "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
509 "user_full_name" TEXT,
\r
510 "user_password" TEXT,
\r
511 "user_username" TEXT,
\r
516 UNIQUE(user_username)
\r
519 $initialuser_admin = '
520 insert into "users" values ( null, "Administrator", "'.sha1("password").'", "admin", "admin@localhost", "the admin", "1", "0");
\r
523 $initialuser_user = '
\r
524 insert into "users" values ( null, "User", "'.sha1("password").'", "user", "user@localhost", "the user", "0", "0");
\r
528 CREATE TABLE "repos" (
\r
529 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
531 "repos_description" TEXT,
\r
532 "repos_owner" INTEGER,
538 // this looks like null, <repoid>, <read|visible|write>, user:<uid>|group:<gid>|authed|anon
\r
539 // where authed = any authenticated user, anon = everyone (logged in, not logged in, etc)
\r
540 // read|visible|write = can clone from repo|can see repo exists and see description but not clone from it|can push to repo
\r
541 // TODO: is this sufficient? i have to think about it
544 // type for now will only be "git"
546 // desc is a desction of the activity
547 // link is of the form "repo,reponame,repoid:user,username,useremail,userid" so it
548 // can be attached simply
549 // viewby is a simple list of uid's that should be able to see it... "r" for all registered
552 CREATE TABLE "activity" (
553 "activity_id" INTEGER PRIMARY KEY AUTOINCREMENT,
554 "activity_type" TEXT,
555 "activity_date" TEXT,
556 "activity_user" TEXT,
557 "activity_repo" TEXT,
558 "activity_commitid" TEXT,
559 "activity_commitlog" TEXT,
560 "activity_visibleto" TEXT
564 CREATE TABLE "config" (
\r
565 "config_name" TEXT,
\r
566 "config_value" TEXT
\r
570 $DB_CONNECTION = new PDO("sqlite:$dbloc");
\r
571 } catch(PDOException $exep) {
\r
572 // error_log("execpt on db open");
\r
576 $DB_CONNECTION->query($usersql);
\r
577 $DB_CONNECTION->query($initialuser_admin);
578 $DB_CONNECTION->query($initialuser_user);
579 $DB_CONNECTION->query($reposql);
\r
580 $DB_CONNECTION->query($configsql);
581 $DB_CONNECTION->query($activitysql);
\r
584 function gwvpmini_getConfigVal($confname)
\r
588 CREATE TABLE "config" (
\r
589 "config_name" TEXT,
\r
590 "config_value" TEXT
\r
595 $conn = gwvpmini_ConnectDB();
\r
597 $sql = "select config_value from config where config_name='$confname'";
\r
599 $res = $conn->query($sql);
\r
602 foreach($res as $val) {
\r
603 $return = $val["config_value"];
\r
609 function gwvpmini_eraseConfigVal($confname)
\r
613 CREATE TABLE "config" (
\r
614 "config_name" TEXT,
\r
615 "config_value" TEXT
\r
620 $conn = gwvpmini_ConnectDB();
\r
622 $sql = "delete from config where config_name='$confname'";
\r
624 return $conn->query($sql);
\r
627 function gwvpmini_GetRepoId($reponame)
632 CREATE TABLE "repos" (
633 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
635 "repos_description" TEXT,
636 "repos_owner" INTEGER
641 $conn = gwvpmini_ConnectDB();
643 $sql = "select repos_id from repos where repos_name='$reponame'";
645 $res = $conn->query($sql);
649 foreach($res as $row) {
650 $retval = (int)$row[0];
656 function gwvpmini_GetRepoDescFromName($reponame)
\r
661 CREATE TABLE "repos" (
\r
662 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
664 "repos_description" TEXT,
\r
665 "repos_owner" INTEGER
\r
670 $conn = gwvpmini_ConnectDB();
\r
672 $sql = "select repos_description from repos where repos_name='$reponame'";
673 // error_log("desc for name sql: $sql");
\r
675 $res = $conn->query($sql);
\r
678 if(!$res) return -1;
\r
679 foreach($res as $row) {
\r
686 function gwvpmini_GetRepoOwnerDetailsFromName($reponame)
\r
691 CREATE TABLE "repos" (
\r
692 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
694 "repos_description" TEXT,
\r
695 "repos_owner" INTEGER
\r
698 "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
699 "user_full_name" TEXT,
700 "user_password" TEXT,
701 "user_username" TEXT,
706 UNIQUE(user_username)
\r
710 $conn = gwvpmini_ConnectDB();
\r
712 $sql = "select users.* from repos,users where repos_name='$reponame' and repos_owner=user_id";
\r
714 $res = $conn->query($sql);
\r
717 if(!$res) return -1;
\r
718 foreach($res as $row) {
720 // error_log("STUFF2: ".print_r($row,true));
\r
721 $retval["id"] = $row["user_id"];
722 $retval["fullname"] = $row["user_full_name"];
723 $retval["username"] = $row["user_username"];
724 $retval["email"] = $row["user_email"];
725 $retval["desc"] = $row["user_desc"];
726 $retval["level"] = $row["user_level"];
727 $retval["status"] = $row["user_status"];
\r
733 function gwvpmini_setConfigVal($confname, $confval)
\r
737 CREATE TABLE "config" (
\r
738 "config_name" TEXT,
\r
739 "config_value" TEXT
\r
743 gwvpmini_eraseConfigVal($confname);
\r
745 $conn = gwvpmini_ConnectDB();
747 $sql = "delete from config where config_name='$confname'";
748 $conn->query($sql);
\r
750 $sql = "insert into config values('$confname', '$confval')";
\r
752 return $conn->query($sql);
\r
755 function gwvpmini_AddRepo($name, $desc, $ownerid)
758 // error_log("addrepo in db for $name, $desc, $ownerid");
759 $conn = gwvpmini_ConnectDB();
\r
763 $encperms = base64_encode(serialize($perms));
765 $sql = "insert into repos values (null, '$name', '$desc', '$ownerid', '$encperms', 0)";
\r
767 $conn->query($sql);
\r
770 function gwvpmini_GetUserId($username)
772 $conn = gwvpmini_ConnectDB();
\r
774 $sql = "select user_id from users where user_username='$username'";
776 // error_log("userid sql $sql");
\r
778 $res = $conn->query($sql);
781 foreach($res as $row) {
788 function gwvpmini_GetUserNameFromEmail($email)
\r
790 $conn = gwvpmini_ConnectDB();
\r
792 $sql = "select user_username from users where user_email='$email'";
\r
794 // error_log("username sql $sql");
\r
796 $res = $conn->query($sql);
\r
799 foreach($res as $row) {
\r
806 function gwvpmini_GetOwnedRepos($username)
\r
809 * CREATE TABLE "repos" (
810 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
812 "repos_description" TEXT,
813 "repos_owner" INTEGER
817 $conn = gwvpmini_ConnectDB();
820 $uid = gwvpmini_GetUserId($username);
821 $sql = "select * from repos where repos_owner='$uid'";
822 // error_log("owned repos sql $sql for username $username");
823 $res = $conn->query($sql);
824 if($username == "") return false;
\r
827 foreach($res as $row) {
828 $id = $row["repos_id"];
829 $retval[$id]["name"] = $row["repos_name"];
830 $retval[$id]["desc"] = $row["repos_description"];
831 $retval[$id]["id"] = $row["repos_id"];
832 $retval[$id]["status"] = $row["repos_status"];
833 // error_log(print_r($row, true));
836 // error_log(print_r($retval, true));
\r
840 function gwvpmini_GetContributedRepos($username)
\r
843 * CREATE TABLE "repos" (
\r
844 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
846 "repos_description" TEXT,
\r
847 "repos_owner" INTEGER
\r
851 $conn = gwvpmini_ConnectDB();
\r
854 $uid = gwvpmini_GetUserId($username);
\r
855 $sql = "select repos_id,repos_description,repos_perms,repos_owner,repos_status,repos_name from repos";
\r
856 $res = $conn->query($sql);
\r
857 if($username == "") return false;
\r
862 foreach($res as $row) {
863 $perms = unserialize(base64_decode($row["repos_perms"]));
864 // error_log("CONTRIB: $uid for ".$row["repos_id"]." - ".print_r($perms,true));
865 if(isset($perms["$uid"])) if($perms["$uid"] > 1) {
866 $rids[$i]["id"] = $row["repos_id"];
867 $rids[$i]["desc"] = $row["repos_description"];
868 $rids[$i]["owner"] = $row["repos_owner"];
869 $rids[$i]["status"] = $row["repos_status"];
870 $rids[$i]["name"] = $row["repos_name"];
877 // error_log("CONTRIBREPOS: no repos found?");
881 // error_log("CONTRIBREPOS: ".print_r($retval, true));
\r
885 function gwvpmini_userLevel($id)
887 $conn = gwvpmini_ConnectDB();
889 $sql = "select user_level from users where user_id='$id'";
891 $res = $conn->query($sql);
895 foreach($res as $row) {
902 function gwvpmini_GetUsers($startat = 0, $num = 10)
904 $conn = gwvpmini_ConnectDB();
907 * CREATE TABLE "users" (
908 "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
909 "user_full_name" TEXT,
910 "user_password" TEXT,
911 "user_username" TEXT,
919 $sql = "select * from users where user_id>='$startat' order by user_id asc limit $num";
921 $res = $conn->query($sql);
924 foreach($res as $row) {
925 $id = $row["user_id"];
926 $retval[$id]["fullname"] = $row["user_full_name"];
927 $retval[$id]["username"] = $row["user_username"];
928 $retval[$id]["email"] = $row["user_email"];
929 $retval[$id]["desc"] = $row["user_desc"];
930 $retval[$id]["level"] = $row["user_level"];
931 $retval[$id]["status"] = $row["user_status"];
932 $retval[$id]["id"] = $row["user_id"];
938 function gwvpmini_findPeopleLike($search)
\r
940 $conn = gwvpmini_ConnectDB();
942 $sql = "select * from users where user_username like '%$search%' or user_full_name like '%$search%'";
\r
944 $res = $conn->query($sql);
947 // error_log("SERACHUSER: $sql returned false");
950 // error_log("SERACHUSER: $sql returned true");
954 foreach($res as $row) {
\r
955 $id = $row["user_id"];
\r
956 $retval[$id]["fullname"] = $row["user_full_name"];
\r
957 $retval[$id]["username"] = $row["user_username"];
\r
958 $retval[$id]["email"] = $row["user_email"];
\r
959 $retval[$id]["desc"] = $row["user_desc"];
\r
960 $retval[$id]["level"] = $row["user_level"];
\r
961 $retval[$id]["status"] = $row["user_status"];
\r
962 $retval[$id]["id"] = $row["user_id"];
\r
965 // error_log("SEARCHUSER: array is ".print_r($retval, true));
\r
969 function gwvpmini_GetRepos($startat=0, $num=200)
\r
971 $conn = gwvpmini_ConnectDB();
\r
974 * CREATE TABLE "repos" (
975 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
977 "repos_description" TEXT,
978 "repos_owner" INTEGER
983 $sql = "select * from repos where repos_id > '$startat' order by repos_id asc limit $num";
\r
985 $res = $conn->query($sql);
\r
988 foreach($res as $row) {
\r
989 $id = $row["repos_id"];
\r
990 $retval[$id]["name"] = $row["repos_name"];
\r
991 $retval[$id]["desc"] = $row["repos_description"];
\r
992 $retval[$id]["owner"] = $row["repos_owner"];
\r
993 $retval[$id]["id"] = $row["repos_id"];
994 $retval[$id]["status"] = $row["repos_status"];
1002 function gwvpmini_findReposLike($search)
\r
1004 $conn = gwvpmini_ConnectDB();
1007 * CREATE TABLE "repos" (
1008 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
1010 "repos_description" TEXT,
1011 "repos_owner" INTEGER
1016 $sql = "select * from repos where repos_name like '%$search%' or repos_description like '%$search%'";
1018 $res = $conn->query($sql);
1020 if(!$res) return false;
1023 foreach($res as $row) {
1024 $id = $row["repos_id"];
1025 $retval[$id]["name"] = $row["repos_name"];
1026 $retval[$id]["desc"] = $row["repos_description"];
1027 $retval[$id]["owner"] = $row["repos_owner"];
1028 $retval[$id]["id"] = $row["repos_id"];
1029 $retval[$id]["status"] = $row["repos_status"];
1036 function gwvpmini_GetNRepos()
1038 $conn = gwvpmini_ConnectDB();
1040 $sql = "select count(*) from repos";
1042 $res = $conn->query($sql);
1045 foreach($res as $row) {
1053 function gwvpmini_GetNUsers()
\r
1055 $conn = gwvpmini_ConnectDB();
\r
1057 $sql = "select count(*) from users";
\r
1059 $res = $conn->query($sql);
\r
1062 foreach($res as $row) {
\r
1063 $retval = $row[0];
\r