1<?php 2/*========================================================================= 3 4 Program: CDash - Cross-Platform Dashboard System 5 Module: $Id$ 6 Language: PHP 7 Date: $Date$ 8 Version: $Revision$ 9 10 Copyright (c) 2002 Kitware, Inc. All rights reserved. 11 See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. 12 13 This software is distributed WITHOUT ANY WARRANTY; without even 14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 15 PURPOSE. See the above copyright notices for more information. 16 17=========================================================================*/ 18include("cdash/config.php"); 19require_once("cdash/pdo.php"); 20include_once("cdash/common.php"); 21include('login.php'); 22include('cdash/version.php'); 23include_once("models/project.php"); 24include_once("models/subproject.php"); 25include_once("models/user.php"); 26 27if ($session_OK) 28{ 29@$db = pdo_connect("$CDASH_DB_HOST", "$CDASH_DB_LOGIN","$CDASH_DB_PASS"); 30pdo_select_db("$CDASH_DB_NAME",$db); 31 32$userid = $_SESSION['cdash']['loginid']; 33// Checks 34if(!isset($userid) || !is_numeric($userid)) 35 { 36 echo "Not a valid userid!"; 37 return; 38 } 39 40$xml = begin_XML_for_XSLT(); 41$xml .= "<backurl>user.php</backurl>"; 42$xml .= "<title>CDash - Manage Subproject</title>"; 43$xml .= "<menutitle>CDash</menutitle>"; 44$xml .= "<menusubtitle>Subprojects</menusubtitle>"; 45 46@$projectid = $_GET["projectid"]; 47if ($projectid != NULL) 48 { 49 $projectid = pdo_real_escape_numeric($projectid); 50 } 51 52$Project = new Project; 53 54// If the projectid is not set and there is only one project we go directly to the page 55if(isset($edit) && !isset($projectid)) 56 { 57 $projectids = $Project->GetIds(); 58 if(count($projectids)==1) 59 { 60 $projectid = $projectids[0]; 61 } 62 } 63if(!isset($projectid)) 64 { 65 $projectid = -1; 66 } 67 68$User = new User; 69$User->Id = $userid; 70$Project->Id = $projectid; 71 72$role = $Project->GetUserRole($userid); 73 74if($User->IsAdmin()===FALSE && $role<=1) 75 { 76 echo "You don't have the permissions to access this page"; 77 return; 78 } 79 80$sql = "SELECT id,name FROM project"; 81if($User->IsAdmin() == false) 82 { 83 $sql .= " WHERE id IN (SELECT projectid AS id FROM user2project WHERE userid='$userid' AND role>0)"; 84 } 85$projects = pdo_query($sql); 86while($project_array = pdo_fetch_array($projects)) 87 { 88 $xml .= "<availableproject>"; 89 $xml .= add_XML_value("id",$project_array['id']); 90 $xml .= add_XML_value("name",$project_array['name']); 91 if($project_array['id']==$projectid) 92 { 93 $xml .= add_XML_value("selected","1"); 94 } 95 $xml .= "</availableproject>"; 96 } 97 98$Subproject = new Subproject(); 99$Subproject->SetProjectId($projectid); 100 101// If submit has been pressed 102@$addSubproject = $_POST["addSubproject"]; 103if(isset($addSubproject)) 104 { 105 $Subproject->Name = htmlspecialchars(pdo_real_escape_string($_POST["newsubproject"])); 106 $Subproject->Save(); 107 } 108 109// If delete is requested 110if(isset($_GET["delete"])) 111 { 112 $Subproject->Id = pdo_real_escape_numeric($_GET["delete"]); 113 $Subproject->Delete(); 114 } 115 116// If we should remove a dependency 117if(isset($_GET["removeDependency"])) 118 { 119 $Subproject->Id = pdo_real_escape_numeric($_GET["dependency"]); 120 $Subproject->RemoveDependency(pdo_real_escape_numeric($_GET["removeDependency"])); 121 } 122 123 124// If we should add a dependency 125if(isset($_POST["addDependency"])) 126 { 127 $Subproject->Id = pdo_real_escape_numeric($_POST["dependencyid"]); 128 $Subproject->AddDependency($_POST["dependency_selection_".$Subproject->Id]); 129 } 130 131/** We start generating the XML here */ 132// List the available project 133if($projectid>=0) 134 { 135 $xml .= "<project>"; 136 $xml .= add_XML_value("id",$Project->Id); 137 $xml .= add_XML_value("name_encoded",urlencode($Project->GetName())); 138 139 if($projectid>0) 140 { 141 $xml .= add_XML_value("name",$Project->GetName()); 142 143 $subprojectids = $Project->GetSubProjects(); 144 foreach($subprojectids as $subprojectid) 145 { 146 $SubProject1 = new SubProject(); 147 $SubProject1->Id = $subprojectid; 148 $xml .= "<subproject>"; 149 $xml .= add_XML_value("id",$subprojectid); 150 $xml .= add_XML_value("name",$SubProject1->GetName()); 151 152 $dependencies = $SubProject1->GetDependencies(); 153 154 foreach($dependencies as $dependency) 155 { 156 $Dependency = new SubProject(); 157 $Dependency->Id = $dependency; 158 $xml .= "<dependency>"; 159 $xml .= add_XML_value("id",$dependency); 160 $xml .= add_XML_value("name",$Dependency->GetName()); 161 $xml .= "</dependency>"; 162 } 163 164 foreach($subprojectids as $dependency) 165 { 166 if($dependency == $subprojectid 167 || in_array($dependency,$dependencies) 168 ) 169 { 170 continue; 171 } 172 $Dependency = new SubProject(); 173 $Dependency->Id = $dependency; 174 $xml .= "<availabledependency>"; 175 $xml .= add_XML_value("id",$dependency); 176 $xml .= add_XML_value("name",$Dependency->GetName()); 177 $xml .= "</availabledependency>"; 178 } 179 $xml .= "</subproject>"; 180 } 181 } // end projectid > 0 182 $xml .= add_XML_value("id",$Project->Id); 183 $xml .= "</project>"; 184 } 185 186$xml .= "</cdash>"; 187 188// Now doing the xslt transition 189generate_XSLT($xml,"manageSubproject"); 190 191} // end session OK 192?> 193 194