PDO Connection Error: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
Error Code: #0
Source File: /home/divitto/www/libraries/OF/core/general/Models.php
line 173Backtrace
File: /home/divitto/www/libraries/OF/core/general/Models.php
line 45Oraculum_Models->PDO();Show Source Code
<?php
class Oraculum_Models
{
private $_dsn=NULL;
private $_dsntype=1;
private $_user=NULL;
private $_pass=NULL;
private $_host=NULL;
private $_driver=NULL;
private $_database=NULL;
private $_driveroptions=array();
private $_model=NULL;
public static $connection=NULL;
public function __construct($model=NULL) {
if (!defined('MODEL_DIR')) {
define('MODEL_DIR', 'models');
}
Oraculum::Load('DBO');
Oraculum::Load('ActiveRecord');
return $this->LoadModel($model);
}
public function LoadModel($model=NULL) {
if (!is_null($model)) {
$modelfile=MODEL_DIR.'/'.$model.'.php';
if (file_exists($modelfile)) {
include($modelfile);
} else {
throw new Exception('[Erro CGM17] Modelo nao encontrado ('.$modelfile.') ');
}
if ($this->_dsntype==2) {
$dsn=preg_split('[://|:|@|/]', $this->_dsn);
$this->_driver=strtolower($dsn[0]);
$this->_user=$dsn[1];
$this->_pass=$dsn[2];
$this->_host=$dsn[3];
$this->_database=$dsn[4];
$this->_driveroptions=isset($dsn[5])?$dsn[5]:NULL;
$this->_dsn=$this->_driver.':host='.$this->_host.';dbname='.$this->_database;
}
$this->_model=$model;
}
if (!isset(self::$connection)) {
$this->PDO();
}
return $this;
}
public function SaveModel($table='all', $debug=TRUE) {
$table=strtolower($table);
if ($table=='all') {
$tables=self::$connection->query('SHOW TABLES')->fetchAll();
foreach ($tables as $table) {
$dtodir=MODEL_DIR.'/dto/';
$daodir=MODEL_DIR.'/dao/';
if (!file_exists($dtodir)) {
if (is_writable(MODEL_DIR)) {
mkdir($dtodir);
} else {
throw new Exception('[Erro CGM53] Sem permissao para criar diretorio DTO');
}
}
if (!file_exists($daodir)) {
if (is_writable(MODEL_DIR)) {
mkdir($daodir);
} else {
throw new Exception('[Erro CGM61] Sem permissao para criar diretorio DAO');
}
}
$modelfile=$dtodir.$table[0].'.php';
if (is_writable($dtodir)) {
$model=$this->GenerateDTO($table[0], FALSE);
$mf=fopen($modelfile, 'w');
fwrite($mf, $model);
fclose($mf);
} else {
throw new Exception('[Erro CGM71] O arquivo nao pode ser gravado ('.$modelfile.')');
}
$modelfile=$daodir.$table[0].'.php';
if (is_writable($daodir)) {
$model=$this->GenerateDAO($table[0], FALSE);
$mf=fopen($modelfile, 'w');
fwrite($mf, $model);
fclose($mf);
} else {
throw new Exception('[Erro CGM81] O arquivo nao pode ser gravado ('.$modelfile.')');
}
}
}
if ($debug) {
echo 'Classes geradas com sucesso!<br />';
echo 'Para carregar as classes geradas em alguma área do site utilize o seguinte código:<br />';
echo '<pre>';
highlight_string("<?php\n\tOraculum::Load('Models');\n\t\$db=new Oraculum_Models('".$this->_model."');\n\t\$db->LoadModelClass();");
echo '</pre>';
}
}
public function LoadModelClass($model='all', $type='AR', $key='codigo') {
if (!is_null($model)) {
if ($model=='all') {
if ($type=='DO') {
foreach (glob(MODEL_DIR.'/dto/*.php') as $filename) {
include_once($filename);
}
foreach (glob(MODEL_DIR.'/dao/*.php') as $filename) {
include_once($filename);
}
} else {
foreach (glob(MODEL_DIR.'/ar/*.php') as $filename) {
include_once($filename);
}
}
} else {
$model=strtolower($model);
if ($type=='DO') {
$modelfile=MODEL_DIR.'/dto/'.$model.'.php';
if (file_exists($modelfile)) {
include($modelfile);
} else {
throw new Exception('[Erro CGM93] Modelo nao encontrado ('.$modelfile.') ');
}
$modelfile=MODEL_DIR.'/dao/'.$model.'.php';
if (file_exists($modelfile)) {
include($modelfile);
} else {
throw new Exception('[Erro CGM93] Modelo nao encontrado ('.$modelfile.') ');
}
} else {
$modelfile=MODEL_DIR.'/ar/'.$model.'.php';
if (file_exists($modelfile)) {
include_once($modelfile);
} else {
if (!$this->LoadDinamicModelClass($model, $key)) {
throw new Exception('[Erro CGM93] Modelo nao encontrado ('.$modelfile.') ');
}
}
}
}
}
return $this;
}
public function LoadDinamicModelClass($model=NULL, $key='codigo') {
if (!is_null($model)) {
$class=ucwords($model);
if (!class_exists($class)) {
$eval='class '.$class.' extends ActiveRecord{';
$eval.=' public function __construct(){';
$eval.=' parent::__construct(get_class($this))';
$eval.=' ->setKey(array(\''.$key.'\'));';
$eval.=' }';
$eval.='}';
eval($eval);
}
return true;
} else {
throw new Exception('[Erro CGM160] Modelo nao informado ('.$model.') ');
}
return $this;
}
public function PDO()
{
if (extension_loaded('pdo')) {
if (in_array($this->_driver, PDO::getAvailableDrivers())) {
try {
self::$connection=new PDO($this->_dsn, $this->_user, (!$this->_pass?'':$this->_pass), $this->_driveroptions);
self::$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//echo 'CONECTADO!!!';
} catch (PDOException $e) {
throw new Exception('PDO Connection Error: '.$e->getMessage());
}
return self::$connection;
} else {
throw new Exception('[Error CGM54] Nao ha driver disponivel para \''.$this->_driver.'\'');
}
} else {
throw new Exception('[Error CGM57] Extensao PDO nao carregada');
}
}
public function GenerateClass($table='all', $create=TRUE) {
$table=strtolower($table);
if ($table=='all') {
$tables=self::$connection->query('SHOW TABLES')->fetchAll();
foreach ($tables as $table) {
$this->GenerateDTO($table[0], $create);
$this->GenerateDAO($table[0], $create);
}
} else {
try {
$desc=self::$connection->query('DESC '.$table)->fetchAll();
$classedto=ucwords($table)."DTO";
$class=' class '.$classedto.' extends DBO'."\n";
$class.=" {\n";
$contador=0;
foreach ($desc as $d) {
$campo[$contador]=$d['Field'];
$tipo[$contador]=$d['Type'];
$null[$contador]=$d['Null'];
$key[$contador]=$d['Key'];
$default[$contador]=$d['Default'];
$extra[$contador]=$d['Extra'];
if (is_null($default[$contador])) {
$default[$contador]="NULL";
} else {
$default[$contador]="'".$default[$contador]."'";
}
if (strpos($tipo[$contador],"int")===false) {
$tiposql[$contador]="%s";
} else {
$tiposql[$contador]="%u";
}
$contador++;
}
for ($c=0;$c<$contador;$c++){
$class.=" public \$".$campo[$c]."=".$default[$c].";\n";
}
$class.="\n public function ".$classedto."(){}\n";
for ($c=0;$c<$contador;$c++) {
$name=ucwords($campo[$c]);
if ($key[$c]!="") {
$class.="\n // ".$name." (".$key[$c]." ".$tipo[$c].")\n";
} else {
$class.="\n // ".$name." (".$tipo[$c].")\n";
}
$class.=" public function get".$name."()\n";
$class.=" {\n";
$class.=" return \$this->".$campo[$c].";\n";
$class.=" }\n";
$class.=" public function set".$name."($".$campo[$c].")\n";
$class.=" {\n";
$class.=" \$this->".$campo[$c]."=\$".$campo[$c].";\n";
$class.=" }\n";
}
$class.=" }\n";
if ($create) {
eval($class);
} else {
return "<?php \n".$class;
}
} catch (PDOException $e) {
throw new Exception('PDO Connection Error: '.$e->getMessage());
}
}
}
public function GenerateDTO ($table='all', $create=TRUE) {
$table=strtolower($table);
if ($table=='all') {
$tables=self::$connection->query('SHOW TABLES')->fetchAll();
foreach ($tables as $table) {
$this->GenerateDTO($table[0], $create);
}
} else {
try {
$desc=self::$connection->query('DESC '.$table)->fetchAll();
$classedto=ucwords($table)."DTO";
$class=" class ".$classedto."\n";
$class.=" {\n";
$contador=0;
foreach ($desc as $d) {
$campo[$contador]=$d['Field'];
$tipo[$contador]=$d['Type'];
$null[$contador]=$d['Null'];
$key[$contador]=$d['Key'];
$default[$contador]=$d['Default'];
$extra[$contador]=$d['Extra'];
if (is_null($default[$contador])) {
$default[$contador]="NULL";
} else {
$default[$contador]="'".$default[$contador]."'";
}
if (strpos($tipo[$contador],"int")===false) {
$tiposql[$contador]="%s";
} else {
$tiposql[$contador]="%u";
}
$contador++;
}
for ($c=0;$c<$contador;$c++){
$class.=" private \$".$campo[$c]."=".$default[$c].";\n";
}
$class.="\n public function ".$classedto."(){}\n";
for ($c=0;$c<$contador;$c++) {
$name=ucwords($campo[$c]);
if ($key[$c]!="") {
$class.="\n // ".$name." (".$key[$c]." ".$tipo[$c].")\n";
} else {
$class.="\n // ".$name." (".$tipo[$c].")\n";
}
$class.=" public function get".$name."()\n";
$class.=" {\n";
$class.=" return \$this->".$campo[$c].";\n";
$class.=" }\n";
$class.=" public function set".$name."($".$campo[$c].")\n";
$class.=" {\n";
$class.=" \$this->".$campo[$c]."=\$".$campo[$c].";\n";
$class.=" }\n";
}
$class.=" }\n";
if ($create) {
eval($class);
} else {
return "<?php \n".$class;
}
} catch (PDOException $e) {
throw new Exception('PDO Connection Error: '.$e->getMessage());
}
}
}
public function GenerateDAO ($table='all', $create=TRUE) {
$table=strtolower($table);
if ($table=='all') {
$tables=self::$connection->query('SHOW TABLES')->fetchAll();
foreach ($tables as $table) {
$this->GenerateDAO($table[0], $create);
}
} else {
try {
$desc=self::$connection->query('DESC '.$table)->fetchAll();
$classedao=ucwords($table)."DAO";
$classedto=ucwords($table)."DTO";
$classdao=" class ".$classedao." extends DBO\n";
$classdao.=" {\n\n";
//foreach ($desc as $d) {
$contador=sizeof($desc);
if ($contador>0) {
$classdao.=" // Select All\n";
$classdao.=" public function getAll(\$limit=10)\n";
$classdao.=" {\n";
$classdao.=" \$objDto=new ".$classedto."();\n";
$classdao.=" \$return=array();\n";
$classdao.=" if(floor(\$limit)!=0)\n";
$classdao.=" {\n";
$classdao.=" \$sqllimit=\"LIMIT \".floor(\$limit);\n";
$classdao.=" }\n";
$classdao.=" else\n";
$classdao.=" {\n";
$classdao.=" \$sqllimit=\"\";\n";
$classdao.=" }\n";
$classdao.=" \$sql=\"SELECT * FROM ".$table." \".\$sqllimit;\n";
$classdao.=" \$resultado=\$this->execSQL(\$sql);\n";
$classdao.=" \$dados=\$this->dados(\$resultado);\n";
$classdao.=" foreach(\$dados as \$d) {\n";
//$classdao.=" while(\$dados=\$this->dados(\$resultado))\n";
//$classdao.=" {\n";
foreach ($desc as $d) {
$name=ucwords($d[0]);
//$classdao.="var_dump(\$dados);";
$classdao.=" \$objDto->set".$name."(stripslashes(\$d['".$d[0]."']));\n";
//$classdao.=" \$objDto->set".$name."(stripslashes(\$dados['".$d[0]."']));\n";
}
$classdao.=" \$return[]=clone \$objDto;\n";
$classdao.=" }\n";
$classdao.=" return \$return;\n";
$classdao.=" }\n\n";
$classdao.=" // Select by Id\n";
$classdao.=" public function getById(\$id)\n";
$classdao.=" {\n";
$classdao.=" \$objDto=new ".$classedto."();\n";
$classdao.=" \$sql=sprintf('SELECT * FROM ".$table." WHERE codigo=\"%u\"',\$this->secsql(\$id));\n";
$classdao.=" \$resultado=\$this->execSQL(\$sql);\n";
$classdao.=" if(\$this->linhas(\$resultado)==1)\n";
$classdao.=" {\n";
$classdao.=" \$dados=\$this->dados(\$resultado);\n";
$classdao.=" foreach(\$dados as \$d) {\n";
foreach ($desc as $d) {
$name=ucwords($d[0]);
$classdao.=" \$objDto->set".$name."(stripslashes(\$d['".$d[0]."']));\n";
}
$classdao.=" \$return=clone \$objDto;\n";
$classdao.=" }\n";
$classdao.=" }\n";
$classdao.=" else\n";
$classdao.=" {\n";
$classdao.=" \$return=NULL;\n";
$classdao.=" }\n";
$classdao.=" return \$return;\n";
$classdao.=" }\n\n";
$classdao.=" // Insert\n";
$classdao.=" public function insert(".$classedto." \$objDto)\n";
$classdao.=" {\n";
$classdao.=" \$sql=sprintf('INSERT INTO ".$table." (";
$c=0;
foreach ($desc as $d) {
$classdao.=$d[0];
if ($c<$contador-1) {
$classdao.=",";
}
$c++;
}
$classdao.=") VALUES (";
$c=0;
foreach ($desc as $d) {
if (strpos($d[1],"int")===false) {
$classdao.="\"%s\"";
} else {
$classdao.="\"%u\"";
}
if ($c<$contador-1) {
$classdao.=",";
}
$c++;
}
$classdao.=")',\n";
$c=0;
foreach ($desc as $d) {
$name=ucwords($d[0]);
$classdao.=" \$this->secsql(\$objDto->get".$name."())";
if ($c<$contador-1) {
$classdao.=",\n";
}
$c++;
}
$classdao.=" );\n";
$classdao.=" \$this->execSQL(\$sql);\n";
$classdao.=" \$objDto->setCodigo(mysql_insert_id());\n";
$classdao.=" return \$objDto;\n";
$classdao.=" }\n\n";
$classdao.=" // Update\n";
$classdao.=" public function update(".$classedto." \$objDto)\n";
$classdao.=" {\n";
$classdao.=" if(!\$objDto->getCodigo())\n";
$classdao.=" throw new Exception('Valor da chave primaria invalido');\n";
$classdao.=" \$sql=sprintf('UPDATE ".$table." SET ";
$c=0;
foreach ($desc as $d) {
if (strpos($d[1],"int")===false) {
$classdao.=$d[0]."=\"%s\"";
} else {
$classdao.=$d[0]."=\"%u\"";
}
if ($c<$contador-1) {
$classdao.=", ";
}
$c++;
}
$classdao.=" WHERE codigo=\"%u\"',\n";
$c=0;
foreach ($desc as $d) {
$name=ucwords($d[0]);
$classdao.=" \$this->secsql(\$objDto->get".$name."())";
if ($c<$contador-1) {
$classdao.=",\n";
}
$c++;
}
$classdao.=" );\n";
$classdao.=" \$this->execSQL(\$sql);\n";
$classdao.=" }\n\n";
$classdao.=" // Delete\n";
$classdao.=" public function delete(".$classedto." \$objDto)\n";
$classdao.=" {\n";
$classdao.=" if(\$objDto->getCodigo()==NULL)\n";
$classdao.=" throw new Exception('Valor da chave primaria invalido.');\n";
$classdao.=" \$sql=sprintf('DELETE FROM ".$table." WHERE codigo=\"%u\"',\$this->secsql(\$objDto->getCodigo()));\n";
$classdao.=" \$this->execSQL(\$sql);\n";
$classdao.=" }\n\n";
$classdao.=" // Save\n";
$classdao.=" public function save(".$classedto." &\$objDto)\n";
$classdao.=" {\n";
$classdao.=" if(\$objDto->getCodigo()!== null)\n";
$classdao.=" {\n";
$classdao.=" \$this->update(\$objDto);\n";
$classdao.=" }\n";
$classdao.=" else\n";
$classdao.=" {\n";
$classdao.=" \$this->insert(\$objDto);\n";
$classdao.=" }\n";
$classdao.=" }\n\n";
$classdao.=" // SecSQL\n";
$classdao.=" public function secsql(\$string)\n";
$classdao.=" {\n";
$classdao.=" \$string=mysql_real_escape_string(\$string);\n";
$classdao.=" return \$string;\n";
$classdao.=" }\n";
$classdao.=" }\n";
if ($create) {
eval($classdao);
} else {
return "<?php \n".$classdao;
}
}
} catch (PDOException $e) {
throw new Exception('PDO Connection Error: '.$e->getMessage());
}
}
}
public function GenerateAR ($table='all', $create=TRUE) {
if ($table=='all') {
$tables=self::$connection->query('SHOW TABLES')->fetchAll();
foreach ($tables as $table) {
$this->GenerateAR($table[0], $create);
}
} else {
$table=strtolower($table);
$classear=ucwords($table);
$class="class ".$classear." extends ActiveRecord{\n";
$class.="\tpublic function __construct(){\n";
$class.="\t\tparent::__construct(get_class(\$this));\n";
$class.="\t}\n";
$class.="}\n";
if ($create) {
eval($class);
} else {
return "<?php \n".$class;
}
}
}
public function LoadTable($table=NULL)
{
if (is_null($table)) {
throw new Exception ('[Erro CGM66] Tabela nao informada');
} else {
if ($adapter == null) {
return Oraculum_Models::getInstance()->getCurrentConnection();
} else {
return Oraculum_Models::getInstance()->openConnection($adapter, $name);
}
}
return $this;
}
public static function connection($adapter = null, $name = null)
{
if ($adapter == null) {
return Doctrine_Manager::getInstance()->getCurrentConnection();
} else {
return Doctrine_Manager::getInstance()->openConnection($adapter, $name);
}
}
public function setDsn($dsn=NULL) {
if (is_null($dsn)) {
throw new Exception ('[Erro CGM414] DSN nao informado');
} else {
$this->_dsn=$dsn;
}
}
public function getModelName() {
return $this->_model;
}
}
File: /home/divitto/www/libraries/OF/core/general/Models.php
line 21Oraculum_Models->LoadModel(site);Show Source Code
<?php
class Oraculum_Models
{
private $_dsn=NULL;
private $_dsntype=1;
private $_user=NULL;
private $_pass=NULL;
private $_host=NULL;
private $_driver=NULL;
private $_database=NULL;
private $_driveroptions=array();
private $_model=NULL;
public static $connection=NULL;
public function __construct($model=NULL) {
if (!defined('MODEL_DIR')) {
define('MODEL_DIR', 'models');
}
Oraculum::Load('DBO');
Oraculum::Load('ActiveRecord');
return $this->LoadModel($model);
}
public function LoadModel($model=NULL) {
if (!is_null($model)) {
$modelfile=MODEL_DIR.'/'.$model.'.php';
if (file_exists($modelfile)) {
include($modelfile);
} else {
throw new Exception('[Erro CGM17] Modelo nao encontrado ('.$modelfile.') ');
}
if ($this->_dsntype==2) {
$dsn=preg_split('[://|:|@|/]', $this->_dsn);
$this->_driver=strtolower($dsn[0]);
$this->_user=$dsn[1];
$this->_pass=$dsn[2];
$this->_host=$dsn[3];
$this->_database=$dsn[4];
$this->_driveroptions=isset($dsn[5])?$dsn[5]:NULL;
$this->_dsn=$this->_driver.':host='.$this->_host.';dbname='.$this->_database;
}
$this->_model=$model;
}
if (!isset(self::$connection)) {
$this->PDO();
}
return $this;
}
public function SaveModel($table='all', $debug=TRUE) {
$table=strtolower($table);
if ($table=='all') {
$tables=self::$connection->query('SHOW TABLES')->fetchAll();
foreach ($tables as $table) {
$dtodir=MODEL_DIR.'/dto/';
$daodir=MODEL_DIR.'/dao/';
if (!file_exists($dtodir)) {
if (is_writable(MODEL_DIR)) {
mkdir($dtodir);
} else {
throw new Exception('[Erro CGM53] Sem permissao para criar diretorio DTO');
}
}
if (!file_exists($daodir)) {
if (is_writable(MODEL_DIR)) {
mkdir($daodir);
} else {
throw new Exception('[Erro CGM61] Sem permissao para criar diretorio DAO');
}
}
$modelfile=$dtodir.$table[0].'.php';
if (is_writable($dtodir)) {
$model=$this->GenerateDTO($table[0], FALSE);
$mf=fopen($modelfile, 'w');
fwrite($mf, $model);
fclose($mf);
} else {
throw new Exception('[Erro CGM71] O arquivo nao pode ser gravado ('.$modelfile.')');
}
$modelfile=$daodir.$table[0].'.php';
if (is_writable($daodir)) {
$model=$this->GenerateDAO($table[0], FALSE);
$mf=fopen($modelfile, 'w');
fwrite($mf, $model);
fclose($mf);
} else {
throw new Exception('[Erro CGM81] O arquivo nao pode ser gravado ('.$modelfile.')');
}
}
}
if ($debug) {
echo 'Classes geradas com sucesso!<br />';
echo 'Para carregar as classes geradas em alguma área do site utilize o seguinte código:<br />';
echo '<pre>';
highlight_string("<?php\n\tOraculum::Load('Models');\n\t\$db=new Oraculum_Models('".$this->_model."');\n\t\$db->LoadModelClass();");
echo '</pre>';
}
}
public function LoadModelClass($model='all', $type='AR', $key='codigo') {
if (!is_null($model)) {
if ($model=='all') {
if ($type=='DO') {
foreach (glob(MODEL_DIR.'/dto/*.php') as $filename) {
include_once($filename);
}
foreach (glob(MODEL_DIR.'/dao/*.php') as $filename) {
include_once($filename);
}
} else {
foreach (glob(MODEL_DIR.'/ar/*.php') as $filename) {
include_once($filename);
}
}
} else {
$model=strtolower($model);
if ($type=='DO') {
$modelfile=MODEL_DIR.'/dto/'.$model.'.php';
if (file_exists($modelfile)) {
include($modelfile);
} else {
throw new Exception('[Erro CGM93] Modelo nao encontrado ('.$modelfile.') ');
}
$modelfile=MODEL_DIR.'/dao/'.$model.'.php';
if (file_exists($modelfile)) {
include($modelfile);
} else {
throw new Exception('[Erro CGM93] Modelo nao encontrado ('.$modelfile.') ');
}
} else {
$modelfile=MODEL_DIR.'/ar/'.$model.'.php';
if (file_exists($modelfile)) {
include_once($modelfile);
} else {
if (!$this->LoadDinamicModelClass($model, $key)) {
throw new Exception('[Erro CGM93] Modelo nao encontrado ('.$modelfile.') ');
}
}
}
}
}
return $this;
}
public function LoadDinamicModelClass($model=NULL, $key='codigo') {
if (!is_null($model)) {
$class=ucwords($model);
if (!class_exists($class)) {
$eval='class '.$class.' extends ActiveRecord{';
$eval.=' public function __construct(){';
$eval.=' parent::__construct(get_class($this))';
$eval.=' ->setKey(array(\''.$key.'\'));';
$eval.=' }';
$eval.='}';
eval($eval);
}
return true;
} else {
throw new Exception('[Erro CGM160] Modelo nao informado ('.$model.') ');
}
return $this;
}
public function PDO()
{
if (extension_loaded('pdo')) {
if (in_array($this->_driver, PDO::getAvailableDrivers())) {
try {
self::$connection=new PDO($this->_dsn, $this->_user, (!$this->_pass?'':$this->_pass), $this->_driveroptions);
self::$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//echo 'CONECTADO!!!';
} catch (PDOException $e) {
throw new Exception('PDO Connection Error: '.$e->getMessage());
}
return self::$connection;
} else {
throw new Exception('[Error CGM54] Nao ha driver disponivel para \''.$this->_driver.'\'');
}
} else {
throw new Exception('[Error CGM57] Extensao PDO nao carregada');
}
}
public function GenerateClass($table='all', $create=TRUE) {
$table=strtolower($table);
if ($table=='all') {
$tables=self::$connection->query('SHOW TABLES')->fetchAll();
foreach ($tables as $table) {
$this->GenerateDTO($table[0], $create);
$this->GenerateDAO($table[0], $create);
}
} else {
try {
$desc=self::$connection->query('DESC '.$table)->fetchAll();
$classedto=ucwords($table)."DTO";
$class=' class '.$classedto.' extends DBO'."\n";
$class.=" {\n";
$contador=0;
foreach ($desc as $d) {
$campo[$contador]=$d['Field'];
$tipo[$contador]=$d['Type'];
$null[$contador]=$d['Null'];
$key[$contador]=$d['Key'];
$default[$contador]=$d['Default'];
$extra[$contador]=$d['Extra'];
if (is_null($default[$contador])) {
$default[$contador]="NULL";
} else {
$default[$contador]="'".$default[$contador]."'";
}
if (strpos($tipo[$contador],"int")===false) {
$tiposql[$contador]="%s";
} else {
$tiposql[$contador]="%u";
}
$contador++;
}
for ($c=0;$c<$contador;$c++){
$class.=" public \$".$campo[$c]."=".$default[$c].";\n";
}
$class.="\n public function ".$classedto."(){}\n";
for ($c=0;$c<$contador;$c++) {
$name=ucwords($campo[$c]);
if ($key[$c]!="") {
$class.="\n // ".$name." (".$key[$c]." ".$tipo[$c].")\n";
} else {
$class.="\n // ".$name." (".$tipo[$c].")\n";
}
$class.=" public function get".$name."()\n";
$class.=" {\n";
$class.=" return \$this->".$campo[$c].";\n";
$class.=" }\n";
$class.=" public function set".$name."($".$campo[$c].")\n";
$class.=" {\n";
$class.=" \$this->".$campo[$c]."=\$".$campo[$c].";\n";
$class.=" }\n";
}
$class.=" }\n";
if ($create) {
eval($class);
} else {
return "<?php \n".$class;
}
} catch (PDOException $e) {
throw new Exception('PDO Connection Error: '.$e->getMessage());
}
}
}
public function GenerateDTO ($table='all', $create=TRUE) {
$table=strtolower($table);
if ($table=='all') {
$tables=self::$connection->query('SHOW TABLES')->fetchAll();
foreach ($tables as $table) {
$this->GenerateDTO($table[0], $create);
}
} else {
try {
$desc=self::$connection->query('DESC '.$table)->fetchAll();
$classedto=ucwords($table)."DTO";
$class=" class ".$classedto."\n";
$class.=" {\n";
$contador=0;
foreach ($desc as $d) {
$campo[$contador]=$d['Field'];
$tipo[$contador]=$d['Type'];
$null[$contador]=$d['Null'];
$key[$contador]=$d['Key'];
$default[$contador]=$d['Default'];
$extra[$contador]=$d['Extra'];
if (is_null($default[$contador])) {
$default[$contador]="NULL";
} else {
$default[$contador]="'".$default[$contador]."'";
}
if (strpos($tipo[$contador],"int")===false) {
$tiposql[$contador]="%s";
} else {
$tiposql[$contador]="%u";
}
$contador++;
}
for ($c=0;$c<$contador;$c++){
$class.=" private \$".$campo[$c]."=".$default[$c].";\n";
}
$class.="\n public function ".$classedto."(){}\n";
for ($c=0;$c<$contador;$c++) {
$name=ucwords($campo[$c]);
if ($key[$c]!="") {
$class.="\n // ".$name." (".$key[$c]." ".$tipo[$c].")\n";
} else {
$class.="\n // ".$name." (".$tipo[$c].")\n";
}
$class.=" public function get".$name."()\n";
$class.=" {\n";
$class.=" return \$this->".$campo[$c].";\n";
$class.=" }\n";
$class.=" public function set".$name."($".$campo[$c].")\n";
$class.=" {\n";
$class.=" \$this->".$campo[$c]."=\$".$campo[$c].";\n";
$class.=" }\n";
}
$class.=" }\n";
if ($create) {
eval($class);
} else {
return "<?php \n".$class;
}
} catch (PDOException $e) {
throw new Exception('PDO Connection Error: '.$e->getMessage());
}
}
}
public function GenerateDAO ($table='all', $create=TRUE) {
$table=strtolower($table);
if ($table=='all') {
$tables=self::$connection->query('SHOW TABLES')->fetchAll();
foreach ($tables as $table) {
$this->GenerateDAO($table[0], $create);
}
} else {
try {
$desc=self::$connection->query('DESC '.$table)->fetchAll();
$classedao=ucwords($table)."DAO";
$classedto=ucwords($table)."DTO";
$classdao=" class ".$classedao." extends DBO\n";
$classdao.=" {\n\n";
//foreach ($desc as $d) {
$contador=sizeof($desc);
if ($contador>0) {
$classdao.=" // Select All\n";
$classdao.=" public function getAll(\$limit=10)\n";
$classdao.=" {\n";
$classdao.=" \$objDto=new ".$classedto."();\n";
$classdao.=" \$return=array();\n";
$classdao.=" if(floor(\$limit)!=0)\n";
$classdao.=" {\n";
$classdao.=" \$sqllimit=\"LIMIT \".floor(\$limit);\n";
$classdao.=" }\n";
$classdao.=" else\n";
$classdao.=" {\n";
$classdao.=" \$sqllimit=\"\";\n";
$classdao.=" }\n";
$classdao.=" \$sql=\"SELECT * FROM ".$table." \".\$sqllimit;\n";
$classdao.=" \$resultado=\$this->execSQL(\$sql);\n";
$classdao.=" \$dados=\$this->dados(\$resultado);\n";
$classdao.=" foreach(\$dados as \$d) {\n";
//$classdao.=" while(\$dados=\$this->dados(\$resultado))\n";
//$classdao.=" {\n";
foreach ($desc as $d) {
$name=ucwords($d[0]);
//$classdao.="var_dump(\$dados);";
$classdao.=" \$objDto->set".$name."(stripslashes(\$d['".$d[0]."']));\n";
//$classdao.=" \$objDto->set".$name."(stripslashes(\$dados['".$d[0]."']));\n";
}
$classdao.=" \$return[]=clone \$objDto;\n";
$classdao.=" }\n";
$classdao.=" return \$return;\n";
$classdao.=" }\n\n";
$classdao.=" // Select by Id\n";
$classdao.=" public function getById(\$id)\n";
$classdao.=" {\n";
$classdao.=" \$objDto=new ".$classedto."();\n";
$classdao.=" \$sql=sprintf('SELECT * FROM ".$table." WHERE codigo=\"%u\"',\$this->secsql(\$id));\n";
$classdao.=" \$resultado=\$this->execSQL(\$sql);\n";
$classdao.=" if(\$this->linhas(\$resultado)==1)\n";
$classdao.=" {\n";
$classdao.=" \$dados=\$this->dados(\$resultado);\n";
$classdao.=" foreach(\$dados as \$d) {\n";
foreach ($desc as $d) {
$name=ucwords($d[0]);
$classdao.=" \$objDto->set".$name."(stripslashes(\$d['".$d[0]."']));\n";
}
$classdao.=" \$return=clone \$objDto;\n";
$classdao.=" }\n";
$classdao.=" }\n";
$classdao.=" else\n";
$classdao.=" {\n";
$classdao.=" \$return=NULL;\n";
$classdao.=" }\n";
$classdao.=" return \$return;\n";
$classdao.=" }\n\n";
$classdao.=" // Insert\n";
$classdao.=" public function insert(".$classedto." \$objDto)\n";
$classdao.=" {\n";
$classdao.=" \$sql=sprintf('INSERT INTO ".$table." (";
$c=0;
foreach ($desc as $d) {
$classdao.=$d[0];
if ($c<$contador-1) {
$classdao.=",";
}
$c++;
}
$classdao.=") VALUES (";
$c=0;
foreach ($desc as $d) {
if (strpos($d[1],"int")===false) {
$classdao.="\"%s\"";
} else {
$classdao.="\"%u\"";
}
if ($c<$contador-1) {
$classdao.=",";
}
$c++;
}
$classdao.=")',\n";
$c=0;
foreach ($desc as $d) {
$name=ucwords($d[0]);
$classdao.=" \$this->secsql(\$objDto->get".$name."())";
if ($c<$contador-1) {
$classdao.=",\n";
}
$c++;
}
$classdao.=" );\n";
$classdao.=" \$this->execSQL(\$sql);\n";
$classdao.=" \$objDto->setCodigo(mysql_insert_id());\n";
$classdao.=" return \$objDto;\n";
$classdao.=" }\n\n";
$classdao.=" // Update\n";
$classdao.=" public function update(".$classedto." \$objDto)\n";
$classdao.=" {\n";
$classdao.=" if(!\$objDto->getCodigo())\n";
$classdao.=" throw new Exception('Valor da chave primaria invalido');\n";
$classdao.=" \$sql=sprintf('UPDATE ".$table." SET ";
$c=0;
foreach ($desc as $d) {
if (strpos($d[1],"int")===false) {
$classdao.=$d[0]."=\"%s\"";
} else {
$classdao.=$d[0]."=\"%u\"";
}
if ($c<$contador-1) {
$classdao.=", ";
}
$c++;
}
$classdao.=" WHERE codigo=\"%u\"',\n";
$c=0;
foreach ($desc as $d) {
$name=ucwords($d[0]);
$classdao.=" \$this->secsql(\$objDto->get".$name."())";
if ($c<$contador-1) {
$classdao.=",\n";
}
$c++;
}
$classdao.=" );\n";
$classdao.=" \$this->execSQL(\$sql);\n";
$classdao.=" }\n\n";
$classdao.=" // Delete\n";
$classdao.=" public function delete(".$classedto." \$objDto)\n";
$classdao.=" {\n";
$classdao.=" if(\$objDto->getCodigo()==NULL)\n";
$classdao.=" throw new Exception('Valor da chave primaria invalido.');\n";
$classdao.=" \$sql=sprintf('DELETE FROM ".$table." WHERE codigo=\"%u\"',\$this->secsql(\$objDto->getCodigo()));\n";
$classdao.=" \$this->execSQL(\$sql);\n";
$classdao.=" }\n\n";
$classdao.=" // Save\n";
$classdao.=" public function save(".$classedto." &\$objDto)\n";
$classdao.=" {\n";
$classdao.=" if(\$objDto->getCodigo()!== null)\n";
$classdao.=" {\n";
$classdao.=" \$this->update(\$objDto);\n";
$classdao.=" }\n";
$classdao.=" else\n";
$classdao.=" {\n";
$classdao.=" \$this->insert(\$objDto);\n";
$classdao.=" }\n";
$classdao.=" }\n\n";
$classdao.=" // SecSQL\n";
$classdao.=" public function secsql(\$string)\n";
$classdao.=" {\n";
$classdao.=" \$string=mysql_real_escape_string(\$string);\n";
$classdao.=" return \$string;\n";
$classdao.=" }\n";
$classdao.=" }\n";
if ($create) {
eval($classdao);
} else {
return "<?php \n".$classdao;
}
}
} catch (PDOException $e) {
throw new Exception('PDO Connection Error: '.$e->getMessage());
}
}
}
public function GenerateAR ($table='all', $create=TRUE) {
if ($table=='all') {
$tables=self::$connection->query('SHOW TABLES')->fetchAll();
foreach ($tables as $table) {
$this->GenerateAR($table[0], $create);
}
} else {
$table=strtolower($table);
$classear=ucwords($table);
$class="class ".$classear." extends ActiveRecord{\n";
$class.="\tpublic function __construct(){\n";
$class.="\t\tparent::__construct(get_class(\$this));\n";
$class.="\t}\n";
$class.="}\n";
if ($create) {
eval($class);
} else {
return "<?php \n".$class;
}
}
}
public function LoadTable($table=NULL)
{
if (is_null($table)) {
throw new Exception ('[Erro CGM66] Tabela nao informada');
} else {
if ($adapter == null) {
return Oraculum_Models::getInstance()->getCurrentConnection();
} else {
return Oraculum_Models::getInstance()->openConnection($adapter, $name);
}
}
return $this;
}
public static function connection($adapter = null, $name = null)
{
if ($adapter == null) {
return Doctrine_Manager::getInstance()->getCurrentConnection();
} else {
return Doctrine_Manager::getInstance()->openConnection($adapter, $name);
}
}
public function setDsn($dsn=NULL) {
if (is_null($dsn)) {
throw new Exception ('[Erro CGM414] DSN nao informado');
} else {
$this->_dsn=$dsn;
}
}
public function getModelName() {
return $this->_model;
}
}
File: /home/divitto/www/controls/pages/collection.php
line 3Oraculum_Models->__construct(site);Show Source Code
<?php
$db = new Oraculum_Models('site');
$db->LoadModelClass('categorias');
$db->LoadModelClass('arquivos');
$url = Oraculum_Request::getvar('collection');
$categorias = new Categorias();
$arquivos = new Arquivos();
Oraculum_Register::set('tabela-arquivos', $arquivos);
if ($url != "") {
$db->LoadModelClass('categorias_arquivos');
$catArq = new Categorias_Arquivos();
$cat = $categorias->getByUrl($url);
$page = (int) Oraculum_Request::getvar('page');
$rpp = 21; // Resultados por pagina
$page = $page == 0 ? 1 : $page;
$offset = ($rpp * ($page - 1));
$lstAnexos = $catArq->getAllById_Categoria($cat->id_categoria, '%s', $rpp, $offset, 'data', 'ASC');
$ct = DBO::execSQL("select count(*) as total from categorias_arquivos where id_categoria = $cat->id_categoria");
$ct = $catArq->fetch($ct);
$total = 0;
foreach ($ct as $c) {
$total = $c->total;
}
Oraculum_Plugins::Load('pager');
$pager = new Oraculum_Pager;
$pager->setTotal($total)->setResults($rpp)->setPage($page)->setUrl(URL . "collection/$url/page/");
$pager = $pager->ifneedpagination()->pager();
Oraculum_Register::set('pager', $pager);
Oraculum_Register::set('lista-anexos', $lstAnexos);
Oraculum_Register::set('abreviatura', strtoupper($cat->abreviatura));
Oraculum_Register::set('categoria', $cat->categoria);
Oraculum_WebApp::LoadView()
->AddTemplate('geral')
->LoadPage('collection-detail');
} else {
$lstBanners = $categorias->getAll(null, null, 'categoria', 'ASC');
Oraculum_Register::set('lista-banners', $lstBanners);
Oraculum_WebApp::LoadView()
->AddTemplate('geral')
->LoadPage('collection');
}
File: /home/divitto/www/libraries/OF/core/general/Controls.php
line 44include_once(
/home/divitto/www/controls/pages/collection.php);
Show Source Code
<?php
/**
* Tratamento de Controladores
*
*
* @filesource $HeadURL: https://oraculum-php.googlecode.com/svn/trunk/core/general/Controls.php $
* @category Framework
* @package oraculum
* @subpackage oraculum.core.controls
* @license http://www.opensource.org/licenses/lgpl-3.0.html (LGPLv3)
* @version $Revision: 90 $
* @modifiedby $LastChangedBy: Patrixsbs $
* @lastmodified $Date: 2012-05-24 13:46:17 -0300 (qui, 24 mai 2012) $
*
*/
class Oraculum_Controls
{
public function __construct() {
if (!defined('CONTROL_DIR')):
define('CONTROL_DIR', 'controls');
endif;
if (!defined('ERRORPAGE')):
define('ERRORPAGE', '404');
endif;
}
public function LoadPage($page=NULL, $url=NULL, $usetemplate=false)
{
if (is_null($page)) {
throw new Exception ('[Erro CGC31] Pagina nao informada');
} else {
$pagefile=CONTROL_DIR.'/pages/'.$page.'.php';
$urlfile=CONTROL_DIR.'/pages/'.$url.'.php';
$errorpage=CONTROL_DIR.'/pages/'.ERRORPAGE.'.php';
if ($page=='') {
$class=ucwords($url).'Controller';
} else {
$class=ucwords($page).'Controller';
}
if (file_exists($urlfile)) {
include_once($urlfile);
} elseif (file_exists($pagefile)) {
include_once($pagefile);
} elseif(file_exists($errorpage)) {
//header('HTTP/1.1 404 Not Found');
include_once($errorpage);
} else {
header('HTTP/1.1 404 Not Found');
throw new Exception('[Erro CGC50] Pagina nao encontrada ('.$pagefile.') ');
}
if (class_exists($class)) {
new $class;
}
}
return $this;
}
public static function LoadHelper($helper=NULL)
{
if (is_null($helper)) {
throw new Exception ('[Erro CGC62] Helper nao informado');
} else {
$helperfile=CONTROL_DIR.'/helpers/'.$helper.'.php';
if (file_exists($helperfile)) {
include_once($helperfile);
} else {
throw new Exception('[Erro CGC68] Helper nao encontrado ('.$helperfile.') ');
}
}
}
}
File: /home/divitto/www/libraries/OF/core/general/FrontController.php
line 59Oraculum_Controls->LoadPage(collection,collectionvaccum-flasks);Show Source Code
<?php
/**
* Tratamento de parametros HTTP
*
*
* @filesource $HeadURL: $
* @category Framework
* @package oraculum
* @subpackage oraculum.core.frontcontroller
* @license http://www.opensource.org/licenses/lgpl-3.0.html (LGPLv3)
* @version $Revision: $
* @modifiedby $LastChangedBy: Patrick $
* @lastmodified $Date: 2011-06-21 16:11:40 -0300 (Ter, 21 Jun 2011) $
*
*/
Oraculum::Load('Request');
class Oraculum_FrontController
{
private $_defaulturl=NULL;
private $_errorpage=NULL;
public function setBaseUrl($url) {
if (!defined('URL')) {
define('URL', $url);
$gets=Oraculum_Request::gets();
$base=(count(explode('/', URL))-2);
$base=strpos($gets[$base], '.php')?$base+2:$base;
define('BASE', $base);
}
return $this;
}
public function setDefaultPage($url) {
$this->_defaulturl=$url;
return $this;
}
public function setErrorPage($url) {
if (!defined('ERRORPAGE')) {
define('ERRORPAGE', $url);
}
return $this;
}
public function start() {
Oraculum::Load('Request');
$request=Oraculum_Request::request();
$url=str_ireplace(URL, '', $request);
$gets=Oraculum_Request::gets();
if (isset($gets[(BASE)+1])) {
$page=$gets[(BASE)+1];
} else {
$page=$this->_defaulturl;
//throw new Exception('[Erro CGFC36] Nao foi possivel determinar a pagina atraves da URL');
}
if ($url=='') {
$url=$this->_defaulturl;
}
Oraculum_App::LoadControl()->LoadPage($page, $url);
}
}
File: /home/divitto/www/index.php
line 28Oraculum_FrontController->start();Show Source Code
<?php
ini_set('display_errors', true);
header("Content-Type: text/html; charset=UTF-8", true);
header('X-Powered-By: Oraculum PHP Framework');
date_default_timezone_set("America/Sao_Paulo");
//echo "teste";
include('./bootstrap.php');
Oraculum::LoadContainer('WebApp');
Oraculum::Load('Routes');
Oraculum::Load('Models');
Oraculum::Load('Exceptions');
Oraculum::Load('Text');
Oraculum::Load('Plugins');
Oraculum::Load('Request');
if ($_SERVER['SERVER_NAME'] == "localhost") {
$url = '/Projetos/AraoAdvogados/';
} else {
$url = '/';
}
define('IMG', $url . 'public/img/');
define('MOEDA','R$');
$app = new Oraculum_WebApp();
$app->FrontController()
->setBaseUrl($url)
->setDefaultPage('home')
->setErrorPage('404')
->start();