X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=htdocs%2Flib%2FProjectLoader.class.php;h=0e2cfdfda327aff938db63ecb64cd4a7639b846c;hb=45f97c3c11bdffe296ccfc853621fd2fff1732a1;hp=a5ebd74f8b40da65015076ef08b3094a195a5c28;hpb=0b0c6134312c1bce0c4bab1709edf3fbd00ccd23;p=phpgitweb.git diff --git a/htdocs/lib/ProjectLoader.class.php b/htdocs/lib/ProjectLoader.class.php index a5ebd74..0e2cfdf 100644 --- a/htdocs/lib/ProjectLoader.class.php +++ b/htdocs/lib/ProjectLoader.class.php @@ -17,64 +17,68 @@ */ class ProjectLoader { - private $projects = NULL; - - private function loadProjects($load_details = true) { - $this->projects = array(); - if(GitConfig::PROJECT_LIST) { - foreach(file(GitConfig::PROJECT_LIST) as $entry) { - $entry = explode(" ", $entry); - - if($load_details) { - //check if project really exists - $project = $this->loadProject($entry[0], false); + private $projects = NULL; + + private function loadProjects($load_details = true) { + $this->projects = array(); + if(GitConfig::PROJECT_LIST) { + foreach(file(GitConfig::PROJECT_LIST) as $entry) { + $entry = explode(" ", str_replace(array("\r", "\n"), array("", ""), $entry)); + + if($load_details) { + //check if project really exists + $project = $this->loadProject($entry[0], false); if($project === NULL) continue; - } else + } else $project['name'] = $entry[0]; - - $project['owner'] = $entry[1]; - $this->projects[] = $project; - } - } else { - //walk through PROJECT_ROOT - - } - } - - private function loadProject($name, $check_strict_export = true) { - $project = array(); + + if(count($entry) > 1) + $project['owner'] = $entry[1]; + $this->projects[] = $project; + } + } else { + //walk through PROJECT_ROOT + + } + } + + private function loadProject($name, $check_strict_export = true) { + $project = array(); $project['name'] = $name; - - $dir_seperator = (substr(GitConfig::PROJECT_ROOT, -1) == '/' ? '' : '/'); - if(is_dir(GitConfig::PROJECT_ROOT.$dir_seperator.$name)) - $project['path'] = GitConfig::PROJECT_ROOT.$dir_seperator.$name; - else if(is_dir(GitConfig::PROJECT_ROOT.$dir_seperator.$name.".git")) - $project['path'] = GitConfig::PROJECT_ROOT.$dir_seperator.$name.".git"; - else - return NULL; + + $dir_seperator = (substr(GitConfig::PROJECT_ROOT, -1) == '/' ? '' : '/'); + if(!Validation::validate_path($name)) + return NULL; + if(is_dir(GitConfig::PROJECT_ROOT.$dir_seperator.$name)) + $project['path'] = GitConfig::PROJECT_ROOT.$dir_seperator.$name; + else if(is_dir(GitConfig::PROJECT_ROOT.$dir_seperator.$name.".git")) + $project['path'] = GitConfig::PROJECT_ROOT.$dir_seperator.$name.".git"; + else + return NULL; if(is_dir($project['path'].'/.git')) $project['path'] .= '/.git'; - if(GitConfig::EXPORT_FILE && !file_exists($project['path'].'/'.GitConfig::EXPORT_FILE)) - return NULL; - - if(GitConfig::STRICT_EXPORT && $check_strict_export) { - if($this->projects === NULL) - $this->loadProjects(false); - $found = false; - foreach($this->projects as $p) { - if(strtolower($p['name']) == strtolower($name)) { - $found = true; + if(GitConfig::EXPORT_FILE && !file_exists($project['path'].'/'.GitConfig::EXPORT_FILE)) + return NULL; + + if(GitConfig::STRICT_EXPORT && $check_strict_export) { + if($this->projects === NULL) + $this->loadProjects(false); + $found = false; + foreach($this->projects as $p) { + if(strtolower($p['name']) == strtolower($name)) { + $found = true; $project['name'] = $p['name']; - $project['owner'] = $p['owner']; - break; - } - } - if(!$found) - return NULL; - } - + if(isset($p['owner'])) + $project['owner'] = $p['owner']; + break; + } + } + if(!$found) + return NULL; + } + if(file_exists($project['path'].'/description')) $project['description'] = file_get_contents($project['path'].'/description'); else @@ -91,17 +95,17 @@ class ProjectLoader { } } - return $project; - } - - public function getProjectList() { + return $project; + } + + public function getProjectList() { $this->loadProjects(); - return $this->projects; - } - - public function getProject($name) { - return $this->loadProject($name); - } + return $this->projects; + } + + public function getProject($name) { + return $this->loadProject($name); + } public function getLastChange($project) { if(!array_key_exists('last_activity', $project)) { @@ -135,7 +139,7 @@ class ProjectLoader { } } return $project['refs']; - } + } } ?> \ No newline at end of file