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
59 function gwvpmini_getRepo($ownerid=null, $name=null, $id=null)
\r
61 $conn = gwvpmini_ConnectDB();
65 CREATE TABLE "repos" (
66 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
68 "repos_description" TEXT,
69 "repos_owner" INTEGER,
70 "repos_readperms" TEXT,
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
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
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)
105 $conn = gwvpmini_ConnectDB();
107 $sql = "select repos_perms from repos where repos_id='$rid'";
109 $res = $conn->query($sql);
111 error_log("CHANGEREPOPERMS: call with $rid, $uid, $acc");
114 foreach($res as $row) {
118 if($cperms_t === false) return false;
120 $permsarray = array();
122 if($cperms_t == "") {
123 $permsarray[$uid] = $acc;
125 $permsarray = unserialize(base64_decode($cperms_t));
126 $permsarray[$uid] = $acc;
128 error_log("PERMSUPDATE: REMOVE $uid");
129 unset($permsarray[$uid]);
133 error_log("CHANGEREPOPERMS for b of $acc");
134 $permsarray["b"] = $acc;
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) {
141 error_log("CHANGEREPOPERMS removed $key $val for base perm change");
142 unset($permsarray[$key]);
147 if(is_array($permsarray)) {
148 if(!isset($permsarray["b"])) {
149 // something went wrong, repalce b bit
150 $permsarray["b"] = "a";
153 // something went even wronger
154 $permsarray["b"] = "a";
158 $encperms = base64_encode(serialize($permsarray));
160 $sql = "update repos set repos_perms='$encperms' where repos_id='$rid'";
\r
162 error_log("PERMSARRAYNOW $sql ".print_r($permsarray,true));
\r
168 function gwvpmini_GetRepoPerms($rid)
170 $conn = gwvpmini_ConnectDB();
\r
172 $sql = "select repos_perms from repos where repos_id='$rid'";
\r
174 $res = $conn->query($sql);
\r
177 if($res !== false) foreach($res as $row) {
\r
178 $cperms_t = $row[0];
\r
181 if($cperms_t === false) return false;
\r
183 $permsarray = unserialize(base64_decode($cperms_t));
188 //returns 0 for none, 1 for read, 2 for writes
189 function gwvpmini_GetRepoPerm($rid, $uid)
191 $conn = gwvpmini_ConnectDB();
\r
193 $dets = gwvpmini_getRepo(null, null, $rid);
195 $sql = "select repos_perms from repos where repos_id='$rid'";
\r
197 $res = $conn->query($sql);
200 if($res !== false) foreach($res as $row) {
\r
201 $cperms_t = $row[0];
\r
204 if($cperms_t === false) return 0;
206 error_log("PERMSCHECK $rid, $uid:".print_r($dets, true));
\r
208 if($dets === false) return 0;
210 if($dets["ownerid"] == $uid) return 2;
\r
212 $permsarray = unserialize(base64_decode($cperms_t));
214 error_log("PERMSARRAY: ".print_r($permsarray,true));
219 if(isset($permsarray[$uid])) {
220 $perm = $permsarray[$uid];
221 } else if($permsarray["b"] == "a" ||$permsarray["b"] == "r") {
225 if($permsarray["b"] == "a") $perm = 1;
232 function gwvpmini_RemoveRepoDB($id)
234 $conn = gwvpmini_ConnectDB();
\r
236 if($id < 0) return;
\r
238 $sql = "delete from repos where repos_id='$id'";
\r
240 return $conn->query($sql);
\r
244 function gwvpmini_RemoveUser($uid)
246 $conn = gwvpmini_ConnectDB();
\r
250 $sql = "delete from users where user_id='$uid'";
252 return $conn->query($sql);
255 function gwvpmini_UpdateUserEmail($uid, $email)
257 $conn = gwvpmini_ConnectDB();
\r
259 if($uid < 0) return;
\r
261 $sql = "update users set user_email='$email' where user_id='$uid'";
\r
263 return $conn->query($sql);
266 function gwvpmini_UpdateUserDesc($uid, $desc)
\r
268 $conn = gwvpmini_ConnectDB();
\r
270 if($uid < 0) return;
\r
272 $sql = "update users set user_desc='$desc' where user_id='$uid'";
\r
274 return $conn->query($sql);
\r
277 function gwvpmini_SetUserStatusAdmin($uid, $adminstat)
279 $conn = gwvpmini_ConnectDB();
\r
281 if($uid < 0) return;
\r
283 $sql = "update users set user_level='$adminstat' where user_id='$uid'";
\r
285 return $conn->query($sql);
288 function gwvpmini_UpdateUserPassword($uid, $pass)
290 $conn = gwvpmini_ConnectDB();
294 $sql = "update users set user_password='".sha1($pass)."' where user_id='$uid'";
296 return $conn->query($sql);
299 function gwvpmini_DisableUser($uid)
\r
301 $conn = gwvpmini_ConnectDB();
\r
303 if($uid < 0) return;
\r
305 $sql = "update users set user_status=1 where user_id='$uid'";
\r
307 return $conn->query($sql);
\r
310 function gwvpmini_UpdateRepoDescription($rid, $desc)
312 $conn = gwvpmini_ConnectDB();
\r
314 // remove any tag elements
315 $newdesc_r = preg_replace("/[\<\>\;]+/", "", $desc);
316 $newdesc = preg_replace("/\n/", "<br>", $newdesc_r);
318 $sql = "update repos set repos_description='$newdesc' where repos_id='$rid'";
320 return $conn->query($sql);
323 function gwvpmini_EnableUser($uid)
\r
325 $conn = gwvpmini_ConnectDB();
\r
327 if($uid < 0) return;
\r
329 $sql = "update users set user_status=0 where user_id='$uid'";
\r
331 return $conn->query($sql);
\r
334 function gwvpmini_DisableRepo($rid)
336 $conn = gwvpmini_ConnectDB();
\r
338 if($rid < 0) return;
\r
340 $sql = "update repos set repos_status=1 where repos_id='$rid'";
\r
342 return $conn->query($sql);
345 function gwvpmini_EnableRepo($rid)
\r
347 $conn = gwvpmini_ConnectDB();
\r
351 $sql = "update repos set repos_status=0 where repos_id='$rid'";
353 return $conn->query($sql);
\r
357 function gwvpmini_ConnectDB()
\r
359 global $WEB_ROOT_FS, $BASE_URL, $data_directory, $db_type, $db_name, $DB_CONNECTION;
\r
361 // first check if $DB_CONNECTION IS live
\r
362 //error_log("in connection $db_type, $db_name");
365 if($DB_CONNECTION != false) return $DB_CONNECTION;
\r
367 if($db_type == "sqlite") {
\r
368 $db_url = $db_name;
\r
369 if(!file_exists($db_name)) {
\r
370 //error_log("$db_name does not exist - problem");
371 // TODO: NEED A SETUP AGENT!
372 gwvpmini_dbCreateSQLiteStructure($db_name);
373 gwvpmini_setConfigVal("repodir", "$data_directory/repos");
\r
377 // and here we go with pdo.
\r
378 error_log("attmpting to open db, $db_type:$db_url");
\r
380 $DB_CONNECTION = new PDO("$db_type:$db_url");
\r
381 } catch(PDOException $exep) {
\r
382 error_log("execpt on db open");
\r
386 return $DB_CONNECTION;
\r
389 function gwvpmini_UpdateStatusFromConfirm($confirmhash)
391 $conn = gwvpmini_ConnectDB();
\r
393 $sql = "select count(*) from users where user_status='2:$confirmhash'";
395 $res = $conn->query($sql);
397 if(!$res) return false;
399 foreach($res as $row) {
404 $sql = "update users set user_status='0' where user_status='2:$confirmhash'";
405 return $conn->query($sql);
410 function gwvpmini_AddUser($username, $password, $fullname, $email, $desc, $level, $status)
415 $conn = gwvpmini_ConnectDB();
\r
417 $sql = "insert into 'users' values ( null, '$fullname', '".sha1($password)."', '$username', '$email', '$desc', '$level', '$status')";
\r
419 $res = $conn->query($sql);
422 $sql = "select user_id from users where user_username='$username'";
\r
423 $res = $conn->query($sql);
\r
424 if(!$res) return -1;
\r
427 foreach($res as $row) {
434 function gwvpmini_GetActivityLog($nentries = 100)
436 $conn = gwvpmini_ConnectDB();
\r
438 $sql = "select * from activity order by activity_date desc limit 100";
440 $res = $conn->query($sql);
444 foreach($res as $row) {
445 $logs[$i]["type"] = $row["activity_type"];
446 $logs[$i]["date"] = $row["activity_date"];
447 $logs[$i]["userid"] = $row["activity_user"];
448 $logs[$i]["repoid"] = $row["activity_repo"];
449 $logs[$i]["commitid"] = $row["activity_commitid"];
450 $logs[$i]["commitlog"] = $row["activity_commitlog"];
451 $logs[$i]["visibleto"] = $row["activity_visibleto"];
458 function gwvpmini_AddActivityLog($type, $userid, $repoid, $commitid, $commitlog)
461 * CREATE TABLE "activity" (
462 "activity_id" INTEGER PRIMARY KEY AUTOINCREMENT,
463 "activity_type" TEXT,
464 "activity_date" TEXT,
465 "activity_user" TEXT,
466 "activity_repo" TEXT,
467 "activity_commitid" TEXT,
468 "activity_commitlog" TEXT,
469 "activity_visibleto" TEXT
474 $conn = gwvpmini_ConnectDB();
476 // TODO: implement visibility
479 $sql = "insert into 'activity' values ( null, '$type', '".time()."', '$userid', '$repoid', '$commitid', '$commitlog', '$visibleto')";
481 error_log("SQL IS $sql");
\r
483 $res = $conn->query($sql);
\r
488 function gwvpmini_dbCreateSQLiteStructure($dbloc)
\r
491 CREATE TABLE "users" (
\r
492 "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
493 "user_full_name" TEXT,
\r
494 "user_password" TEXT,
\r
495 "user_username" TEXT,
\r
500 UNIQUE(user_username)
\r
503 $initialuser_admin = '
504 insert into "users" values ( null, "Administrator", "'.sha1("password").'", "admin", "admin@localhost", "the admin", "1", "0");
\r
507 $initialuser_user = '
\r
508 insert into "users" values ( null, "User", "'.sha1("password").'", "user", "user@localhost", "the user", "0", "0");
\r
512 CREATE TABLE "repos" (
\r
513 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
515 "repos_description" TEXT,
\r
516 "repos_owner" INTEGER,
522 // this looks like null, <repoid>, <read|visible|write>, user:<uid>|group:<gid>|authed|anon
\r
523 // where authed = any authenticated user, anon = everyone (logged in, not logged in, etc)
\r
524 // read|visible|write = can clone from repo|can see repo exists and see description but not clone from it|can push to repo
\r
525 // TODO: is this sufficient? i have to think about it
528 // type for now will only be "git"
530 // desc is a desction of the activity
531 // link is of the form "repo,reponame,repoid:user,username,useremail,userid" so it
532 // can be attached simply
533 // viewby is a simple list of uid's that should be able to see it... "r" for all registered
536 CREATE TABLE "activity" (
537 "activity_id" INTEGER PRIMARY KEY AUTOINCREMENT,
538 "activity_type" TEXT,
539 "activity_date" TEXT,
540 "activity_user" TEXT,
541 "activity_repo" TEXT,
542 "activity_commitid" TEXT,
543 "activity_commitlog" TEXT,
544 "activity_visibleto" TEXT
548 CREATE TABLE "config" (
\r
549 "config_name" TEXT,
\r
550 "config_value" TEXT
\r
554 $DB_CONNECTION = new PDO("sqlite:$dbloc");
\r
555 } catch(PDOException $exep) {
\r
556 error_log("execpt on db open");
\r
560 $DB_CONNECTION->query($usersql);
\r
561 $DB_CONNECTION->query($initialuser_admin);
562 $DB_CONNECTION->query($initialuser_user);
563 $DB_CONNECTION->query($reposql);
\r
564 $DB_CONNECTION->query($configsql);
565 $DB_CONNECTION->query($activitysql);
\r
568 function gwvpmini_getConfigVal($confname)
\r
572 CREATE TABLE "config" (
\r
573 "config_name" TEXT,
\r
574 "config_value" TEXT
\r
579 $conn = gwvpmini_ConnectDB();
\r
581 $sql = "select config_value from config where config_name='$confname'";
\r
583 $res = $conn->query($sql);
\r
586 foreach($res as $val) {
\r
587 $return = $val["config_value"];
\r
593 function gwvpmini_eraseConfigVal($confname)
\r
597 CREATE TABLE "config" (
\r
598 "config_name" TEXT,
\r
599 "config_value" TEXT
\r
604 $conn = gwvpmini_ConnectDB();
\r
606 $sql = "delete from config where config_name='$confname'";
\r
608 return $conn->query($sql);
\r
611 function gwvpmini_GetRepoId($reponame)
616 CREATE TABLE "repos" (
617 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
619 "repos_description" TEXT,
620 "repos_owner" INTEGER
625 $conn = gwvpmini_ConnectDB();
627 $sql = "select repos_id from repos where repos_name='$reponame'";
629 $res = $conn->query($sql);
633 foreach($res as $row) {
634 $retval = (int)$row[0];
640 function gwvpmini_GetRepoDescFromName($reponame)
\r
645 CREATE TABLE "repos" (
\r
646 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
648 "repos_description" TEXT,
\r
649 "repos_owner" INTEGER
\r
654 $conn = gwvpmini_ConnectDB();
\r
656 $sql = "select repos_description from repos where repos_name='$reponame'";
657 error_log("desc for name sql: $sql");
\r
659 $res = $conn->query($sql);
\r
662 if(!$res) return -1;
\r
663 foreach($res as $row) {
\r
670 function gwvpmini_GetRepoOwnerDetailsFromName($reponame)
\r
675 CREATE TABLE "repos" (
\r
676 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
678 "repos_description" TEXT,
\r
679 "repos_owner" INTEGER
\r
682 "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
683 "user_full_name" TEXT,
684 "user_password" TEXT,
685 "user_username" TEXT,
690 UNIQUE(user_username)
\r
694 $conn = gwvpmini_ConnectDB();
\r
696 $sql = "select users.* from repos,users where repos_name='$reponame' and repos_owner=user_id";
\r
698 $res = $conn->query($sql);
\r
701 if(!$res) return -1;
\r
702 foreach($res as $row) {
704 error_log("STUFF2: ".print_r($row,true));
\r
705 $retval["id"] = $row["user_id"];
706 $retval["fullname"] = $row["user_full_name"];
707 $retval["username"] = $row["user_username"];
708 $retval["email"] = $row["user_email"];
709 $retval["desc"] = $row["user_desc"];
710 $retval["level"] = $row["user_level"];
711 $retval["status"] = $row["user_status"];
\r
717 function gwvpmini_setConfigVal($confname, $confval)
\r
721 CREATE TABLE "config" (
\r
722 "config_name" TEXT,
\r
723 "config_value" TEXT
\r
727 gwvpmini_eraseConfigVal($confname);
\r
729 $conn = gwvpmini_ConnectDB();
731 $sql = "delete from config where config_name='$confname'";
732 $conn->query($sql);
\r
734 $sql = "insert into config values('$confname', '$confval')";
\r
736 return $conn->query($sql);
\r
739 function gwvpmini_AddRepo($name, $desc, $ownerid)
742 error_log("addrepo in db for $name, $desc, $ownerid");
743 $conn = gwvpmini_ConnectDB();
\r
747 $encperms = base64_encode(serialize($perms));
749 $sql = "insert into repos values (null, '$name', '$desc', '$ownerid', '$encperms', 0)";
\r
751 $conn->query($sql);
\r
754 function gwvpmini_GetUserId($username)
756 $conn = gwvpmini_ConnectDB();
\r
758 $sql = "select user_id from users where user_username='$username'";
760 error_log("userid sql $sql");
\r
762 $res = $conn->query($sql);
765 foreach($res as $row) {
772 function gwvpmini_GetUserNameFromEmail($email)
\r
774 $conn = gwvpmini_ConnectDB();
\r
776 $sql = "select user_username from users where user_email='$email'";
\r
778 error_log("username sql $sql");
\r
780 $res = $conn->query($sql);
\r
783 foreach($res as $row) {
\r
790 function gwvpmini_GetOwnedRepos($username)
\r
793 * CREATE TABLE "repos" (
794 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
796 "repos_description" TEXT,
797 "repos_owner" INTEGER
801 $conn = gwvpmini_ConnectDB();
804 $uid = gwvpmini_GetUserId($username);
805 $sql = "select * from repos where repos_owner='$uid'";
806 error_log("owned repos sql $sql for username $username");
807 $res = $conn->query($sql);
808 if($username == "") return false;
\r
811 foreach($res as $row) {
812 $id = $row["repos_id"];
813 $retval[$id]["name"] = $row["repos_name"];
814 $retval[$id]["desc"] = $row["repos_description"];
815 $retval[$id]["id"] = $row["repos_id"];
816 $retval[$id]["status"] = $row["repos_status"];
817 error_log(print_r($row, true));
820 error_log(print_r($retval, true));
\r
824 function gwvpmini_GetContributedRepos($username)
\r
827 * CREATE TABLE "repos" (
\r
828 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
830 "repos_description" TEXT,
\r
831 "repos_owner" INTEGER
\r
835 $conn = gwvpmini_ConnectDB();
\r
838 $uid = gwvpmini_GetUserId($username);
\r
839 $sql = "select repos_id,repos_description,repos_perms,repos_owner,repos_status,repos_name from repos";
\r
840 $res = $conn->query($sql);
\r
841 if($username == "") return false;
\r
846 foreach($res as $row) {
847 $perms = unserialize(base64_decode($row["repos_perms"]));
848 error_log("CONTRIB: $uid for ".$row["repos_id"]." - ".print_r($perms,true));
849 if(isset($perms["$uid"])) if($perms["$uid"] > 1) {
850 $rids[$i]["id"] = $row["repos_id"];
851 $rids[$i]["desc"] = $row["repos_description"];
852 $rids[$i]["owner"] = $row["repos_owner"];
853 $rids[$i]["status"] = $row["repos_status"];
854 $rids[$i]["name"] = $row["repos_name"];
861 error_log("CONTRIBREPOS: no repos found?");
865 error_log("CONTRIBREPOS: ".print_r($retval, true));
\r
869 function gwvpmini_userLevel($id)
871 $conn = gwvpmini_ConnectDB();
873 $sql = "select user_level from users where user_id='$id'";
875 $res = $conn->query($sql);
879 foreach($res as $row) {
886 function gwvpmini_GetUsers($startat = 0, $num = 10)
888 $conn = gwvpmini_ConnectDB();
891 * CREATE TABLE "users" (
892 "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
893 "user_full_name" TEXT,
894 "user_password" TEXT,
895 "user_username" TEXT,
903 $sql = "select * from users where user_id>='$startat' order by user_id asc limit $num";
905 $res = $conn->query($sql);
908 foreach($res as $row) {
909 $id = $row["user_id"];
910 $retval[$id]["fullname"] = $row["user_full_name"];
911 $retval[$id]["username"] = $row["user_username"];
912 $retval[$id]["email"] = $row["user_email"];
913 $retval[$id]["desc"] = $row["user_desc"];
914 $retval[$id]["level"] = $row["user_level"];
915 $retval[$id]["status"] = $row["user_status"];
916 $retval[$id]["id"] = $row["user_id"];
922 function gwvpmini_findPeopleLike($search)
\r
924 $conn = gwvpmini_ConnectDB();
926 $sql = "select * from users where user_username like '%$search%' or user_full_name like '%$search%'";
\r
928 $res = $conn->query($sql);
931 error_log("SERACHUSER: $sql returned false");
934 error_log("SERACHUSER: $sql returned true");
938 foreach($res as $row) {
\r
939 $id = $row["user_id"];
\r
940 $retval[$id]["fullname"] = $row["user_full_name"];
\r
941 $retval[$id]["username"] = $row["user_username"];
\r
942 $retval[$id]["email"] = $row["user_email"];
\r
943 $retval[$id]["desc"] = $row["user_desc"];
\r
944 $retval[$id]["level"] = $row["user_level"];
\r
945 $retval[$id]["status"] = $row["user_status"];
\r
946 $retval[$id]["id"] = $row["user_id"];
\r
949 error_log("SEARCHUSER: array is ".print_r($retval, true));
\r
953 function gwvpmini_GetRepos($startat=0, $num=200)
\r
955 $conn = gwvpmini_ConnectDB();
\r
958 * CREATE TABLE "repos" (
959 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
961 "repos_description" TEXT,
962 "repos_owner" INTEGER
967 $sql = "select * from repos where repos_id > '$startat' order by repos_id asc limit $num";
\r
969 $res = $conn->query($sql);
\r
972 foreach($res as $row) {
\r
973 $id = $row["repos_id"];
\r
974 $retval[$id]["name"] = $row["repos_name"];
\r
975 $retval[$id]["desc"] = $row["repos_description"];
\r
976 $retval[$id]["owner"] = $row["repos_owner"];
\r
977 $retval[$id]["id"] = $row["repos_id"];
978 $retval[$id]["status"] = $row["repos_status"];
986 function gwvpmini_findReposLike($search)
\r
988 $conn = gwvpmini_ConnectDB();
991 * CREATE TABLE "repos" (
992 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
994 "repos_description" TEXT,
995 "repos_owner" INTEGER
1000 $sql = "select * from repos where repos_name like '%$search%' or repos_description like '%$search%'";
1002 $res = $conn->query($sql);
1004 if(!$res) return false;
1007 foreach($res as $row) {
1008 $id = $row["repos_id"];
1009 $retval[$id]["name"] = $row["repos_name"];
1010 $retval[$id]["desc"] = $row["repos_description"];
1011 $retval[$id]["owner"] = $row["repos_owner"];
1012 $retval[$id]["id"] = $row["repos_id"];
1013 $retval[$id]["status"] = $row["repos_status"];
1020 function gwvpmini_GetNRepos()
1022 $conn = gwvpmini_ConnectDB();
1024 $sql = "select count(*) from repos";
1026 $res = $conn->query($sql);
1029 foreach($res as $row) {
1037 function gwvpmini_GetNUsers()
\r
1039 $conn = gwvpmini_ConnectDB();
\r
1041 $sql = "select count(*) from users";
\r
1043 $res = $conn->query($sql);
\r
1046 foreach($res as $row) {
\r
1047 $retval = $row[0];
\r