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: with call for $rid and user $uid ".print_r($permsarray,true));
260 if(isset($permsarray[$uid])) {
261 $perm = $permsarray[$uid];
262 } else if($permsarray["b"] == "a" ||$permsarray["b"] == "r") {
266 if($permsarray["b"] == "a") $perm = 1;
273 function gwvpmini_RemoveRepoDB($id)
275 $conn = gwvpmini_ConnectDB();
\r
277 if($id < 0) return;
\r
279 $sql = "delete from repos where repos_id='$id'";
\r
281 return $conn->query($sql);
\r
285 function gwvpmini_RemoveUser($uid)
287 $conn = gwvpmini_ConnectDB();
\r
291 $sql = "delete from users where user_id='$uid'";
293 return $conn->query($sql);
296 function gwvpmini_UpdateUserEmail($uid, $email)
298 $conn = gwvpmini_ConnectDB();
\r
300 if($uid < 0) return;
\r
302 $sql = "update users set user_email='$email' where user_id='$uid'";
\r
304 return $conn->query($sql);
307 function gwvpmini_UpdateUserDesc($uid, $desc)
\r
309 $conn = gwvpmini_ConnectDB();
\r
311 if($uid < 0) return;
\r
313 $sql = "update users set user_desc='$desc' where user_id='$uid'";
\r
315 return $conn->query($sql);
\r
318 function gwvpmini_SetUserStatusAdmin($uid, $adminstat)
320 $conn = gwvpmini_ConnectDB();
\r
322 if($uid < 0) return;
\r
324 $sql = "update users set user_level='$adminstat' where user_id='$uid'";
\r
326 return $conn->query($sql);
329 function gwvpmini_UpdateUserPassword($uid, $pass)
331 $conn = gwvpmini_ConnectDB();
335 $sql = "update users set user_password='".sha1($pass)."' where user_id='$uid'";
337 return $conn->query($sql);
340 function gwvpmini_DisableUser($uid)
\r
342 $conn = gwvpmini_ConnectDB();
\r
344 if($uid < 0) return;
\r
346 $sql = "update users set user_status=1 where user_id='$uid'";
\r
348 return $conn->query($sql);
\r
351 function gwvpmini_UpdateRepoDescription($rid, $desc)
353 $conn = gwvpmini_ConnectDB();
\r
355 // remove any tag elements
356 $newdesc_r = preg_replace("/[\<\>\;]+/", "", $desc);
357 $newdesc = preg_replace("/\n/", "<br>", $newdesc_r);
359 $sql = "update repos set repos_description='$newdesc' where repos_id='$rid'";
361 return $conn->query($sql);
364 function gwvpmini_EnableUser($uid)
\r
366 $conn = gwvpmini_ConnectDB();
\r
368 if($uid < 0) return;
\r
370 $sql = "update users set user_status=0 where user_id='$uid'";
\r
372 return $conn->query($sql);
\r
375 function gwvpmini_DisableRepo($rid)
377 $conn = gwvpmini_ConnectDB();
\r
379 if($rid < 0) return;
\r
381 $sql = "update repos set repos_status=1 where repos_id='$rid'";
\r
383 return $conn->query($sql);
386 function gwvpmini_EnableRepo($rid)
\r
388 $conn = gwvpmini_ConnectDB();
\r
392 $sql = "update repos set repos_status=0 where repos_id='$rid'";
394 return $conn->query($sql);
\r
398 function gwvpmini_ConnectDB()
\r
400 global $WEB_ROOT_FS, $BASE_URL, $data_directory, $db_type, $db_name, $DB_CONNECTION;
\r
402 // first check if $DB_CONNECTION IS live
\r
403 //// error_log("in connection $db_type, $db_name");
406 if($DB_CONNECTION != false) return $DB_CONNECTION;
\r
408 if($db_type == "sqlite") {
\r
409 $db_url = $db_name;
\r
410 if(!file_exists($db_name)) {
\r
411 //// error_log("$db_name does not exist - problem");
412 // TODO: NEED A SETUP AGENT!
413 gwvpmini_dbCreateSQLiteStructure($db_name);
414 gwvpmini_setConfigVal("repodir", "$data_directory/repos");
\r
418 // and here we go with pdo.
\r
419 // error_log("attmpting to open db, $db_type:$db_url");
\r
421 $DB_CONNECTION = new PDO("$db_type:$db_url");
\r
422 } catch(PDOException $exep) {
\r
423 // error_log("execpt on db open");
\r
427 return $DB_CONNECTION;
\r
430 function gwvpmini_UpdateStatusFromConfirm($confirmhash)
432 $conn = gwvpmini_ConnectDB();
\r
434 $sql = "select count(*) from users where user_status='2:$confirmhash'";
436 $res = $conn->query($sql);
438 if(!$res) return false;
440 foreach($res as $row) {
445 $sql = "update users set user_status='0' where user_status='2:$confirmhash'";
446 return $conn->query($sql);
451 function gwvpmini_AddUser($username, $password, $fullname, $email, $desc, $level, $status)
456 $conn = gwvpmini_ConnectDB();
\r
458 $sql = "insert into 'users' values ( null, '$fullname', '".sha1($password)."', '$username', '$email', '$desc', '$level', '$status')";
\r
460 $res = $conn->query($sql);
463 $sql = "select user_id from users where user_username='$username'";
\r
464 $res = $conn->query($sql);
\r
465 if(!$res) return -1;
\r
468 foreach($res as $row) {
475 function gwvpmini_AddActivityLog($type, $userid, $repoid, $commitid, $commitlog, $visibleto="a")
478 * CREATE TABLE "activity" (
479 "activity_id" INTEGER PRIMARY KEY AUTOINCREMENT,
480 "activity_type" TEXT,
481 "activity_date" TEXT,
482 "activity_user" TEXT,
483 "activity_repo" TEXT,
484 "activity_commitid" TEXT,
485 "activity_commitlog" TEXT,
486 "activity_visibleto" TEXT
491 $conn = gwvpmini_ConnectDB();
493 // TODO: implement visibility
494 //$visibleto = "a";
\r
496 $sql = "insert into 'activity' values ( null, '$type', '".time()."', '$userid', '$repoid', '$commitid', '$commitlog', '$visibleto')";
498 // error_log("SQL IS $sql");
\r
500 $res = $conn->query($sql);
\r
505 function gwvpmini_dbCreateSQLiteStructure($dbloc)
\r
508 CREATE TABLE "users" (
\r
509 "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
510 "user_full_name" TEXT,
\r
511 "user_password" TEXT,
\r
512 "user_username" TEXT,
\r
517 UNIQUE(user_username)
\r
520 $initialuser_admin = '
521 insert into "users" values ( null, "Administrator", "'.sha1("password").'", "admin", "admin@localhost", "the admin", "1", "0");
\r
524 $initialuser_user = '
\r
525 insert into "users" values ( null, "User", "'.sha1("password").'", "user", "user@localhost", "the user", "0", "0");
\r
529 CREATE TABLE "repos" (
\r
530 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
532 "repos_description" TEXT,
\r
533 "repos_owner" INTEGER,
540 // this looks like null, <repoid>, <read|visible|write>, user:<uid>|group:<gid>|authed|anon
\r
541 // where authed = any authenticated user, anon = everyone (logged in, not logged in, etc)
\r
542 // read|visible|write = can clone from repo|can see repo exists and see description but not clone from it|can push to repo
\r
543 // TODO: is this sufficient? i have to think about it
546 // type for now will only be "git"
548 // desc is a desction of the activity
549 // link is of the form "repo,reponame,repoid:user,username,useremail,userid" so it
550 // can be attached simply
551 // viewby is a simple list of uid's that should be able to see it... "r" for all registered
554 CREATE TABLE "activity" (
555 "activity_id" INTEGER PRIMARY KEY AUTOINCREMENT,
556 "activity_type" TEXT,
557 "activity_date" TEXT,
558 "activity_user" TEXT,
559 "activity_repo" TEXT,
560 "activity_commitid" TEXT,
561 "activity_commitlog" TEXT,
562 "activity_visibleto" TEXT
566 CREATE TABLE "config" (
\r
567 "config_name" TEXT,
\r
568 "config_value" TEXT
\r
572 $DB_CONNECTION = new PDO("sqlite:$dbloc");
\r
573 } catch(PDOException $exep) {
\r
574 // error_log("execpt on db open");
\r
578 $DB_CONNECTION->query($usersql);
\r
579 $DB_CONNECTION->query($initialuser_admin);
580 $DB_CONNECTION->query($initialuser_user);
581 $DB_CONNECTION->query($reposql);
\r
582 $DB_CONNECTION->query($configsql);
583 $DB_CONNECTION->query($activitysql);
\r
586 function gwvpmini_getConfigVal($confname)
\r
590 CREATE TABLE "config" (
\r
591 "config_name" TEXT,
\r
592 "config_value" TEXT
\r
597 $conn = gwvpmini_ConnectDB();
\r
599 $sql = "select config_value from config where config_name='$confname'";
\r
601 $res = $conn->query($sql);
\r
604 foreach($res as $val) {
\r
605 $return = $val["config_value"];
\r
611 function gwvpmini_eraseConfigVal($confname)
\r
615 CREATE TABLE "config" (
\r
616 "config_name" TEXT,
\r
617 "config_value" TEXT
\r
622 $conn = gwvpmini_ConnectDB();
\r
624 $sql = "delete from config where config_name='$confname'";
\r
626 return $conn->query($sql);
\r
629 function gwvpmini_GetRepoId($reponame)
634 CREATE TABLE "repos" (
635 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
637 "repos_description" TEXT,
638 "repos_owner" INTEGER
643 $conn = gwvpmini_ConnectDB();
645 $sql = "select repos_id from repos where repos_name='$reponame'";
647 $res = $conn->query($sql);
651 foreach($res as $row) {
652 $retval = (int)$row[0];
658 function gwvpmini_GetRepoDescFromName($reponame)
\r
663 CREATE TABLE "repos" (
\r
664 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
666 "repos_description" TEXT,
\r
667 "repos_owner" INTEGER
\r
672 $conn = gwvpmini_ConnectDB();
\r
674 $sql = "select repos_description from repos where repos_name='$reponame'";
675 // error_log("desc for name sql: $sql");
\r
677 $res = $conn->query($sql);
\r
680 if(!$res) return -1;
\r
681 foreach($res as $row) {
\r
688 function gwvpmini_GetRepoOwnerDetailsFromName($reponame)
\r
693 CREATE TABLE "repos" (
\r
694 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
696 "repos_description" TEXT,
\r
697 "repos_owner" INTEGER
\r
700 "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
701 "user_full_name" TEXT,
702 "user_password" TEXT,
703 "user_username" TEXT,
708 UNIQUE(user_username)
\r
712 $conn = gwvpmini_ConnectDB();
\r
714 $sql = "select users.* from repos,users where repos_name='$reponame' and repos_owner=user_id";
\r
716 $res = $conn->query($sql);
\r
719 if(!$res) return -1;
\r
720 foreach($res as $row) {
722 // error_log("STUFF2: ".print_r($row,true));
\r
723 $retval["id"] = $row["user_id"];
724 $retval["fullname"] = $row["user_full_name"];
725 $retval["username"] = $row["user_username"];
726 $retval["email"] = $row["user_email"];
727 $retval["desc"] = $row["user_desc"];
728 $retval["level"] = $row["user_level"];
729 $retval["status"] = $row["user_status"];
\r
735 function gwvpmini_setConfigVal($confname, $confval)
\r
739 CREATE TABLE "config" (
\r
740 "config_name" TEXT,
\r
741 "config_value" TEXT
\r
745 gwvpmini_eraseConfigVal($confname);
\r
747 $conn = gwvpmini_ConnectDB();
749 $sql = "delete from config where config_name='$confname'";
750 $conn->query($sql);
\r
752 $sql = "insert into config values('$confname', '$confval')";
\r
754 return $conn->query($sql);
\r
757 function gwvpmini_AddRepo($name, $desc, $ownerid, $defperms, $clonefrom)
760 // error_log("addrepo in db for $name, $desc, $ownerid");
761 $conn = gwvpmini_ConnectDB();
\r
763 $perms["b"] = $defperms;
765 $encperms = base64_encode(serialize($perms));
767 if($clonefrom === false) $clonefrom = "";
769 $sql = "insert into repos values (null, '$name', '$desc', '$ownerid', '$encperms', 0, '$clonefrom')";
\r
771 $conn->query($sql);
\r
774 function gwvpmini_GetUserId($username)
776 $conn = gwvpmini_ConnectDB();
\r
778 $sql = "select user_id from users where user_username='$username'";
780 // error_log("userid sql $sql");
\r
782 $res = $conn->query($sql);
785 foreach($res as $row) {
792 function gwvpmini_GetUserNameFromEmail($email)
\r
794 $conn = gwvpmini_ConnectDB();
\r
796 $sql = "select user_username from users where user_email='$email'";
\r
798 // error_log("username sql $sql");
\r
800 $res = $conn->query($sql);
\r
803 foreach($res as $row) {
\r
810 function gwvpmini_GetOwnedRepos($username)
\r
813 * CREATE TABLE "repos" (
814 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
816 "repos_description" TEXT,
817 "repos_owner" INTEGER
821 $conn = gwvpmini_ConnectDB();
824 $uid = gwvpmini_GetUserId($username);
825 $sql = "select * from repos where repos_owner='$uid'";
826 // error_log("owned repos sql $sql for username $username");
827 $res = $conn->query($sql);
828 if($username == "") return false;
\r
831 foreach($res as $row) {
832 $id = $row["repos_id"];
833 $retval[$id]["name"] = $row["repos_name"];
834 $retval[$id]["desc"] = $row["repos_description"];
835 $retval[$id]["id"] = $row["repos_id"];
836 $retval[$id]["status"] = $row["repos_status"];
837 // error_log(print_r($row, true));
840 // error_log(print_r($retval, true));
\r
844 function gwvpmini_GetContributedRepos($username)
\r
847 * CREATE TABLE "repos" (
\r
848 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
850 "repos_description" TEXT,
\r
851 "repos_owner" INTEGER
\r
855 $conn = gwvpmini_ConnectDB();
\r
858 $uid = gwvpmini_GetUserId($username);
\r
859 $sql = "select repos_id,repos_description,repos_perms,repos_owner,repos_status,repos_name from repos";
\r
860 $res = $conn->query($sql);
\r
861 if($username == "") return false;
\r
866 foreach($res as $row) {
867 $perms = unserialize(base64_decode($row["repos_perms"]));
868 // error_log("CONTRIB: $uid for ".$row["repos_id"]." - ".print_r($perms,true));
869 if(isset($perms["$uid"])) if($perms["$uid"] > 1) {
870 $rids[$i]["id"] = $row["repos_id"];
871 $rids[$i]["desc"] = $row["repos_description"];
872 $rids[$i]["owner"] = $row["repos_owner"];
873 $rids[$i]["status"] = $row["repos_status"];
874 $rids[$i]["name"] = $row["repos_name"];
881 // error_log("CONTRIBREPOS: no repos found?");
885 // error_log("CONTRIBREPOS: ".print_r($retval, true));
\r
889 function gwvpmini_userLevel($id)
891 $conn = gwvpmini_ConnectDB();
893 $sql = "select user_level from users where user_id='$id'";
895 $res = $conn->query($sql);
899 foreach($res as $row) {
906 function gwvpmini_GetUsers($startat = 0, $num = 10)
908 $conn = gwvpmini_ConnectDB();
911 * CREATE TABLE "users" (
912 "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
913 "user_full_name" TEXT,
914 "user_password" TEXT,
915 "user_username" TEXT,
923 $sql = "select * from users where user_id>='$startat' order by user_id asc limit $num";
925 $res = $conn->query($sql);
928 foreach($res as $row) {
929 $id = $row["user_id"];
930 $retval[$id]["fullname"] = $row["user_full_name"];
931 $retval[$id]["username"] = $row["user_username"];
932 $retval[$id]["email"] = $row["user_email"];
933 $retval[$id]["desc"] = $row["user_desc"];
934 $retval[$id]["level"] = $row["user_level"];
935 $retval[$id]["status"] = $row["user_status"];
936 $retval[$id]["id"] = $row["user_id"];
942 function gwvpmini_findPeopleLike($search)
\r
944 $conn = gwvpmini_ConnectDB();
946 $sql = "select * from users where user_username like '%$search%' or user_full_name like '%$search%'";
\r
948 $res = $conn->query($sql);
951 // error_log("SERACHUSER: $sql returned false");
954 // error_log("SERACHUSER: $sql returned true");
958 foreach($res as $row) {
\r
959 $id = $row["user_id"];
\r
960 $retval[$id]["fullname"] = $row["user_full_name"];
\r
961 $retval[$id]["username"] = $row["user_username"];
\r
962 $retval[$id]["email"] = $row["user_email"];
\r
963 $retval[$id]["desc"] = $row["user_desc"];
\r
964 $retval[$id]["level"] = $row["user_level"];
\r
965 $retval[$id]["status"] = $row["user_status"];
\r
966 $retval[$id]["id"] = $row["user_id"];
\r
969 // error_log("SEARCHUSER: array is ".print_r($retval, true));
\r
973 function gwvpmini_GetRepos($startat=0, $num=200)
\r
975 $conn = gwvpmini_ConnectDB();
\r
978 * CREATE TABLE "repos" (
979 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
981 "repos_description" TEXT,
982 "repos_owner" INTEGER
987 $sql = "select * from repos where repos_id > '$startat' order by repos_id asc limit $num";
\r
989 $res = $conn->query($sql);
\r
992 foreach($res as $row) {
\r
993 $id = $row["repos_id"];
\r
994 $retval[$id]["name"] = $row["repos_name"];
\r
995 $retval[$id]["desc"] = $row["repos_description"];
\r
996 $retval[$id]["owner"] = $row["repos_owner"];
\r
997 $retval[$id]["id"] = $row["repos_id"];
998 $retval[$id]["status"] = $row["repos_status"];
1006 function gwvpmini_findReposLike($search)
\r
1008 $conn = gwvpmini_ConnectDB();
1011 * CREATE TABLE "repos" (
1012 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
1014 "repos_description" TEXT,
1015 "repos_owner" INTEGER
1020 $sql = "select * from repos where repos_name like '%$search%' or repos_description like '%$search%'";
1022 $res = $conn->query($sql);
1024 if(!$res) return false;
1027 foreach($res as $row) {
1028 $id = $row["repos_id"];
1029 $retval[$id]["name"] = $row["repos_name"];
1030 $retval[$id]["desc"] = $row["repos_description"];
1031 $retval[$id]["owner"] = $row["repos_owner"];
1032 $retval[$id]["id"] = $row["repos_id"];
1033 $retval[$id]["status"] = $row["repos_status"];
1040 function gwvpmini_GetNRepos()
1042 $conn = gwvpmini_ConnectDB();
1044 $sql = "select count(*) from repos";
1046 $res = $conn->query($sql);
1049 foreach($res as $row) {
1057 function gwvpmini_GetNUsers()
\r
1059 $conn = gwvpmini_ConnectDB();
\r
1061 $sql = "select count(*) from users";
\r
1063 $res = $conn->query($sql);
\r
1066 foreach($res as $row) {
\r
1067 $retval = $row[0];
\r