<?php |
<?php |
/* |
/* |
* index.php |
* index.php |
* gitphp: A PHP git repository browser |
* gitphp: A PHP git repository browser |
* Component: Index script |
* Component: Index script |
* |
* |
* Copyright (C) 2006 Christopher Han <xiphux@gmail.com> |
* Copyright (C) 2006 Christopher Han <xiphux@gmail.com> |
*/ |
*/ |
|
|
/* |
/* |
* Version |
* Version |
*/ |
*/ |
include_once('include/version.php'); |
include_once('include/version.php'); |
|
|
/* |
/* |
* Constants |
* Constants |
*/ |
*/ |
require_once('include/defs.constants.php'); |
require_once('include/defs.constants.php'); |
|
|
/* |
/* |
* Configuration |
* Configuration |
*/ |
*/ |
require_once('config/gitphp.conf.php'); |
require_once('config/gitphp.conf.php'); |
|
|
$extraoutput = FALSE; |
$extraoutput = FALSE; |
|
|
/* |
/* |
* Instantiate Smarty |
* Instantiate Smarty |
*/ |
*/ |
require_once($gitphp_conf['smarty_prefix'] . "Smarty.class.php"); |
require_once($gitphp_conf['smarty_prefix'] . "Smarty.class.php"); |
$tpl =& new Smarty; |
$tpl =& new Smarty; |
if ((!isset($_GET['a'])) || ( |
if ((!isset($_GET['a'])) || ( |
($_GET['a'] != "commitdiff_plain") && |
($_GET['a'] != "commitdiff_plain") && |
($_GET['a'] != "blob_plain") && |
($_GET['a'] != "blob_plain") && |
($_GET['a'] != "blobdiff_plain") && |
($_GET['a'] != "blobdiff_plain") && |
($_GET['a'] != "rss") && |
($_GET['a'] != "rss") && |
($_GET['a'] != "opml") && |
($_GET['a'] != "opml") && |
($_GET['a'] != "snapshot"))) { |
($_GET['a'] != "snapshot"))) { |
$tpl->load_filter('output','trimwhitespace'); |
$tpl->load_filter('output','trimwhitespace'); |
$extraoutput = TRUE; |
$extraoutput = TRUE; |
} |
} |
|
|
/* |
/* |
* Debug |
* Debug |
*/ |
*/ |
if ($gitphp_conf['debug']) { |
if ($gitphp_conf['debug']) { |
if ($extraoutput) { |
if ($extraoutput) { |
define('GITPHP_START_TIME', microtime(true)); |
define('GITPHP_START_TIME', microtime(true)); |
error_reporting(E_ALL|E_STRICT); |
error_reporting(E_ALL|E_STRICT); |
} |
} |
} |
} |
|
|
/* |
/* |
* Caching |
* Caching |
*/ |
*/ |
if ($gitphp_conf['cache']) { |
if ($gitphp_conf['cache']) { |
$tpl->caching = 2; |
$tpl->caching = 2; |
$tpl->cache_lifetime = $gitphp_conf['cachelifetime']; |
$tpl->cache_lifetime = $gitphp_conf['cachelifetime']; |
if ($gitphp_conf['cacheexpire']) { |
if (!(isset($gitphp_conf['cacheexpire']) && ($gitphp_conf['cacheexpire'] === FALSE))) { |
require_once('include/cache.cache_expire.php'); |
require_once('include/cache.cache_expire.php'); |
cache_expire($gitphp_conf['projectroot'], (isset($_GET['p']) ? $_GET['p'] : null), $git_projects); |
cache_expire($gitphp_conf['projectroot'], (isset($_GET['p']) ? $_GET['p'] : null), $git_projects); |
} |
} |
} |
} |
|
|
/* |
/* |
* Setup global assigns used everywhere (such as header/footer) |
* Setup global assigns used everywhere (such as header/footer) |
*/ |
*/ |
$tpl->assign("stylesheet",$gitphp_conf['stylesheet']); |
$tpl->assign("stylesheet",$gitphp_conf['stylesheet']); |
$tpl->assign("version",$gitphp_version); |
$tpl->assign("version",$gitphp_version); |
$tpl->assign("pagetitle",$gitphp_conf['title']); |
$tpl->assign("pagetitle",$gitphp_conf['title']); |
if (isset($_GET['p'])) { |
if (isset($_GET['p'])) { |
$tpl->assign("validproject",TRUE); |
$tpl->assign("validproject",TRUE); |
$tpl->assign("project",$_GET['p']); |
$tpl->assign("project",$_GET['p']); |
require_once('include/gitutil.git_project_descr.php'); |
require_once('include/gitutil.git_project_descr.php'); |
$tpl->assign("projectdescription",git_project_descr($gitphp_conf['projectroot'],$_GET['p'])); |
$tpl->assign("projectdescription",git_project_descr($gitphp_conf['projectroot'],$_GET['p'])); |
if (isset($_GET['a'])) { |
if (isset($_GET['a'])) { |
$tpl->assign("action",$_GET['a']); |
$tpl->assign("action",$_GET['a']); |
$tpl->assign("validaction", TRUE); |
$tpl->assign("validaction", TRUE); |
} |
} |
} |
} |
if (isset($_GET['st'])) |
if (isset($_GET['st'])) |
$tpl->assign("currentsearchtype",$_GET['st']); |
$tpl->assign("currentsearchtype",$_GET['st']); |
else |
else |
$tpl->assign("currentsearchtype","commit"); |
$tpl->assign("currentsearchtype","commit"); |
if (isset($_GET['s'])) |
if (isset($_GET['s'])) |
$tpl->assign("currentsearch",$_GET['s']); |
$tpl->assign("currentsearch",$_GET['s']); |
if (isset($_GET['hb'])) |
if (isset($_GET['hb'])) |
$tpl->assign("currentsearchhash",$_GET['hb']); |
$tpl->assign("currentsearchhash",$_GET['hb']); |
else if (isset($_GET['h'])) |
else if (isset($_GET['h'])) |
$tpl->assign("currentsearchhash",$_GET['h']); |
$tpl->assign("currentsearchhash",$_GET['h']); |
if ($gitphp_conf['search']) |
if ($gitphp_conf['search']) |
$tpl->assign("enablesearch",TRUE); |
$tpl->assign("enablesearch",TRUE); |
if ($gitphp_conf['filesearch']) |
if ($gitphp_conf['filesearch']) |
$tpl->assign("filesearch",TRUE); |
$tpl->assign("filesearch",TRUE); |
|
|
|
|
if (isset($_GET['a']) && $_GET['a'] == "expire") { |
if (isset($_GET['a']) && $_GET['a'] == "expire") { |
require_once('include/cache.cache_expire.php'); |
require_once('include/cache.cache_expire.php'); |
require_once('include/display.git_message.php'); |
require_once('include/display.git_message.php'); |
cache_expire(null, null, null, true); |
cache_expire(null, null, null, true); |
git_message("Cache expired"); |
git_message("Cache expired"); |
} else if (isset($_GET['a']) && $_GET['a'] == "opml") { |
} else if (isset($_GET['a']) && $_GET['a'] == "opml") { |
require_once('include/display.git_opml.php'); |
require_once('include/display.git_opml.php'); |
git_opml($gitphp_conf['projectroot'],$git_projects); |
git_opml($gitphp_conf['projectroot'],$git_projects); |
} else if (isset($_GET['a']) && $_GET['a'] == "project_index") { |
} else if (isset($_GET['a']) && $_GET['a'] == "project_index") { |
require_once('include/display.git_project_index.php'); |
require_once('include/display.git_project_index.php'); |
git_project_index($gitphp_conf['projectroot'],$git_projects); |
git_project_index($gitphp_conf['projectroot'],$git_projects); |
} else if (isset($_GET['p'])) { |
} else if (isset($_GET['p'])) { |
if (!is_dir($gitphp_conf['projectroot'] . $_GET['p'])) { |
if (!is_dir($gitphp_conf['projectroot'] . $_GET['p'])) { |
$tpl->assign("validproject",FALSE); |
$tpl->assign("validproject",FALSE); |
require_once('include/display.git_message.php'); |
require_once('include/display.git_message.php'); |
git_message("No such directory",TRUE); |
git_message("No such directory",TRUE); |
} else if (!is_file($gitphp_conf['projectroot'] . $_GET['p'] . "/HEAD")) { |
} else if (!is_file($gitphp_conf['projectroot'] . $_GET['p'] . "/HEAD")) { |
$tpl->assign("validproject",FALSE); |
$tpl->assign("validproject",FALSE); |
require_once('include/display.git_message.php'); |
require_once('include/display.git_message.php'); |
git_message("No such project",TRUE); |
git_message("No such project",TRUE); |
} else { |
} else { |
if (!isset($_GET['a'])) { |
if (!isset($_GET['a'])) { |
require_once('include/display.git_summary.php'); |
require_once('include/display.git_summary.php'); |
git_summary($gitphp_conf['projectroot'],$_GET['p']); |
git_summary($gitphp_conf['projectroot'],$_GET['p']); |
} else { |
} else { |
switch ($_GET['a']) { |
switch ($_GET['a']) { |
case "summary": |
case "summary": |
require_once('include/display.git_summary.php'); |
require_once('include/display.git_summary.php'); |
git_summary($gitphp_conf['projectroot'],$_GET['p']); |
git_summary($gitphp_conf['projectroot'],$_GET['p']); |
break; |
break; |
case "tree": |
case "tree": |
require_once('include/display.git_tree.php'); |
require_once('include/display.git_tree.php'); |
git_tree($gitphp_conf['projectroot'], $_GET['p'], (isset($_GET['h']) ? $_GET['h'] : NULL), (isset($_GET['f']) ? $_GET['f'] : NULL), (isset($_GET['hb']) ? $_GET['hb'] : NULL)); |
git_tree($gitphp_conf['projectroot'], $_GET['p'], (isset($_GET['h']) ? $_GET['h'] : NULL), (isset($_GET['f']) ? $_GET['f'] : NULL), (isset($_GET['hb']) ? $_GET['hb'] : NULL)); |
break; |
break; |
case "shortlog": |
case "shortlog": |
require_once('include/display.git_shortlog.php'); |
require_once('include/display.git_shortlog.php'); |
git_shortlog($gitphp_conf['projectroot'],$_GET['p'],(isset($_GET['h']) ? $_GET['h'] : NULL), (isset($_GET['pg']) ? $_GET['pg'] : NULL)); |
git_shortlog($gitphp_conf['projectroot'],$_GET['p'],(isset($_GET['h']) ? $_GET['h'] : NULL), (isset($_GET['pg']) ? $_GET['pg'] : NULL)); |
break; |
break; |
case "log": |
case "log": |
require_once('include/display.git_log.php'); |
require_once('include/display.git_log.php'); |
git_log($gitphp_conf['projectroot'],$_GET['p'], (isset($_GET['h']) ? $_GET['h'] : NULL), (isset($_GET['pg']) ? $_GET['pg'] : NULL)); |
git_log($gitphp_conf['projectroot'],$_GET['p'], (isset($_GET['h']) ? $_GET['h'] : NULL), (isset($_GET['pg']) ? $_GET['pg'] : NULL)); |
break; |
break; |
case "commit": |
case "commit": |
require_once('include/display.git_commit.php'); |
require_once('include/display.git_commit.php'); |
git_commit($gitphp_conf['projectroot'],$_GET['p'],$_GET['h']); |
git_commit($gitphp_conf['projectroot'],$_GET['p'],$_GET['h']); |
break; |
break; |
case "commitdiff": |
case "commitdiff": |
require_once('include/display.git_commitdiff.php'); |
require_once('include/display.git_commitdiff.php'); |
git_commitdiff($gitphp_conf['projectroot'],$_GET['p'],$_GET['h'], (isset($_GET['hp']) ? $_GET['hp'] : NULL)); |
git_commitdiff($gitphp_conf['projectroot'],$_GET['p'],$_GET['h'], (isset($_GET['hp']) ? $_GET['hp'] : NULL)); |
break; |
break; |
case "commitdiff_plain": |
case "commitdiff_plain": |
require_once('include/display.git_commitdiff_plain.php'); |
require_once('include/display.git_commitdiff_plain.php'); |
git_commitdiff_plain($gitphp_conf['projectroot'],$_GET['p'],$_GET['h'],(isset($_GET['hp']) ? $_GET['hp'] : NULL)); |
git_commitdiff_plain($gitphp_conf['projectroot'],$_GET['p'],$_GET['h'],(isset($_GET['hp']) ? $_GET['hp'] : NULL)); |
break; |
break; |
case "heads": |
case "heads": |
require_once('include/display.git_heads.php'); |
require_once('include/display.git_heads.php'); |
git_heads($gitphp_conf['projectroot'],$_GET['p']); |
git_heads($gitphp_conf['projectroot'],$_GET['p']); |
break; |
break; |
case "tags": |
case "tags": |
require_once('include/display.git_tags.php'); |
require_once('include/display.git_tags.php'); |
git_tags($gitphp_conf['projectroot'],$_GET['p']); |
git_tags($gitphp_conf['projectroot'],$_GET['p']); |
break; |
break; |
case "rss": |
case "rss": |
require_once('include/display.git_rss.php'); |
require_once('include/display.git_rss.php'); |
git_rss($gitphp_conf['projectroot'],$_GET['p']); |
git_rss($gitphp_conf['projectroot'],$_GET['p']); |
break; |
break; |
case "blob": |
case "blob": |
require_once('include/display.git_blob.php'); |
require_once('include/display.git_blob.php'); |
git_blob($gitphp_conf['projectroot'],$_GET['p'], (isset($_GET['h']) ? $_GET['h'] : NULL), (isset($_GET['f']) ? $_GET['f'] : NULL), (isset($_GET['hb']) ? $_GET['hb'] : NULL)); |
git_blob($gitphp_conf['projectroot'],$_GET['p'], (isset($_GET['h']) ? $_GET['h'] : NULL), (isset($_GET['f']) ? $_GET['f'] : NULL), (isset($_GET['hb']) ? $_GET['hb'] : NULL)); |
break; |
break; |
case "blob_plain": |
case "blob_plain": |
require_once('include/display.git_blob_plain.php'); |
require_once('include/display.git_blob_plain.php'); |
git_blob_plain($gitphp_conf['projectroot'],$_GET['p'],$_GET['h'],(isset($_GET['f']) ? $_GET['f'] : NULL)); |
git_blob_plain($gitphp_conf['projectroot'],$_GET['p'],$_GET['h'],(isset($_GET['f']) ? $_GET['f'] : NULL)); |
break; |
break; |
case "blobdiff": |
case "blobdiff": |
require_once('include/display.git_blobdiff.php'); |
require_once('include/display.git_blobdiff.php'); |
git_blobdiff($gitphp_conf['projectroot'],$_GET['p'],$_GET['h'],$_GET['hb'],$_GET['hp'],(isset($_GET['f']) ? $_GET['f'] : NULL)); |
git_blobdiff($gitphp_conf['projectroot'],$_GET['p'],$_GET['h'],$_GET['hb'],$_GET['hp'],(isset($_GET['f']) ? $_GET['f'] : NULL)); |
break; |
break; |
case "blobdiff_plain": |
case "blobdiff_plain": |
require_once('include/display.git_blobdiff_plain.php'); |
require_once('include/display.git_blobdiff_plain.php'); |
git_blobdiff_plain($gitphp_conf['projectroot'],$_GET['p'],$_GET['h'],$_GET['hb'],$_GET['hp'], (isset($_GET['f']) ? $_GET['f'] : NULL)); |
git_blobdiff_plain($gitphp_conf['projectroot'],$_GET['p'],$_GET['h'],$_GET['hb'],$_GET['hp'], (isset($_GET['f']) ? $_GET['f'] : NULL)); |
break; |
break; |
case "snapshot": |
case "snapshot": |
require_once('include/display.git_snapshot.php'); |
require_once('include/display.git_snapshot.php'); |
git_snapshot($gitphp_conf['projectroot'],$_GET['p'], (isset($_GET['h']) ? $_GET['h'] : NULL)); |
git_snapshot($gitphp_conf['projectroot'],$_GET['p'], (isset($_GET['h']) ? $_GET['h'] : NULL)); |
break; |
break; |
case "history": |
case "history": |
require_once('include/display.git_history.php'); |
require_once('include/display.git_history.php'); |
git_history($gitphp_conf['projectroot'],$_GET['p'], (isset($_GET['h']) ? $_GET['h'] : NULL),$_GET['f']); |
git_history($gitphp_conf['projectroot'],$_GET['p'], (isset($_GET['h']) ? $_GET['h'] : NULL),$_GET['f']); |
break; |
break; |
case "search": |
case "search": |
if (isset($_GET['st']) && ($_GET['st'] == 'file')) { |
if (isset($_GET['st']) && ($_GET['st'] == 'file')) { |
require_once('include/display.git_search_files.php'); |
require_once('include/display.git_search_files.php'); |
git_search_files($gitphp_conf['projectroot'],$_GET['p'],(isset($_GET['h']) ? $_GET['h'] : NULL),(isset($_GET['s']) ? $_GET['s'] : NULL),(isset($_GET['pg']) ? $_GET['pg'] : 0)); |
git_search_files($gitphp_conf['projectroot'],$_GET['p'],(isset($_GET['h']) ? $_GET['h'] : NULL),(isset($_GET['s']) ? $_GET['s'] : NULL),(isset($_GET['pg']) ? $_GET['pg'] : 0)); |
} else { |
} else { |
require_once('include/display.git_search.php'); |
require_once('include/display.git_search.php'); |
git_search($gitphp_conf['projectroot'],$_GET['p'],(isset($_GET['h']) ? $_GET['h'] : NULL),(isset($_GET['s']) ? $_GET['s'] : NULL),(isset($_GET['st']) ? $_GET['st'] : "commit"),(isset($_GET['pg']) ? $_GET['pg'] : 0)); |
git_search($gitphp_conf['projectroot'],$_GET['p'],(isset($_GET['h']) ? $_GET['h'] : NULL),(isset($_GET['s']) ? $_GET['s'] : NULL),(isset($_GET['st']) ? $_GET['st'] : "commit"),(isset($_GET['pg']) ? $_GET['pg'] : 0)); |
} |
} |
break; |
break; |
case "tag": |
case "tag": |
require_once('include/display.git_tag.php'); |
require_once('include/display.git_tag.php'); |
git_tag($gitphp_conf['projectroot'],$_GET['p'],$_GET['h']); |
git_tag($gitphp_conf['projectroot'],$_GET['p'],$_GET['h']); |
break; |
break; |
default: |
default: |
$tpl->assign("validaction", FALSE); |
$tpl->assign("validaction", FALSE); |
require_once('include/display.git_message.php'); |
require_once('include/display.git_message.php'); |
git_message("Unknown action", TRUE); |
git_message("Unknown action", TRUE); |
break; |
break; |
} |
} |
} |
} |
} |
} |
} else { |
} else { |
require_once('include/display.git_project_list.php'); |
require_once('include/display.git_project_list.php'); |
git_project_list($gitphp_conf['projectroot'],$git_projects,(isset($_GET['o']) ? $_GET['o'] : "project")); |
git_project_list($gitphp_conf['projectroot'],$git_projects,(isset($_GET['o']) ? $_GET['o'] : "project")); |
} |
} |
|
|
if ($gitphp_conf['debug'] && $extraoutput) |
if ($gitphp_conf['debug'] && $extraoutput) |
echo "Execution time: " . round(microtime(true) - GITPHP_START_TIME, 8) . " sec"; |
echo "Execution time: " . round(microtime(true) - GITPHP_START_TIME, 8) . " sec"; |
|
|
?> |
?> |
|
|