some more on adhoc
[glcas.git] / plugins / adhoc.php
1 <?php 
2
3 error_log("adhoc loaded");
4
5 global $URL_HANDLERS;
6 $URL_HANDLERS["adhoc.*"] = "GLCASAdhoc";
7
8 class GLCASAdhoc {
9         function __construct($config)
10         {
11                 $this->config = $config;
12                 error_log("constructor for GLCASAdhoc");
13                 
14                 $repostore = $this->config->getConfigVar("storagelocation");
15                 if(!is_dir("$repostore/adhoc")) {
16                         error_log("Creating dir for adhoc component");
17                         mkdir("$repostore/adhoc");
18                 }
19                 
20         }
21         
22         function go($url)
23         {
24                 if(isset($_REQUEST["action"])) {
25                         switch($_REQUEST["action"]) {
26                                 case "addpackage":
27                                         error_log("in updaterepo");
28                                         GLCASpageBuilder($this,"addPackage");
29                                         return;
30                         }
31                 }
32                 
33                 GLCASpageBuilder($this,"mainBody");
34                 return;
35                 
36         }
37         
38         function addPackage($url)
39         {
40                 $repostore = $this->config->getConfigVar("storagelocation");
41                 
42                 if(!isset($_REQUEST["pkgname"])) {
43                         echo "<font color=\"red\">Error: No package name set</font><br>";
44                 } 
45                 if($_REQUEST["pkgname"] == "") {
46                         echo "<font color=\"red\">Error: Package name cant be blank</font><br>";
47                 }
48                 
49
50                 $fname = "";
51                 $lname = "";
52                 $ultfileurl = "";
53                 if($_FILES["uploadedfile"]["name"] == "") {
54                         $uploaded = false;
55                         $ultfileurl = "uploaded";
56                 } else {
57                         $fname = $_FILES["uploadedfile"]["tmp_name"];
58                         $lname = $_FILES["uploadedfile"]["name"];
59                         $uploaded = true;
60                 }
61                 
62                 if($_REQUEST["fileurl"] == "") {
63                         $fileurl = false;
64                         $ultfileurl = $_REQUEST["fileurl"];
65                 } else {
66                         $fname = $_REQUEST["fileurl"];
67                         $lname = basename($fname);
68                         $fileurl = true;
69                 }
70                 
71                 if(!$uploaded && !$fileurl) {
72                         echo "<font color=\"red\">Error: no uploaded file and no file url, you need one or the other buddy</font><br>";
73                 }
74                 
75                 $getfile = "";
76                 if($fileurl) {
77                         $getfile = file_get_contents($_REQUEST["fileurl"]);
78                 }
79                 
80                 if($uploaded||$fileurl) {
81                         echo "Got a file named $fname, $lname";
82                 }
83                 
84                 $pkgs = unserialize($this->config->getConfigVar("adhocpackages"));
85                 
86                 $n = -1;
87                 foreach($pkgs as $key => $var) {
88                         $n = $key;
89                 }
90                 $n++;
91                 
92                 echo "Would add package as $n";
93                 
94                 $pkgs[$n]["name"] = $_REQUEST["pkgname"];
95                 $pkgs[$n]["arch"] = $_REQUEST["arch"];
96                 $pkgs[$n]["type"] = $_REQUEST["type"];
97                 $pkgs[$n]["fileurl"] = $ultfileurl;
98
99                 if($uploaded) {
100                         copy("$fname", "$repostore/adhoc/$n");
101                 } else {
102                         file_put_contents("$repostore/adhoc/$n", $fetfile);
103                 }
104                 
105                 $this->config->setConfigVar("adhocpackages", serialize($pkgs));
106                 $this->config->saveConfig();
107                 
108                 echo "Done";
109                 
110                 
111                 echo "<pre>";
112                 print_r($_SERVER);
113                 print_r($_FILES);
114                 print_r($_REQUEST);
115                 print_r($pkgs);
116                 echo "</pre>";
117         }
118         
119         
120         function mainBody($url)
121         {
122                 echo "<h2>Packages</h2>";
123                 
124                 $kos = getKnownOSList();
125                 
126                 echo "<hr>";
127                 echo "<h3>Add a Package</h3><br>";
128                 $pkgs = unserialize($this->config->getConfigVar("adhocpackages"));
129                 foreach($pkgs as $key => $var) {
130                         $name = $var["pkgname"];
131                         $arch = $var["arch"];
132                         $type = $var["type"];
133                         echo "$key: $name $arch, $type<br>";
134                 }
135                 echo "<form enctype=\"multipart/form-data\" method=\"post\" action=\"?action=addpackage\">";
136                 echo "Name <input type=\"text\" name=\"pkgname\"><br>";
137                 echo "Arch <select name=\"arch\">";
138                 foreach($kos["pkgarch"] as $key => $val) {
139                         echo "<option value=\"$key\">$val</option>";
140                 }
141                 echo "</select><br>";
142                 echo "Type <select name=\"type\">";
143                 foreach($kos["pkg"] as $key => $val) {
144                         echo "<option value=\"$key\">$val</option>";
145                 }
146                 echo "</select><br>";
147                 echo "Upload <input type=\"file\" name=\"uploadedfile\"><br>";
148                 echo "From URL <input type=\"text\" name=\"fileurl\"><br>";
149                 echo "<input type=\"submit\" name=\"add\" value=\"Add\">";
150                 echo "</form>";
151         }
152 }
153
154 ?>