Ano, takovou radu jsem našel při hledání na internetu, ale mám tu jen složky:
application
lang
library
log
public
tmp
v index.php se vkládá soubor require_once 'application/Core.php';
a v Core pak require_once './application/plugins/DbConnectPlugin.php';
ale tam žádné přihl. údaje uvedeny nejsou.
Přikládám celý zdroj:
<?php
/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_Auth
* @copyright Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Auth.php 3467 2007-02-15 22:40:55Z darby $
*/
class DbConnectPlugin extends Zend_Controller_Plugin_Abstract
{
private $_dbSettings;
private $_db;
//public function __construct(array $dbSettings)
public function __construct()
{
//$this->_dbSettings = $dbSettings;
$this->_dbSettings = Core::getConfig()->database->toArray();
}
/**
* Establish connection to database. If connection fails we go to @link ErrorController.
*
* @param Zend_Controller_Request_Abstract $request
* @return void
*/
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
{
try {
/*
$config = new Zend_Config(
array(
'database' => array(
'adapter' => 'Pdo_PgSQL',
'params' => array(
'host' => 'localhost',
'dbname' => 'controlpanel',
'username' => 'postgres',
'password' => 'heslo'
)
)
)
);
$this->_db = Zend_Db::factory($config->database);
*/
if (intval($this->_dbSettings['uppercase']) === 1) {
$options = array(
//Zend_Db::CASE_FOLDING => Zend_Db::CASE_UPPER
Zend_Db::CASE_FOLDING => Zend_Db::CASE_LOWER
);
$this->_dbSettings['params']['options'] = $options;
}
$this->_db = Zend_Db::factory($this->_dbSettings['adapter'], $this->_dbSettings['params']);
$this->_db->query('SET NAMES '.$this->_dbSettings['encoding']);
//$this->_db->query('SET CHARACTER SET '.$this->_dbSettings['encoding']);
if ($this->_dbSettings['profiler'] == true) {
$this->_db->getProfiler()->setEnabled(true);
}
if (!empty($this->_dbSettings['prefix'])) {
Zend_Registry::set('prefix', $this->_dbSettings['prefix']);
//$this->setTablePrefix(trim($this->_dbSettings['prefix'], '_').'_');
}
Zend_Db_Table_Abstract::setDefaultAdapter($this->_db);
//Zinn_Db_Table_Abstract::setDefaultAdapter($this->_db);
$serverRoot = Zend_Registry::get('serverRoot');
$frontendOptions = array('automatic_serialization' => true);
//$backendOptions = array('cache_dir' => 'cacheDir');
$backendOptions = array('cache_dir' => $serverRoot . 'tmp');
$cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions); // Next, set the cache to be used with all table objects
Zend_Db_Table_Abstract::setDefaultMetadataCache($cache);
Zend_Registry::set('db', $this->_db);
//$this->setTablePrefix('ds');
//$this->removeTablePrefix('ds');
} catch(Exception $e) {
$frontController = Zend_Controller_Front::getInstance();
if ($frontController->throwExceptions()) {
throw $e;
}
$error = new ArrayObject(array(), ArrayObject::ARRAY_AS_PROPS);
$exception = $e;
$exceptionType = get_class($e);
$error->exception = $exception;
$error->type = Zend_Controller_Plugin_ErrorHandler::EXCEPTION_OTHER;
$request->setParam('message', 'Došlo k chybě při spojení s databází');
$error->request = clone $request;
$errorHandler = $frontController->getPlugin('Zend_Controller_Plugin_ErrorHandler');
$request->setParam('error_handler', $error)
->setModuleName($errorHandler->getErrorHandlerModule())
->setControllerName($errorHandler->getErrorHandlerController())
->setActionName($errorHandler->getErrorHandlerAction())
->setDispatched(false);
}
}
/* Called before Zend_Controller_Front exits its dispatch loop.
*
* @return void
*/
public function dispatchLoopShutdown()
{
if ($this->_dbSettings['profiler'] == true) {
$profiler = $this->_db->getProfiler();
$totalTime = $profiler->getTotalElapsedSecs();
$queryCount = $profiler->getTotalNumQueries();
$longestTime = 0;
$longestQuery = null;
$out = '<div style="width: 900px; text-align: left; background-color: #000000; color: #ffffff; border: 2px solid #ffffff; padding: 20px 20px; margin: 10px auto;">' . "\n";
$out .= '<h3 style="padding-top: -20px; color: #ffffff; margin-bottom: 20px;">Database profiler (only for development purposes)</h3>' . "\n";
$out .= 'Executed ' . $queryCount . ' queries in ' . $totalTime . ' seconds<br /><br />' . "\n";
if ($totalTime > 0 && $queryCount > 0) {
foreach ($profiler->getQueryProfiles() as $query) {
if ($query->getElapsedSecs() > $longestTime) {
$longestTime = $query->getElapsedSecs();
$longestQuery = $query->getQuery();
}
}
$out .= 'Average query length: ' . ($totalTime / $queryCount) . ' seconds<br /><br />' . "\n";
$out .= 'Queries per second: ' . ($queryCount / $totalTime) . '<br /><br />' . "\n";
$out .= 'Longest query length: ' . $longestTime . ' seconds<br /><br />' . "\n";
$out .= 'Longest query: ' . $longestQuery . '<br /><br />' . "\n";
$out .= '<br /><br />' . "\n\n";
foreach ($profiler->getQueryProfiles() as $query) {
$out .= $query->getQuery() . '<br /><br />' . "\n\n";
}
}
$out .= '</div>' . "\n";
$this->_response->appendBody($out);
}
if ($this->_dbSettings['logQueries'] == true) {
$logger = Core::setLogger('queries');
$profiler = $this->_db->getProfiler();
if (intval($profiler->getTotalNumQueries()) > 0) {
foreach ($profiler->getQueryProfiles() as $query) {
$logger->log($query->getQuery(), Zend_Log::DEBUG);
}
}
}
}
public function setTablePrefix($prefix = '')
{
$tables = $this->_db->listTables();
if (!empty($prefix)) {
$prefix = trim($prefx, '_') . '_';
foreach ($tables as $table) {
$this->_db->query('RENAME TABLE `' . $table . '` TO `' . $prefix . $table . '`');
}
}
Zend_Debug::dump('OK');
exit();
/*
$query = $this->_db->query('SHOW TABLES');
$tables = $query->fetchAll();
foreach($tables as $table)
{
$this->_db->query('RENAME TABLE `'.$table['Tables_in_portaly'].'` TO `ds_'.$table['Tables_in_portaly'].'`');
$this->_db->query('RENAME TABLE `'.$table['Tables_in_portaly'].'` TO `'.str_replace("ds_", "", $table['Tables_in_portaly']).'`');
}
Zend_Debug::dump('OK');
exit();
*/
}
public function removeTablePrefix($prefix = '')
{
$tables = $this->_db->listTables();
$pattern = '';
if (!empty($prefix)) {
$prefix = trim($prefx, '_') . '_';
$pattern = '/' . $prefix . '/';
}
if (!empty($pattern)) {
foreach ($tables as $table) {
$this->_db->query('RENAME TABLE `' . $table . '` TO `' . preg_replace($pattern, '', $table, 1) . '`');
}
}
Zend_Debug::dump('OK');
exit();
}
}
Kde může být problém? Děkuji za rady