Example #1
0
 *
 * The Original Code is "VHCS - Virtual Hosting Control System".
 *
 * The Initial Developer of the Original Code is moleSoftware GmbH.
 * Portions created by Initial Developer are Copyright (C) 2001-2006
 * by moleSoftware GmbH. All Rights Reserved.
 *
 * Portions created by the ispCP Team are Copyright (C) 2006-2010 by
 * isp Control Panel. All Rights Reserved.
 *
 * Portions created by the i-MSCP Team are Copyright (C) 2010-2016 by
 * i-MSCP - internet Multi Server Control Panel. All Rights Reserved.
 */
/***********************************************************************************************************************
 * Main
 */
require_once 'imscp-lib.php';
iMSCP_Events_Aggregator::getInstance()->dispatch(iMSCP_Events::onClientScriptStart);
check_login('user');
if (!customerHasFeature('sql') || !isset($_GET['id'])) {
    showBadRequestErrorPage();
}
$userId = intval($_GET['id']);
if (!sql_delete_user(get_user_domain_id($_SESSION['user_id']), $userId)) {
    write_log(sprintf('Could not delete SQL user with ID %d. An unexpected error occurred.', $userId), E_USER_ERROR);
    set_page_message(tr('Could not delete SQL user. An unexpected error occurred.'), 'error');
    redirectTo('sql_manage.php');
}
set_page_message(tr('SQL user successfully deleted.'), 'success');
write_log(sprintf('%s deleted SQL user with ID %d', decode_idna($_SESSION['user_logged']), $userId), E_USER_NOTICE);
redirectTo('sql_manage.php');
<?php

//   -------------------------------------------------------------------------------
//  |             VHCS(tm) - Virtual Hosting Control System                         |
//  |              Copyright (c) 2001-2005 by moleSoftware	|
//  |			http://vhcs.net | http://www.molesoftware.com		           		|
//  |                                                                               |
//  | This program is free software; you can redistribute it and/or                 |
//  | modify it under the terms of the MPL General Public License                   |
//  | as published by the Free Software Foundation; either version 1.1              |
//  | of the License, or (at your option) any later version.                        |
//  |                                                                               |
//  | You should have received a copy of the MPL Mozilla Public License             |
//  | along with this program; if not, write to the Open Source Initiative (OSI)    |
//  | http://opensource.org | osi@opensource.org								    |
//  |                                                                               |
//   -------------------------------------------------------------------------------
include '../include/vhcs-lib.php';
check_login();
if (isset($_GET['id'])) {
    $db_user_id = $_GET['id'];
} else {
    user_goto('manage_sql.php');
}
$dmn_id = get_user_domain_id($sql, $_SESSION['user_id']);
check_usr_sql_perms($sql, $db_user_id);
sql_delete_user($sql, $dmn_id, $db_user_id);
write_log($_SESSION['user_logged'] . " : delete SQL user" . $db_user_id);
set_page_message(tr('SQL user was removed successfully!'));
user_goto('manage_sql.php');
Example #3
0
/**
 * Deletes the given SQL database
 *
 * @param int $dmnId Domain unique identifier
 * @param int $dbId Databse unique identifier
 * @return bool TRUE on success, false otherwise
 */
function delete_sql_database($dmnId, $dbId)
{
    $stmt = exec_query('SELECT sqld_name FROM sql_database WHERE domain_id = ? AND sqld_id = ?', array($dmnId, $dbId));
    if (!$stmt->rowCount()) {
        return false;
    }
    $row = $stmt->fetchRow(PDO::FETCH_ASSOC);
    $dbName = $row['sqld_name'];
    iMSCP_Events_Aggregator::getInstance()->dispatch(iMSCP_Events::onBeforeDeleteSqlDb, array('sqlDbId' => $dbId, 'sqlDatabaseName' => $dbName));
    $stmt = exec_query('SELECT sqlu_id FROM sql_user INNER JOIN sql_database USING(sqld_id) WHERE sqld_id = ? AND domain_id = ?', array($dbId, $dmnId));
    while ($row = $stmt->fetchRow(PDO::FETCH_ASSOC)) {
        if (!sql_delete_user($dmnId, $row['sqlu_id'])) {
            return false;
        }
    }
    exec_query(sprintf('DROP DATABASE IF EXISTS %s', quoteIdentifier($dbName)));
    exec_query('DELETE FROM sql_database WHERE domain_id = ? AND sqld_id = ?', array($dmnId, $dbId));
    iMSCP_Events_Aggregator::getInstance()->dispatch(iMSCP_Events::onAfterDeleteSqlDb, array('sqlDbId' => $dbId, 'sqlDatabaseName' => $dbName));
    return true;
}
function delete_sql_database(&$sql, $dmn_id, $db_id)
{
    $query = <<<SQL_QUERY
        select
            sqld_name as db_name
        from
            sql_database
        where
            domain_id = ?
          and
            sqld_id = ?
SQL_QUERY;
    $rs = exec_query($sql, $query, array($dmn_id, $db_id));
    if ($rs->RecordCount() == 0) {
        user_goto('manage_sql.php');
    }
    $db_name = quoteIdentifier($rs->fields['db_name']);
    //
    // have we any users assigned to this database;
    //
    $query = <<<SQL_QUERY
        select
            t2.sqlu_id as db_user_id,
            t2.sqlu_name as db_user_name
        from
            sql_database as t1,
            sql_user as t2
        where
            t1.sqld_id = t2.sqld_id
          and
            t1.domain_id = ?
          and
            t1.sqld_id = ?
SQL_QUERY;
    $rs = exec_query($sql, $query, array($dmn_id, $db_id));
    if ($rs->RecordCount() != 0) {
        while (!$rs->EOF) {
            $db_user_id = $rs->fields['db_user_id'];
            $db_user_name = $rs->fields['db_user_name'];
            sql_delete_user($sql, $dmn_id, $db_user_id);
            $rs->MoveNext();
        }
    }
    //
    // drop desired database;
    //
    $query = <<<SQL_QUERY
        drop database {$db_name}
SQL_QUERY;
    $rs = exec_query($sql, $query);
    write_log($_SESSION['user_logged'] . " : delete SQL database -> " . $db_name);
    //
    // delete desired database from the vhcs sql_database table;
    //
    $query = <<<SQL_QUERY
        delete from
            sql_database
        where
            domain_id = ?
          and
            sqld_id = ?
SQL_QUERY;
    $rs = exec_query($sql, $query, array($dmn_id, $db_id));
}