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);
29 exec('tar -xf '.$tempfolder.$_FILES["uploadedfile"]["name"].' -C '.$tempfolder, $op, $status);
31 checkerror($status[0],"Error: cannot extract(tar error).");
34 exec('chmod -R 0777 '. $tempfolder.$folder, $status);
35 checkerror($status[0],"Error: chmod execution error.");
38 exec($ccanlint.$tempfolder.$folder, $score, $status);
39 //checkerror($status,"Error: ccanlint execution error.");
41 //if user not logged in
42 if($_SESSION["slogged"] == false) {
44 if (file_exists($temprepo . $folder))
45 rmdirr($temprepo.$folder);
46 rename($tempfolder.$folder, $temprepo.$folder);
48 //send mail for review to admins
49 $subject = "Review: code upload at temporary repository";
50 $message = "Some developer has uploaded code who has not logged in.\n\nModule is stored in ".$temprepo.$folder.".\n\nOutput of ccanlint: \n";
51 foreach($score as $disp)
52 $message = $message.$disp."\n";
54 $toaddress = getccanadmin($db);
55 mail($toaddress, $subject, $message, "From: $frommail");
56 echo "<div align=\"center\"> Stored to temporary repository. Mail will be send to admin to get verification of the code.<//div>";
57 unlink($tempfolder.$_FILES["uploadedfile"]["name"]);
64 //if module already exist
65 if (file_exists($repopath.$ccan_home_dir . $folder)) {
66 // if owner is not same
67 if(!(getowner($repopath.$ccan_home_dir.$folder, $db) == $_SESSION['susername'])) {
68 if(!file_exists($repopath . $ccan_home_dir. $folder.'-'.$_SESSION['susername']))
69 echo "<div align=\"center\">".$repopath . $ccan_home_dir. $folder . " already exists. Renaming to ". $folder."-".$_SESSION['susername']."</div>";
71 echo "<div align=\"center\">".$repopath . $ccan_home_dir. $folder."-".$_SESSION['susername'] . " already exists. Overwriting ". $folder."-".$_SESSION['susername']."</div>";
72 $rename = $folder."-".$_SESSION['susername'];
75 echo "<div align=\"center\">".$repopath. $ccan_home_dir. $folder. " already exists(uploaded by you). Overwriting ". $repopath. $folder."</div>";
77 //module not exist. store author to db
79 storefileowner($repopath . $ccan_home_dir. $folder, $_SESSION['susername'], $db);
81 rmdirr($repopath. $ccan_home_dir. $rename);
82 rename($tempfolder.$folder, $repopath. $ccan_home_dir. $rename);
83 echo "<div align=\"center\"> Stored to ".$repopath . $ccan_home_dir. $rename . "</div>";
85 exec($infotojson . $repopath. $ccan_home_dir. $rename."/_info.c ". $repopath. $ccan_home_dir. $rename."/json_".$rename. " ". $_SESSION['susername']." ".$db, $status);
86 checkerror($status[0],"Error: In infotojson.");
87 //createsearchindex($rename, $repopath.$rename, $infofile, $db, $_SESSION['susername']);
90 //if junk code (no _info.c etc)
92 rmdirr($junkcode.$folder.'-'.$_SESSION['susername']);
93 rename($tempfolder.$folder, $junkcode.$folder.'-'.$_SESSION['susername']);
95 $msg = 'Below is details for test.';
96 echo "<div align=\"center\"><table><tr><td> Score for code is low. Cannot copy to repository. Moving to ". $junkcode.$folder.'-'.$_SESSION['susername']."... </br></br>". $msg ." </br></br></td></tr><tr><td>";
97 foreach($score as $disp)
99 echo "</td></tr></table></div>";
101 unlink($tempfolder.$_FILES["uploadedfile"]["name"]);
104 echo "<div align=\"center\"> File type not supported </div>";
108 function checkerror($status, $msg)
111 echo "<div align=\"center\">" . $msg . "Contact ccan admin. </div>";
116 function getowner($filename, $db)
118 //getting owner of a file stored at db
119 $handle = sqlite3_open($db) or die("Could not open database");
120 $query = "SELECT owner FROM fileowner users where filename=\"$filename\"";
121 $result = sqlite3_query($handle, $query) or die("Error in query: ".sqlite3_error($handle));
122 $row = sqlite3_fetch_array($result);
123 return $row["owner"];
126 function storefileowner($filename, $owner, $db)
128 //storing owner of a file stored at db
129 $handle = sqlite3_open($db) or die("Could not open database");
130 $query = "insert into fileowner values(\"$filename\", \"$owner\")";
131 $result = sqlite3_exec($handle, $query) or die("Error in query: ".sqlite3_error($handle));