3 error_log("adhoc loaded");
6 $URL_HANDLERS["adhoc.*"] = "GLCASAdhoc";
7 global $BASE_URL, $MENU_ITEMS;
8 $MENU_ITEMS["20adhoc"]["name"] = "Adhoc Packages";
9 $MENU_ITEMS["20adhoc"]["link"] = "$BASE_URL/adhoc";
13 function __construct($config)
15 $this->config = $config;
16 error_log("constructor for GLCASAdhoc");
18 $repostore = $this->config->getConfig("storagelocation");
19 if(!is_dir("$repostore/adhoc")) {
20 error_log("Creating dir for adhoc component");
21 mkdir("$repostore/adhoc");
28 error_log("ADHOC: url is $url in");
29 $tags = explode("/", $url);
31 error_log("tags 1 is set: \"".$tags[1]."\"");
33 if($this->doPackageRequest($tags[1])) return 0;
35 GLCASpageBuilder($this, "doPackageList");
39 if(isset($_REQUEST["action"])) {
40 switch($_REQUEST["action"]) {
42 error_log("in updaterepo");
43 GLCASpageBuilder($this,"addPackage");
46 error_log("in delete pkg");
47 GLCASpageBuilder($this, "delPackage");
52 GLCASpageBuilder($this,"mainBody");
57 function doPackageList()
59 echo "im a package list\n";
62 function doPackageRequest($package)
64 echo "i got a request for $package\n";
69 function delPackage($url)
71 $repostore = $this->config->getConfig("storagelocation");
73 $pkgid = $_REQUEST["pkgid"];
74 $pkgname = $_REQUEST["pkgname"];
76 $this->config->delAllData("adhocpkgdata", $pkgid);
77 $this->config->delData("adhoc", "pkglist", "$pkgname", "$pkgid");
79 global $WEB_ROOT_FS, $URL_HANDLERS, $BASE_URL;
80 header("Location: $BASE_URL/adhoc");
85 function addPackage($url)
87 $repostore = $this->config->getConfig("storagelocation");
89 if(!isset($_REQUEST["pkgname"])) {
90 if(isset($_REQUEST["origpkg"])) if($_REQUEST["origpkg"] == -1) {
91 echo "<font color=\"red\">Error: No package name set</font><br>";
95 if($_REQUEST["pkgname"] == "") {
96 if(isset($_REQUEST["origpkg"])) if($_REQUEST["origpkg"] == -1) {
97 echo "<font color=\"red\">Error: Package name cant be blank</font><br>";
106 if($_FILES["uploadedfile"]["name"] == "") {
108 $ultfileurl = "uploaded";
110 $fname = $_FILES["uploadedfile"]["tmp_name"];
111 $lname = $_FILES["uploadedfile"]["name"];
115 if($_REQUEST["fileurl"] == "") {
117 $ultfileurl = $_REQUEST["fileurl"];
119 $fname = $_REQUEST["fileurl"];
120 $lname = basename($fname);
124 if(!$uploaded && !$fileurl) {
125 echo "<font color=\"red\">Error: no uploaded file and no file url, you need one or the other buddy</font><br>";
131 $getfile = file_get_contents($_REQUEST["fileurl"]);
134 if($uploaded||$fileurl) {
135 echo "Got a file named $fname, $lname";
138 $myname = $_REQUEST["pkgname"];
139 $myarch = $_REQUEST["arch"];
140 $mytype = $_REQUEST["type"];
141 $myfileurl = $ultfileurl;
143 if(isset($_REQUEST["origpkg"])) if($_REQUEST["origpkg"] != -1) {
144 $n = $_REQUEST["origpkg"];
145 $this->config->addData("adhocpkgdata", "$n", "arch", $myarch);
146 $this->config->addData("adhocpkgdata", "$n", "type", $mytype);
147 $outputfile = "$repostore/adhoc/$n.$myarch.$mytype";
149 copy("$fname", "$outputfile");
151 file_put_contents("$outputfile", $getfile);
154 global $WEB_ROOT_FS, $URL_HANDLERS, $BASE_URL;
155 header("Location: $BASE_URL/adhoc");
159 // assuming add a new
161 $pkglist = $this->config->getData("adhoc", "pkglist");
162 if($pkglist !== false) foreach($pkglist as $key => $val) {
166 error_log("would add package as $n");
168 $this->config->addData("adhoc", "pkglist", "$myname", $n);
169 $this->config->addData("adhocpkgdata", "$n", "arch", $myarch);
170 $this->config->addData("adhocpkgdata", "$n", "type", $mytype);
173 $outputfile = "$repostore/adhoc/$n.$myarch.$mytype";
175 copy("$fname", "$outputfile");
177 file_put_contents("$outputfile", $getfile);
180 global $WEB_ROOT_FS, $URL_HANDLERS, $BASE_URL;
181 header("Location: $BASE_URL/adhoc");
186 function mainBody($url)
188 echo "<h2>Packages</h2>";
190 /* TODO: to new config
191 $pkgs = unserialize($this->config->getConfig("adhocpackages"));
193 $pkgs = $this->config->getData("adhoc");
195 if($pkgs !== false) {
196 echo "<table border=\"1\"><tr><th>Name</th><th>Package Types</th><th>Architecture</th><th>Control</th></tr>";
198 foreach($pkgs as $key => $var) {
199 $name = $var["name"];
201 $arch_v = $this->config->getData("adhocpkgdata", $id, "arch");
202 $arch = $arch_v[0]["val"];
203 $type_v = $this->config->getData("adhocpkgdata", $id, "type");
204 $type = $type_v[0]["val"];
205 echo "<tr><td>$name</td><td>$type</td><td>$arch</td><td><a href=\"?action=deletepkg&pkgid=$id&pkgname=$name\">Delete</a></td></tr>";
206 if(count($arch_v) > 1) {
207 for($i=1; $i < count($arch_v); $i++) {
208 $arch = $arch_v[$i]["val"];
209 $type_v = $this->config->getData("adhocpkgdata", $id, "type");
210 $type = $type_v[$i]["val"];
211 echo "<tr><td></td><td>$type</td><td>$arch</td><td></td></tr>";
218 $kos = getKnownOSList();
221 echo "<h3>Add a Package</h3><br>";
222 echo "<form enctype=\"multipart/form-data\" method=\"post\" action=\"?action=addpackage\">";
223 echo "Name <input type=\"text\" name=\"pkgname\">";
224 if($pkgs !== false) {
225 echo "or Add version of <select name=\"origpkg\">";
226 echo "<option value=\"-1\" default>None</option>";
227 foreach($pkgs as $key=>$var) {
229 $name = $var["name"];
230 echo "<option value=\"$id\">$name</option>";
232 echo "</select><br>";
235 echo "Arch <select name=\"arch\">";
236 foreach($kos["pkgarch"] as $key => $val) {
237 echo "<option value=\"$key\">$val</option>";
239 echo "</select><br>";
240 echo "Type <select name=\"type\">";
241 foreach($kos["pkg"] as $key => $val) {
242 echo "<option value=\"$key\">$val</option>";
244 echo "</select><br>";
245 echo "Upload <input type=\"file\" name=\"uploadedfile\"><br>";
246 echo "From URL <input type=\"text\" name=\"fileurl\"><br>";
247 echo "<input type=\"submit\" name=\"add\" value=\"Add\">";