CakePHP
  • Documentation
    • Book
    • API
    • Videos
    • Reporting Security Issues
    • Privacy Policy
    • Logos & Trademarks
  • Business Solutions
  • Swag
  • Road Trip
  • Team
  • Community
    • Community
    • Get Involved
    • Issues (GitHub)
    • Bakery
    • Featured Resources
    • Training
    • Meetups
    • My CakePHP
    • CakeFest
    • Newsletter
    • Linkedin
    • YouTube
    • Facebook
    • Twitter
    • Mastodon
    • Help & Support
    • Forum
    • Stack Overflow
    • Slack
    • Paid Support
CakePHP

C CakePHP 1.3 API

  • Overview
  • Tree
  • Deprecated
  • Version:
    • 1.3
      • 4.2
      • 4.1
      • 4.0
      • 3.9
      • 3.8
      • 3.7
      • 3.6
      • 3.5
      • 3.4
      • 3.3
      • 3.2
      • 3.1
      • 3.0
      • 2.10
      • 2.9
      • 2.8
      • 2.7
      • 2.6
      • 2.5
      • 2.4
      • 2.3
      • 2.2
      • 2.1
      • 2.0
      • 1.3
      • 1.2

Classes

  • AclBase
  • AclBehavior
  • AclComponent
  • AclNode
  • AclShell
  • Aco
  • AcoAction
  • AjaxHelper
  • ApcEngine
  • ApiShell
  • App
  • AppController
  • AppHelper
  • AppModel
  • Aro
  • AuthComponent
  • BakeShell
  • BakeTask
  • BehaviorCollection
  • Cache
  • CacheEngine
  • CacheHelper
  • CakeErrorController
  • CakeLog
  • CakeRoute
  • CakeSchema
  • CakeSession
  • CakeSocket
  • ClassRegistry
  • Component
  • Configure
  • ConnectionManager
  • ConsoleShell
  • ContainableBehavior
  • Controller
  • ControllerTask
  • CookieComponent
  • DataSource
  • DbAcl
  • DbConfigTask
  • DboMssql
  • DboMysql
  • DboMysqlBase
  • DboMysqli
  • DboOracle
  • DboPostgres
  • DboSource
  • DboSqlite
  • Debugger
  • EmailComponent
  • ErrorHandler
  • ExtractTask
  • File
  • FileEngine
  • FileLog
  • FixtureTask
  • Folder
  • FormHelper
  • Helper
  • HtmlHelper
  • HttpSocket
  • I18n
  • I18nModel
  • I18nShell
  • Inflector
  • IniAcl
  • JavascriptHelper
  • JqueryEngineHelper
  • JsBaseEngineHelper
  • JsHelper
  • L10n
  • MagicDb
  • MagicFileResource
  • MediaView
  • MemcacheEngine
  • Model
  • ModelBehavior
  • ModelTask
  • MootoolsEngineHelper
  • Multibyte
  • NumberHelper
  • Object
  • Overloadable
  • Overloadable2
  • PagesController
  • PaginatorHelper
  • Permission
  • PluginShortRoute
  • PluginTask
  • ProjectTask
  • PrototypeEngineHelper
  • RequestHandlerComponent
  • Router
  • RssHelper
  • Sanitize
  • Scaffold
  • ScaffoldView
  • SchemaShell
  • Security
  • SecurityComponent
  • SessionComponent
  • SessionHelper
  • Set
  • Shell
  • String
  • TemplateTask
  • TestSuiteShell
  • TestTask
  • TextHelper
  • ThemeView
  • TimeHelper
  • TranslateBehavior
  • TreeBehavior
  • Validation
  • View
  • ViewTask
  • XcacheEngine
  • Xml
  • XmlElement
  • XmlHelper
  • XmlManager
  • XmlNode
  • XmlTextNode

Functions

  • mb_encode_mimeheader
  • mb_stripos
  • mb_stristr
  • mb_strlen
  • mb_strpos
  • mb_strrchr
  • mb_strrichr
  • mb_strripos
  • mb_strrpos
  • mb_strstr
  • mb_strtolower
  • mb_strtoupper
  • mb_substr
  • mb_substr_count
  1: <?php
  2: /**
  3:  * The DbConfig Task handles creating and updating the database.php
  4:  *
  5:  * PHP versions 4 and 5
  6:  *
  7:  * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
  8:  * Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
  9:  *
 10:  * Licensed under The MIT License
 11:  * Redistributions of files must retain the above copyright notice.
 12:  *
 13:  * @copyright     Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
 14:  * @link          http://cakephp.org CakePHP(tm) Project
 15:  * @package       cake
 16:  * @subpackage    cake.cake.console.libs.tasks
 17:  * @since         CakePHP(tm) v 1.2
 18:  * @license       MIT License (http://www.opensource.org/licenses/mit-license.php)
 19:  */
 20: 
 21: /**
 22:  * Task class for creating and updating the database configuration file.
 23:  *
 24:  * @package       cake
 25:  * @subpackage    cake.cake.console.libs.tasks
 26:  */
 27: class DbConfigTask extends Shell {
 28: 
 29: /**
 30:  * path to CONFIG directory
 31:  *
 32:  * @var string
 33:  * @access public
 34:  */
 35:     var $path = null;
 36: 
 37: /**
 38:  * Default configuration settings to use
 39:  *
 40:  * @var array
 41:  * @access private
 42:  */
 43:     var $__defaultConfig = array(
 44:         'name' => 'default', 'driver'=> 'mysql', 'persistent'=> 'false', 'host'=> 'localhost',
 45:         'login'=> 'root', 'password'=> 'password', 'database'=> 'project_name',
 46:         'schema'=> null, 'prefix'=> null, 'encoding' => null, 'port' => null
 47:     );
 48: 
 49: /**
 50:  * String name of the database config class name.
 51:  * Used for testing.
 52:  *
 53:  * @var string
 54:  */
 55:     var $databaseClassName = 'DATABASE_CONFIG';
 56: 
 57: /**
 58:  * initialization callback
 59:  *
 60:  * @var string
 61:  * @access public
 62:  */
 63:     function initialize() {
 64:         $this->path = $this->params['working'] . DS . 'config' . DS;
 65:     }
 66: 
 67: /**
 68:  * Execution method always used for tasks
 69:  *
 70:  * @access public
 71:  */
 72:     function execute() {
 73:         if (empty($this->args)) {
 74:             $this->__interactive();
 75:             $this->_stop();
 76:         }
 77:     }
 78: 
 79: /**
 80:  * Interactive interface
 81:  *
 82:  * @access private
 83:  */
 84:     function __interactive() {
 85:         $this->hr();
 86:         $this->out('Database Configuration:');
 87:         $this->hr();
 88:         $done = false;
 89:         $dbConfigs = array();
 90: 
 91:         while ($done == false) {
 92:             $name = '';
 93: 
 94:             while ($name == '') {
 95:                 $name = $this->in("Name:", null, 'default');
 96:                 if (preg_match('/[^a-z0-9_]/i', $name)) {
 97:                     $name = '';
 98:                     $this->out('The name may only contain unaccented latin characters, numbers or underscores');
 99:                 } else if (preg_match('/^[^a-z_]/i', $name)) {
100:                     $name = '';
101:                     $this->out('The name must start with an unaccented latin character or an underscore');
102:                 }
103:             }
104: 
105:             $driver = $this->in('Driver:', array('mssql', 'mysql', 'mysqli', 'oracle', 'postgres', 'sqlite'), 'mysql');
106: 
107:             $persistent = $this->in('Persistent Connection?', array('y', 'n'), 'n');
108:             if (strtolower($persistent) == 'n') {
109:                 $persistent = 'false';
110:             } else {
111:                 $persistent = 'true';
112:             }
113: 
114:             $host = '';
115:             while ($host == '') {
116:                 $host = $this->in('Database Host:', null, 'localhost');
117:             }
118: 
119:             $port = '';
120:             while ($port == '') {
121:                 $port = $this->in('Port?', null, 'n');
122:             }
123: 
124:             if (strtolower($port) == 'n') {
125:                 $port = null;
126:             }
127: 
128:             $login = '';
129:             while ($login == '') {
130:                 $login = $this->in('User:', null, 'root');
131:             }
132:             $password = '';
133:             $blankPassword = false;
134: 
135:             while ($password == '' && $blankPassword == false) {
136:                 $password = $this->in('Password:');
137: 
138:                 if ($password == '') {
139:                     $blank = $this->in('The password you supplied was empty. Use an empty password?', array('y', 'n'), 'n');
140:                     if ($blank == 'y') {
141:                         $blankPassword = true;
142:                     }
143:                 }
144:             }
145: 
146:             $database = '';
147:             while ($database == '') {
148:                 $database = $this->in('Database Name:', null, 'cake');
149:             }
150: 
151:             $prefix = '';
152:             while ($prefix == '') {
153:                 $prefix = $this->in('Table Prefix?', null, 'n');
154:             }
155:             if (strtolower($prefix) == 'n') {
156:                 $prefix = null;
157:             }
158: 
159:             $encoding = '';
160:             while ($encoding == '') {
161:                 $encoding = $this->in('Table encoding?', null, 'n');
162:             }
163:             if (strtolower($encoding) == 'n') {
164:                 $encoding = null;
165:             }
166: 
167:             $schema = '';
168:             if ($driver == 'postgres') {
169:                 while ($schema == '') {
170:                     $schema = $this->in('Table schema?', null, 'n');
171:                 }
172:             }
173:             if (strtolower($schema) == 'n') {
174:                 $schema = null;
175:             }
176: 
177:             $config = compact('name', 'driver', 'persistent', 'host', 'login', 'password', 'database', 'prefix', 'encoding', 'port', 'schema');
178: 
179:             while ($this->__verify($config) == false) {
180:                 $this->__interactive();
181:             }
182:             $dbConfigs[] = $config;
183:             $doneYet = $this->in('Do you wish to add another database configuration?', null, 'n');
184: 
185:             if (strtolower($doneYet == 'n')) {
186:                 $done = true;
187:             }
188:         }
189: 
190:         $this->bake($dbConfigs);
191:         config('database');
192:         return true;
193:     }
194: 
195: /**
196:  * Output verification message and bake if it looks good
197:  *
198:  * @return boolean True if user says it looks good, false otherwise
199:  * @access private
200:  */
201:     function __verify($config) {
202:         $config = array_merge($this->__defaultConfig, $config);
203:         extract($config);
204:         $this->out();
205:         $this->hr();
206:         $this->out('The following database configuration will be created:');
207:         $this->hr();
208:         $this->out("Name:         $name");
209:         $this->out("Driver:       $driver");
210:         $this->out("Persistent:   $persistent");
211:         $this->out("Host:         $host");
212: 
213:         if ($port) {
214:             $this->out("Port:         $port");
215:         }
216: 
217:         $this->out("User:         $login");
218:         $this->out("Pass:         " . str_repeat('*', strlen($password)));
219:         $this->out("Database:     $database");
220: 
221:         if ($prefix) {
222:             $this->out("Table prefix: $prefix");
223:         }
224: 
225:         if ($schema) {
226:             $this->out("Schema:       $schema");
227:         }
228: 
229:         if ($encoding) {
230:             $this->out("Encoding:     $encoding");
231:         }
232: 
233:         $this->hr();
234:         $looksGood = $this->in('Look okay?', array('y', 'n'), 'y');
235: 
236:         if (strtolower($looksGood) == 'y') {
237:             return $config;
238:         }
239:         return false;
240:     }
241: 
242: /**
243:  * Assembles and writes database.php
244:  *
245:  * @param array $configs Configuration settings to use
246:  * @return boolean Success
247:  * @access public
248:  */
249:     function bake($configs) {
250:         if (!is_dir($this->path)) {
251:             $this->err($this->path . ' not found');
252:             return false;
253:         }
254: 
255:         $filename = $this->path . 'database.php';
256:         $oldConfigs = array();
257: 
258:         if (file_exists($filename)) {
259:             config('database');
260:             $db = new $this->databaseClassName;
261:             $temp = get_class_vars(get_class($db));
262: 
263:             foreach ($temp as $configName => $info) {
264:                 $info = array_merge($this->__defaultConfig, $info);
265: 
266:                 if (!isset($info['schema'])) {
267:                     $info['schema'] = null;
268:                 }
269:                 if (!isset($info['encoding'])) {
270:                     $info['encoding'] = null;
271:                 }
272:                 if (!isset($info['port'])) {
273:                     $info['port'] = null;
274:                 }
275: 
276:                 if ($info['persistent'] === false) {
277:                     $info['persistent'] = 'false';
278:                 } else {
279:                     $info['persistent'] = ($info['persistent'] == true) ? 'true' : 'false';
280:                 }
281: 
282:                 $oldConfigs[] = array(
283:                     'name' => $configName,
284:                     'driver' => $info['driver'],
285:                     'persistent' => $info['persistent'],
286:                     'host' => $info['host'],
287:                     'port' => $info['port'],
288:                     'login' => $info['login'],
289:                     'password' => $info['password'],
290:                     'database' => $info['database'],
291:                     'prefix' => $info['prefix'],
292:                     'schema' => $info['schema'],
293:                     'encoding' => $info['encoding']
294:                 );
295:             }
296:         }
297: 
298:         foreach ($oldConfigs as $key => $oldConfig) {
299:             foreach ($configs as $key1 => $config) {
300:                 if ($oldConfig['name'] == $config['name']) {
301:                     unset($oldConfigs[$key]);
302:                 }
303:             }
304:         }
305: 
306:         $configs = array_merge($oldConfigs, $configs);
307:         $out = "<?php\n";
308:         $out .= "class DATABASE_CONFIG {\n\n";
309: 
310:         foreach ($configs as $config) {
311:             $config = array_merge($this->__defaultConfig, $config);
312:             extract($config);
313: 
314:             $out .= "\tvar \${$name} = array(\n";
315:             $out .= "\t\t'driver' => '{$driver}',\n";
316:             $out .= "\t\t'persistent' => {$persistent},\n";
317:             $out .= "\t\t'host' => '{$host}',\n";
318: 
319:             if ($port) {
320:                 $out .= "\t\t'port' => {$port},\n";
321:             }
322: 
323:             $out .= "\t\t'login' => '{$login}',\n";
324:             $out .= "\t\t'password' => '{$password}',\n";
325:             $out .= "\t\t'database' => '{$database}',\n";
326: 
327:             if ($schema) {
328:                 $out .= "\t\t'schema' => '{$schema}',\n";
329:             }
330: 
331:             if ($prefix) {
332:                 $out .= "\t\t'prefix' => '{$prefix}',\n";
333:             }
334: 
335:             if ($encoding) {
336:                 $out .= "\t\t'encoding' => '{$encoding}'\n";
337:             }
338: 
339:             $out .= "\t);\n";
340:         }
341: 
342:         $out .= "}\n";
343:         $out .= "?>";
344:         $filename = $this->path . 'database.php';
345:         return $this->createFile($filename, $out);
346:     }
347: 
348: /**
349:  * Get a user specified Connection name
350:  *
351:  * @return void
352:  */
353:     function getConfig() {
354:         App::import('Model', 'ConnectionManager', false);
355: 
356:         $useDbConfig = 'default';
357:         $configs = get_class_vars($this->databaseClassName);
358:         if (!is_array($configs)) {
359:             return $this->execute();
360:         }
361: 
362:         $connections = array_keys($configs);
363:         if (count($connections) > 1) {
364:             $useDbConfig = $this->in(__('Use Database Config', true) .':', $connections, 'default');
365:         }
366:         return $useDbConfig;
367:     }
368: }
369: 
OpenHub
Rackspace
Rackspace
  • Business Solutions
  • Showcase
  • Documentation
  • Book
  • API
  • Videos
  • Reporting Security Issues
  • Privacy Policy
  • Logos & Trademarks
  • Community
  • Get Involved
  • Issues (GitHub)
  • Bakery
  • Featured Resources
  • Training
  • Meetups
  • My CakePHP
  • CakeFest
  • Newsletter
  • Linkedin
  • YouTube
  • Facebook
  • Twitter
  • Mastodon
  • Help & Support
  • Forum
  • Stack Overflow
  • Slack
  • Paid Support

Generated using CakePHP API Docs