continued :)
[phpgitweb.git] / htdocs / lib / ProjectLoader.class.php
index eb1c789c11a8bc70219e7d58b41773116cd7f21d..20ee218aa6a91a6aecdb301fa59c5bcae76afabc 100644 (file)
@@ -47,6 +47,8 @@ class ProjectLoader {
                $project['name'] = $name;
         
         $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"))
@@ -67,6 +69,7 @@ class ProjectLoader {
                 if(strtolower($p['name']) == strtolower($name)) {
                     $found = true;
                                        $project['name'] = $p['name'];
+                                       $project['owner'] = $p['owner'];
                     break;
                 }
             }
@@ -79,14 +82,16 @@ class ProjectLoader {
                else
                        $project['description'] = "";
                
-               if(GitConfig::PROJECT_OWNER)
-                       $project['owner'] = GitConfig::PROJECT_OWNER;
-               else {
-                       $project['owner'] = fileowner($project['path']);
-                       $owner = posix_getpwuid($project['owner']);
-                       if($owner && $owner['name'])
-                               $project['owner'] = $owner['name'];
-               }       
+               if(!array_key_exists('owner', $project) || $project['owner'] == null) {
+                       if(GitConfig::PROJECT_OWNER)
+                               $project['owner'] = GitConfig::PROJECT_OWNER;
+                       else {
+                               $project['owner'] = fileowner($project['path']);
+                               $owner = posix_getpwuid($project['owner']);
+                               if($owner && $owner['name'])
+                                       $project['owner'] = $owner['name'];
+                       }
+               }
                
         return $project;
     }
@@ -112,7 +117,7 @@ class ProjectLoader {
        private function getProjectRefsRecursive(&$project, $cref) {
                if ($dh = opendir($project['path'].'/'.$cref)) {
                        while (($file = readdir($dh)) !== false) {
-                               if($file == '.' || $file == '..')
+                               if($file[0] == '.')
                                        continue;
                                if(is_dir($project['path'].'/'.$cref.'/'.$file))
                                        $this->getProjectRefsRecursive($project, $cref.'/'.$file);