From 378935a8a92592cf1ef164b4d969c376c46a78c6 Mon Sep 17 00:00:00 2001 From: nveid <nveid@ispconfig3> Date: Fri, 09 Dec 2011 02:35:24 -0500 Subject: [PATCH] Fixed mysql error when switching from "Options" tab to "Ftp User" edit tab, the onUpdate thought we were trying to change the Website because the Options Datalog didn't have the parent_domain_id and the Ftp User tab did. --- interface/web/admin/software_package_list.php | 92 ++++++++++++++++++++++++++++++++++++++------- 1 files changed, 77 insertions(+), 15 deletions(-) diff --git a/interface/web/admin/software_package_list.php b/interface/web/admin/software_package_list.php index 2f632a6..72d1817 100644 --- a/interface/web/admin/software_package_list.php +++ b/interface/web/admin/software_package_list.php @@ -40,7 +40,7 @@ //* Get the latest packages from the repositorys and insert them in the local database $packages_added = 0; $repos = $app->db->queryAllRecords("SELECT software_repo_id, repo_url, repo_username, repo_password FROM software_repo WHERE active = 'y'"); -if(is_array($repos)) { +if(is_array($repos) && isset($_GET['action']) && $_GET['action'] == 'repoupdate' ) { foreach($repos as $repo) { $client = new SoapClient(null, array('location' => $repo['repo_url'], 'uri' => $repo['repo_url'])); @@ -50,23 +50,78 @@ foreach($packages as $p) { $package_name = $app->db->quote($p['name']); $tmp = $app->db->queryOneRecord("SELECT package_id FROM software_package WHERE package_name = '$package_name'"); + + $package_title = $app->db->quote($p['title']); + $package_description = $app->db->quote($p['description']); + $software_repo_id = intval($repo['software_repo_id']); + $package_type = $app->db->quote($p['type']); + $package_installable = $app->db->quote($p['installable']); + $package_requires_db = $app->db->quote($p['requires_db']); + $package_remote_functions = $app->db->quote($p['remote_functions']); + if(empty($tmp['package_id'])) { - - $package_title = $app->db->quote($p['title']); - $package_description = $app->db->quote($p['description']); - $software_repo_id = intval($repo['software_repo_id']); - - $sql = "INSERT INTO software_package (software_repo_id, package_name, package_title, package_description) VALUES ($software_repo_id, '$package_name', '$package_title', '$package_description')"; - $app->db->query($sql); + //$sql = "INSERT INTO software_package (software_repo_id, package_name, package_title, package_description,package_type,package_installable,package_requires_db) VALUES ($software_repo_id, '$package_name', '$package_title', '$package_description','$package_type','$package_installable','$package_requires_db')"; + //$app->db->query($sql); + $insert_data = "(software_repo_id, package_name, package_title, package_description,package_type,package_installable,package_requires_db,package_remote_functions) VALUES ($software_repo_id, '$package_name', '$package_title', '$package_description','$package_type','$package_installable','$package_requires_db','$package_remote_functions')"; + $app->db->datalogInsert('software_package', $insert_data, 'package_id'); $packages_added++; + } else { + //$sql = "UPDATE software_package SET software_repo_id = $software_repo_id, package_title = '$package_title', package_description = '$package_description', package_type = '$package_type', package_installable = '$package_installable', package_requires_db = '$package_requires_db' WHERE package_name = '$package_name'"; + //$app->db->query($sql); + $update_data = "software_repo_id = $software_repo_id, package_title = '$package_title', package_description = '$package_description', package_type = '$package_type', package_installable = '$package_installable', package_requires_db = '$package_requires_db', package_remote_functions = '$package_remote_functions'"; + //echo $update_data; + $app->db->datalogUpdate('software_package', $update_data, 'package_id',$tmp['package_id']); } } } - + + $packages = $app->db->queryAllRecords("SELECT software_package.package_name, v1, v2, v3, v4 FROM software_package LEFT JOIN software_update ON ( software_package.package_name = software_update.package_name ) GROUP BY package_name ORDER BY v1 DESC , v2 DESC , v3 DESC , v4 DESC"); + if(is_array($packages)) { + foreach($packages as $p) { + + $version = $p['v1'].'.'.$p['v2'].'.'.$p['v3'].'.'.$p['v4']; + $updates = $client->get_updates($p['package_name'], $version,$repo['repo_username'], $repo['repo_password']); + + if(is_array($updates)) { + foreach($updates as $u) { + + $version_array = explode('.',$u['version']); + $v1 = intval($version_array[0]); + $v2 = intval($version_array[1]); + $v3 = intval($version_array[2]); + $v4 = intval($version_array[3]); + + $package_name = $app->db->quote($u['package_name']); + $software_repo_id = intval($repo['software_repo_id']); + $update_url = $app->db->quote($u['url']); + $update_md5 = $app->db->quote($u['md5']); + $update_dependencies = (isset($u['dependencies']))?$app->db->quote($u['dependencies']):''; + $update_title = $app->db->quote($u['title']); + $type = $app->db->quote($u['type']); + + // Check that we do not have this update in the database yet + $sql = "SELECT * FROM software_update WHERE package_name = '$package_name' and v1 = '$v1' and v2 = '$v2' and v3 = '$v3' and v4 = '$v4'"; + $tmp = $app->db->queryOneRecord($sql); + if(!isset($tmp['software_update_id'])) { + // Insert the update in the datbase + //$sql = "INSERT INTO software_update (software_repo_id, package_name, update_url, update_md5, update_dependencies, update_title, v1, v2, v3, v4, type) + //VALUES ($software_repo_id, '$package_name', '$update_url', '$update_md5', '$update_dependencies', '$update_title', '$v1', '$v2', '$v3', '$v4', '$type')"; + //die($sql); + //$app->db->query($sql); + $insert_data = "(software_repo_id, package_name, update_url, update_md5, update_dependencies, update_title, v1, v2, v3, v4, type) + VALUES ($software_repo_id, '$package_name', '$update_url', '$update_md5', '$update_dependencies', '$update_title', '$v1', '$v2', '$v3', '$v4', '$type')"; + $app->db->datalogInsert('software_update', $insert_data, 'software_update_id'); + } + + } + } + } + } } } //* Install packages, if GET Request +/* if(isset($_GET['action']) && $_GET['action'] == 'install' && $_GET['package'] != '' && $_GET['server_id'] > 0) { $package_name = $app->db->quote($_GET['package']); $server_id = intval($_GET['server_id']); @@ -75,9 +130,10 @@ $software_update_id = $tmp['software_update_id']; $insert_data = "(package_name, server_id, software_update_id, status) VALUES ('$package_name', '$server_id', '$software_update_id','installing')"; + // $insert_data = "(package_name, server_id, software_update_id, status) VALUES ('$package_name', '$server_id', '$software_update_id','installed')"; $app->db->datalogInsert('software_update_inst', $insert_data, 'software_update_inst_id'); - } +*/ @@ -98,13 +154,19 @@ $version = $inst['v1'].'.'.$inst['v2'].'.'.$inst['v3'].'.'.$inst['v4']; if($inst['status'] == 'installed') { - $installed_txt .= $s['server_name'].": Installed version $version<br />"; - } elseif ($inst['status'] == 'installing') { - $installed_txt .= $s['server_name'].": Installation in progress<br />"; + $installed_txt .= $s['server_name'].": ".$app->lng("Installed version $version")."<br />"; + } elseif ($inst['status'] == 'installing') { + $installed_txt .= $s['server_name'].": ".$app->lng("Installation in progress")."<br />"; + } elseif ($inst['status'] == 'failed') { + $installed_txt .= $s['server_name'].": ".$app->lng("Installation failed")."<br />"; } elseif ($inst['status'] == 'deleting') { - $installed_txt .= $s['server_name'].": Deletion in progress<br />"; + $installed_txt .= $s['server_name'].": ".$app->lng("Deletion in progress")."<br />"; } else { - $installed_txt .= $s['server_name'].": <a href=\"#\" onClick=\"loadContent('admin/software_package_list.php?action=install&package=".$p["package_name"]."&server_id=".$s["server_id"]."');\">Install now</a><br />"; + if($p['package_installable'] == 'no') { + $installed_txt .= $s['server_name'].": ".$app->lng("Package can not be installed.")."<br />"; + } else { + $installed_txt .= $s['server_name'].": <a href=\"#\" onClick=\"loadContent('admin/software_package_install.php?package=".$p["package_name"]."&server_id=".$s["server_id"]."');\">Install now</a><br />"; + } } } $packages[$key]['installed'] = $installed_txt; -- Gitblit v1.9.1