X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=GITManagedWebpage.class.php;h=2a3076f73a5770607bfbd7ed04c70fc689990eb9;hb=refs%2Fheads%2Fmaster;hp=7622b30ebd41a15ff707329d29b8ce1b2c871311;hpb=232fbba4bb424b803f4beb8fc91744b1d671ba6e;p=GITManagedWebpage.git
diff --git a/GITManagedWebpage.class.php b/GITManagedWebpage.class.php
index 7622b30..2a3076f 100644
--- a/GITManagedWebpage.class.php
+++ b/GITManagedWebpage.class.php
@@ -90,7 +90,7 @@ class GITManagedWebpage {
} else
$argstr .= " ".escapeshellarg($arg);
}
- $gitcmd = 'git '.escapeshellarg('--git-dir='.$this->workdir.'repository/.git').' '.escapeshellarg('--work-tree='.$this->workdir.'repository/.git').$argstr;
+ $gitcmd = 'git '.escapeshellarg('--git-dir='.$this->workdir.'repository/.git').' '.escapeshellarg('--work-tree='.$this->workdir.'repository').$argstr;
$output = shell_exec($gitcmd);
return $output;
}
@@ -103,6 +103,16 @@ class GITManagedWebpage {
$this->config_changed = true;
}
+ private function checkConfigIntegrity() {
+ foreach($this->config as $key => $value) {
+ if(substr($key, 0, strlen('branch_')) == 'branch_') {
+ if(!file_exists($this->workdir.$key)) {
+ unset($this->config['key']);
+ }
+ }
+ }
+ }
+
/* private function getConfig($name)
* get an option from the configuration
*/
@@ -113,6 +123,7 @@ class GITManagedWebpage {
if(file_exists($this->workdir."config.txt")) {
$config_txt = @file_get_contents($this->workdir."config.txt");
$this->config = unserialize($config_txt);
+ $this->checkConfigIntegrity();
} else {
$this->config = array();
return null;
@@ -153,6 +164,14 @@ class GITManagedWebpage {
$this->error(self::ERROR_CRITICAL, "error cloning git repository.");
return;
}
+
+ $fp = fopen($this->workdir.'.htaccess');
+ fwrite($fp, '
+Order deny,allow
+Deny from all
+');
+ fclose($fp);
+
$this->ready = true;
$default_branch = str_replace(array("\r", "\n"), array("", ""), $this->gitcmd("rev-parse", "--abbrev-ref", "HEAD"));
@@ -218,7 +237,7 @@ class GITManagedWebpage {
if($branch == $default_branch)
$dir = $this->localdir;
else
- $dir = $this->workdir.'branch_'.$branch.'/';
+ $dir = $this->workdir.'branch_'.str_replace(array('/'), array('_'), $branch).'/';
if(file_exists($dir))
return $dir;
else if($create) {
@@ -228,20 +247,19 @@ class GITManagedWebpage {
return false;
}
- private function updateBranch($branch, $path) {
+ private function updateBranch($branch, $path, $force = false) {
if(substr($path, -1) != '/')
$path .= '/';
$current_branch = str_replace(array("\r", "\n"), array("", ""), $this->gitcmd("rev-parse", "--abbrev-ref", "HEAD"));
- if($current_branch != $branch)
- $this->gitcmd("checkout", $branch);
- echo $this->gitcmd("pull");
+ $this->gitcmd("fetch");
+ $this->gitcmd("reset", "--hard", "origin/".$branch);
$gitret = $this->gitcmd("rev-list", "--max-count=1", $branch);
preg_match("#([a-z0-9]{40})#", $gitret, $match);
$newest_version = $match[1];
$deleted_files = array();
if(($current_version = $this->getConfig('version_'.$branch))) {
- if($current_version == $newest_version)
+ if($current_version == $newest_version && !$force)
return;
else {
$override_all = true;
@@ -290,17 +308,20 @@ class GITManagedWebpage {
if($this->loopedcall)
return;
- if(!$this->branchExists($branch))
- return false;
+ if(!$this->branchExists($branch)) {
+ $this->gitcmd("fetch");
+ if(!$this->branchExists('origin/'.$branch))
+ return false;
+ }
$this->setActiveBranch($branch, $remember);
if(!$this->localBranchPath($branch)) {
$dir = $this->localBranchPath($branch, true);
- $this->updateBranch($branch, $dir);
+ $this->updateBranch($branch, $dir, true);
}
}
- public function execute($file = null) {
+ public function getExecFile($file = null) {
if($this->loopedcall)
return;
define("GITMANAGED_EXECUTED", true);
@@ -313,15 +334,135 @@ class GITManagedWebpage {
$default_branch = $this->getConfig("defaultbranch");
$active_branch = $this->getActiveBranch();
if($active_branch != $default_branch) {
- if(!($dir = $this->localBranchPath($branch))) {
+ if(!($dir = $this->localBranchPath($active_branch))) {
$dir = $this->localBranchPath($active_branch, true);
- $this->updateBranch($active_branch, $dir);
+ $this->updateBranch($active_branch, $dir, true);
}
- include_once($dir.$file);
- die();
+ chdir($dir);
+ return $dir.$file;
+ } else {
+ return $file;
}
}
+ public function showMngrWindow() {
+ $html = '';
+ $html .= '';
+ $html .= '';
+ $html .= '';
+ $html .= '';
+ $html .= '';
+ $html .= '';
+
+ $current_branch = $this->getActiveBranch();
+ $current_version = substr($this->getConfig('version_'.$current_branch), 0, 7);
+ $html .= <<
+
+
+
+
+HTML_END;
+ return $html;
+ }
+
}
?>
\ No newline at end of file