+
+1) {
+ //Too many e-mails match, store individual data for error block.
+ $r++;
+ $emailerrors[$a]["foundemails"][$r] = $useremail;
+ }
+ $authorids[] = $userid;
+ $authoremails[] = $useremail;
+ }
+ if ($numresults !="1") {
+ //No Valid Entry Found for this E-Mail or too many, kill and store data for error block.
+ $emailerrors[$a]["author"] = "$author";
+ $updateauthors = "false"; // Just takes one of these to kill the author update.
+ }
+}
+unset($a,$r);
+
+
+
+if ($_POST["name"] AND $_POST["type"] AND $_POST["authors"] AND $updateauthors !="false" AND $_POST["version"] AND $_POST["osid"] AND $_POST["filename"] AND $_POST["filesize"] AND $_POST["description"] AND $minappver AND $maxappver) {
+//All Needed Info is in the arrays, procceed with inserting...
+
+//Create DIV for Box around the output...
+ echo"
Adding Item... Please Wait...
\n";
+ echo"
\n";
+
+//Phase One, Main Data
+$name = $_POST["name"];
+$homepage = $_POST["homepage"];
+$description = $_POST["description"];
+$item_id = $_POST["item_id"];
+$guid = $_POST["guid"];
+$type = $_POST["type"];
+if ($_POST["mode"]=="update") {
+$sql = "UPDATE `t_main` SET `Name`='$name', `Homepage`='$homepage', `Description`='$description', `DateUpdated`=NOW(NULL) WHERE `ID`='$item_id' LIMIT 1";
+} else {
+$sql = "INSERT INTO `t_main` (`GUID`, `Name`, `Type`, `Homepage`,`Description`,`DateAdded`,`DateUpdated`) VALUES ('$guid', '$name', '$type', '$homepage', '$description', NOW(NULL), NOW(NULL));";
+}
+ $sql_result = mysql_query($sql, $connection) or trigger_error("MySQL Error ".mysql_errno().": ".mysql_error()."", E_USER_NOTICE);
+if ($sql_result) {echo"Updating/Adding record for $name... \n";}
+
+
+//Get ID for inserted row... if we don't know it already
+if (!$_POST[item_id] and $_POST["mode"] !=="update") {
+ $sql = "SELECT `ID` FROM `t_main` WHERE `GUID`='$_POST[guid]' AND `Name`='$_POST[name]' LIMIT 1";
+ $sql_result = mysql_query($sql, $connection) or trigger_error("MySQL Error ".mysql_errno().": ".mysql_error()."", E_USER_NOTICE);
+ $row = mysql_fetch_array($sql_result);
+ $id = $row["ID"];
+ } else {
+ $id = $_POST["item_id"];
+ }
+
+
+//Phase 2 -- Commit Updates to AuthorXref tables.. with the ID and UserID.
+if ($updateauthors != "false") {
+ //Remove Current Authors
+ $sql = "DELETE FROM `t_authorxref` WHERE `ID` = '$id'";
+ $sql_result = mysql_query($sql, $connection) or trigger_error("MySQL Error ".mysql_errno().": ".mysql_error()."", E_USER_NOTICE);
+
+ //Add New Authors based on $authorids
+ sort($authorids);
+ foreach ($authorids as $authorid) {
+ $sql = "INSERT INTO `t_authorxref` (`ID`, `UserID`) VALUES ('$id', '$authorid');";
+ $result = mysql_query($sql) or trigger_error("MySQL Error ".mysql_errno().": ".mysql_error()."", E_USER_NOTICE);
+ }
+ if ($result) { echo"Authors added... \n"; }
+} else {
+ echo"ERROR: Could not update Authors list, please fix the errors printed below and try again... \n";
+}
+
+unset($authors); //Clear from Post..
+
+
+// Phase 3, t_categoryxref
+
+if (!$_POST["categories"]) {
+//No Categories defined, need to grab one to prevent errors...
+ $sql = "SELECT `CategoryID` FROM `t_categories` WHERE `CatType`='$type' AND `CatName`='Miscellaneous' LIMIT 1";
+ $sql_result = mysql_query($sql, $connection) or trigger_error("MySQL Error ".mysql_errno().": ".mysql_error()."", E_USER_NOTICE);
+ while ($row = mysql_fetch_array($sql_result)) {
+ $_POST["categories"] = array("$row[CategoryID]");
+ }
+
+}
+
+ //Delete Current Category Linkages...
+ $sql = "DELETE FROM `t_categoryxref` WHERE `ID` = '$id'";
+ $sql_result = mysql_query($sql, $connection) or trigger_error("MySQL Error ".mysql_errno().": ".mysql_error()."", E_USER_NOTICE);
+
+ //Add New Categories from $_POST["categories"]
+ foreach ($_POST["categories"] as $categoryid) {
+ $sql = "INSERT INTO `t_categoryxref` (`ID`, `CategoryID`) VALUES ('$id', '$categoryid');";
+ $result = mysql_query($sql) or trigger_error("MySQL Error ".mysql_errno().": ".mysql_error()."", E_USER_NOTICE);
+ }
+ if ($result) {echo"Categories added... \n"; }
+
+
+//Phase 4, t_version rows
+
+//Construct Internal App_Version Arrays
+$i=0;
+$sql = "SELECT `AppName`, `int_version`, `major`, `minor`, `release`, `SubVer`, `shortname` FROM `t_applications` ORDER BY `AppName`, `major` DESC, `minor` DESC, `release` DESC, `SubVer` DESC";
+ $sql_result = mysql_query($sql, $connection) or trigger_error("MySQL Error ".mysql_errno().": ".mysql_error()."", E_USER_NOTICE);
+ while ($row = mysql_fetch_array($sql_result)) {
+ $i++;
+ $appname = $row["AppName"];
+ $int_version = $row["int_version"];
+ $subver = $row["SubVer"];
+ $release = "$row[major].$row[minor]";
+ if ($row["release"]) {$release = "$release.$row[release]";}
+ if ($subver !=="final") {$release="$release$subver";}
+ $app_internal_array[$release] = $int_version;
+ $app_shortname[strtolower($appname)] = $row["shortname"];
+ }
+
+ $sql2 = "SELECT `AppName`,`AppID` FROM `t_applications` GROUP BY `AppName` ORDER BY `AppName` ASC";
+ $sql_result2 = mysql_query($sql2, $connection) or trigger_error("MySQL Error ".mysql_errno().": ".mysql_error()."", E_USER_NOTICE);
+ while ($row2 = mysql_fetch_array($sql_result2)) {
+ $appname = $row2["AppName"];
+ $appid = $row2["AppID"];
+ $minappver = $_POST["$appname-minappver"];
+ $maxappver = $_POST["$appname-maxappver"];
+
+if ($minappver and $maxappver) {
+
+if ($app_internal_array["$minappver"]) {$minappver_int = $app_internal_array["$minappver"]; }
+if ($app_internal_array["$maxappver"]) {$maxappver_int = $app_internal_array["$maxappver"]; }
+if (!$minappver_int) {$minappver_int = $minappver;}
+if (!$maxappver_int) {$maxappver_int = $maxappver;}
+
+
+$version = $_POST["version"];
+$osid = $_POST["osid"];
+$filesize = $_POST["filesize"];
+$uri = ""; //we don't have all the parts to set a uri, leave blank and fix when we do.
+$notes = $_POST["notes"];
+
+//If a record for this item's exact version, OS, and app already exists, find it and delete it, before inserting
+ $sql3 = "SELECT `vID` from `t_version` TV INNER JOIN `t_applications` TA ON TA.AppID=TV.AppID WHERE `OSID`='$osid' AND `AppName` = '$appname' AND TV.Version='$version' ORDER BY `vID` ASC";
+ $sql_result3 = mysql_query($sql3, $connection) or trigger_error("MySQL Error ".mysql_errno().": ".mysql_error()."", E_USER_NOTICE);
+ while ($row = mysql_fetch_array($sql_result3)) {
+ $sql = "DELETE FROM `t_version` WHERE `vID`='$row[vID]' LIMIT 1";
+ $sql_result = mysql_query($sql, $connection) or trigger_error("MySQL Error ".mysql_errno().": ".mysql_error()."", E_USER_NOTICE);
+ if ($sql_result) { echo"Warning! A version Record already exists for this item's Application/OS/Version combination. Deleting. \n"; }
+ }
+
+$sql = "INSERT INTO `t_version` (`ID`, `Version`, `OSID`, `AppID`, `MinAppVer`, `MinAppVer_int`, `MaxAppVer`, `MaxAppVer_int`, `Size`, `URI`, `Notes`, `DateAdded`, `DateUpdated`) VALUES ('$id', '$version', '$osid', '$appid', '$minappver', '$minappver_int', '$maxappver', '$maxappver_int', '$filesize', '$uri', '$notes', NOW(NULL), NOW(NULL));";
+ $sql_result = mysql_query($sql, $connection) or trigger_error("MySQL Error ".mysql_errno().": ".mysql_error()."", E_USER_NOTICE);
+ if ($sql_result) {echo"Added $name version $version for $appname \n"; $apps_array[]=$app_shortname[strtolower($appname)];}
+
+$sql = "SELECT `vID` from `t_version` WHERE `id` = '$id' ORDER BY `vID` DESC LIMIT 1";
+ $sql_result = mysql_query($sql, $connection) or trigger_error("MySQL Error ".mysql_errno().": ".mysql_error()."", E_USER_NOTICE);
+ $row = mysql_fetch_array($sql_result);
+ $vid_array[] = $row["vID"];
+}
+}
+
+$sql = "SELECT `OSName` FROM `t_os` WHERE `OSID`='$osid' LIMIT 1";
+ $sql_result = mysql_query($sql, $connection) or trigger_error("MySQL Error ".mysql_errno().": ".mysql_error()."", E_USER_NOTICE);
+ $row = mysql_fetch_array($sql_result);
+ $osname = $row["OSName"];
+
+
+//Construct the New Filename
+$filename_array = explode(".",$_POST[filename]);
+$filename_count = count($filename_array)-1;
+$fileext = $filename_array[$filename_count];
+
+$itemname = str_replace(" ","_",$name);
+$j=0; $app="";
+$app_count = count($apps_array);
+foreach ($apps_array as $app_val) {
+$j++;
+$apps .="$app_val";
+if ($j<$app_count) {$apps .="+"; }
+}
+$newfilename = "$itemname-$version-$apps";
+if (strtolower($osname) !=="all") {$newfilename .="-".strtolower($osname).""; }
+$newfilename .=".$fileext";
+
+
+//Move temp XPI to home for approval queue items...
+$oldpath = "$repositorypath/temp/$_POST[filename]";
+$newpath = "$repositorypath/approval/".strtolower($newfilename);
+if (file_exists($oldpath)) {
+ rename("$oldpath","$newpath");
+ echo"File $newfilename saved to disk... \n";
+}
+$uri = str_replace("$repositorypath/approval/","http://$sitehostname/developers/approvalfile.php/",$newpath);
+//echo"$newfilename ($oldpath) ($newpath) ($uri) \n";
+
+foreach ($vid_array as $vid) {
+ $sql = "UPDATE `t_version` SET `URI`='$uri' WHERE `vID`='$vid'";
+ $sql_result = mysql_query($sql, $connection) or trigger_error("MySQL Error ".mysql_errno().": ".mysql_error()."", E_USER_NOTICE);
+}
+
+//Approval Queue
+$_SESSION["trusted"]=="FALSE";
+ //Trusted User Code Not Yet Implemented, needs a shared function w/ the approval queue
+ // for file moving, creation. (and sql updating?)
+ //Check if the item belongs to the user, (special case for where admins are trusted, the trust only applies to their own work.)
+ $sql = "SELECT `UserID` from `t_authorxref` WHERE `ID`='$id' AND `UserID` = '$_SESSION[uid]' LIMIT 1";
+ $sql_result = mysql_query($sql, $connection) or trigger_error("MySQL Error ".mysql_errno().": ".mysql_error()."", E_USER_NOTICE);
+ if (mysql_num_rows($sql_result)=="1" AND $_SESSION["trusted"]=="TRUE") {
+ //User is trusted and the item they're modifying inheirits that trust.
+ $action = "Approval+";
+ $comments = "Auto-Approval for Trusted User";
+ //$typenames = array("E"=>"extensions","T"=>"themes");
+ //$typename = $typenames[$type];
+
+ //$uri = strtolower(str_replace("http://$sitehostname/developers/approvalfile.php/","http://ftp.mozilla.org/pub/mozilla.org/$typename/$itemname/",$newpath));
+ //foreach ($vid_array as $vid) {
+ // $sql = "UPDATE `t_version` SET `URI`='$uri' WHERE `vID`='$vid'";
+ // $sql_result = mysql_query($sql, $connection) or trigger_error("MySQL Error ".mysql_errno().": ".mysql_error()."", E_USER_NOTICE);
+ //}
+
+ } else {
+ $action="Approval?";
+ $comments="";
+ }
+
+
+//Firstly, log the comments and action taken..
+$userid = $_SESSION["uid"];
+
+if (!$vid_array) { $vid_array = array(); }
+foreach ($vid_array as $vid) {
+$sql = "INSERT INTO `t_approvallog` (`ID`, `vID`, `UserID`, `action`, `date`, `comments`) VALUES ('$id', '$vid', '$userid', '$action', NOW(NULL), '$comments');";
+ $sql_result = mysql_query($sql, $connection) or trigger_error("MySQL Error ".mysql_errno().": ".mysql_error()."", E_USER_NOTICE);
+}
+
+
+echo"Process Complete...
\n";
+echo"$name version $version has been added to the Mozilla Update database and is awaiting review by an editor, you will be notified when an editor reviews it. \n";
+echo"To review or make changes to your submission, visit the Item Details page... \n";
+
+echo"