mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 19:38:26 +00:00
f6be113855
git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@3790 3807eeeb-6ff5-0310-8944-8be069107fe0
171 lines
No EOL
4.3 KiB
PHP
171 lines
No EOL
4.3 KiB
PHP
<?php
|
|
/* SVN FILE: $Id$ */
|
|
/**
|
|
* The DbconfigTask creates the database configuration file.
|
|
*
|
|
* Long description for file
|
|
*
|
|
* PHP versions 4 and 5
|
|
*
|
|
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
|
* Copyright (c) 2005, Cake Software Foundation, Inc.
|
|
* 1785 E. Sahara Avenue, Suite 490-204
|
|
* Las Vegas, Nevada 89104
|
|
*
|
|
* Licensed under The MIT License
|
|
* Redistributions of files must retain the above copyright notice.
|
|
*
|
|
* @filesource
|
|
* @copyright Copyright (c) 2005, Cake Software Foundation, Inc.
|
|
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
|
* @package cake
|
|
* @subpackage cake.cake.scripts.bake
|
|
* @since CakePHP v 1.2
|
|
* @version $Revision$
|
|
* @modifiedby $LastChangedBy$
|
|
* @lastmodified $Date$
|
|
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
|
*/
|
|
define('DB_CONFIG_FILE', CONFIGS.'database.php');
|
|
define('DB_CONFIG_FILE_DEFAULT', CONFIGS.'database.php.default');
|
|
|
|
class DbconfigTask extends BakeTask {
|
|
|
|
var $database;
|
|
var $user;
|
|
var $password = '';
|
|
var $configName = 'default';
|
|
var $databaseDriver = 'mysql';
|
|
var $persistent = 'false';
|
|
var $host = 'localhost';
|
|
var $port = '';
|
|
var $prefix = '';
|
|
|
|
function execute($params) {
|
|
|
|
$paramCount = count($params);
|
|
|
|
if ($paramCount >= 2) {
|
|
$this->database = array_shift($params);
|
|
$this->user = array_shift($params);
|
|
|
|
if ($paramCount > 2) {
|
|
$this->handleParams($params);
|
|
}
|
|
|
|
if (file_exists(DB_CONFIG_FILE)) {
|
|
$this->insertOrUpdateConfiguration();
|
|
} elseif (file_exists(DB_CONFIG_FILE_DEFAULT)) {
|
|
rename(DB_CONFIG_FILE_DEFAULT, DB_CONFIG_FILE);
|
|
$this->insertOrUpdateConfiguration();
|
|
} else {
|
|
$this->createFile(DB_CONFIG_FILE, $this->getFileContent());
|
|
}
|
|
} else {
|
|
$this->help();
|
|
}
|
|
}
|
|
|
|
function help() {
|
|
echo "The dbconfig task creates the database configuration file for you.\n";
|
|
echo "Usage: bake2 dbconfig [app-alias] database user [password] [-c=configName] [-d=databaseDriver] \n";
|
|
echo " [-persistent] [-h=hostname[:port]] [-p=prefix]\n";
|
|
}
|
|
|
|
function beginsWith($str, $sub) {
|
|
return (substr($str, 0, strlen($sub)) === $sub);
|
|
}
|
|
|
|
function createFile($path, $content) {
|
|
|
|
if ($f = fopen($path, 'w')) {
|
|
fwrite($f, $content);
|
|
fclose($f);
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
function getConfiguration() {
|
|
$out = "\tvar \${$this->configName} = array(\n";
|
|
$out .= "\t\t'driver' => '{$this->databaseDriver}',\n";
|
|
$out .= "\t\t'host' => '{$this->host}',\n";
|
|
|
|
if ($this->port != '') {
|
|
$out .= "\t\t'port' => {$this->port}, \n";
|
|
}
|
|
|
|
$out .= "\t\t'login' => '{$this->user}',\n";
|
|
$out .= "\t\t'password' => '{$this->password}',\n";
|
|
$out .= "\t\t'database' => '{$this->database}', \n";
|
|
$out .= "\t\t'persistent' => {$this->persistent}, \n";
|
|
$out .= "\t\t'prefix' => '{$this->prefix}' \n";
|
|
$out .= "\t);\n";
|
|
|
|
return $out;
|
|
}
|
|
|
|
function getFileContent() {
|
|
$out = "<?php\n";
|
|
$out .= "class DATABASE_CONFIG {\n\n";
|
|
$out .= $this->getConfiguration();
|
|
$out .= "}\n";
|
|
$out .= "?>";
|
|
|
|
return $out;
|
|
}
|
|
|
|
function insertOrUpdateConfiguration() {
|
|
$data = file_get_contents(DB_CONFIG_FILE);
|
|
|
|
if (strpos($data, 'var $'.$this->configName) === false) {
|
|
$data = str_replace('}', "\n".$this->getConfiguration()."}", $data);
|
|
} else {
|
|
$data = preg_replace('/\tvar \$'.$this->configName.' (\S|\s)*\);/s', $this->getConfiguration(), $data);
|
|
}
|
|
|
|
$this->createFile(DB_CONFIG_FILE, $data);
|
|
}
|
|
|
|
function handleParams($params) {
|
|
if (!$this->beginsWith($params[0], '-')) {
|
|
$this->password = array_shift($params);
|
|
}
|
|
|
|
while (count($params) > 0) {
|
|
$param = array_shift($params);
|
|
$firstThreeChars = substr($param, 0, 3);
|
|
$paramValue = substr($param, 3);
|
|
|
|
switch ($firstThreeChars) {
|
|
case '-c=':
|
|
$this->configName = $paramValue;
|
|
break;
|
|
case '-d=':
|
|
$this->databaseDriver = $paramValue;
|
|
break;
|
|
case '-pe':
|
|
$this->persistent = 'true';
|
|
break;
|
|
case '-h=':
|
|
if (strpos($paramValue, ':') === false) {
|
|
$this->host = $paramValue;
|
|
} else {
|
|
$hostData = explode(':', $paramValue);
|
|
$this->host = $hostData[0];
|
|
$this->port = $hostData[1];
|
|
}
|
|
|
|
break;
|
|
case '-p=':
|
|
$this->prefix = $paramValue;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
?>
|