SQL Query: Removed.

Command: Integrate SQL Query functionality within Command app.
(Note: Permission and Menu modifications - please Restore Defaults)
This commit is contained in:
reliberate
2016-03-18 23:18:00 -06:00
parent 6797e7cb7e
commit 409afa0bed
14 changed files with 661 additions and 906 deletions

View File

@@ -1,31 +0,0 @@
<?php
//application details
$apps[$x]['name'] = "SQL Query";
$apps[$x]['uuid'] = "a8b8ca29-083d-fb9b-5552-cc272de18ea6";
$apps[$x]['category'] = "System";
$apps[$x]['subcategory'] = "";
$apps[$x]['version'] = "";
$apps[$x]['license'] = "Mozilla Public License 1.1";
$apps[$x]['url'] = "http://www.fusionpbx.com";
$apps[$x]['description']['en-us'] = "Run Structur Query Language commands.";
$apps[$x]['description']['es-cl'] = "Ejecuta comandos SQL";
$apps[$x]['description']['es-mx'] = "";
$apps[$x]['description']['de-de'] = "";
$apps[$x]['description']['de-ch'] = "";
$apps[$x]['description']['de-at'] = "";
$apps[$x]['description']['fr-fr'] = "Executer des requêtes SQL";
$apps[$x]['description']['fr-ca'] = "";
$apps[$x]['description']['fr-ch'] = "";
$apps[$x]['description']['pt-pt'] = "Executar comandos SQL.";
$apps[$x]['description']['pt-br'] = "";
//permission details
$apps[$x]['permissions'][0]['name'] = "sql_query_execute";
$apps[$x]['permissions'][0]['menu']['uuid'] = "a894fed7-5a17-f695-c3de-e32ce58b3794";
$apps[$x]['permissions'][0]['groups'][] = "superadmin";
$apps[$x]['permissions'][1]['name'] = "sql_query_backup";
$apps[$x]['permissions'][1]['groups'][] = "superadmin";
?>

View File

@@ -1,173 +0,0 @@
<?php
$text['title-sql_query']['en-us'] = "SQL Query";
$text['title-sql_query']['es-cl'] = "Consulta SQL";
$text['title-sql_query']['pt-pt'] = "Consulta SQL";
$text['title-sql_query']['fr-fr'] = "Requête SQL";
$text['title-sql_query']['pt-br'] = "Consulta SQL";
$text['title-sql_query']['pl'] = "Zapytanie SQL";
$text['title-sql_query']['sv-se'] = "SQL Fråga";
$text['title-sql_query']['uk'] = "SQL запити";
$text['title-sql_query']['de-at'] = "SQL Abfragen";
$text['title-databases']['en-us'] = "Databases";
$text['title-databases']['es-cl'] = "Bases de datos";
$text['title-databases']['pt-pt'] = "Bases de Dados";
$text['title-databases']['fr-fr'] = "Bases de données";
$text['title-databases']['pt-br'] = "Base de dados";
$text['title-databases']['pl'] = "Bazy danych";
$text['title-databases']['sv-se'] = "Databaser";
$text['title-databases']['uk'] = "Бази даних";
$text['title-databases']['de-at'] = "Datenbanken";
$text['option-result_type_view']['en-us'] = "View";
$text['option-result_type_view']['es-cl'] = "Ver";
$text['option-result_type_view']['pt-pt'] = "Ver";
$text['option-result_type_view']['fr-fr'] = "Voir";
$text['option-result_type_view']['pt-br'] = "Visualizar";
$text['option-result_type_view']['pl'] = "Widok";
$text['option-result_type_view']['sv-se'] = "Granska";
$text['option-result_type_view']['uk'] = "Перегляд";
$text['option-result_type_view']['de-at'] = "Ansicht";
$text['option-result_type_insert']['en-us'] = "SQL Inserts";
$text['option-result_type_insert']['es-cl'] = "Inserciones SQL";
$text['option-result_type_insert']['pt-pt'] = "Inserções SQL";
$text['option-result_type_insert']['fr-fr'] = "Insertion SQL";
$text['option-result_type_insert']['pt-br'] = "Inserir SQL";
$text['option-result_type_insert']['pl'] = "Wstawianie SQL";
$text['option-result_type_insert']['sv-se'] = "SQL Inserts";
$text['option-result_type_insert']['uk'] = "SQL Inserts ";
$text['option-result_type_insert']['de-at'] = "SQL Inserts";
$text['option-result_type_csv']['en-us'] = "CSV Download";
$text['option-result_type_csv']['es-cl'] = "Descargar CSV";
$text['option-result_type_csv']['pt-pt'] = "Descarregar CSV";
$text['option-result_type_csv']['fr-fr'] = "Télécharger le CSV";
$text['option-result_type_csv']['pt-br'] = "Download CSV";
$text['option-result_type_csv']['pl'] = "Pobieranie w formacie CSV";
$text['option-result_type_csv']['sv-se'] = "Ladda Ned CSV";
$text['option-result_type_csv']['uk'] = "CSV Download ";
$text['option-result_type_csv']['de-at'] = "CSV Download";
$text['label-table']['en-us'] = "Table";
$text['label-table']['es-cl'] = "Tabla";
$text['label-table']['pt-pt'] = "Tabela";
$text['label-table']['fr-fr'] = "Table";
$text['label-table']['pt-br'] = "Tabela";
$text['label-table']['pl'] = "Tabela";
$text['label-table']['sv-se'] = "TAbell";
$text['label-table']['uk'] = "Таблиця";
$text['label-table']['de-at'] = "Tabelle";
$text['label-sql_query']['en-us'] = "SQL Query";
$text['label-sql_query']['es-cl'] = "Consulta SQL";
$text['label-sql_query']['pt-pt'] = "Consulta SQL";
$text['label-sql_query']['fr-fr'] = "Requête SQL";
$text['label-sql_query']['pt-br'] = "Consulta SQL";
$text['label-sql_query']['pl'] = "Zapytanie SQL";
$text['label-sql_query']['sv-se'] = "SQL Fråga";
$text['label-sql_query']['uk'] = "SQL запит";
$text['label-sql_query']['de-at'] = "SQL Abfrage";
$text['label-results']['en-us'] = "Results";
$text['label-results']['es-cl'] = "Resultados";
$text['label-results']['pt-pt'] = "Resultados";
$text['label-results']['fr-fr'] = "Résultats";
$text['label-results']['pt-br'] = "Resultados";
$text['label-results']['pl'] = "Rezultaty";
$text['label-results']['sv-se'] = "Resultat";
$text['label-results']['uk'] = "Результати";
$text['label-results']['de-at'] = "Ergebnisse";
$text['label-result_type']['en-us'] = "Result";
$text['label-result_type']['es-cl'] = "Resultado";
$text['label-result_type']['pt-pt'] = "Resultado";
$text['label-result_type']['fr-fr'] = "Résultat";
$text['label-result_type']['pt-br'] = "Resultado";
$text['label-result_type']['pl'] = "Rezultat";
$text['label-result_type']['sv-se'] = "Resultat";
$text['label-result_type']['uk'] = "Результат";
$text['label-result_type']['de-at'] = "Ergebnis";
$text['label-host']['en-us'] = "Host";
$text['label-host']['es-cl'] = "Host";
$text['label-host']['pt-pt'] = "Host";
$text['label-host']['fr-fr'] = "Hôte";
$text['label-host']['pt-br'] = "Máquina";
$text['label-host']['pl'] = "Host";
$text['label-host']['sv-se'] = "Värd";
$text['label-host']['uk'] = "Хост";
$text['label-host']['de-at'] = "Host";
$text['label-error']['en-us'] = "Error";
$text['label-error']['es-cl'] = "Error";
$text['label-error']['pt-pt'] = "Erro";
$text['label-error']['fr-fr'] = "Erreur";
$text['label-error']['pt-br'] = "Erro";
$text['label-error']['pl'] = "Błąd";
$text['label-error']['sv-se'] = "Fel";
$text['label-error']['uk'] = "Помилка";
$text['label-error']['de-at'] = "Fehler";
$text['header-sql_query']['en-us'] = "SQL Query";
$text['header-sql_query']['es-cl'] = "Consulta SQL";
$text['header-sql_query']['pt-pt'] = "Consulta SQL";
$text['header-sql_query']['fr-fr'] = "Requêtes SQL";
$text['header-sql_query']['pt-br'] = "Consulta SQL";
$text['header-sql_query']['pl'] = "Zapytanie SQL";
$text['header-sql_query']['sv-se'] = "SQL Fråga";
$text['header-sql_query']['uk'] = "SQL запит";
$text['header-sql_query']['de-at'] = "SQL Abfrage";
$text['header-databases']['en-us'] = "Databases";
$text['header-databases']['es-cl'] = "Bases de datos";
$text['header-databases']['pt-pt'] = "Bases de Dados";
$text['header-databases']['fr-fr'] = "Bases de données";
$text['header-databases']['pt-br'] = "Base de dados";
$text['header-databases']['pl'] = "Bazy danych";
$text['header-databases']['sv-se'] = "Databaser";
$text['header-databases']['uk'] = "Бази даних";
$text['header-databases']['de-at'] = "Datenbanken";
$text['description-databases']['en-us'] = "Select the database to use with SQL Query.";
$text['description-databases']['es-cl'] = "Seleccione la base de datos para ejecutar la consulta SQL.";
$text['description-databases']['pt-pt'] = "Escolha a base de dados a utilizar.";
$text['description-databases']['fr-fr'] = "Choisir la base de données utilisée par la requête SQL.";
$text['description-databases']['pt-br'] = "Informações sobre a base de dados";
$text['description-databases']['pl'] = "Informacje o bazie danych.";
$text['description-databases']['sv-se'] = "Välj databas att använda för SQL Fråga.";
$text['description-databases']['uk'] = "Інформація про базу даних.";
$text['description-databases']['de-at'] = "Wählen Sie die Datenbank für die SQL Abfrage aus.";
$text['button-select_database']['en-us'] = "Select Database";
$text['button-select_database']['es-cl'] = "Seleccionar Base de Datos";
$text['button-select_database']['pt-pt'] = "Seleccionar Base de Dados";
$text['button-select_database']['fr-fr'] = "Choisir la Base de données";
$text['button-select_database']['pt-br'] = "Selecionar base de dados";
$text['button-select_database']['pl'] = "Wybierz bazę danych";
$text['button-select_database']['sv-se'] = "Välj Databas";
$text['button-select_database']['uk'] = "Вибрати БД";
$text['button-select_database']['de-at'] = "Datenbank wählen";
$text['button-manage']['en-us'] = "Manage";
$text['button-manage']['es-cl'] = "Administrar";
$text['button-manage']['pt-pt'] = "Gerir";
$text['button-manage']['fr-fr'] = "Gérer";
$text['button-manage']['pt-br'] = "Gerenciar";
$text['button-manage']['pl'] = "Zarządzaj";
$text['button-manage']['sv-se'] = "Hantera";
$text['button-manage']['uk'] = "Керувати";
$text['button-manage']['de-at'] = "Verwalten";
$text['button-backup']['en-us'] = "Backup";
$text['button-backup']['es-cl'] = "Respaldar";
$text['button-backup']['pt-pt'] = "Backup";
$text['button-backup']['fr-fr'] = "Sauvegarder";
$text['button-backup']['pt-br'] = "Backup";
$text['button-backup']['pl'] = "Kopia Zapasowa";
$text['button-backup']['sv-se'] = "Backup";
$text['button-backup']['uk'] = "Резервна копія";
$text['button-backup']['de-at'] = "Sichern";
?>

View File

@@ -1,18 +0,0 @@
<?php
$apps[$x]['menu'][0]['title']['en-us'] = "SQL Query";
$apps[$x]['menu'][0]['title']['es-cl'] = "Coinsulta SQL";
$apps[$x]['menu'][0]['title']['fr-fr'] = "Requête SQL";
$apps[$x]['menu'][0]['title']['pt-pt'] = "Consultas SQL";
$apps[$x]['menu'][0]['title']['pt-br'] = "Consulta SQL";
$apps[$x]['menu'][0]['title']['pl'] = "Zapytanie SQL";
$apps[$x]['menu'][0]['title']['sv-se'] = "SQL Fråga";
$apps[$x]['menu'][0]['title']['uk'] = "SQL запити";
$apps[$x]['menu'][0]['title']['de-at'] = "SQL Abfragen";
$apps[$x]['menu'][0]['uuid'] = "a894fed7-5a17-f695-c3de-e32ce58b3794";
$apps[$x]['menu'][0]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
$apps[$x]['menu'][0]['category'] = "internal";
$apps[$x]['menu'][0]['path'] = "/app/sql_query/sql_query.php";
$apps[$x]['menu'][0]['groups'][] = "superadmin";
?>

View File

@@ -1,87 +0,0 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
// make sure the PATH_SEPARATOR is defined
if (!defined("PATH_SEPARATOR")) {
if (strpos($_ENV["OS"], "Win") !== false) {
define("PATH_SEPARATOR", ";");
} else {
define("PATH_SEPARATOR", ":");
}
}
// make sure the document_root is set
$_SERVER["SCRIPT_FILENAME"] = str_replace("\\", '/', $_SERVER["SCRIPT_FILENAME"]);
if(PHP_SAPI == 'cli'){
chdir(pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME));
$script_full_path = str_replace("\\", '/', getcwd() . '/' . $_SERVER["SCRIPT_FILENAME"]);
$dirs = explode('/', pathinfo($script_full_path, PATHINFO_DIRNAME));
if (file_exists('/project_root.php')) {
$path = '/';
} else {
$i = 1;
$path = '';
while ($i < count($dirs)) {
$path .= '/' . $dirs[$i];
if (file_exists($path. '/project_root.php')) {
break;
}
$i++;
}
}
$_SERVER["DOCUMENT_ROOT"] = $path;
}else{
$_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
}
$_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
// try to detect if a project path is being used
if (!defined('PROJECT_PATH')) {
if (is_dir($_SERVER["DOCUMENT_ROOT"]. '/fusionpbx')) {
define('PROJECT_PATH', '/fusionpbx');
} elseif (file_exists($_SERVER["DOCUMENT_ROOT"]. '/project_root.php')) {
define('PROJECT_PATH', '');
} else {
$dirs = explode('/', str_replace('\\', '/', pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME)));
$i = 1;
$path = $_SERVER["DOCUMENT_ROOT"];
while ($i < count($dirs)) {
$path .= '/' . $dirs[$i];
if (file_exists($path. '/project_root.php')) {
break;
}
$i++;
}
if(!file_exists($path. '/project_root.php')){
die("Failed to locate the Project Root by searching for project_root.php please contact support for assistance");
}
$project_path = str_replace($_SERVER["DOCUMENT_ROOT"], "", $path);
define('PROJECT_PATH', $project_path);
}
$_SERVER["PROJECT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH);
set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER["PROJECT_ROOT"]);
}
?>

View File

@@ -1,177 +0,0 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2014
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
include "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('sql_query_backup')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//pdo database connection
if (strlen($_REQUEST['id']) > 0) {
require_once "sql_query_pdo.php";
}
//get the $apps array from the installed apps from the core and mod directories
$config_list = glob($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH . "/*/*/app_config.php");
$x = 0;
foreach ($config_list as &$config_path) {
include($config_path);
$x++;
}
//define a function that checks if the field exists
function field_exists($apps, $table_name, $field_name) {
$result = false;
foreach ($apps as &$row) {
$tables = $row["db"];
foreach ($tables as &$table) {
if ($table['table'] == $table_name) {
foreach ($table["fields"] as &$field) {
if ($field['deprecated'] != "true") {
if (is_array($field["name"])) {
if ($field["name"]["text"] == $field_name) {
$result = true;
break;
}
}
else {
if ($field["name"] == $field_name) {
$result = true;
break;
}
}
}
}
}
}
}
return $result;
}
//set the headers
header('Content-type: application/octet-binary');
header('Content-Disposition: attachment; filename=database_backup.sql');
//get the list of tables
if ($db_type == "sqlite") {
$sql = "SELECT name FROM sqlite_master ";
$sql .= "WHERE type='table' ";
$sql .= "order by name;";
}
if ($db_type == "pgsql") {
$sql = "select table_name as name ";
$sql .= "from information_schema.tables ";
$sql .= "where table_schema='public' ";
$sql .= "and table_type='BASE TABLE' ";
$sql .= "order by table_name ";
}
if ($db_type == "mysql") {
$sql = "show tables";
}
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$row = array_values($row);
$table_name = $row[0];
//get the table data
$sql = "select * from $table_name";
if (strlen($sql) > 0) {
$prep_statement_2 = $db->prepare(check_sql($sql));
if ($prep_statement_2) {
$prep_statement_2->execute();
$result2 = $prep_statement_2->fetchAll(PDO::FETCH_ASSOC);
}
else {
echo "<b>".$text['label-error'].":</b>\n";
echo "<pre>\n";
print_r($db->errorInfo());
echo "</pre>\n";
}
$x = 0;
foreach ($result2[0] as $key => $value) {
if ($row[$column] != "db") {
if (field_exists($apps, $table_name, $key)) {
$column_array[$x] = $key;
}
$x++;
}
}
$column_array_count = count($column_array);
foreach ($result2 as &$row) {
$sql = "INSERT INTO $table_name (";
$x = 1;
foreach ($column_array as $column) {
if ($x < $column_array_count) {
if (strlen($row[$column]) > 0) {
$sql .= ''.$column.',';
}
}
else {
if (strlen($row[$column]) > 0) {
$sql .= ''.$column.'';
}
}
$x++;
}
$sql .= ") ";
$sql .= "VALUES( ";
$x = 1;
foreach ($column_array as $column) {
if ($x < $column_array_count) {
if (strlen($row[$column])> 0) {
$sql .= "'".check_str($row[$column])."',";
}
}
else {
if (strlen($row[$column])> 0) {
$sql .= "'".check_str($row[$column])."'";
}
}
$x++;
}
$sql .= ");\n";
echo str_replace(",)", ")", $sql);
}
}
unset($column_array);
}
?>

View File

@@ -1,499 +0,0 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
include "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
require_once "resources/schema.php";
if (if_group("superadmin")) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//show errors
ini_set('display_errors', '1');
//error_reporting (E_ALL); // Report everything
error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING ); //hide notices and warnings
//define the db file exists function
function db_field_exists ($tmp_array, $column) {
$result = false;
foreach ($tmp_array as &$row) {
if ($row[0] == $column) {
$result = true;
}
return $result;
}
}
//db_field_exists ($result_dest, $column)
//destination info
//set the domain_uuid
$dest_domain_uuid = '1';
//set the database type
$db_dest_type = 'mysql'; //sqlite, mysql, pgsql, others with a manually created PDO connection
//sqlite: the dbfilename and db_file_path are automatically assigned however the values can be overidden by setting the values here.
//$dbfilename = 'fusionpbx.db'; //host name/ip address + '.db' is the default database filename
//$db_file_path = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/secure'; //the path is determined by a php variable
//mysql: database connection information
$db_host = '127.0.0.1'; //set the host only if the database is not local
$db_port = '3306';
$db_name = 'fusionpbx';
$db_username = 'fusionpbx';
$db_password = '';
$db_create_username = 'root';
$db_create_password = '';
//pgsql: database connection information
//$db_host = ''; //set the host only if the database is not local
//$db_port = '';
//$db_name = '';
//$db_username = '';
//$db_password = '';
//$db_create_username = '';
//$db_create_password = '';
//load data into the database
//create the sqlite database
if ($db_dest_type == "sqlite") {
//sqlite database will be created when the config.php is loaded and only if the database file does not exist
$filename = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/install/sql/sqlite.sql';
$file_contents = file_get_contents($filename);
unset($filename);
try {
$db_dest = new PDO('sqlite:'.$db_filepath.'/'.$db_filename); //sqlite 3
//$db_dest = new PDO('sqlite::memory:'); //sqlite 3
$db_dest->beginTransaction();
}
catch (PDOException $error) {
print $text['label-error'].": " . $error->getMessage() . "<br/>";
die();
}
//replace \r\n with \n then explode on \n
$file_contents = str_replace("\r\n", "\n", $file_contents);
//loop line by line through all the lines of sql code
$stringarray = explode("\n", $file_contents);
$x = 0;
foreach($stringarray as $sql) {
try {
if(stristr($sql, 'CREATE TABLE') === FALSE) {
//not found do not execute
}
else {
//execute create table sql strings
$db_dest->query($sql);
}
}
catch (PDOException $error) {
echo $text['label-error'].": " . $error->getMessage() . " sql: $sql<br/>";
}
$x++;
}
unset ($file_contents, $sql);
$db_dest->commit();
}
//create the postgres database
if ($db_dest_type == "pgsql") {
$filename = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/install/sql/pgsql.sql';
$file_contents = file_get_contents($filename);
//if $db_create_username provided, attempt to create new PG role and database
if (strlen($db_create_username) > 0) {
//create the database connection
try {
if (strlen($db_port) == 0) { $db_port = "5432"; }
if (strlen($db_host) > 0) {
$db_dest = new PDO("pgsql:host={$db_host} port={$db_port} user={$db_create_username} password={$db_create_password} dbname=template1");
} else {
$db_dest = new PDO("pgsql:host=localhost port={$db_port} user={$db_create_username} password={$db_create_password} dbname=template1");
}
} catch (PDOException $error) {
print $text['label-error'].": " . $error->getMessage() . "<br/>";
die();
}
//create the database, user, grant perms
$db_dest->exec("CREATE DATABASE {$db_name}");
$db_dest->exec("CREATE USER {$db_username} WITH PASSWORD '{$db_password}'");
$db_dest->exec("GRANT ALL ON {$db_name} TO {$db_username}");
//close database connection_aborted
$db_dest = null;
}
//open database connection with $db_name
try {
if (strlen($db_port) == 0) { $db_port = "5432"; }
if (strlen($db_host) > 0) {
$db_dest = new PDO("pgsql:host={$db_host} port={$db_port} dbname={$db_name} user={$db_username} password={$db_password}");
} else {
$db_dest = new PDO("pgsql:host=localhost port={$db_port} user={$db_username} password={$db_password} dbname={$db_name}");
}
}
catch (PDOException $error) {
print $text['label-error'].": " . $error->getMessage() . "<br/>";
die();
}
//replace \r\n with \n then explode on \n
$file_contents = str_replace("\r\n", "\n", $file_contents);
//loop line by line through all the lines of sql code
$stringarray = explode("\n", $file_contents);
$x = 0;
foreach($stringarray as $sql) {
if (strlen($sql) > 3) {
try {
if(stristr($sql, 'CREATE TABLE') === FALSE) {
//not found do not execute
}
else {
//execute create table sql strings
$db_dest->query($sql);
}
}
catch (PDOException $error) {
echo $text['label-error'].": " . $error->getMessage() . " sql: $sql<br/>";
die();
}
}
$x++;
}
unset ($file_contents, $sql);
}
//create the mysql database
if ($db_dest_type == "mysql") {
$filename = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/install/sql/mysql.sql';
$file_contents = file_get_contents($filename);
//database connection
try {
if (strlen($db_host) == 0 && strlen($db_port) == 0) {
//if both host and port are empty use the unix socket
if (strlen($db_create_username) == 0) {
$db_dest = new PDO("mysql:host=$db_host;unix_socket=/var/run/mysqld/mysqld.sock;", $db_username, $db_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
}
else {
$db_dest = new PDO("mysql:host=$db_host;unix_socket=/var/run/mysqld/mysqld.sock;", $db_create_username, $db_create_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')); }
}
else {
if (strlen($db_port) == 0) {
//leave out port if it is empty
if (strlen($db_create_username) == 0) {
$db_dest = new PDO("mysql:host=$db_host;", $db_username, $db_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
}
else {
$db_dest = new PDO("mysql:host=$db_host;", $db_create_username, $db_create_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
}
}
else {
if (strlen($db_create_username) == 0) {
$db_dest = new PDO("mysql:host=$db_host;port=$db_port;", $db_username, $db_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
}
else {
$db_dest = new PDO("mysql:host=$db_host;port=$db_port;", $db_create_username, $db_create_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
}
}
}
$db_dest->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db_dest->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
}
catch (PDOException $error) {
if ($v_debug) {
print $text['label-error'].": " . $error->getMessage() . "<br/>";
}
}
//create the table, user and set the permissions only if the db_create_username was provided
if (strlen($db_create_username) > 0) {
//select the mysql database
try {
$db_dest->query("USE mysql;");
}
catch (PDOException $error) {
if ($v_debug) {
print $text['label-error'].": " . $error->getMessage() . "<br/>";
}
}
//create user and set the permissions
try {
$tmp_sql = "CREATE USER '".$db_username."'@'%' IDENTIFIED BY '".$db_password."'; ";
$db_dest->query($tmp_sql);
}
catch (PDOException $error) {
if ($v_debug) {
print $text['label-error'].": " . $error->getMessage() . "<br/>";
}
}
//set account to unlimitted use
try {
$tmp_sql = "GRANT USAGE ON * . * TO '".$db_username."'@'localhost' ";
$tmp_sql .= "IDENTIFIED BY '".$db_password."' ";
$tmp_sql .= "WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0; ";
$db_dest->query($tmp_sql);
}
catch (PDOException $error) {
if ($v_debug) {
print $text['label-error'].": " . $error->getMessage() . "<br/>";
}
}
//create the database and set the create user with permissions
try {
$tmp_sql = "CREATE DATABASE IF NOT EXISTS ".$db_name."; ";
$db_dest->query($tmp_sql);
}
catch (PDOException $error) {
if ($v_debug) {
print $text['label-error'].": " . $error->getMessage() . "<br/>";
}
}
//set user permissions
try {
$db_dest->query("GRANT ALL PRIVILEGES ON ".$db_name.".* TO '".$db_username."'@'%'; ");
}
catch (PDOException $error) {
if ($v_debug) {
print $text['label-error'].": " . $error->getMessage() . "<br/>";
}
}
//make the changes active
try {
$tmp_sql = "FLUSH PRIVILEGES; ";
$db_dest->query($tmp_sql);
}
catch (PDOException $error) {
if ($v_debug) {
print $text['label-error'].": " . $error->getMessage() . "<br/>";
}
}
} //if (strlen($db_create_username) > 0)
//select the database
try {
$db_dest->query("USE ".$db_name.";");
}
catch (PDOException $error) {
if ($v_debug) {
print $text['label-error'].": " . $error->getMessage() . "<br/>";
}
}
//add the defaults data into the database
//replace \r\n with \n then explode on \n
$file_contents = str_replace("\r\n", "\n", $file_contents);
//loop line by line through all the lines of sql code
$stringarray = explode("\n", $file_contents);
$x = 0;
foreach($stringarray as $sql) {
if (strlen($sql) > 3) {
try {
if(stristr($sql, 'CREATE TABLE') === FALSE) {
//not found do not execute
}
else {
//execute create table sql strings
$db_dest->query($sql);
}
}
catch (PDOException $error) {
//echo "error on line $x: " . $error->getMessage() . " sql: $sql<br/>";
//die();
}
}
$x++;
}
unset ($file_contents, $sql);
}
//get the list of tables
if ($db_dest_type == "sqlite") {
$sql = "SELECT name FROM sqlite_master ";
$sql .= "WHERE type='table' ";
$sql .= "order by name;";
}
if ($db_dest_type == "pgsql") {
$sql = "select table_name as name ";
$sql .= "from information_schema.tables ";
$sql .= "where table_schema='public' ";
$sql .= "and table_type='BASE TABLE' ";
$sql .= "order by table_name ";
}
if ($db_dest_type == "mysql") {
$sql = "show tables";
}
//get the default schema structure
$prep_statement = $db_dest->prepare(check_sql($sql));
$prep_statement->execute();
$result_dest = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//clean the content from the table
foreach ($result_dest as &$row) {
$table_name = $row[0];
$sql = 'delete from '.$table_name;
//$db_dest->query($sql);
}
//add data into each table
foreach ($result_dest as &$row) {
//get the table name
$table_name = $row[0];
//$table_name = 'v_extensions';
//$db_dest_type = "sqlite";
//get the table source data
$destination_column_array='';
unset($destination_column_array);
if ($db_dest_type == "sqlite") {
$tmp_sql = "PRAGMA table_info($table_name);";
}
if ($db_dest_type == "pgsql") {
}
if ($db_dest_type == "mysql") {
$tmp_sql = "show columns from $table_name;";
}
if (strlen($tmp_sql) > 0) {
$prep_statement_2 = $db_dest->prepare(check_sql($tmp_sql));
//$prep_statement_2 = $db->prepare(check_sql($tmp_sql));
if ($prep_statement_2) {
$prep_statement_2->execute();
$result2 = $prep_statement_2->fetchAll(PDO::FETCH_ASSOC);
}
else {
echo "<b>".$text['label-error'].":</b>\n";
echo "<pre>\n";
print_r($db_dest->errorInfo());
echo "</pre>\n";
}
$x = 0;
foreach ($result2 as $row2) {
if ($db_dest_type == "sqlite") {
$destination_column_array[$x] = $row2['name'];
}
if ($db_dest_type == "mysql") {
$destination_column_array[$x] = $row2['Field'];
}
if ($db_dest_type == "pgsql") {
}
$x++;
}
/*
$x = 0;
foreach ($result2[0] as $key => $value) {
if ($db_dest_type == "sqlite" && $key == "name") {
$destination_column_array[$x] = $key;
}
$x++;
}
*/
$destination_column_array_count = count($destination_column_array);
}
unset($prep_statement_2, $result2);
//echo "<pre>\n";
//print_r($destination_column_array);
//echo "</pre>\n";
//get the table source data
$tmp_sql = "select * from $table_name";
if (strlen($tmp_sql) > 0) {
$prep_statement_2 = $db->prepare(check_sql($tmp_sql));
if ($prep_statement_2) {
$prep_statement_2->execute();
$result2 = $prep_statement_2->fetchAll(PDO::FETCH_ASSOC);
}
else {
echo "<b>".$text['label-error'].":</b>\n";
echo "<pre>\n";
print_r($db->errorInfo());
echo "</pre>\n";
}
$x = 0;
foreach ($result2[0] as $key => $value) {
$column_array[$x] = $key;
$x++;
}
foreach ($result2 as &$row) {
//build the sql query string
if (substr($table_name, 0, 2) == 'v_') {
$sql = "INSERT INTO $table_name (";
$x = 1;
foreach ($destination_column_array as $column) {
if ($x < $destination_column_array_count) {
$sql .= "".$column.", ";
}
else {
$sql .= "".$column."";
}
$x++;
}
$sql .= ") ";
$sql .= "VALUES( ";
$x = 1;
foreach ($destination_column_array as $column) {
if ($x < $destination_column_array_count) {
//if ($column == "domain_uuid") {
// $sql .= "'".$dest_domain_uuid."',";
//}
//else {
$sql .= "'".check_str($row[$column])."', ";
//}
}
else {
//if ($column == "domain_uuid") {
// $sql .= "'".$dest_domain_uuid."'";
//}
//else {
$sql .= "'".check_str($row[$column])."'";
//}
}
$x++;
}
$sql .= ");\n";
}
//add the sql into the destination database
echo $sql."<br />\n";
$db_dest->query($sql);
}
}
}
?>

View File

@@ -1,164 +0,0 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2013
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
include "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('sql_query_execute')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//show the header
require_once "resources/header.php";
$document['title'] = $text['title-sql_query'];
//pdo voicemail database connection
require_once "sql_query_pdo.php";
//show the content
//edit area
echo " <script language=\"javascript\" type=\"text/javascript\" src=\"".PROJECT_PATH."/resources/edit_area/edit_area_full.js\"></script>\n";
echo " <script language=\"Javascript\" type=\"text/javascript\">\n";
echo "\n";
echo " editAreaLoader.init({\n";
echo " id: \"sql_cmd\" // id of the textarea to transform //, |, help\n";
echo " ,start_highlight: true\n";
//echo " ,display: \"later\"\n";
echo " ,font_size: \"8\"\n";
echo " ,allow_toggle: false\n";
echo " ,language: \"en\"\n";
echo " ,syntax: \"sql\"\n";
echo " ,toolbar: \"search, go_to_line,|, fullscreen, |, undo, redo, |, select_font, |, syntax_selection, |, change_smooth_selection, highlight, reset_highlight, |, help\" //new_document,\n";
echo " ,plugins: \"charmap\"\n";
echo " ,charmap_default: \"arrows\"\n";
echo "\n";
echo " });\n";
echo " </script>";
echo "<form method='post' target='frame' action='sql_query_result.php' >";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td align='left' width='30%' nowrap><b>".$text['header-sql_query']."</b></td>\n";
echo "<td width='70%' align='right'>\n";
echo " <input type='button' class='btn' name='' alt='".$text['button-back']."' onClick=\"history.back()\" value='".$text['button-back']."'>\n";
echo " <input type='button' class='btn' name='' alt='".$text['button-select_database']."' onclick=\"window.location='sql_query_db.php'\" value='".$text['button-select_database']."'>\n";
if (strlen($_REQUEST['id']) > 0) {
echo " <input type='button' class='btn' name='' alt='".$text['button-backup']."' onclick=\"window.location='sql_backup.php?id=".$_REQUEST['id']."'\" value='".$text['button-backup']."'>\n";
}
else {
echo " <input type='button' class='btn' name='' alt='".$text['button-backup']."' onclick=\"window.location='sql_backup.php'\" value='".$text['button-backup']."'>\n";
}
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td colspan='2' style='padding: none;' align='left'><br>\n";
echo " <textarea name='sql_cmd' id='sql_cmd' rows='10' class='formfld' style='width: 100%;' wrap='off'>$sql_cmd</textarea\n";
echo " <br />\n";
echo "</td>\n";
echo "</tr>\n";
echo " <tr>\n";
echo " <td colspan='2' align='right' style='padding-top: 10px;'>\n";
/*
echo " DB: <select name='sql_db'>\n";
echo " <option value=''></option>\n";
$sql = "";
$sql .= "select * from v_databases ";
$sql .= "where domain_uuid = '$domain_uuid' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
//$database_type = $row["database_type"];
//$database_host = $row["database_host"];
//$database_port = $row["database_port"];
//$database_name = $row["database_name"];
//$database_username = $row["database_username"];
//$database_password = $row["database_password"];
//$database_path = $row["database_path"];
//$database_description = $row["database_description"];
echo " <option value='".$row["database_uuid"]."'>".$row["database_host"]." - ".$row["database_name"]."</option>\n";
}
unset ($prep_statement);
echo " </select>\n";
*/
echo " ".$text['label-table']."\n";
echo " <select name='table_name' class='formfld' style='width: auto;'>\n";
echo " <option value=''></option>\n";
if ($db_type == "sqlite") {
$sql = "SELECT name FROM sqlite_master ";
$sql .= "WHERE type='table' ";
$sql .= "order by name;";
}
if ($db_type == "pgsql") {
$sql = "select table_name as name ";
$sql .= "from information_schema.tables ";
$sql .= "where table_schema='public' ";
$sql .= "and table_type='BASE TABLE' ";
$sql .= "order by table_name ";
}
if ($db_type == "mysql") {
$sql = "show tables";
}
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$row = array_values($row);
echo " <option value='".$row[0]."'>".$row[0]."</option>\n";
}
echo " </select>\n";
echo " &nbsp;\n";
echo " &nbsp;\n";
echo " ".$text['label-result_type'].": <select name='sql_type' class='formfld' style='width: auto;'>\n";
echo " <option value='default'>".$text['option-result_type_view']."</option>\n";
echo " <option value='csv'>".$text['option-result_type_csv']."</option>\n";
echo " <option value='sql insert into'>".$text['option-result_type_insert']."</option>\n";
echo " </select>\n";
echo " <input type='hidden' name='id' value='".$_REQUEST['id']."'>\n";
echo " <input type='submit' name='submit' class='btn' value='".$text['button-execute']."'>\n";
echo " </td>\n";
echo " </tr>";
echo "</table><br>";
echo "</form>";
echo "<iframe id='frame' height='400' FRAMEBORDER='0' name='frame' style='width: 100%; background-color : #FFFFFF; border: 1px solid #c0c0c0;'></iframe>\n";
//show the footer
require_once "resources/footer.php";
?>

View File

@@ -1,136 +0,0 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (if_group("admin") || if_group("superadmin")) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
require_once "resources/header.php";
$document['title'] = $text['title-databases'];
require_once "resources/paging.php";
//get variables used to control the order
$order_by = $_GET["order_by"];
$order = $_GET["order"];
//show the content
echo "<table width='100%' cellpadding='0' cellspacing='0' border='0'>\n";
echo " <tr>\n";
echo " <td width='50%' align=\"left\" nowrap=\"nowrap\"><b>".$text['header-databases']."</b></td>\n";
echo " <td width='50%' align=\"right\">";
if (if_group("superadmin")) {
echo " <input type='button' class='btn' name='' alt='".$text['button-manage']."' onclick=\"window.location='/core/databases/databases.php'\" value='".$text['button-manage']."'>\n";
}
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td align=\"left\" colspan='2'>\n";
echo " ".$text['description-databases'].".<br /><br />\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
//prepare to page the results
$sql = "select count(*) as num_rows from v_databases ";
if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
if ($row['num_rows'] > 0) {
$num_rows = $row['num_rows'];
}
else {
$num_rows = '0';
}
}
//prepare to page the results
$rows_per_page = 100;
$param = "";
$page = $_GET['page'];
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
list($paging_controls, $rows_per_page, $var_3) = paging($num_rows, $param, $rows_per_page);
$offset = $rows_per_page * $page;
//get the list
$sql = "select * from v_databases ";
if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
$sql .= "limit $rows_per_page offset $offset ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
$result_count = count($result);
unset ($prep_statement, $sql);
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo th_order_by('database_type', $text['label-type'], $order_by, $order);
echo th_order_by('database_host', $text['label-host'], $order_by, $order);
echo th_order_by('database_name', $text['label-name'], $order_by, $order);
echo th_order_by('database_description', $text['label-description'], $order_by, $order);
echo "<td align='right' width='21'>\n";
echo "</td>\n";
echo "<tr>\n";
if ($result_count > 0) {
foreach($result as $row) {
echo "<tr >\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$row['database_type']."&nbsp;</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$row['database_host']."&nbsp;</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$row['database_name']."&nbsp;</td>\n";
echo " <td valign='top' class='row_stylebg'>".$row['database_description']."&nbsp;</td>\n";
echo " <td valign='top' align='right'>\n";
echo " <a href='sql_query.php?id=".$row['database_uuid']."' alt='".$text['button-edit']."'>$v_link_label_edit</a>\n";
echo " </td>\n";
echo "</tr>\n";
if ($c==0) { $c=1; } else { $c=0; }
} //end foreach
unset($sql, $result, $row_count);
} //end if results
echo "</table>";
echo "<br><br>";
//include the footer
require_once "resources/footer.php";
?>

View File

@@ -1,238 +0,0 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (if_group("admin") || if_group("superadmin")) {
//access granted
}
else {
echo "access denied";
exit;
}
//set the default values
if (isset($db_file_path) > 0) {
$db_path = $db_file_path;
$db_name = $dbfilename;
}
//get the db connection information
if (strlen($_REQUEST['id']) > 0) {
$sql = "select * from v_databases ";
$sql .= "where database_uuid = '".$_REQUEST['id']."' ";
$prep_statement = $db->prepare($sql);
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$db_type = $row["database_type"];
$db_host = $row["database_host"];
$db_port = $row["database_port"];
$db_name = $row["database_name"];
$db_username = $row["database_username"];
$db_password = $row["database_password"];
$db_path = $row["database_path"];
break;
}
}
//unset the database connection
unset($db);
if (!function_exists('get_db_field_names')) {
function get_db_field_names($db, $table, $db_name='fusionpbx') {
$query = sprintf('SELECT * FROM %s LIMIT 1', $table);
foreach ($db->query($query, PDO::FETCH_ASSOC) as $row) {
return array_keys($row);
}
// if we're still here, we need to try something else
$fields = array();
$driver = $db->getAttribute(PDO::ATTR_DRIVER_NAME);
if ($driver == 'sqlite') {
$query = sprintf("Pragma table_info(%s);", $table);
$stmt = $db->prepare($query);
$result = $stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_NAMED);
//printf('<pre>%s</pre>', print_r($rows, true));
$row_count = count($rows);
//printf('<pre>%s</pre>', print_r($rows, true));
for ($i = 0; $i < $row_count; $i++) {
array_push($fields, $rows[$i]['name']);
}
return $fields;
} else {
$query = sprintf("SELECT * FROM information_schema.columns
WHERE table_schema='%s' AND table_name='%s';"
, $db_name, $table
);
$stmt = $db->prepare($query);
$result = $stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_NAMED);
$row_count = count($rows);
//printf('<pre>%s</pre>', print_r($rows, true));
for ($i = 0; $i < $row_count; $i++) {
array_push($fields, $rows[$i]['COLUMN_NAME']);
}
return $fields;
}
}
}
if ($db_type == "sqlite") {
if (!function_exists('phpmd5')) {
function phpmd5($string) {
return md5($string);
}
}
if (!function_exists('php_unix_timestamp')) {
function php_unix_timestamp($string) {
return strtotime($string);
}
}
if (!function_exists('phpnow')) {
function phpnow() {
return date("Y-m-d H:i:s");
}
}
if (!function_exists('php_left')) {
function php_left($string, $num) {
return substr($string, 0, $num);
}
}
if (!function_exists('php_right')) {
function php_right($string, $num) {
return substr($string, (strlen($string)-$num), strlen($string));
}
}
if (!function_exists('php_sqlite_data_type')) {
function php_sqlite_data_type($string, $field) {
//get the string between the start and end characters
$start = '(';
$end = ')';
$ini = stripos($string,$start);
if ($ini == 0) return "";
$ini += strlen($start);
$len = stripos($string,$end,$ini) - $ini;
$string = substr($string,$ini,$len);
$str_data_type = '';
$string_array = explode(',', $string);
foreach($string_array as $lnvalue) {
$fieldlistarray = explode (" ", $value);
unset($fieldarray, $string, $field);
}
return $str_data_type;
}
} //end function
//database connection
try {
//$db = new PDO('sqlite2:example.db'); //sqlite 2
//$db = new PDO('sqlite::memory:'); //sqlite 3
$db = new PDO('sqlite:'.realpath($db_path).'/'.$db_name); //sqlite 3
//add additional functions to SQLite so that they are accessible inside SQL
//bool PDO::sqliteCreateFunction ( string function_name, callback callback [, int num_args] )
$db->sqliteCreateFunction('md5', 'phpmd5', 1);
$db->sqliteCreateFunction('unix_timestamp', 'php_unix_timestamp', 1);
$db->sqliteCreateFunction('now', 'phpnow', 0);
$db->sqliteCreateFunction('sqlitedatatype', 'php_sqlite_data_type', 2);
$db->sqliteCreateFunction('strleft', 'php_left', 2);
$db->sqliteCreateFunction('strright', 'php_right', 2);
}
catch (PDOException $error) {
print "error: " . $error->getMessage() . "<br/>";
die();
}
} //end if db_type sqlite
if ($db_type == "mysql") {
//database connection
try {
//mysql pdo connection
if (strlen($db_host) == 0 && strlen($db_port) == 0) {
//if both host and port are empty use the unix socket
$db = new PDO("mysql:host=$db_host;unix_socket=/var/run/mysqld/mysqld.sock;dbname=$db_name", $db_username, $db_password);
}
else {
if (strlen($db_port) == 0) {
//leave out port if it is empty
$db = new PDO("mysql:host=$db_host;dbname=$db_name;", $db_username, $db_password, array(
PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION
));
}
else {
$db = new PDO("mysql:host=$db_host;port=$db_port;dbname=$db_name;", $db_username, $db_password, array(
PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION
));
}
}
}
catch (PDOException $error) {
print "error: " . $error->getMessage() . "<br/>";
die();
}
} //end if db_type mysql
if ($db_type == "pgsql") {
//database connection
try {
if (strlen($db_host) > 0) {
if (strlen($db_port) == 0) { $db_port = "5432"; }
$db = new PDO("pgsql:host=$db_host port=$db_port dbname=$db_name user=$db_username password=$db_password");
}
else {
$db = new PDO("pgsql:dbname=$db_name user=$db_username password=$db_password");
}
}
catch (PDOException $error) {
print "error: " . $error->getMessage() . "<br/>";
die();
}
} //end if db_type pgsql
if ($db_type == "odbc") {
//database connection
try {
unset($db);
$db = new PDO("odbc:$db_name", "$db_username", "$db_password");
}
catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
} //end if db_type odbc
?>

View File

@@ -1,320 +0,0 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
include "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('sql_query_execute')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//pdo database connection
if (strlen($_REQUEST['id']) > 0) {
require_once "sql_query_pdo.php";
}
if (count($_POST)>0) {
$sql_type = trim($_POST["sql_type"]);
$sql_cmd = trim($_POST["sql_cmd"]);
$table_name = trim($_POST["table_name"]);
if (strlen($sql_cmd) == 0) { $sql_cmd = "select * from ".$table_name; }
}
if (count($_POST)>0) {
$tmp_header = "<html>\n";
$tmp_header .= "<head>\n";
$tmp_header .= "<style type='text/css'>\n";
$tmp_header .= "\n";
$tmp_header .= "body {\n";
$tmp_header .= " font-family: arial;\n";
$tmp_header .= " font-size: 12px;\n";
$tmp_header .= " color: #444444;\n";
$tmp_header .= "}\n";
$tmp_header .= "\n";
$tmp_header .= "th {\n";
$tmp_header .= " border-top: 1px solid #444444;\n";
$tmp_header .= " border-bottom: 1px solid #444444;\n";
$tmp_header .= " color: #FFFFFF;\n";
$tmp_header .= " font-size: 12px;\n";
$tmp_header .= " font-family: arial;\n";
$tmp_header .= " font-weight: bold;\n";
$tmp_header .= " background-color: #777777;\n";
$tmp_header .= " background-image: url(".PROJECT_PATH."'/themes/horizontal/background_th.png');\n";
$tmp_header .= " padding-top: 4px;\n";
$tmp_header .= " padding-bottom: 4px;\n";
$tmp_header .= " padding-right: 7px;\n";
$tmp_header .= " padding-left: 7px;\n";
$tmp_header .= "}\n";
$tmp_header .= "\n";
$tmp_header .= ".row_style0 {\n";
$tmp_header .= " background-color: #EEEEEE;\n";
$tmp_header .= " background-image: url(".PROJECT_PATH."'/themes/horizontal/background_cell.gif');\n";
$tmp_header .= " border-bottom: 1px solid #999999;\n";
$tmp_header .= " font-size: 12px;\n";
$tmp_header .= " color: #444444;\n";
$tmp_header .= " text-align: left;\n";
$tmp_header .= " padding-top: 4px;\n";
$tmp_header .= " padding-bottom: 4px;\n";
$tmp_header .= " padding-right: 7px;\n";
$tmp_header .= " padding-left: 7px;\n";
$tmp_header .= "}\n";
$tmp_header .= "\n";
$tmp_header .= ".row_style0 a:link{ color:#444444; }\n";
$tmp_header .= ".row_style0 a:visited{ color:#444444; }\n";
$tmp_header .= ".row_style0 a:hover{ color:#444444; }\n";
$tmp_header .= ".row_style0 a:active{ color:#444444; }\n";
$tmp_header .= "\n";
$tmp_header .= ".row_style1 {\n";
$tmp_header .= " border-bottom: 1px solid #999999;\n";
$tmp_header .= " background-color: #FFFFFF;\n";
$tmp_header .= " font-size: 12px;\n";
$tmp_header .= " color: #444444;\n";
$tmp_header .= " text-align: left;\n";
$tmp_header .= " padding-top: 4px;\n";
$tmp_header .= " padding-bottom: 4px;\n";
$tmp_header .= " padding-right: 7px;\n";
$tmp_header .= " padding-left: 7px;\n";
$tmp_header .= "}\n";
$tmp_header .= "\n";
$tmp_header .= "</style>";
$tmp_header .= "</head>\n";
$tmp_header .= "<body>\n";
$tmp_footer = "<body>\n";
$tmp_footer .= "<html>\n";
if ($sql_type == "default") {
echo $tmp_header;
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
$sql_array = explode(";", $sql_cmd);
reset($sql_array);
foreach($sql_array as $sql) {
$sql = trim($sql);
echo "<b>".$text['label-sql_query'].":</b><br>\n";
echo "".$sql."<br /><br />";
if (strlen($sql) > 0) {
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
echo "<b>".$text['label-results'].": ".count($result)."</b><br />";
}
catch(PDOException $e) {
echo "<b>".$text['label-error'].":</b><br />\n";
echo "<table>\n";
echo "<tr>\n";
echo "<td>\n";
echo $e->getMessage();
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
}
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
$x = 0;
foreach ($result[0] as $key => $value) {
echo "<th>".$key."</th>";
$column_array[$x] = $key;
$x++;
}
$x = 1;
foreach ($result as &$row) {
if ($x > 1000) { break; }
echo "<tr>\n";
foreach ($column_array as $column) {
echo "<td class='".$row_style[$c]."'>&nbsp;".$row[$column]."&nbsp;</td>";
}
echo "</tr>\n";
if ($c==0) { $c=1; } else { $c=0; }
$x++;
}
echo "</table>\n";
echo "<br>\n";
}
} //foreach($sql_array as $sql)
echo $tmp_footer;
}
if ($sql_type == "sql insert into") {
echo $tmp_header;
$sql = trim($sql);
echo "<b>".$text['label-sql_query'].":</b><br>\n";
echo "".$sql."<br /><br />";
//get the table data
if (strlen($sql_cmd) == 0) {
$sql = "select * from $table_name";
}
else {
$sql = $sql_cmd;
}
if (strlen($sql) > 0) {
$prep_statement = $db->prepare(check_sql($sql));
if ($prep_statement) {
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
}
else {
echo "<b>".$text['label-error'].":</b>\n";
echo "<pre>\n";
print_r($db->errorInfo());
echo "</pre>\n";
}
$x = 0;
foreach ($result[0] as $key => $value) {
$column_array[$x] = $key;
$x++;
}
$column_array_count = count($column_array);
foreach ($result as &$row) {
echo "INSERT INTO $table_name (";
$x = 1;
foreach ($column_array as $column) {
if ($x < $column_array_count) {
if ($column != "menuid" && $column != "menuparentid") {
echo "".$column.",";
}
}
else {
if ($column != "menuid" && $column != "menuparentid") {
echo "".$column."";
}
}
$x++;
}
echo ") ";
echo "VALUES ( ";
$x = 1;
foreach ($column_array as $column) {
if ($x < $column_array_count) {
if ($column != "menuid" && $column != "menuparentid") {
if (is_null($row[$column])) {
echo "null,";
}
else {
echo "'".check_str($row[$column])."',";
}
}
}
else {
if ($column != "menuid" && $column != "menuparentid") {
if (is_null($row[$column])) {
echo "null";
}
else {
echo "'".check_str($row[$column])."'";
}
}
}
$x++;
}
echo ");<br />\n";
}
}
echo $tmp_footer;
}
if ($sql_type == "csv") {
//echo $tmp_header;
//set the headers
header('Content-type: application/octet-binary');
header('Content-Disposition: attachment; filename='.$table_name.'.csv');
//get the table data
$sql = trim($sql);
$sql = "select * from $table_name";
if (strlen($sql) > 0) {
$prep_statement = $db->prepare(check_sql($sql));
if ($prep_statement) {
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
}
else {
echo "<b>".$text['label-error'].":</b>\n";
echo "<pre>\n";
print_r($db->errorInfo());
echo "</pre>\n";
}
$x = 0;
foreach ($result[0] as $key => $value) {
$column_array[$x] = $key;
$x++;
}
$column_array_count = count($column_array);
$x = 1;
foreach ($column_array as $column) {
if ($x < $column_array_count) {
echo "\"".$column."\",";
}
else {
echo "\"".$column."\"";
}
$x++;
}
echo "\r\n";
foreach ($result as &$row) {
$x = 1;
foreach ($column_array as $column) {
if ($x < $column_array_count) {
echo "\"".check_str($row[$column])."\",";
}
else {
echo "\"".check_str($row[$column])."\"";
}
$x++;
}
echo "\n";
}
}
}
}
?>