Init
This commit is contained in:
623
backend/install/resources/library/main/main.function.php
Normal file
623
backend/install/resources/library/main/main.function.php
Normal file
@@ -0,0 +1,623 @@
|
||||
<?php
|
||||
if (!defined('PICONTROL')) exit();
|
||||
|
||||
// functions.php
|
||||
|
||||
/**
|
||||
* Setzt Konfigurationswert für config.ini.php.
|
||||
*
|
||||
* <code>$tpl->setConfig('other.test', 'Wert'); // Weißt der Konfigvariable ['other']['test'] den Wert "Wert" zu.</code>
|
||||
*
|
||||
* @param string $config Konfigschlüssel
|
||||
* @param string $value Konfigwert
|
||||
* @return bool
|
||||
*/
|
||||
|
||||
function setConfig($config, $value, $customFile = NULL)
|
||||
{
|
||||
$configPath = CONFIG_PATH;
|
||||
$configFileSuffix = '.config.ini.php'; // Standard-Konfig
|
||||
|
||||
if ($customFile !== NULL)
|
||||
$configPath = $customFile;
|
||||
|
||||
$file = explode(':', $config);
|
||||
|
||||
if (count($file) != 2)
|
||||
return false;
|
||||
|
||||
$configFile = $configPath.$file[0].$configFileSuffix;
|
||||
|
||||
if (file_exists($configFile) !== true || is_file($configFile) !== true)
|
||||
return false;
|
||||
|
||||
$configArray = parse_ini_file($configFile, true);
|
||||
|
||||
if (!strlen($config) > 0 || !is_string($config))
|
||||
return false;
|
||||
|
||||
$var = explode('.', $file[1]);
|
||||
|
||||
if (count($var) != 2)
|
||||
$configArray[$var[0]] = $value;
|
||||
else
|
||||
$configArray[$var[0]][$var[1]] = $value;
|
||||
|
||||
return writeConfig($configArray, $configFile);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ermittelt Konfigurationswert aus config.ini.php.
|
||||
*
|
||||
* <code>$tpl->getConfig('other.test', 'Wert'); // Ermittelt den Wert von Konfigvariable ['other']['test']. Standardwert: "Wert".</code>
|
||||
*
|
||||
* @param string $config Konfigschlüssel
|
||||
* @param string $default Standardwert
|
||||
* @return string|int Im Fehlerfall der Standardwert, ansonsten den Konfigwert.
|
||||
*/
|
||||
|
||||
function getConfig($config, $default = NULL, $customFile = NULL)
|
||||
{
|
||||
$configPath = CONFIG_PATH;
|
||||
$configFileSuffix = '.config.ini.php'; // Standard-Konfig
|
||||
|
||||
if ($customFile !== NULL)
|
||||
$configPath = $customFile;
|
||||
|
||||
$file = explode(':', $config);
|
||||
|
||||
if (count($file) != 1 && count($file) != 2)
|
||||
return $default;
|
||||
|
||||
$configFile = $configPath.$file[0].$configFileSuffix;
|
||||
|
||||
if (file_exists($configFile) !== true || is_file($configFile) !== true)
|
||||
return $default;
|
||||
|
||||
$configArray = parse_ini_file($configFile, true);
|
||||
|
||||
if (!strlen($config) > 0 || !is_string($config))
|
||||
return $default;
|
||||
|
||||
if (!count($configArray) > 0)
|
||||
return $default;
|
||||
|
||||
if (isset($file[1]))
|
||||
{
|
||||
$var = explode('.', $file[1]);
|
||||
|
||||
if (count($var) == 1 && isset($configArray[$var[0]]))
|
||||
return $configArray[$var[0]];
|
||||
elseif (count($var) == 2 && isset($configArray[$var[0]][$var[1]]))
|
||||
return $configArray[$var[0]][$var[1]];
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isset($configArray))
|
||||
return $configArray;
|
||||
}
|
||||
|
||||
return $default;
|
||||
}
|
||||
|
||||
function removeConfig($config, $customFile = NULL)
|
||||
{
|
||||
$configPath = CONFIG_PATH;
|
||||
$configFileSuffix = '.config.ini.php'; // Standard-Konfig
|
||||
|
||||
if ($customFile !== NULL)
|
||||
$configPath = $customFile;
|
||||
|
||||
$file = explode(':', $config);
|
||||
|
||||
if (count($file) != 2)
|
||||
return false;
|
||||
|
||||
$configFile = $configPath.$file[0].$configFileSuffix;
|
||||
|
||||
if (file_exists($configFile) !== true || is_file($configFile) !== true)
|
||||
return false;
|
||||
|
||||
$configArray = parse_ini_file($configFile, true);
|
||||
|
||||
if (!strlen($config) > 0 || !is_string($config))
|
||||
return false;
|
||||
|
||||
$var = explode('.', $file[1]);
|
||||
|
||||
if (count($var) == 1)
|
||||
unset($configArray[$var[0]]);
|
||||
elseif (count($var) == 2)
|
||||
unset($configArray[$var[0]][$var[1]]);
|
||||
else
|
||||
return false;
|
||||
|
||||
return writeConfig($configArray, $configFile);
|
||||
}
|
||||
|
||||
/**
|
||||
* Schreibt Konfig-Ini-Datei mit neuen Werten.
|
||||
*
|
||||
* <code>$tpl->writeConfig();</code>
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
|
||||
function writeConfig($configArray, $configFile)
|
||||
{
|
||||
$res = array(';<?php', ';die();');
|
||||
|
||||
ksort($configArray);
|
||||
|
||||
foreach ($configArray as $key => $val)
|
||||
{
|
||||
if (is_array($val))
|
||||
{
|
||||
$res[] = PHP_EOL."[$key]";
|
||||
|
||||
foreach ($val as $skey => $sval)
|
||||
$res[] = "$skey = ".(is_numeric($sval) ? $sval : '"'.$sval.'"');
|
||||
}
|
||||
else
|
||||
$res[] = PHP_EOL."$key = ".(is_numeric($val) ? $val : '"'.$val.'"');
|
||||
}
|
||||
|
||||
$res[] = ';?>';
|
||||
|
||||
if (file_exists($configFile) !== true || is_file($configFile) !== true || is_writeable($configFile) !== true)
|
||||
return false;
|
||||
|
||||
if ($fp = fopen($configFile, 'w'))
|
||||
{
|
||||
$startTime = microtime();
|
||||
do
|
||||
{
|
||||
$canWrite = flock($fp, LOCK_EX);
|
||||
|
||||
// If lock not obtained sleep for 0 - 100 milliseconds, to avoid collision and CPU load
|
||||
if (!$canWrite)
|
||||
usleep(round(rand(0, 100)*1000));
|
||||
} while ((!$canWrite) && ((microtime()-$startTime) < 1000));
|
||||
|
||||
// file was locked so now we can store information
|
||||
if ($canWrite)
|
||||
{
|
||||
fwrite($fp, implode(PHP_EOL, $res));
|
||||
flock($fp, LOCK_UN);
|
||||
}
|
||||
fclose($fp);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Übersetzt Text in andere Sprache.
|
||||
*
|
||||
* <code>$tpl->_t('Hallo %s!', 'Welt'); // Rückgabe: Hallo Welt!</code>
|
||||
*
|
||||
* @param string $text Text
|
||||
* @param string|int|float $args[] Argumente
|
||||
* @return string
|
||||
*/
|
||||
|
||||
function _t()
|
||||
{
|
||||
global $globalLanguage, $globalLanguageArray;
|
||||
|
||||
$args = func_get_args();
|
||||
$lang = $globalLanguage;
|
||||
$langFile = LANGUAGE_PATH.'/'.$lang.'.php';
|
||||
|
||||
if (empty($globalLanguageArray) && file_exists($langFile) === true && is_file($langFile) === true)
|
||||
{
|
||||
include $langFile;
|
||||
$globalLanguageArray = $langArray;
|
||||
}
|
||||
|
||||
$checksum = substr(md5($args[0]), 0, 8);
|
||||
|
||||
if (is_numeric($checksum))
|
||||
$checksum[7] = 'z';
|
||||
|
||||
if (isset($globalLanguageArray[$checksum]) && $lang != 'de')
|
||||
$args[0] = $globalLanguageArray[$checksum];
|
||||
|
||||
return call_user_func_array('sprintf', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Übersetzt Text in andere Sprache und gibt ihn anschließend aus.
|
||||
*
|
||||
* <code>$tpl->_e('Hallo %s!', 'Welt'); // Ausgabe: Hallo Welt!</code>
|
||||
*
|
||||
* @param string $text Text
|
||||
* @param string|int|float $args[] Argumente
|
||||
* @return bool Ausgabe erfolgt mit "echo".
|
||||
*/
|
||||
|
||||
function _e()
|
||||
{
|
||||
global $globalLanguage, $globalLanguageArray;
|
||||
|
||||
$args = func_get_args();
|
||||
$lang = $globalLanguage;
|
||||
$langFile = LANGUAGE_PATH.'/'.$lang.'.php';
|
||||
|
||||
if (empty($globalLanguageArray) && file_exists($langFile) === true && is_file($langFile) === true)
|
||||
{
|
||||
include $langFile;
|
||||
$globalLanguageArray = $langArray;
|
||||
}
|
||||
|
||||
$checksum = substr(md5($args[0]), 0, 8);
|
||||
|
||||
if (is_numeric($checksum))
|
||||
$checksum[7] = 'z';
|
||||
|
||||
if (isset($globalLanguageArray[$checksum]) && $lang != 'de')
|
||||
$args[0] = $globalLanguageArray[$checksum];
|
||||
|
||||
echo call_user_func_array('sprintf', $args);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function sizeUnit($size)
|
||||
{
|
||||
if ($size == '')
|
||||
$size = 0;
|
||||
|
||||
if ($size < 1024)
|
||||
return number_format($size, 0, ',', '').' Byte';
|
||||
elseif ($size < 1024000)
|
||||
return number_format(round($size/1024,2), 2, ',', '').' KB';
|
||||
elseif ($size < 1048576000)
|
||||
return number_format(round($size/1048576,2), 2, ',', '').' MB';
|
||||
elseif ($size < 1073741824000)
|
||||
return number_format(round($size/1073741824,2), 2, ',', '').' GB';
|
||||
}
|
||||
|
||||
function return_bytes($size)
|
||||
{
|
||||
$size = trim($size);
|
||||
$last = strtolower($size[strlen($size)-1]);
|
||||
|
||||
switch ($last)
|
||||
{
|
||||
case 'g':
|
||||
$size *= 1024;
|
||||
case 'm':
|
||||
$size *= 1024;
|
||||
case 'k':
|
||||
$size *= 1024;
|
||||
}
|
||||
return $size;
|
||||
}
|
||||
|
||||
function numberFormat($value, $precision = 2, $delimiter = ',')
|
||||
{
|
||||
return number_format($value, $precision, $delimiter, '');
|
||||
}
|
||||
|
||||
function getFolderSize($folder_path, $folder_size = 0)
|
||||
{
|
||||
if (!is_dir($folder_path))
|
||||
$folder_size += filesize($folder_path);
|
||||
else
|
||||
{
|
||||
$folder_dir = opendir($folder_path);
|
||||
while ($folder_file = readdir($folder_dir))
|
||||
{
|
||||
if (is_file($folder_path.'/'.$folder_file))
|
||||
$folder_size += filesize($folder_path.'/'.$folder_file);
|
||||
if (is_dir($folder_path.'/'.$folder_file) && $folder_file != '.' && $folder_file != '..')
|
||||
$folder_size = getFolderSize($folder_path.'/'.$folder_file, $folder_size);
|
||||
}
|
||||
}
|
||||
return($folder_size);
|
||||
}
|
||||
|
||||
function formatTime($time, $type = 'd.m.Y H:i')
|
||||
{
|
||||
if ($time == '')
|
||||
return false;
|
||||
|
||||
return date($type, $time);
|
||||
}
|
||||
|
||||
if (!function_exists('array_column'))
|
||||
{
|
||||
function array_column($array, $columnName)
|
||||
{
|
||||
return array_map(function($element) use($columnName) { return $element[$columnName]; }, $array);
|
||||
}
|
||||
}
|
||||
|
||||
function checkUpdate()
|
||||
{
|
||||
global $config;
|
||||
|
||||
if (!class_exists('cURL'))
|
||||
(include LIBRARY_PATH.'curl/curl.class.php');
|
||||
|
||||
$curl = new cURL($config['url']['update']);
|
||||
$curl->execute();
|
||||
|
||||
if ($curl->getStatusCode() != '200')
|
||||
return $curl->getStatusCode();
|
||||
|
||||
if ($curl->getResult($data) != JSON_ERROR_NONE)
|
||||
return 1;
|
||||
|
||||
if (!isset($data['versions'], $data['latest']))
|
||||
return 1;
|
||||
|
||||
if ($data['latest']['versioncode'] > $config['version']['versioncode'])
|
||||
{
|
||||
$currentUpdateKey = array_search($config['version']['versioncode']+1, array_column($data['versions'], 'versioncode'));
|
||||
|
||||
return $data['versions'][$currentUpdateKey];
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
function urlIsPublic($url)
|
||||
{
|
||||
$ip = gethostbyname($url);
|
||||
$long = ip2long($ip);
|
||||
|
||||
if (PHP_INT_SIZE == 4) {
|
||||
if (($long >= 167772160 && $long <= 184549375) || ($long >= -1408237568 && $long <= -1407188993) || ($long >= -1062731776 && $long <= -1062666241) || ($long >= 2130706432 && $long <= 2147483647) || $long == -1) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (($long >= 3232235520 && $long <= 3232301055) || ($long >= 2886729728 && $long <= 2887778303) || ($long >= 167772160 && $long <= 184549375) || $long == -1) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function getDirectory($folder_)
|
||||
{
|
||||
$folderArray = array();
|
||||
$fileArray = array();
|
||||
$folder = array();
|
||||
$file = array();
|
||||
|
||||
foreach (@scandir($folder_) as $file_)
|
||||
{
|
||||
if ($file_[0] != '.')
|
||||
{
|
||||
if (is_dir($folder_.'/'.$file_))
|
||||
{
|
||||
$folderArray[] = $file_;
|
||||
$fileArray[] = $file_;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($folderArray))
|
||||
foreach ($folderArray as $row)
|
||||
$folder[] = $row;
|
||||
|
||||
if (isset($fileArray))
|
||||
foreach ($fileArray as $row)
|
||||
$file[] = $row;
|
||||
|
||||
return array ($folder, $file);
|
||||
}
|
||||
|
||||
function getAllFiles($folder_)
|
||||
{
|
||||
$folderArray = array();
|
||||
$fileArray = array();
|
||||
$folder = array();
|
||||
$file = array();
|
||||
$errorArray = array();
|
||||
|
||||
foreach (@scandir($folder_) as $file_)
|
||||
if ($file_[0] != '.')
|
||||
if (is_dir($folder_.'/'.$file_))
|
||||
$folderArray[] = $file_;
|
||||
else
|
||||
$fileArray[] = $file_;
|
||||
|
||||
if (isset($folderArray))
|
||||
{
|
||||
foreach ($folderArray as $row)
|
||||
{
|
||||
list ($file_return, $error_log) = getAllFiles($folder_.'/'.$row);
|
||||
$file[$row] = $file_return;
|
||||
|
||||
if (is_writeable($folder_.'/'.$row) !== true)
|
||||
$errorArray[] = $folder_.'/'.$row.'/';
|
||||
|
||||
$errorArray = array_merge($errorArray, $error_log);
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($fileArray))
|
||||
{
|
||||
foreach ($fileArray as $row)
|
||||
{
|
||||
$file[] = $row;
|
||||
|
||||
if (is_writeable($folder_.'/'.$row) !== true)
|
||||
$errorArray[] = $folder_.'/'.$row;
|
||||
}
|
||||
}
|
||||
|
||||
return array($file, $errorArray);
|
||||
}
|
||||
|
||||
function delete($folder)
|
||||
{
|
||||
chmod($folder, 0777);
|
||||
|
||||
if (is_dir($folder))
|
||||
{
|
||||
$handle = opendir($folder);
|
||||
while ($filename = readdir($handle))
|
||||
if ($filename != '.' && $filename != '..')
|
||||
delete($folder.'/'.$filename);
|
||||
|
||||
closedir($handle);
|
||||
rmdir($folder);
|
||||
}
|
||||
else
|
||||
unlink($folder);
|
||||
}
|
||||
|
||||
function checkInternetConnection()
|
||||
{
|
||||
if (function_exists('fsockopen') && ini_get('allow_url_fopen') !== false)
|
||||
{
|
||||
if (!$sock = @fsockopen('www.google.com', 80, $num, $error, 5))
|
||||
return false; // Raspberry Pi is not connected to internet
|
||||
else
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
function showHelper($url, $extern = false)
|
||||
{
|
||||
global $config;
|
||||
|
||||
if ($extern === false)
|
||||
$url = $config['urls']['helpUrl'].'#'.$url;
|
||||
|
||||
return '<a href="'.$url.'" title="Klicke für Hilfe" target="_blank" class="helper"> </a>';
|
||||
}
|
||||
|
||||
function array_sort($array, $on, $order = SORT_ASC)
|
||||
{
|
||||
$new_array = array();
|
||||
$sortable_array = array();
|
||||
|
||||
if (count($array) > 0)
|
||||
{
|
||||
foreach ($array as $k => $v)
|
||||
{
|
||||
if (is_array($v))
|
||||
{
|
||||
foreach ($v as $k2 => $v2)
|
||||
{
|
||||
if ($k2 == $on)
|
||||
$sortable_array[$k] = $v2;
|
||||
}
|
||||
}
|
||||
else
|
||||
$sortable_array[$k] = $v;
|
||||
}
|
||||
|
||||
switch ($order)
|
||||
{
|
||||
case SORT_ASC:
|
||||
asort($sortable_array);
|
||||
break;
|
||||
case SORT_DESC:
|
||||
arsort($sortable_array);
|
||||
break;
|
||||
}
|
||||
|
||||
foreach ($sortable_array as $k => $v)
|
||||
$new_array[$k] = $array[$k];
|
||||
}
|
||||
|
||||
return $new_array;
|
||||
}
|
||||
|
||||
function generateUniqId($length = 16, $upper = true)
|
||||
{
|
||||
$random1 = rand(1, 1000);
|
||||
$random2 = rand(1, 1000);
|
||||
$random3 = rand(1, 1000);
|
||||
|
||||
$random11 = 'random'.rand(1, 3);
|
||||
$random12 = 'random'.rand(1, 3);
|
||||
$random13 = 'random'.rand(1, 3);
|
||||
|
||||
$random = md5($$random11 - $$random12 + $$random13);
|
||||
$microtime = md5(microtime(true));
|
||||
|
||||
$uniqid = substr(md5($random.$microtime.uniqid()), 0, $length);
|
||||
|
||||
return ($upper !== true) ? $uniqid : strtoupper($uniqid);
|
||||
}
|
||||
|
||||
function arraySort($array, $on, $order = SORT_ASC)
|
||||
{
|
||||
$new_array = array();
|
||||
$sortable_array = array();
|
||||
|
||||
if (count($array) > 0)
|
||||
{
|
||||
foreach ($array as $k => $v)
|
||||
{
|
||||
if (is_array($v))
|
||||
{
|
||||
foreach ($v as $k2 => $v2)
|
||||
{
|
||||
if ($k2 == $on)
|
||||
$sortable_array[$k] = $v2;
|
||||
}
|
||||
}
|
||||
else
|
||||
$sortable_array[$k] = $v;
|
||||
}
|
||||
|
||||
switch ($order)
|
||||
{
|
||||
case SORT_ASC:
|
||||
asort($sortable_array);
|
||||
break;
|
||||
case SORT_DESC:
|
||||
arsort($sortable_array);
|
||||
break;
|
||||
}
|
||||
|
||||
foreach ($sortable_array as $k => $v)
|
||||
$new_array[$k] = $array[$k];
|
||||
}
|
||||
|
||||
return $new_array;
|
||||
}
|
||||
|
||||
function getTranslatedArrayForJs($translations)
|
||||
{
|
||||
if (!is_array($translations))
|
||||
return false;
|
||||
|
||||
$output = array();
|
||||
|
||||
foreach ($translations as $translation)
|
||||
$output[$translation] = _t($translation);
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
function getURLLangParam($echo = false, $html = true, $first = false)
|
||||
{
|
||||
global $globalLanguage;
|
||||
|
||||
$param = '&';
|
||||
|
||||
if ($html === true)
|
||||
$param .= 'amp;';
|
||||
|
||||
if ($first !== false)
|
||||
$param = '?';
|
||||
|
||||
$param .= 'lang='.$globalLanguage;
|
||||
|
||||
if ($echo !== false)
|
||||
echo $param;
|
||||
|
||||
return $param;
|
||||
}
|
||||
Reference in New Issue
Block a user