Refbase update_2021-01-28_15_58
This commit is contained in:
191
includes/install.inc.php
Normal file
191
includes/install.inc.php
Normal file
@@ -0,0 +1,191 @@
|
||||
<?php
|
||||
// Project: Web Reference Database (refbase) <http://www.refbase.net>
|
||||
// Copyright: Matthias Steffens <mailto:refbase@extracts.de> and the file's
|
||||
// original author(s).
|
||||
//
|
||||
// This code is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY. Please see the GNU General Public
|
||||
// License for more details.
|
||||
//
|
||||
// File: ./includes/install.inc.php
|
||||
// Repository: $HeadURL: file:///svn/p/refbase/code/branches/bleeding-edge/includes/install.inc.php $
|
||||
// Author(s): Richard Karnesky <mailto:karnesky@gmail.com> and
|
||||
// Matthias Steffens <mailto:refbase@extracts.de>
|
||||
//
|
||||
// Created: 16-Aug-06, 18:00
|
||||
// Modified: $Date: 2017-04-13 02:00:18 +0000 (Thu, 13 Apr 2017) $
|
||||
// $Author: karnesky $
|
||||
// $Revision: 1416 $
|
||||
|
||||
// This file contains functions
|
||||
// that are used when installing
|
||||
// or updating a refbase database.
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
// This function attempts to find a file (or program) on disk. It searches directories
|
||||
// given in '$fileLocations' for existing file/program names given in '$fileNames'.
|
||||
// Note that, currently, this function won't look into subdirectories.
|
||||
//
|
||||
// Authors: Richard Karnesky <mailto:karnesky@gmail.com> and
|
||||
// Matthias Steffens <mailto:refbase@extracts.de>
|
||||
function locateFile($fileLocations, $fileNames, $returnParentDirOnly)
|
||||
{
|
||||
$filePath = "";
|
||||
|
||||
foreach ($fileLocations as $location)
|
||||
{
|
||||
foreach ($fileNames as $name)
|
||||
{
|
||||
if (file_exists("$location/$name"))
|
||||
{
|
||||
if ($returnParentDirOnly)
|
||||
$filePath = realpath($location) . "/";
|
||||
else
|
||||
$filePath = realpath("$location/$name");
|
||||
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $filePath;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
// Connect to the MySQL database with admin permissions:
|
||||
// TODO: I18n
|
||||
function connectToMySQLDatabaseAsAdmin($adminUserName, $adminPassword)
|
||||
{
|
||||
global $hostName; // these variables are specified in 'db.inc.php'
|
||||
global $databaseName;
|
||||
|
||||
global $connection;
|
||||
|
||||
// Establish a *new* connection that has admin permissions
|
||||
// (1) OPEN the database connection:
|
||||
if (!($connection = @ mysqli_connect($hostName, $adminUserName, $adminPassword, $databaseName)))
|
||||
if (mysqli_errno($connection) != 0) // this works around a stupid(?) behaviour of the Roxen webserver that returns 'errno: 0' on success! ?:-(
|
||||
showErrorMsg("The following error occurred while trying to connect to the host:", "");
|
||||
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
// Check for the presence of a value in a table,
|
||||
// and if it doesn't exist, add the given row to that same table:
|
||||
//
|
||||
// Authors: Richard Karnesky <mailto:karnesky@gmail.com> and
|
||||
// Matthias Steffens <mailto:refbase@extracts.de>
|
||||
function insertIfNotExists($keysArray, $table, $values, $userID = "")
|
||||
{
|
||||
global $connection;
|
||||
|
||||
$selectClauseArray = array();
|
||||
$whereClauseArray = array();
|
||||
|
||||
foreach ($keysArray as $keyColumn => $keyValue)
|
||||
{
|
||||
$selectClauseArray[] = $keyColumn;
|
||||
$whereClauseArray[] = $keyColumn . " = " . quote_smart($keyValue);
|
||||
}
|
||||
|
||||
$query = "SELECT " . implode(", ", $selectClauseArray)
|
||||
. " FROM " . $table
|
||||
. " WHERE " . implode(" AND ", $whereClauseArray);
|
||||
|
||||
if ($userID != "") // note that 'if (!empty($userID))' doesn't work here since '$userID = 0' would incorrectly be treated as 'empty'
|
||||
$query .= " AND user_id = " . $userID;
|
||||
|
||||
$result = queryMySQLDatabase($query); // function 'queryMySQLDatabase()' is defined in 'include.inc.php'
|
||||
|
||||
$rowsFound = @ mysqli_num_rows($result);
|
||||
if ($rowsFound == 0)
|
||||
{
|
||||
$query = "INSERT INTO " . $table . " VALUES " . $values;
|
||||
$result = queryMySQLDatabase($query);
|
||||
|
||||
return "true";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "false";
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
// Check for the presence of a column in a table,
|
||||
// and if it doesn't exist, add the given column to that same table:
|
||||
//
|
||||
// Author: Richard Karnesky <mailto:karnesky@gmail.com>
|
||||
function addColumnIfNotExists($column, $table, $properties)
|
||||
{
|
||||
global $connection;
|
||||
|
||||
$present = false;
|
||||
|
||||
$queryFields = "SHOW FIELDS FROM " . $table;
|
||||
$result = queryMySQLDatabase($queryFields); // function 'queryMySQLDatabase()' is defined in 'include.inc.php'
|
||||
|
||||
while ($row = @ mysqli_fetch_array($result)) // for all fields found, check if any of their names matches the field name that we want to add
|
||||
if ($row["Field"] == $column)
|
||||
$present = true;
|
||||
|
||||
if (!$present)
|
||||
{
|
||||
$query = "ALTER TABLE " . $table . " ADD COLUMN " . $column . " " . $properties;
|
||||
$result = queryMySQLDatabase($query);
|
||||
|
||||
return "true";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "false";
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
// Check for the presence of a table in the currently selected database,
|
||||
// and if it doesn't exist, add the given table to that same database:
|
||||
// This is similar to "CREATE TABLE IF NOT EXISTS ..." but allows us
|
||||
// to return appropriate feedback
|
||||
function addTableIfNotExists($table, $properties)
|
||||
{
|
||||
global $connection;
|
||||
|
||||
$present = false;
|
||||
|
||||
$queryFields = "SHOW TABLES";
|
||||
$result = queryMySQLDatabase($queryFields); // function 'queryMySQLDatabase()' is defined in 'include.inc.php'
|
||||
|
||||
while ($row = @ mysqli_fetch_array($result)) // for all tables found, check if any of their names matches the table name that we want to add
|
||||
if ($row[0] == $table)
|
||||
$present = true;
|
||||
|
||||
if (!$present)
|
||||
{
|
||||
$query = "CREATE TABLE " . $table . " " . $properties;
|
||||
$result = queryMySQLDatabase($query);
|
||||
|
||||
return "true";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "false";
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
// Show error in red:
|
||||
function fieldError($fieldName, $errors)
|
||||
{
|
||||
if (isset($errors[$fieldName]))
|
||||
echo returnMsg($errors[$fieldName], "warning", "strong", "", "\n\t\t\t", "\n\t\t\t<br>"); // function 'returnMsg()' is defined in 'include.inc.php'
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
?>
|
||||
Reference in New Issue
Block a user