49 LEPTON_core::registerBasicFunctions();
50 LEPTON_core::loadCodeSnippets();
54 if(CRONJOB == 1 || CRONJOB == 3)
60 self::$instance = $this;
63 if (!isset($_SESSION[
'USER_ID']))
69 $pin_set = $this->database->get_one(
"SELECT pin_set FROM ".TABLE_PREFIX.
"users WHERE user_id = '".$_SESSION[
'USER_ID'].
"' ");
77 header(
'Location: '.LEPTON_URL.
'/account/logout.php');
82 LEPTON_SecureCMS::clearLepTokens();
86 LEPTON_SecureCMS::clearLepTokens();
87 header(
'Location: '.LEPTON_URL.
'/account/logout.php');
97 if (PAGE_LANGUAGES ==
true)
99 $sql_where_language =
" AND p.language = '".LANGUAGE.
"'";
103 $sql_where_language =
"";
110 FROM ".TABLE_PREFIX .
"pages AS p
111 INNER JOIN ".TABLE_PREFIX .
"sections AS s
113 ON (s.page_id = p.page_id)
117 AND p.visibility = 'public'
120 ((".$now.
" >= s.publ_start) OR (s.publ_start = 0))
122 ((".$now.
" <= s.publ_end) OR (s.publ_end = 0))
124 ".$sql_where_language.
"
132 $this->database->execute_query(
142 if (!empty($fetch_default))
144 $this->default_link = $fetch_default[
'link' ];
145 $this->default_page_id = intval($fetch_default[
'page_id' ]);
148 if (HOMEPAGE_REDIRECTION)
151 header(
"Location: ".$this->buildPageLink($this->default_link));
168 if (!isset($fetch_default[
'link' ]))
174 $this->default_link = $fetch_default[
'link' ];
175 $this->default_page_id = intval($fetch_default[
'page_id' ]);
176 $this->page = $fetch_default;
185 $this->page_id = intval($this->page_id);
186 if ($this->page_id != 0)
189 $query_page =
"SELECT * FROM ".TABLE_PREFIX.
"pages WHERE page_id = ".
$this->page_id;
190 $this->database->execute_query(
198 if (empty($this->page))
201 exit(
"Page not found." );
205 foreach ($this->page as $key => $value)
208 $key = strtoupper($key);
211 if ($key ===
'TEMPLATE' && empty($value))
213 $value = $this->database->get_one(
"SELECT value FROM ".TABLE_PREFIX.
"settings WHERE name = 'default_template' ");
216 if ($key ===
'DESCRIPTION' && empty($value))
218 $value = WEBSITE_DESCRIPTION;
221 if ($key ===
'KEYWORDS' && empty($value))
223 $value = WEBSITE_KEYWORDS;
226 define($key, $value);
233 foreach ( explode(
',', $this->page[
'page_trail' ] ) AS $pid )
235 $this->page_trail[ $pid ] = $pid;
241 if(!defined(
'TEMPLATE'))
243 define(
'TEMPLATE', DEFAULT_TEMPLATE);
245 define(
'TEMPLATE_DIR', LEPTON_URL .
'/templates/' . TEMPLATE );
247 if ($this->page_is_visible($this->page) ===
false)
249 if ( VISIBILITY ==
'deleted' || VISIBILITY ==
'none' )
252 $this->page_access_denied =
true;
254 elseif ( VISIBILITY ==
'private' || VISIBILITY ==
'registered' )
257 if ( $this->is_authenticated() ===
false )
260 header(
"Location: " . LEPTON_URL .
"/account/login.php?redirect=" . $this->buildPageLink($this->page[
'link']) );
265 $aAllowedGroupsId = explode(
',',$this->page[
'viewing_groups']);
266 $aSessionGroupsId = LEPTON_core::getValue(
'groups_id',
'string_clean',
'session',
',');
267 $result = array_intersect( $aSessionGroupsId,$aAllowedGroupsId);
271 $this->page_access_denied =
false;
276 $this->page_access_denied =
true;
285 if ($this->page_is_active($this->page) ===
false)
287 $this->page_no_active_sections =
true;
294 if ( SEARCH ==
'public' )
296 define(
'SHOW_SEARCH',
true );
298 elseif ( SEARCH ==
'private' && VISIBILITY ==
'private' )
300 define(
'SHOW_SEARCH',
true );
302 elseif ( SEARCH ==
'private' && $this->is_authenticated() ===
true )
304 define(
'SHOW_SEARCH',
true );
306 elseif ( SEARCH ==
'registered' && $this->is_authenticated() ===
true )
308 define(
'SHOW_SEARCH',
true );
312 define(
'SHOW_SEARCH',
false );
315 if ( !defined(
'SHOW_MENU' ) )
317 define(
'SHOW_MENU',
true );
320 if ( FRONTEND_LOGIN )
323 define(
'LOGIN_URL', LEPTON_URL .
'/account/login.php' );
324 define(
'LOGOUT_URL', LEPTON_URL .
'/account/logout.php' );
325 define(
'FORGOT_URL', LEPTON_URL .
'/account/forgot.php' );
326 define(
'PREFERENCES_URL', LEPTON_URL .
'/account/preferences.php' );
327 define(
'SIGNUP_URL', LEPTON_URL .
'/account/signup.php' );
338 $content = str_ireplace( [
"%5B",
"%5D"], [
"[",
"]"], $content);
341 if (preg_match_all(
'/\[LEPTONlink([0-9]+)\]/isU', $content, $ids))
343 $new_ids = array_unique( $ids[ 1 ] );
344 foreach ($new_ids as $key => $temp_page_id)
346 $link = $this->database->get_one(
"SELECT `link` FROM `" . TABLE_PREFIX .
"pages` WHERE `page_id` = " . $temp_page_id );
349 $content = str_replace($ids[0][$key], $this->buildPageLink($link), $content);
352 unset($temp_page_id);
364 "DESCRIPTION" => WEBSITE_DESCRIPTION,
365 "KEYWORDS" => WEBSITE_KEYWORDS
368 foreach ($lookFor as $key => $value)
372 define($key, $value);
397 public static function printFEMessage(
string $sType =
"success",
string $sMessage=
"",
string $sRedirect=
"",
int $iRedirectTime = 3000): void
399 $info =
'@DEPRECATED_TEMP 20250407: this method will be removed in L* > 7.4.0,<br> use LEPTON_frontend::displayFEMessage instead';
403 if (empty($sRedirect))
406 $link = self::$instance->page[
'link'];
407 $sRedirect = LEPTON_core::getInstance()->buildPageLink($link);
410 $_SESSION[
'FRONTEND_MESSAGE'] = $sMessage;
413 $_SESSION[
"PAGE_CONTENT"] =
"@LEPTON_FE_MESSAGE";
415 $_SESSION[
"FRONTEND_MESSAGE_TYPE"] = $sType;
416 $_SESSION[
"FRONTEND_MESSAGE_REDIRECT"] = $sRedirect;
417 $_SESSION[
"FRONTEND_MESSAGE_REDIRECT_TIME"] = $iRedirectTime;
419 header(
'Location: '.$sRedirect);
426 public static function displayMessage(): void
428 $info =
'@DEPRECATED_TEMP 20250407: this method will be removed in L* > 7.4.0,<br> use LEPTON_frontend::displayFEMessage instead';
431 $sMessage = self::getSessionAndClean(
'FRONTEND_MESSAGE');
433 $sType = self::getSessionAndClean(
'FRONTEND_MESSAGE_TYPE');
435 $sRedirect = self::getSessionAndClean(
'FRONTEND_MESSAGE_REDIRECT');
437 $iRedirectTime = self::getSessionAndClean(
"FRONTEND_MESSAGE_REDIRECT_TIME",
"integer");
439 $oTWIG = lib_twig_box::getInstance();
442 $oTWIG->registerPath(LEPTON_PATH.
"/templates/".DEFAULT_THEME.
"/templates/",
"core");
445 $tempTemplate = self::$instance->page[
'template'];
446 $lookUpTemplate = (empty($tempTemplate))
451 $lookUpPath = LEPTON_PATH.
"/templates/".$lookUpTemplate.
"/frontend/core/";
453 if (file_exists($lookUpPath))
455 $oTWIG->registerPath($lookUpPath,
"core");
459 'MESSAGE' => $sMessage,
461 'REDIRECT' => $sRedirect,
462 'REDIRECT_TIMER' => $iRedirectTime
465 echo( $oTWIG->render(
493 public static function displayFEMessage(
494 string $sType =
"success",
495 array|
string $aMessage = [],
496 string $sRedirect =
"",
497 int $iRedirectTime = -1,
498 string $sTemplateName =
"message.lte",
499 bool $bDirectOutput =
true
502 $oTwig = lib_twig_box::getInstance();
504 if (!is_array($aMessage))
506 $aMessage = [$aMessage];
509 if (empty($sRedirect))
512 $link = self::$instance->page[
'link'];
513 $sRedirect = LEPTON_core::getInstance()->buildPageLink($link);
517 if (file_exists(LEPTON_PATH.
"/templates/".DEFAULT_TEMPLATE.
"/frontend/core/message.lte"))
520 $oTwig->registerPath(LEPTON_PATH.
"/templates/".DEFAULT_TEMPLATE.
"/frontend/core/",
"core");
525 die(
LEPTON_tools::display(
'There is no message file in your FE-Template available!',
'pre',
'ui orange message'));
530 'message' => $aMessage,
531 'redirect' => $sRedirect,
532 'redirect_time' => $iRedirectTime
535 $sHTML_rendered = $oTwig->render(
536 "@core/".$sTemplateName,
540 if ($bDirectOutput ==
true)
542 echo $sHTML_rendered;
546 return $sHTML_rendered;
550 public static function getSessionAndClean(
string $sKey,
string $sType =
"string"): string|int
552 $returnValue = LEPTON_core::getValue($sKey, $sType,
"session") ??
"";
553 unset($_SESSION[$sKey]);