xaizek / rocketgit (License: AGPLv3+) (since 2018-12-09)
Light and fast Git hosting solution suitable to serve both as a hub or as a personal code storage with its tickets, pull requests, API and much more.
<root> / inc / state.inc.php (8dff3aeecbd89c21904f7703746f4e58c9776e61) (1,217B) (mode 100644) [raw]
<?php
require_once($INC . "/sql.inc.php");

function rg_state_set_error($str)
{
	global $rg_state_error;

	rg_log("\tError: $str");
	$rg_state_error = $str;
}

function rg_state_error()
{
	global $rg_state_error;
	return $rg_state_error;
}

/*
 * Get state
 */
function rg_state_get($db, $var)
{
	$e_var = rg_sql_escape($db, $var);

	$sql = "SELECT value FROM state WHERE var = '$e_var'";
	$res = rg_sql_query($db, $sql);
	if ($res === FALSE) {
		rg_state_set_error("state: " . rg_sql_error());
		return FALSE;
	}

	$rows = rg_sql_num_rows($res);
	if ($rows == 0) {
		$ret = "";
	} else {
		$row = rg_sql_fetch_array($res);
		$ret = $row['value'];
	}
	rg_sql_free_result($res);

	return $ret;
}

/*
 * Set state
 */
function rg_state_set($db, $var, $value)
{
	$e_var = rg_sql_escape($db, $var);
	$e_value = rg_sql_escape($db, $value);

	if (rg_state_get($db, $var) === "") {
		$sql = "INSERT INTO state (var, value)"
			. " VALUES('$e_var', '$e_value')";
	} else {
		$sql = "UPDATE state SET value = '$e_value'"
			. " WHERE var = '$e_var'";
	}
	$res = rg_sql_query($db, $sql);
	if ($res === FALSE) {
		rg_state_set_error("state: " . rg_sql_error());
		return FALSE;
	}
	rg_sql_free_result($res);

	return TRUE;
}
?>
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/rocketgit

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/rocketgit

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master