Files
website/.functions/fnc_portal.php

360 lines
8.4 KiB
PHP
Raw Permalink Blame History

<?php
function fnc_getNavigationArray($prefix, $onlyActive = true, $navPositions = array(), $namesFromConfig = array())
{
global $db;
$return = array();
$str_filter = (count($navPositions) > 0)
? '( ' . $prefix . '_navPosition = "' . implode('" OR ' . $prefix . '_navPosition = "', $navPositions) . '" )'
: '';
$str_filter .= ($onlyActive)
? ($str_filter === '')
? $prefix . '_navActive = "Y"'
: ' AND ' . $prefix . '_navActive = "Y"'
: '';
$str_filter = ($str_filter !== '')
? ' WHERE ' . $str_filter
: '';
$navi = $db->query('SELECT * FROM ' . $prefix . '_' . TBL_NAVI . $str_filter . ' ORDER BY ' . $prefix . '_navStart ASC , ' . $prefix . '_navSort ASC;');
while ($dat_navi = $navi->fetch_assoc())
{
if (!empty($namesFromConfig))
{
$dat_navi[$prefix . '_navName'] = $namesFromConfig['site_' . $dat_navi[$prefix . '_navId']];
}
$return[$dat_navi[$prefix . '_navStart']][] = $dat_navi;
}
return $return;
}
function fnc_getSingleNavigationArrays($prefix, $navArray, $params, $pathWay)
{
$i = 0;
$return = array();
foreach ($params['navLevel'] as $key => $depth)
{
if ($params['navDepth'][$key])
{
if (isset ($pathWay[$i]) && isset ($navArray[$pathWay[$i]]))
{
$return[$key][$pathWay[$i]] = $navArray[$pathWay[$i]];
++$i;
while ($i < $depth)
{
foreach ($return[$key] as $subArray)
{
foreach ($subArray as $navPoint)
{
if (isset ($navArray[$navPoint[$prefix . '_navId']]))
{
$return[$key][$navPoint[$prefix . '_navId']] = $navArray[$navPoint[$prefix . '_navId']];
}
}
}
++$i;
}
}
else
{
if (!isset ($return[$key]))
{
$return[$key] = null;
}
}
}
else
{
/* Nur die aktuelle Unternavigation */
while ($i < $depth && isset ($pathWay [$i]))
{
if (isset ($navArray[$pathWay[$i]]))
{
$return[$key][$pathWay[$i]] = $navArray[$pathWay[$i]];
}
else
{
if (!isset ($return[$key]))
{
$return[$key] = null;
}
}
++$i;
}
}
}
return $return;
}
function fnc_getPortalNavigationArray($prefix, $navArray, $rightsArray)
{
foreach ($navArray as $navStart => $navLevels)
{
if ($navStart > 0)
{
if (!in_array($prefix . '_' . $navStart, $rightsArray) && !in_array($navStart, $rightsArray))
{
unset ($navArray[$navStart]);
}
}
}
foreach ($navArray as $key => $navLevels)
{
foreach ($navLevels as $subKey => $navPoint)
{
if (intval($navPoint[$prefix . '_navId']) > 1 && (!in_array($prefix . '_' . $navPoint[$prefix . '_navId'], $rightsArray)) && !in_array($navPoint[$prefix . '_navId'], $rightsArray))
{
unset ($navArray[$key][$subKey]);
}
}
}
return ($navArray);
}
function fnc_createPathHome($prefix, $navActive)
{
global $db;
$navi = $db->query('SELECT * FROM ' . $prefix . '_' . TBL_NAVI . ' WHERE ' . $prefix . '_navId = "' . $navActive . '";');
$arr_navi = $navi->fetch_assoc();
if ($arr_navi[$prefix . '_navStart'] !== '0' && !is_null($arr_navi))
{
$return = fnc_createPathHome($prefix, $arr_navi[$prefix . '_navStart']);
}
else
{
$return[] = '0';
}
$return[] = $navActive;
return $return;
}
function fnc_getNavType($prefix, $navActive)
{
global $db;
$navi = $db->query('SELECT * FROM ' . $prefix . '_' . TBL_NAVI . ' WHERE ' . $prefix . '_navId = "' . $navActive . '";');
$navPoint = $navi->fetch_assoc();
if ($navPoint[$prefix . '_specialSite'] === 'Y')
{
return $navPoint[$prefix . '_specialType'];
}
else
{
return false;
}
}
function fnc_getUsernameById($userId)
{
global $db;
$return = '';
$user = $db->query('SELECT * FROM ' . TBL_USER . ' WHERE userId = "' . $userId . '";');
if ($user->num_rows > 0)
{
$dat_user = $user->fetch_assoc();
$return = $dat_user['userLastname'] . ', ' . $dat_user['userFirstname'];
}
return $return;
}
function fnc_getTimeByTS($timeStamp)
{
$time = new DateTime ($timeStamp);
return $time->format('d.m.Y - H:i:s');
}
function fnc_generatePW($length = 8)
{
$passWord = '';
$pool = "qwertzupasdfghkyxcvbnm";
$pool .= "23456789";
$pool .= "WERTZUPLKJHGFDSAYXCVBNM";
$pool .= "!<21>$%&/()=";
srand(( double )microtime() * 1000000);
for ($i = 0; $i < $length; $i++)
{
$passWord .= substr($pool, (rand() % (strlen($pool))), 1);
}
return $passWord;
}
function fnc_generateUniqueUsername($lastName, $firstName)
{
global $db;
$username = mb_strtolower(substr($firstName, 0, 1), 'UTF-8') . mb_strtolower($lastName, 'UTF-8');
$count = $db->query('SELECT * FROM ' . TBL_USER . ' WHERE userUsername = "' . $username . '" OR userUsername LIKE "' . $username . '_%";');
if ($count->num_rows !== 0)
{
$username .= '_' . $count->num_rows;
}
return $username;
}
function fnc_writeLog($entry, $params, $userId)
{
global $db;
$db->query('INSERT INTO ' . TBL_LOG . '(logEntry, logParams, logUser) VALUES ("' . $entry . '", "' . implode('::', $params) . '", "' . $userId . '");');
}
function fnc_readLog($entry, $params)
{
if ($params !== '')
{
$arr_params = explode('::', $params);
foreach ($arr_params as $key => $value)
{
$entry = str_replace('%' . $key . '%', $value, $entry);
}
}
return $entry;
}
function fnc_sendEmailToUser($mailId, $userId, $sessionUserId)
{
global $db;
global $vC;
global $lang;
$result = $db->query('SELECT * FROM ' . TBL_USER . ' WHERE userId = "' . $userId . '" LIMIT 1;');
$recipient = $result->fetch_assoc();
$result = $db->query('SELECT * FROM ' . TBL_USER . ' WHERE userId = "' . $sessionUserId . '" LIMIT 1;');
$sender = $result->fetch_assoc();
$mailSubj = $lang['mail']['subj'][$mailId];
$mailBody = $lang['mail']['body'][$mailId];
foreach ($recipient as $key => $value)
{
$mailBody = str_replace('%' . $key . '%', $value, $mailBody);
}
foreach ($sender as $key => $value)
{
$mailBody = str_replace('%sess_' . $key . '%', $value, $mailBody);
}
require_once(PATH_CLS . 'phpmailer/PHPMailerAutoload.php');
$mail = new PHPMailer;
if ($vC['portal']['mail']['type'] === 'smtp')
{
$mail->isSMTP();
$mail->Host = $vC['portal']['mail']['smtpHost'];
$mail->SMTPAuth = $vC['portal']['mail']['smtpAuth'];
$mail->Username = $vC['portal']['mail']['smtpUser'];
$mail->Password = $vC['portal']['mail']['smtpPass'];
}
$mail->From = $vC['portal']['mail']['from'];
$mail->FromName = $vC['portal']['mail']['fromName'];
$mail->ReturnPath = $vC['portal']['mail']['returnPath'];
$mail->CharSet = $vC['portal']['mail']['charset'];
$mail->addAddress($recipient['userEmail'], $recipient['userFirstname'] . ' ' . $recipient['userLastname']);
$mail->isHTML($vC['portal']['mail']['html']);
$mail->Subject = $mailSubj;
$mail->Body = $mailBody;
if (!$mail->send())
{
$return = $mail->ErrorInfo;
}
else
{
$return = 'OK';
}
return $return;
}
function fnc_validateEmailAddress($emailAddress)
{
if (filter_var($emailAddress, FILTER_VALIDATE_EMAIL) === false)
{
return false;
}
return true;
}
function fnc_checkUniqueEmailAddress($emailAddress, $userId = '')
{
global $db;
$return = false;
if ($userId !== '')
{
$count = $db->query('SELECT * FROM ' . TBL_USER . ' WHERE userId != "' . $userId . '" AND userEmail = "' . $emailAddress . '";');
}
else
{
$count = $db->query('SELECT * FROM ' . TBL_USER . ' WHERE userEmail = "' . $emailAddress . '";');
}
if ($count->num_rows === 0)
{
$return = true;
}
return $return;
}
function fnc_getSiteContents($contentParts, $prefix)
{
global $db;
$return = array();
$siteContents = explode(';', $contentParts);
foreach ($siteContents as $tmp_content)
{
if ($tmp_content === '')
{
continue;
}
$tmp_data = explode('_', $tmp_content);
$id = end($tmp_data);
unset ($tmp_data[count($tmp_data) - 1]);
$table = implode('_', $tmp_data);
if ($table === '')
{
continue;
}
if ($table === 'textimage')
{
$tmp_content = $db->query('SELECT * , ' . $prefix . '_' . TBL_TEXTIMAGE . '.id AS text_image_id FROM ' . $prefix . '_' . TBL_TEXTIMAGE . ', ' . $prefix . '_' . TBL_TEXT . ', ' . $prefix . '_' . TBL_IMAGE . ' WHERE ' . $prefix . '_' . TBL_TEXTIMAGE . '.content_text_id = ' . $prefix . '_' . TBL_TEXT . '.id AND ' . $prefix . '_' . TBL_TEXTIMAGE . '.content_image_id = ' . $prefix . '_' . TBL_IMAGE . '.id AND ' . $prefix . '_' . TBL_TEXTIMAGE . '.id = ' . $id . ' LIMIT 1;');
}
else
{
$tmp_content = $db->query('SELECT * FROM ' . $prefix . '_content_' . $table . ' WHERE id = ' . $id . ';');
}
if ($tmp_content->num_rows === 0)
{
continue;
}
$singleContent = $tmp_content->fetch_assoc();
$singleContent['type'] = $table;
$return[] = $singleContent;
}
return $return;
}