4 include('menulist.html');
5 include('configuration');
6 include('functions.php');
7 include('searchengine.php');
9 if ($_FILES["uploadedfile"]["error"] > 0) {
10 echo "Error: " . $_FILES["uploadedfile"]["error"] . "<br />";
14 //list of file types supported
15 if($_FILES["uploadedfile"]["type"] == "application/x-gzip"
16 || $_FILES["uploadedfile"]["type"] == "application/x-tar"
17 || $_FILES["uploadedfile"]["type"] == "application/x-bzip"
18 || $_FILES["uploadedfile"]["type"] == "application/zip") {
20 $folder = substr($_FILES["uploadedfile"]["name"], 0, strpos($_FILES["uploadedfile"]["name"],'.'));
21 move_uploaded_file($_FILES["uploadedfile"]["tmp_name"],
22 $tempfolder . $_FILES["uploadedfile"]["name"]);
25 if($_FILES["uploadedfile"]["type"] == "application/zip")
26 exec('unzip '.$tempfolder.$_FILES["uploadedfile"]["name"].' -d '.$tempfolder, $op, $status);
28 exec('tar -xf '.$tempfolder.$_FILES["uploadedfile"]["name"].' -C '.$tempfolder, $op, $status);
29 checkerror($status,"Error: cannot extract(tar error).");
31 //if user not logged in
32 if($_SESSION["slogged"] == false) {
34 if (file_exists($temprepo . $folder))
35 rmdirr($temprepo.$folder);
36 rename($tempfolder.$folder, $temprepo.$folder);
38 //send mail for review to admins
39 $subject = "Review: code upload at temporary repository";
40 $message = "Some developer has uploaded code who has not logged in.\n\nModule is stored in ".
41 $temprepo.$folder.".\n\nOutput of ccanlint: \n";
43 $toaddress = getccanadmin($db);
44 mail($toaddress, $subject, $message, "From: $frommail");
45 echo "<div align=\"center\"> Stored to temporary repository.
46 Mail will be send to admin to get verification of the code.<//div>";
47 unlink($tempfolder.$_FILES["uploadedfile"]["name"]);
52 exec($ccanlint.$tempfolder.$folder, $score, $status);
57 $exactpath = $repopath . $_SESSION['susername'] .'/';
59 if (file_exists($exactpath)) {
60 echo "<div align=\"center\"> Your another upload is in progress please wait...</div>";
64 //bzr local repo for commit
66 unset($op); exec($bzr_clone . $_SESSION['susername'], $op, $status);
67 checkerror($status, "Error: bzr local repo.");
70 //if module already exist
71 if (file_exists($exactpath . $ccan_home_dir . $folder)) {
73 // if owner is not same
74 if(!(getowner($ccan_home_dir . $folder, $db) == $_SESSION['susername'])) {
75 if(!file_exists($repopath . $ccan_home_dir . $folder . '-' . $_SESSION['susername']))
76 echo "<div align=\"center\">". $ccan_home_dir . $folder .
77 " already exists. Renaming to " . $folder . "-" . $_SESSION['susername'] . "</div>";
79 echo "<div align=\"center\">". $ccan_home_dir . $folder .
80 "-" . $_SESSION['susername'] . " already exists. Overwriting " .
81 $folder. "-" . $_SESSION['susername'] . "</div>";
82 $rename = $folder."-".$_SESSION['susername'];
86 echo "<div align=\"center\">".$repopath. $ccan_home_dir. $folder.
87 " already exists(uploaded by you). Overwriting ". $repopath. $folder."</div>";
91 //module not exist. store author to db
93 storefileowner($ccan_home_dir . $folder, $_SESSION['susername'], $db);
96 rmdirr($exactpath . $ccan_home_dir . $rename);
97 rename($tempfolder . $folder, $exactpath . $ccan_home_dir . $rename);
100 unset($op); exec($infotojson . $ccan_home_dir . $rename . " " . $ccan_home_dir.
101 $rename."/_info.c ". $ccan_home_dir . $rename . "/json_" . $rename . " "
102 . $_SESSION['susername']. " ../../" . $db, $op, $status);
103 checkerror($status,"Error: In infotojson.");
105 unset($op); exec('bzr add', $op, $status);
106 checkerror($status,"Error: bzr add error.");
108 unset($op); exec('bzr commit --unchanged -m "commiting from ccan web ' . $rename .
109 " " . $_SESSION['susername'] . '"', $op, $status);
110 checkerror($status,"Error: bzr commit error.");
112 unset($op); exec($bzr_push, $op, $status);
113 checkerror($status,"Error: bzr push error.");
115 unset($op); exec($create_dep_tar . " " . $ccan_home_dir. $rename . " ../../" .
116 $tar_dir . " ../../" . $db , $op, $status);
117 checkerror($status,"Error: bzr push error.");
121 echo "<div align=\"center\"> Stored to ". $ccan_home_dir . $rename . "</div>";
124 //if junk code (no _info.c etc)
127 rmdirr($junkcode.$folder.'-'.$_SESSION['susername']);
128 rename($tempfolder.$folder, $junkcode.$folder.'-'.$_SESSION['susername']);
131 $msg = 'Below is details for test.';
133 echo "<div align=\"center\"><table><tr><td> Score for code is low.
134 Cannot copy to repository. Moving to ". $junkcode.$folder.'-'.
135 $_SESSION['susername']."... </br></br>". $msg ." </br></br></td></tr><tr><td>";
137 foreach($score as $disp)
139 echo "</td></tr></table></div>";
142 unlink($tempfolder.$_FILES["uploadedfile"]["name"]);
145 echo "<div align=\"center\"> File type not supported </div>";
149 function checkerror($status, $msg)
152 echo "<div align=\"center\">" . $msg . "Contact ccan admin. </div>";
157 function getowner($filename, $db)
159 //getting owner of a file stored at db
160 $handle = sqlite3_open($db) or die("Could not open database");
161 $query = "SELECT owner FROM fileowner users where filename=\"$filename\"";
162 $result = sqlite3_query($handle, $query) or die("Error in query: ".sqlite3_error($handle));
163 $row = sqlite3_fetch_array($result);
164 return $row["owner"];
167 function storefileowner($filename, $owner, $db)
169 //storing owner of a file stored at db
170 $handle = sqlite3_open($db) or die("Could not open database");
171 $query = "insert into fileowner values(\"$filename\", \"$owner\")";
172 $result = sqlite3_exec($handle, $query) or die("Error in query: ".sqlite3_error($handle));