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,
539 // this looks like null, <repoid>, <read|visible|write>, user:<uid>|group:<gid>|authed|anon
\r
540 // where authed = any authenticated user, anon = everyone (logged in, not logged in, etc)
\r
541 // read|visible|write = can clone from repo|can see repo exists and see description but not clone from it|can push to repo
\r
542 // TODO: is this sufficient? i have to think about it
545 // type for now will only be "git"
547 // desc is a desction of the activity
548 // link is of the form "repo,reponame,repoid:user,username,useremail,userid" so it
549 // can be attached simply
550 // viewby is a simple list of uid's that should be able to see it... "r" for all registered
553 CREATE TABLE "activity" (
554 "activity_id" INTEGER PRIMARY KEY AUTOINCREMENT,
555 "activity_type" TEXT,
556 "activity_date" TEXT,
557 "activity_user" TEXT,
558 "activity_repo" TEXT,
559 "activity_commitid" TEXT,
560 "activity_commitlog" TEXT,
561 "activity_visibleto" TEXT
565 CREATE TABLE "config" (
\r
566 "config_name" TEXT,
\r
567 "config_value" TEXT
\r
571 $DB_CONNECTION = new PDO("sqlite:$dbloc");
\r
572 } catch(PDOException $exep) {
\r
573 // error_log("execpt on db open");
\r
577 $DB_CONNECTION->query($usersql);
\r
578 $DB_CONNECTION->query($initialuser_admin);
579 $DB_CONNECTION->query($initialuser_user);
580 $DB_CONNECTION->query($reposql);
\r
581 $DB_CONNECTION->query($configsql);
582 $DB_CONNECTION->query($activitysql);
\r
585 function gwvpmini_getConfigVal($confname)
\r
589 CREATE TABLE "config" (
\r
590 "config_name" TEXT,
\r
591 "config_value" TEXT
\r
596 $conn = gwvpmini_ConnectDB();
\r
598 $sql = "select config_value from config where config_name='$confname'";
\r
600 $res = $conn->query($sql);
\r
603 foreach($res as $val) {
\r
604 $return = $val["config_value"];
\r
610 function gwvpmini_eraseConfigVal($confname)
\r
614 CREATE TABLE "config" (
\r
615 "config_name" TEXT,
\r
616 "config_value" TEXT
\r
621 $conn = gwvpmini_ConnectDB();
\r
623 $sql = "delete from config where config_name='$confname'";
\r
625 return $conn->query($sql);
\r
628 function gwvpmini_GetRepoId($reponame)
633 CREATE TABLE "repos" (
634 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
636 "repos_description" TEXT,
637 "repos_owner" INTEGER
642 $conn = gwvpmini_ConnectDB();
644 $sql = "select repos_id from repos where repos_name='$reponame'";
646 $res = $conn->query($sql);
650 foreach($res as $row) {
651 $retval = (int)$row[0];
657 function gwvpmini_GetRepoDescFromName($reponame)
\r
662 CREATE TABLE "repos" (
\r
663 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
665 "repos_description" TEXT,
\r
666 "repos_owner" INTEGER
\r
671 $conn = gwvpmini_ConnectDB();
\r
673 $sql = "select repos_description from repos where repos_name='$reponame'";
674 // error_log("desc for name sql: $sql");
\r
676 $res = $conn->query($sql);
\r
679 if(!$res) return -1;
\r
680 foreach($res as $row) {
\r
687 function gwvpmini_GetRepoOwnerDetailsFromName($reponame)
\r
692 CREATE TABLE "repos" (
\r
693 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
695 "repos_description" TEXT,
\r
696 "repos_owner" INTEGER
\r
699 "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
700 "user_full_name" TEXT,
701 "user_password" TEXT,
702 "user_username" TEXT,
707 UNIQUE(user_username)
\r
711 $conn = gwvpmini_ConnectDB();
\r
713 $sql = "select users.* from repos,users where repos_name='$reponame' and repos_owner=user_id";
\r
715 $res = $conn->query($sql);
\r
718 if(!$res) return -1;
\r
719 foreach($res as $row) {
721 // error_log("STUFF2: ".print_r($row,true));
\r
722 $retval["id"] = $row["user_id"];
723 $retval["fullname"] = $row["user_full_name"];
724 $retval["username"] = $row["user_username"];
725 $retval["email"] = $row["user_email"];
726 $retval["desc"] = $row["user_desc"];
727 $retval["level"] = $row["user_level"];
728 $retval["status"] = $row["user_status"];
\r
734 function gwvpmini_setConfigVal($confname, $confval)
\r
738 CREATE TABLE "config" (
\r
739 "config_name" TEXT,
\r
740 "config_value" TEXT
\r
744 gwvpmini_eraseConfigVal($confname);
\r
746 $conn = gwvpmini_ConnectDB();
748 $sql = "delete from config where config_name='$confname'";
749 $conn->query($sql);
\r
751 $sql = "insert into config values('$confname', '$confval')";
\r
753 return $conn->query($sql);
\r
756 function gwvpmini_AddRepo($name, $desc, $ownerid, $clonefrom)
759 // error_log("addrepo in db for $name, $desc, $ownerid");
760 $conn = gwvpmini_ConnectDB();
\r
764 $encperms = base64_encode(serialize($perms));
766 if($clonefrom === false) $clonefrom = "";
768 $sql = "insert into repos values (null, '$name', '$desc', '$ownerid', '$encperms', 0, '$clonefrom')";
\r
770 $conn->query($sql);
\r
773 function gwvpmini_GetUserId($username)
775 $conn = gwvpmini_ConnectDB();
\r
777 $sql = "select user_id from users where user_username='$username'";
779 // error_log("userid sql $sql");
\r
781 $res = $conn->query($sql);
784 foreach($res as $row) {
791 function gwvpmini_GetUserNameFromEmail($email)
\r
793 $conn = gwvpmini_ConnectDB();
\r
795 $sql = "select user_username from users where user_email='$email'";
\r
797 // error_log("username sql $sql");
\r
799 $res = $conn->query($sql);
\r
802 foreach($res as $row) {
\r
809 function gwvpmini_GetOwnedRepos($username)
\r
812 * CREATE TABLE "repos" (
813 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
815 "repos_description" TEXT,
816 "repos_owner" INTEGER
820 $conn = gwvpmini_ConnectDB();
823 $uid = gwvpmini_GetUserId($username);
824 $sql = "select * from repos where repos_owner='$uid'";
825 // error_log("owned repos sql $sql for username $username");
826 $res = $conn->query($sql);
827 if($username == "") return false;
\r
830 foreach($res as $row) {
831 $id = $row["repos_id"];
832 $retval[$id]["name"] = $row["repos_name"];
833 $retval[$id]["desc"] = $row["repos_description"];
834 $retval[$id]["id"] = $row["repos_id"];
835 $retval[$id]["status"] = $row["repos_status"];
836 // error_log(print_r($row, true));
839 // error_log(print_r($retval, true));
\r
843 function gwvpmini_GetContributedRepos($username)
\r
846 * CREATE TABLE "repos" (
\r
847 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
\r
849 "repos_description" TEXT,
\r
850 "repos_owner" INTEGER
\r
854 $conn = gwvpmini_ConnectDB();
\r
857 $uid = gwvpmini_GetUserId($username);
\r
858 $sql = "select repos_id,repos_description,repos_perms,repos_owner,repos_status,repos_name from repos";
\r
859 $res = $conn->query($sql);
\r
860 if($username == "") return false;
\r
865 foreach($res as $row) {
866 $perms = unserialize(base64_decode($row["repos_perms"]));
867 // error_log("CONTRIB: $uid for ".$row["repos_id"]." - ".print_r($perms,true));
868 if(isset($perms["$uid"])) if($perms["$uid"] > 1) {
869 $rids[$i]["id"] = $row["repos_id"];
870 $rids[$i]["desc"] = $row["repos_description"];
871 $rids[$i]["owner"] = $row["repos_owner"];
872 $rids[$i]["status"] = $row["repos_status"];
873 $rids[$i]["name"] = $row["repos_name"];
880 // error_log("CONTRIBREPOS: no repos found?");
884 // error_log("CONTRIBREPOS: ".print_r($retval, true));
\r
888 function gwvpmini_userLevel($id)
890 $conn = gwvpmini_ConnectDB();
892 $sql = "select user_level from users where user_id='$id'";
894 $res = $conn->query($sql);
898 foreach($res as $row) {
905 function gwvpmini_GetUsers($startat = 0, $num = 10)
907 $conn = gwvpmini_ConnectDB();
910 * CREATE TABLE "users" (
911 "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
912 "user_full_name" TEXT,
913 "user_password" TEXT,
914 "user_username" TEXT,
922 $sql = "select * from users where user_id>='$startat' order by user_id asc limit $num";
924 $res = $conn->query($sql);
927 foreach($res as $row) {
928 $id = $row["user_id"];
929 $retval[$id]["fullname"] = $row["user_full_name"];
930 $retval[$id]["username"] = $row["user_username"];
931 $retval[$id]["email"] = $row["user_email"];
932 $retval[$id]["desc"] = $row["user_desc"];
933 $retval[$id]["level"] = $row["user_level"];
934 $retval[$id]["status"] = $row["user_status"];
935 $retval[$id]["id"] = $row["user_id"];
941 function gwvpmini_findPeopleLike($search)
\r
943 $conn = gwvpmini_ConnectDB();
945 $sql = "select * from users where user_username like '%$search%' or user_full_name like '%$search%'";
\r
947 $res = $conn->query($sql);
950 // error_log("SERACHUSER: $sql returned false");
953 // error_log("SERACHUSER: $sql returned true");
957 foreach($res as $row) {
\r
958 $id = $row["user_id"];
\r
959 $retval[$id]["fullname"] = $row["user_full_name"];
\r
960 $retval[$id]["username"] = $row["user_username"];
\r
961 $retval[$id]["email"] = $row["user_email"];
\r
962 $retval[$id]["desc"] = $row["user_desc"];
\r
963 $retval[$id]["level"] = $row["user_level"];
\r
964 $retval[$id]["status"] = $row["user_status"];
\r
965 $retval[$id]["id"] = $row["user_id"];
\r
968 // error_log("SEARCHUSER: array is ".print_r($retval, true));
\r
972 function gwvpmini_GetRepos($startat=0, $num=200)
\r
974 $conn = gwvpmini_ConnectDB();
\r
977 * CREATE TABLE "repos" (
978 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
980 "repos_description" TEXT,
981 "repos_owner" INTEGER
986 $sql = "select * from repos where repos_id > '$startat' order by repos_id asc limit $num";
\r
988 $res = $conn->query($sql);
\r
991 foreach($res as $row) {
\r
992 $id = $row["repos_id"];
\r
993 $retval[$id]["name"] = $row["repos_name"];
\r
994 $retval[$id]["desc"] = $row["repos_description"];
\r
995 $retval[$id]["owner"] = $row["repos_owner"];
\r
996 $retval[$id]["id"] = $row["repos_id"];
997 $retval[$id]["status"] = $row["repos_status"];
1005 function gwvpmini_findReposLike($search)
\r
1007 $conn = gwvpmini_ConnectDB();
1010 * CREATE TABLE "repos" (
1011 "repos_id" INTEGER PRIMARY KEY AUTOINCREMENT,
1013 "repos_description" TEXT,
1014 "repos_owner" INTEGER
1019 $sql = "select * from repos where repos_name like '%$search%' or repos_description like '%$search%'";
1021 $res = $conn->query($sql);
1023 if(!$res) return false;
1026 foreach($res as $row) {
1027 $id = $row["repos_id"];
1028 $retval[$id]["name"] = $row["repos_name"];
1029 $retval[$id]["desc"] = $row["repos_description"];
1030 $retval[$id]["owner"] = $row["repos_owner"];
1031 $retval[$id]["id"] = $row["repos_id"];
1032 $retval[$id]["status"] = $row["repos_status"];
1039 function gwvpmini_GetNRepos()
1041 $conn = gwvpmini_ConnectDB();
1043 $sql = "select count(*) from repos";
1045 $res = $conn->query($sql);
1048 foreach($res as $row) {
1056 function gwvpmini_GetNUsers()
\r
1058 $conn = gwvpmini_ConnectDB();
\r
1060 $sql = "select count(*) from users";
\r
1062 $res = $conn->query($sql);
\r
1065 foreach($res as $row) {
\r
1066 $retval = $row[0];
\r