Files
website/.functions/fnc_portal.php

465 lines
11 KiB
PHP

<?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;
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 .= "$%&/()=";
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;
$log = $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;
}
?>