";
$AddonPanel = "
Addon Management |
Name |
Version |
Uploaded |
Enabled |
Files |
URL |
Delete |
Status |
Permission |
";
$sql = "SELECT * FROM `".$config['db_tables_addons']."` ORDER BY `name`";
$result = mysql_query($sql,$dblink);
while ($row = mysql_fetch_assoc($result)){
$sql = "SELECT * FROM `".$config['db_tables_files']."` WHERE `addon_name` = '".addslashes($row['name'])."'";
$result2 = mysql_query($sql,$dblink);
$numFiles = mysql_num_rows($result2);
$AddonName = $row['name'];
$homepage = $row['homepage'];
$version = $row['version'];
$time = date("M jS y H:i",$row['time_uploaded']);
$url = $row['dl_url'];
$addonID = $row['id'];
if ($row['enabled'] == "1"){
$enabled = "yes";
$disableHREF = "Disable";
}else{
$enabled="no"; $disableHREF = "Enable";
}
if ($row['privileged'] == "1"){
$privilegedHREF = "Privileged";
}else{
$privilegedHREF = "Standard";
}
if ($row['homepage'] == ""){
$homepage = "./";
}
$AddonPanel .="
$AddonName |
$version |
$time |
$enabled |
$numFiles |
Check |
Delete! |
$disableHREF |
$privilegedHREF |
";
}
$AddonPanel .= "
";
EchoPage("
$AddonPanel
$addonInputForm
","Addons");
}
function DisableAddon(){
global $dblink, $config, $url, $_REQUEST, $_SERVER;
$id = $_REQUEST['ADDONID'];
$sql = "UPDATE `".$config['db_tables_addons']."` SET `enabled` = '0' WHERE `id` = '$id' LIMIT 1 ;";
mysql_query($sql,$dblink);
MySqlCheck($dblink,$sql);
}
function EnableAddon(){
global $dblink, $config, $url, $_REQUEST, $_SERVER;
$id = $_REQUEST['ADDONID'];
$sql = "UPDATE `".$config['db_tables_addons']."` SET `enabled` = '1' WHERE `id` = '$id' LIMIT 1 ;";
mysql_query($sql,$dblink);
MySqlCheck($dblink,$sql);
}
function RestrictAddon(){
global $dblink, $config, $url, $_REQUEST, $_SERVER;
$id = $_REQUEST['ADDONID'];
$sql = "UPDATE `".$config['db_tables_addons']."` SET `privileged` = '1' WHERE `id` = '$id' LIMIT 1 ;";
mysql_query($sql,$dblink);
MySqlCheck($dblink,$sql);
}
function UnRestrictAddon(){
global $dblink, $config, $url, $_REQUEST, $_SERVER;
$id = $_REQUEST['ADDONID'];
$sql = "UPDATE `".$config['db_tables_addons']."` SET `privileged` = '0' WHERE `id` = '$id' LIMIT 1 ;";
mysql_query($sql,$dblink);
MySqlCheck($dblink,$sql);
}
function DeleteAddon(){
global $dblink, $config, $url, $_REQUEST, $_SERVER;
$sep = DIRECTORY_SEPARATOR;
$id = $_REQUEST['ADDONID'];
$sql = "SELECT * FROM `".$config['db_tables_addons']."` WHERE `id` = '$id'";
$result = mysql_query($sql, $dblink);
$row = mysql_fetch_assoc($result);
$name = $row['name'];
$AddonUrl = $row['dl_url'];
$k = explode("/",$AddonUrl);
$fileName = $k[count($k) - 1];
$scriptpath = explode($sep,$_SERVER['PATH_TRANSLATED']);
array_pop($scriptpath);
//$LocalPath = implode($sep,$scriptpath).$sep.$config['addon_folder'].$sep.$fileName;
$LocalPath = dirname($_SERVER["SCRIPT_FILENAME"]).$sep.$config['addon_folder'].$sep.$fileName;
unlink($LocalPath);
$sql = "DELETE FROM `".$config['db_tables_addons']."` WHERE `id` = '$id'";
mysql_query($sql,$dblink);
$sql = "DELETE FROM `".$config['db_tables_files']."` WHERE `addon_name` LIKE '".addslashes($name)."';";
mysql_query($sql,$dblink);
}
function unzipUsingPCLZIP($file, $path) {
require_once('pclzip.lib.php');
$archive = new PclZip($file);
//$list = $archive->extract(PCLZIP_OPT_PATH, $path, PCLZIP_OPT_REMOVE_ALL_PATH);
//$archive->extract(PCLZIP_OPT_PATH, $path, PCLZIP_OPT_REMOVE_ALL_PATH);
$archive->extract(PCLZIP_OPT_PATH, $path); //removed PCLZIP_OPT_REMOVE_ALL_PATH to preserve file structure
}
function unzip($file, $path) {
$sep = DIRECTORY_SEPARATOR;
$zip = zip_open($file);
if ($zip) {
while ($zip_entry = zip_read($zip)) {
if (zip_entry_filesize($zip_entry) > 0) {
// str_replace must be used under windows to convert "/" into "\"
$complete_path = $path.str_replace('/',$sep,dirname(zip_entry_name($zip_entry)));
$complete_name = $path.str_replace ('/',$sep,zip_entry_name($zip_entry));
if(!file_exists($complete_path)) {
$tmp = '';
foreach(explode($sep,$complete_path) AS $k) {
$tmp .= $k.$sep;
if(!file_exists($tmp)) {
mkdir($tmp, 0777);
chmod($tmp,0777);
}
}
}
if (zip_entry_open($zip, $zip_entry, "r")) {
$fd = fopen($complete_name, 'w');
fwrite($fd, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)));
fclose($fd);
zip_entry_close($zip_entry);
}
}
}
zip_close($zip);
}
}
function ls($dir, $array){
$sep = DIRECTORY_SEPARATOR;
$handle = opendir($dir);
for(;(false !== ($readdir = readdir($handle)));){
if($readdir != '.' && $readdir != '..' && $readdir != 'index.htm' && $readdir != 'index.html'){
$path = $dir.$sep.$readdir;
if(is_dir($path)) $array = ls($path, $array);
if(is_file($path)){$array[count($array)] = $path;}
}
}
closedir($handle);
return $array;
}
function processUploadedAddon(){
$sep = DIRECTORY_SEPARATOR;
global $dblink, $config, $url, $_SERVER;
$tempFilename = $_FILES['file']['tmp_name'];
$url = $config['URL'];
$fileName = str_replace(" ","_",$_FILES['file']['name']);
//$addonFolder = dirname($_SERVER["PATH_TRANSLATED"]).$sep.$config['addon_folder'];
//$tempFolder = dirname($_SERVER["PATH_TRANSLATED"]).$sep.$config['temp_analyze_folder'];
$addonFolder = dirname($_SERVER["SCRIPT_FILENAME"]).$sep.$config['addon_folder'];
$tempFolder = dirname($_SERVER["SCRIPT_FILENAME"]).$sep.$config['temp_analyze_folder'];
$version = $_POST['version'];
$addonName = substr($fileName,0,count($fileName) -5);
$homepage = $_POST['homepage'];
if ($homepage == "") {
$sql = "SELECT * FROM `uniadmin_addons` WHERE `name` LIKE '".addslashes($addonName)."';";
$result = mysql_query($sql,$dblink);
$row = mysql_fetch_assoc($result);
$homepage = $row['homepage'];
}
if ($version == "") {
$sql = "SELECT * FROM `uniadmin_addons` WHERE `name` LIKE '".addslashes($addonName)."';";
$result = mysql_query($sql,$dblink);
$row = mysql_fetch_assoc($result);
$version = $row['version'];
}
$downloadLocation = $url.$config['addon_folder']."/".$fileName;
$sql = "DELETE FROM `".$config['db_tables_addons']."` WHERE `name` LIKE '".addslashes($addonName)."';";
mysql_query($sql,$dblink);
$sql = "DELETE FROM `".$config['db_tables_files']."` WHERE `addon_name` LIKE '".addslashes($addonName)."';";
mysql_query($sql,$dblink);
if ($homepage != "") {
$sql = "INSERT INTO `uniadmin_addons` ( `id` , `time_uploaded` , `version` , `enabled` , `name`, `dl_url`, `homepage`, `privileged` )VALUES (
'', '".time()."', '".addslashes($version)."', '1', '".addslashes($addonName)."', '".addslashes($downloadLocation)."', '".addslashes($homepage)."', '0');";
}
else {
$sql = "INSERT INTO `uniadmin_addons` ( `id` , `time_uploaded` , `version` , `enabled` , `name`, `dl_url`, `privileged` )VALUES (
'', '".time()."', '".addslashes($version)."', '1', '".addslashes($addonName)."', '".addslashes($downloadLocation)."', '0');";
}
mysql_query($sql,$dblink);
@unlink($addonFolder.$sep.$fileName);//delete if exists
move_uploaded_file($tempFilename,$addonFolder.$sep.$fileName);
chmod($addonFolder.$sep.$fileName,0777);
if ($config['ziplibsupport']){
unzip($addonFolder.$sep.$fileName,$tempFolder.$sep);
}else {
unzipUsingPCLZIP($addonFolder.$sep.$fileName,$tempFolder.$sep);
}
$files = ls($tempFolder,array());
foreach ($files as $file){
$md5 = md5_file($file);
$k = explode($sep,$file);
$pos_t = strpos($file,"addon_temp");
$fileName = substr($file,$pos_t + 10);
if ($fileName != "index.htm" && $fileName != "index.html"){
$sql = "INSERT INTO `".$config['db_tables_files']."` ( `id` , `addon_name` , `filename` , `md5sum` )VALUES (
'', '".addslashes($addonName)."', '".addslashes($fileName)."', '".addslashes($md5)."');";
mysql_query($sql,$dblink);
unlink($file);//we have obtained the md5 and inserted the row into the database, now delete the temp file
}
}
//now delete the temp folders
foreach ($files as $file){
$dir = explode($sep,$file);
for($i=0;$i < count($dir);$i++){
array_pop($dir);
if ($dir[count($dir) - 1] == $config['temp_analyze_folder'])break;
if (is_dir(implode($sep,$dir)))@rmdir(implode($sep,$dir));
}
}
}
//the switch function is bugged in my version of PHP, so had to use this:
if (!isset ($_REQUEST['OPERATION'])) {
$op = "";
} else {
$op = $_REQUEST['OPERATION'];
}
if ($op == "PROCESSUPLOAD"):
processUploadedAddon();
main();
elseif ($op == "DELADDON"):
DeleteAddon();
Main();
elseif ($op == "DISABLEADDON"):
DisableAddon();
Main();
elseif ($op == "ENABLEADDON"):
EnableAddon();
Main();
elseif ($op == "RESTRICTADDON"):
RestrictAddon();
Main();
elseif ($op == "UNRESTRICTADDON"):
UnRestrictAddon();
Main();
else:
Main();
endif;
/*
switch ($op){
case "PROCESSUPLOAD":
processUploadedAddon();
main();
break;
case "DELADDON":
DeleteAddon();
break;
case "DISABLEADDON":
print_r($_REQUEST);
break;
default:
echo Main();
break;
}
*/
?>