Files
keliopanel-v4/system/api/database.api.php
2016-02-21 14:28:40 +01:00

125 lines
3.5 KiB
PHP
Executable File

<?php
/**
* @class database
* @brief Manage, edit, add, delete, test database
*
* @author Benjamin Mercier
* @data 14/08/2009
* @version 0.1
*/
class database
{
/**
* @brief Add a database for a hosting
* @param name : Name of the database
* @param password : Password of the database
* @return -1 : Quota of databases is reached
* @return -2 : Syntax of database is forbidden
* @return -3 : Complete name is too long
* @return -4 : Database already existing
* @return 1 : Databases added for creation
*/
public function userAddDatabase( $name, $password, $comment = null )
{
$hosting_id = $_SESSION['hosting']->information_hosting->id;
$mysql_service = $_SESSION['hosting']->information_hosting->mysql_id;
// Quota
if ( $_SESSION['hosting']->information_hosting->offer_domains_number >= 0 ) {
$current_number_mysql = $this->countDatabases( $_SESSION['hosting']->information_hosting->id );
if ( $current_number_mysql >= $_SESSION['hosting']->information_hosting->offer_domains_number ) return -1;
}
// Check syntax and with of db name
if ( !textVerification::verifDatabaseName($name) ) return -2;
if ( strlen($_SESSION['hosting']->information_hosting->id.'_'.$name) > 16 ) return -3;
// Check existence of database
if ( $this->checkDatabaseExistence( $_SESSION['hosting']->information_hosting->id, $name ) ) return -4
$action_id = $this->createDatabase( $mysql_service, $name )
$this->createUserForDatabase(
$mysql_service,
$name,
$password,
$_SESSION['hosting']->information_hosting->id,
$name,
'normal',
$action_id
);
// inserer en db
}
public function userListDatabase()
{
}
public function userDeleteDatabase()
{
}
public function userChangePasswordForDatabase()
{
}
/**
* @brief Create user for db
* @param service_id : Id of the mysql service
* @param name : Name of the user
* @param password : Password of the user
* @param db_hosting: Hosting_id of the DB
* @param db_name : Name of the database
* @param (optionnal) level : Level of the user. "normal" is for customer
* @param (optionnal) create_db_action : Id action of database creation if create_db in same time of create_user.
*/
private function createUserForDatabase( $service_id, $name, $password, $db_hosting, $db_name, $level = 'normal', $create_db_action = null )
{
$data = array();
$data['action'] = 'create_user';
$data['name'] = $name;
$data['password'] = $password;
$data['db_hosting'] = $db_hosting;
$data['db_name'] = $db_name;
$data['level'] = $level;
$action = action::userAddAction($service_id, $data, $create_db_action);
return $action;
}
/**
* @brief Create database
* @param service_id : Id of the mysql service
* @param name : Name of database
*/
private function createDatabase( $service_id, $name )
{
$data = array();
$data['action'] = 'create_database';
$data['name'] = $name;
$action = action::userAddAction($service_id, $data);
return $action;
}
private function checkDatabaseExistence()
{
}
/**
* @brief Count databases for one hosting
* @param hosting_id : Id of the hosting
* @return Number of databases
*/
private function countDatabases( $hosting_id )
{
$hosting_id = $_SESSION['database']->clearString($hosting_id);
$req = "SELECT COUNT(id) AS total FROM service_database WHERE hosting_id = '$hosting_id'";
$query = $_SESSION['database']->fetchObject($req);
return $query[0]->total;
}
}
?>