Files
cwsvJudo/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/miscAssis.php
marko 239ae8b68a Zum Commit vorgemerkte Änderungen:
geändert:       index.php
2021-06-08 20:13:50 +02:00

207 lines
5.8 KiB
PHP

<?php
/// Check if expression is positive integer
function is_positive_integer($str){
return (is_numeric($str) && $str > 0 && $str == round($str));
}
function getPdoDbConnection($hostname, $dbName, $user, $password){
try{
$dbConnection = new PDO(
'mysql:host='.$hostname.';dbname='.$dbName,
$user,
$password
);
}
catch(PDOException $dbError){
echo( "Error whilst getting a dbConnection!: " . $dbError->getMessage() );
}
return $dbConnection;
}
function getCwsvJudoDbConn(){
global $cwsvJudoConfig;
// Datenbankverbindung bereit stellen
try{
$db_connection = new PDO(
'mysql:host='.$cwsvJudoConfig["db"]["host"].';dbname='.$cwsvJudoConfig["db"]["name"],//.';charset=utf8',
$cwsvJudoConfig["db"]["user"],
$cwsvJudoConfig["db"]["password"]
);
}
catch(PDOException $db_error){
echo( "Error whilst getting a dbConnection!: " . $db_error->getMessage() );
}
return $db_connection;
}
/// Gibt entweder das erste, nichtleere Element zurück, oder null
function firstNonEmptyOf($somePossibleEmptyStuff){
if (is_array($somePossibleEmptyStuff) || $somePossibleEmptyStuff instanceof Traversable){
foreach($somePossibleEmptyStuff as $entry){
if(empty($entry))
continue;
else
return $entry;
}
}
return null;
}
/// Eine als String gegebene Liste kommagetrennter key=value Paare in
/// ein assoziatives Array überführen
function getKeyValueArray($aKeyValueStringList){
$retKeyValueArray = array();
foreach( explode(",", $aKeyValueStringList) as $keyValueString){
$keyValuePair = explode("=", $keyValueString);
$retKeyValueArray[$keyValuePair[0]] = $keyValuePair[1];
}
return $retKeyValueArray;
}
/// @brief Gibt die URL der gerade aufgerufenen Seite zurück
function getCurPagesUrl(){
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on"){
$pageURL .= "s";
}
$pageURL .= "://";
if($_SERVER["SERVER_PORT"] != "80"){
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
}
else{
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
/// ein zufälliges Zitat aus der Datenbank abfragen
function getRandomCite($aDbConnection, $optionsArray = array("dbCharset" => "ISO-8859-1", "outCharset" => "UTF-8") ){
if(!$aDbConnection) return NULL;
if( empty($optionsArray['dbCharset']) ) $optionsArray['dbCharset'] = "ISO-8859-1";
if( empty($optionsArray['outCharset']) ) $optionsArray['outCharset'] = "UTF-8";
try{
$pdoStatementForQuerryingZitat = $aDbConnection->prepare(
"SELECT * FROM zitate ORDER BY RAND() LIMIT 1;"
);
$pdoStatementForQuerryingZitat->execute();
$retZitat = $pdoStatementForQuerryingZitat->fetchAll(PDO::FETCH_ASSOC);
// Zeichensatzkonvertierung
foreach($retZitat as &$entry){
array_walk(
$entry,
function (&$value, $key, $optionsArray) {
$value = iconv($optionsArray['dbCharset'], $optionsArray['outCharset'], $value);
},
$optionsArray
);
}
$retZitat = $retZitat[0];
}
catch(PDOException $db_error){
$retZitat['zitat'] = "There is no spoon!";
}
return $retZitat;
}
/// filtert aus einem Array einträge in der gegebenen Reihenfolge
function arrayKeyFilter($anArray, $someKeys){
// var_dump($anArray, $someKeys);
if( (is_array( $anArray ) || is_object( $anArray )) && ( is_array( $someKeys ) || is_object( $someKeys ) ) ){
$retArray = array();
foreach($someKeys as $key){
if( array_key_exists($key, $anArray) ){
$retArray[] = $anArray[$key];
}
}
return $retArray;
}
return null;
}
/// Linkeinträge aus einer jsonDatei laden
function jsonLinkFile2NavLinkList($aJsonFileName, $someLinkNames, $someOptions = [] ){
if( !file_exists($aJsonFileName) ) return null;
if( !(is_array( $someLinkNames ) || is_object( $someLinkNames )) ) return null;
return arrayKeyFilter(
json_decode(
file_get_contents($aJsonFileName),
true
),
$someLinkNames
);
}
function echoThisOrThat($This, $that){
echo( !empty($This) ? $This : $that );
}
function echoThisWhenThat($This, $that){
if( !empty($that) ) echo( $This );
}
function thisWhenThat($This, $that){
if( empty($that) ) return "";
return $This;
}
setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
function toAscii($str, $replace=array(), $delimiter='-') {
if( !empty($replace) ) {
$str = str_replace((array)$replace, ' ', $str);
}
$clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
$clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
$clean = strtolower(trim($clean, '-'));
$clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);
return $clean;
}
/// Wrapper function for a query to the
/// $aDbConnection connection to a db
function dbQuery($aDbConnection, $aQueryString, $aBindArray = array(), $someOptions = array( "dbCharset" => "ISO-8859-1", "outCharset" => "UTF-8" ) ){
if( empty($someOptions['dbCharset']) ) $someOptions['dbCharset'] = "ISO-8859-1";
if( empty($someOptions['outCharset']) ) $someOptions['outCharset'] = "UTF-8";
/// @toDo: Bisher wird nur die Rückgabe konvertiert. Eigentlich muss
/// doch auch die Eingabe konvertiert werden. Aber das jetzt
/// umzustellen wird schwer! Die User m Wettkampfplaner sind ja z.B.
/// als UTF8 in latin1(?) gespeichert.
try{
$pdoStatement = $aDbConnection->prepare( $aQueryString );
foreach( $aBindArray as $bindName => $bind ){
$pdoStatement->bindValue(
$bindName,
$bind['value'],
(isset($bind['data_type'])?$bind['data_type']:PDO::PARAM_STR)
);
}
$pdoStatement->execute();
$ret = $pdoStatement->fetchAll(PDO::FETCH_ASSOC);
}
catch(PDOException $db_error){
print "Error!: " . $db_error->getMessage() . "<br/>";
return null;
}
// Zeichensatzkonvertierung
if( is_array($ret) ){
foreach($ret as &$entry){
array_walk(
$entry,
function (&$value, $key, $someOptions) {
$value = iconv($someOptions['dbCharset'], $someOptions['outCharset'], $value);
},
$someOptions
);
}
}
return $ret;
}
?>