File manager - Edit - /home/ferretapmx/public_html/row.zip
Back
PK R�\!�¡u u css.phpnu �[��� <?php /** * @package SP Page Builder * @author JoomShaper http://www.joomshaper.com * @copyright Copyright (c) 2010 - 2023 JoomShaper * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later */ //no direct access defined('_JEXEC') or die('Restricted access'); use Joomla\CMS\Factory; use Joomla\CMS\Uri\Uri; use Joomla\CMS\Component\ComponentHelper; $options = $displayData['options']; $device = SpPgaeBuilderBase::$defaultDevice; $doc = Factory::getDocument(); // Image lazy load $config = ComponentHelper::getParams('com_sppagebuilder'); $lazyload = $config->get('lazyloadimg', '0'); $placeholder = $config->get('lazyplaceholder', ''); $lazy_bg_image = ''; $placeholder_bg_image = ''; $row_id = (isset($options->id) && $options->id) ? $options->id : 'section-id-' . $options->dynamicId; $rowIdSelector = '.sp-page-builder .page-content #' . $row_id; $cssHelper = new CSSHelper($rowIdSelector, true); $row_styles = ''; $style = ''; $styleX = ''; $mediaStyle = ''; $propMaps = [ 'padding' => 'padding', 'margin' => 'margin', 'section_overflow_x' => 'overflow-x', 'section_overflow_y' => 'overflow-y', 'color' => 'color', 'row_border_radius' => 'border-radius', 'row_border_style' => !empty($options->row_border) ? 'border-style' : null, 'row_border_color' => !empty($options->row_border) ? 'border-color' : null, 'row_border_width' => !empty($options->row_border) ? 'border-width' : null, 'row_width' => 'width', 'row_max_width' => 'max-width', 'row_min_width' => 'min-width', ]; $units = [ 'row_border_color' => false, 'row_border_style' => false, 'row_border_width' => false, 'padding' => false, 'margin' => false, 'section_overflow_x' => false, 'section_overflow_y' => false, 'color' => false, 'row_width' => $options->row_width->unit ?? 'px', 'row_max_width' => $options->row_max_width->unit ?? 'px', 'row_min_width' => $options->row_min_width->unit ?? 'px', ]; $modifier = ['padding' => 'spacing', 'margin' => 'spacing']; $default = []; if (!empty($options->section_height_option) && $options->section_height_option === 'win-height') { $propMaps['section_height'] = 'height'; $default['section_height'] = '100vh'; $units['section_height'] = false; } elseif (!empty($options->section_height_option) && $options->section_height_option === 'height') { $propMaps = array_merge($propMaps, [ 'section_height' => 'height' ]); } $propMaps = array_merge($propMaps, [ 'row_width' => 'width', 'section_min_height' => 'min-height', 'section_max_height' => 'max-height', 'row_max_width' => 'max-width', 'row_min_width' => 'min-width' ]); $sectionStyle = $cssHelper->generateStyle(':self', $options, $propMaps, $units, $modifier, $default); $cssHelper->setID($rowIdSelector . '.sppb-row-overlay', true); $sectionOverlay = $cssHelper->generateStyle(':self', $options, ['row_border_radius' => 'border-radius']); $cssHelper->setID($rowIdSelector, true); $sectionStyle .= $sectionOverlay; $deviceList = array_filter(AddonHelper::$deviceList, function ($size) { return $size !== SpPgaeBuilderBase::$defaultDevice; }); $background_image = (isset($options->background_image) && $options->background_image) ? $options->background_image : ''; $background_image_src = isset($background_image->src) ? $background_image->src : $background_image; if (property_exists($options, 'background_type') && isset($options->background_type)) { if (($options->background_type == 'image' || $options->background_type == 'color') && isset($options->background_color) && $options->background_color) $style .= 'background-color:' . $options->background_color . ';'; if (($options->background_type == 'image' && $background_image_src) || (isset($options->background_type) && $options->background_type == 'video')) { if ($lazyload) { if ($placeholder) { $placeholder_bg_image .= 'background-image:url(' . $placeholder . ');'; } if (strpos($background_image_src, "http://") !== false || strpos($background_image_src, "https://") !== false) { $lazy_bg_image .= 'background-image:url(' . $background_image_src . ');'; } else { $originalSrc = Uri::base(true) . '/' . $background_image_src; $lazy_bg_image .= 'background-image:url(' . SppagebuilderHelperSite::cleanPath($originalSrc) . ');'; } } else { if (strpos($background_image_src, "http://") !== false || strpos($background_image_src, "https://") !== false) { $style .= 'background-image:url(' . $background_image_src . ');'; } else { $original_src = Uri::base(true) . '/' . $background_image_src; $style .= 'background-image:url(' . SppagebuilderHelperSite::cleanPath($original_src) . ');'; } } if (isset($options->background_repeat) && $options->background_repeat) $style .= 'background-repeat:' . $options->background_repeat . ';'; if (isset($options->background_size) && $options->background_size && $options->background_size != 'custom') $style .= 'background-size:' . $options->background_size . ';'; if (isset($options->background_attachment) && $options->background_attachment) $style .= 'background-attachment:' . $options->background_attachment . ';'; if (isset($options->background_position) && $options->background_position && $options->background_position != 'custom') $style .= 'background-position:' . $options->background_position . ';'; if (isset($options->background_size) && $options->background_size == 'custom') { if (isset($options->background_size_custom) && \is_object($options->background_size_custom)) { $backgroundSize = AddonHelper::generateMultiDeviceObject($options, 'background_size_custom', 'background-size', $device, false, ($options->background_size_custom->unit ?? 'px')); $styleX .= $backgroundSize->$device; } } } if (isset($options->background_position) && $options->background_position == 'custom') { $backgroundPosition = AddonHelper::initDeviceObject(); foreach ($backgroundPosition as $key => $_) { if (isset($options->background_position_custom_x->$key) && isset($options->background_position_custom_y->$key)) { $backgroundPosition->$key = \is_object($options->background_position_custom_x) && \is_object($options->background_position_custom_y) ? 'background-position: ' . $options->background_position_custom_x->$key . $options->background_position_custom_x->unit . ' ' . $options->background_position_custom_y->$key . $options->background_position_custom_y->unit . ';' : 'background-position: ' . $options->background_position_custom_x . $options->background_position_custom_x->unit . ' ' . $options->background_position_custom_y . $options->background_position_custom_y->unit . ';'; } } $styleX .= $backgroundPosition->$device; } if ($options->background_type == 'gradient' && isset($options->background_gradient) && is_object($options->background_gradient)) { $radialPos = (isset($options->background_gradient->radialPos) && !empty($options->background_gradient->radialPos)) ? $options->background_gradient->radialPos : 'center center'; $gradientColor = (isset($options->background_gradient->color) && !empty($options->background_gradient->color)) ? $options->background_gradient->color : ''; $gradientColor2 = (isset($options->background_gradient->color2) && !empty($options->background_gradient->color2)) ? $options->background_gradient->color2 : ''; $gradientDeg = (isset($options->background_gradient->deg) && !empty($options->background_gradient->deg)) ? $options->background_gradient->deg : '0'; $gradientPos = (isset($options->background_gradient->pos) && !empty($options->background_gradient->pos)) ? $options->background_gradient->pos : '0'; $gradientPos2 = (isset($options->background_gradient->pos2) && !empty($options->background_gradient->pos2)) ? $options->background_gradient->pos2 : '100'; if (isset($options->background_gradient->type) && $options->background_gradient->type == 'radial') { $style .= "\tbackground-image: radial-gradient(at " . $radialPos . ", " . $gradientColor . " " . $gradientPos . "%, " . $gradientColor2 . " " . $gradientPos2 . "%);\n"; } else { $style .= "\tbackground-image: linear-gradient(" . $gradientDeg . "deg, " . $gradientColor . " " . $gradientPos . "%, " . $gradientColor2 . " " . $gradientPos2 . "%);\n"; } } } else { if (isset($options->background_color) && $options->background_color) $style .= 'background-color:' . $options->background_color . ';'; if ($background_image_src || (isset($options->background_type) && $options->background_type == 'video')) { if ($lazyload) { if ($placeholder) { $placeholder_bg_image .= 'background-image:url(' . $placeholder . ');'; } if (strpos($background_image_src, "http://") !== false || strpos($background_image_src, "https://") !== false) { $lazy_bg_image .= 'background-image:url(' . $background_image_src . ');'; } else { $original_src = Uri::base(true) . '/' . $background_image_src; $lazy_bg_image .= 'background-image:url(' . SppagebuilderHelperSite::cleanPath($original_src) . ');'; } } else { if (strpos($background_image_src, "http://") !== false || strpos($background_image_src, "https://") !== false) { $style .= 'background-image:url(' . $background_image_src . ');'; } else { $original_src = Uri::base(true) . '/' . $background_image_src; $style .= 'background-image:url(' . SppagebuilderHelperSite::cleanPath($original_src) . ');'; } } if (isset($options->background_repeat) && $options->background_repeat) $style .= 'background-repeat:' . $options->background_repeat . ';'; if (isset($options->background_size) && $options->background_size && $options->background_size != 'custom') $style .= 'background-size:' . $options->background_size . ';'; if (isset($options->background_attachment) && $options->background_attachment) $style .= 'background-attachment:' . $options->background_attachment . ';'; if (isset($options->background_position) && $options->background_position && $options->background_position != 'custom') $style .= 'background-position:' . $options->background_position . ';'; if (isset($options->background_size) && $options->background_size == 'custom') { if (isset($options->background_size_custom) && \is_object($options->background_size_custom)) { $backgroundSize = AddonHelper::generateMultiDeviceObject($options, 'background_size_custom', 'background-size', $device, false, ($options->background_size_custom->unit ?? 'px')); $styleX .= $backgroundSize->$device; } } if (isset($options->background_position) && $options->background_position == 'custom') { $backgroundPosition = AddonHelper::initDeviceObject(); foreach ($backgroundPosition as $key => $_) { if (!empty($options->background_position_custom_x->$key) && !empty($options->background_position_custom_y->$key)) { $backgroundPosition->$key = \is_object($options->background_position_custom_x) && \is_object($options->background_position_custom_y) ? 'background-position: ' . $options->background_position_custom_x->$key . $options->background_position_custom_x->unit . ' ' . $options->background_position_custom_y->$key . $options->background_position_custom_y->unit . ';' : 'background-position: ' . $options->background_position_custom_x . $options->background_position_custom_x->unit . ' ' . $options->background_position_custom_y . $options->background_position_custom_y->unit . ';'; } } $styleX .= $backgroundPosition->$device; } } if ($style) { $row_styles .= '.sp-page-builder .page-content #' . $row_id . '{' . $style . '}'; } } // Box Shadow if (isset($options->row_boxshadow) && $options->row_boxshadow) { if (is_object($options->row_boxshadow)) { $ho = (isset($options->row_boxshadow->ho) && $options->row_boxshadow->ho != '') ? $options->row_boxshadow->ho . 'px' : '0px'; $vo = (isset($options->row_boxshadow->vo) && $options->row_boxshadow->vo != '') ? $options->row_boxshadow->vo . 'px' : '0px'; $blur = (isset($options->row_boxshadow->blur) && $options->row_boxshadow->blur != '') ? $options->row_boxshadow->blur . 'px' : '0px'; $spread = (isset($options->row_boxshadow->spread) && $options->row_boxshadow->spread != '') ? $options->row_boxshadow->spread . 'px' : '0px'; $color = (isset($options->row_boxshadow->color) && $options->row_boxshadow->color != '') ? $options->row_boxshadow->color : '#fff'; $style .= "box-shadow: {$ho} {$vo} {$blur} {$spread} {$color};"; } else { $style .= "box-shadow: " . $options->row_boxshadow . ";"; } } $rowIdSelector = '.sp-page-builder .page-content #' . $row_id; $backgroundSize = $backgroundSize ?? false; $backgroundPosition = $backgroundPosition ?? false; $mediaStyle = array_map(function ($size) use ( $rowIdSelector, $backgroundSize, $backgroundPosition ) { $str = ''; $str .= AddonHelper::mediaQuery($size); $str .= $rowIdSelector . '{'; $str .= !empty($backgroundSize) ? $backgroundSize->$size : ''; $str .= !empty($backgroundPosition) ? $backgroundPosition->$size : ''; $str .= '}'; $str .= '}'; return $str; }, $deviceList); if ($styleX) { $row_styles .= '.sp-page-builder .page-content #' . $row_id . '{' . $styleX . '}'; } $mediaStyle = implode("\n", $mediaStyle); if ($mediaStyle) { $row_styles .= $mediaStyle; } if ($style) { $row_styles .= '.sp-page-builder .page-content #' . $row_id . '{' . $style . '}'; $row_styles .= '.sp-page-builder .page-content #' . $row_id . '{' . $placeholder_bg_image . '}'; $row_styles .= '.sp-page-builder .page-content #' . $row_id . '.sppb-element-loaded {' . $lazy_bg_image . '}'; } $row_styles .= $sectionStyle; // Overlay if (isset($options->background_type)) { if ($options->background_type == 'image' || $options->background_type == 'video') { if (!isset($options->overlay_type)) { $options->overlay_type = 'overlay_color'; } if (isset($options->overlay) && $options->overlay && $options->overlay_type == 'overlay_color') { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay {background-color: ' . $options->overlay . '}'; } if (isset($options->gradient_overlay) && $options->gradient_overlay && $options->overlay_type == 'overlay_gradient') { $overlay_radialPos = (isset($options->gradient_overlay->radialPos) && !empty($options->gradient_overlay->radialPos)) ? $options->gradient_overlay->radialPos : 'center center'; $overlay_gradientColor = (isset($options->gradient_overlay->color) && !empty($options->gradient_overlay->color)) ? $options->gradient_overlay->color : ''; $overlay_gradientColor2 = (isset($options->gradient_overlay->color2) && !empty($options->gradient_overlay->color2)) ? $options->gradient_overlay->color2 : ''; $overlay_gradientDeg = (isset($options->gradient_overlay->deg) && !empty($options->gradient_overlay->deg)) ? $options->gradient_overlay->deg : '0'; $overlay_gradientPos = (isset($options->gradient_overlay->pos) && !empty($options->gradient_overlay->pos)) ? $options->gradient_overlay->pos : '0'; $overlay_gradientPos2 = (isset($options->gradient_overlay->pos2) && !empty($options->gradient_overlay->pos2)) ? $options->gradient_overlay->pos2 : '100'; if (isset($options->gradient_overlay->type) && $options->gradient_overlay->type == 'radial') { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background: radial-gradient(at ' . $overlay_radialPos . ', ' . $overlay_gradientColor . ' ' . $overlay_gradientPos . '%, ' . $overlay_gradientColor2 . ' ' . $overlay_gradientPos2 . '%) transparent; }'; } else { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background: linear-gradient(' . $overlay_gradientDeg . 'deg, ' . $overlay_gradientColor . ' ' . $overlay_gradientPos . '%, ' . $overlay_gradientColor2 . ' ' . $overlay_gradientPos2 . '%) transparent; }'; } } if (isset($options->pattern_overlay) && $options->pattern_overlay && $options->overlay_type == 'overlay_pattern') { if (is_object($options->pattern_overlay)) { if (strpos($options->pattern_overlay->src, "http://") !== false || strpos($options->pattern_overlay->src, "https://") !== false) { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background-image:url(' . $options->pattern_overlay->src . '); background-attachment: scroll; }'; if (isset($options->overlay_pattern_color)) { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background-color:' . $options->overlay_pattern_color . '; }'; } } else { $original_src = Uri::base(true) . '/' . $options->pattern_overlay->src; $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background-image:url(' . SppagebuilderHelperSite::cleanPath($original_src) . '); background-attachment: scroll; }'; if (isset($options->overlay_pattern_color)) { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background-color:' . $options->overlay_pattern_color . '; }'; } } } else { if (strpos($options->pattern_overlay, "http://") !== false || strpos($options->pattern_overlay, "https://") !== false) { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background-image:url(' . $options->pattern_overlay . '); background-attachment: scroll; }'; if (isset($options->overlay_pattern_color)) { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background-color:' . $options->overlay_pattern_color . '; }'; } } else { $original_src = Uri::base(true) . '/' . $options->pattern_overlay; $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background-image:url(' . SppagebuilderHelperSite::cleanPath($original_src) . '); background-attachment: scroll; }'; if (isset($options->overlay_pattern_color)) { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background-color:' . $options->overlay_pattern_color . '; }'; } } } } } } else { if (!isset($options->overlay_type)) { $options->overlay_type = 'overlay_color'; } if (isset($options->overlay) && $options->overlay && $options->overlay_type == 'overlay_color') { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay {background-color: ' . $options->overlay . '}'; } if (isset($options->gradient_overlay) && $options->gradient_overlay && $options->overlay_type == 'overlay_gradient') { $overlay_radialPos = (isset($options->gradient_overlay->radialPos) && !empty($options->gradient_overlay->radialPos)) ? $options->gradient_overlay->radialPos : 'center center'; $overlay_gradientColor = (isset($options->gradient_overlay->color) && !empty($options->gradient_overlay->color)) ? $options->gradient_overlay->color : ''; $overlay_gradientColor2 = (isset($options->gradient_overlay->color2) && !empty($options->gradient_overlay->color2)) ? $options->gradient_overlay->color2 : ''; $overlay_gradientDeg = (isset($options->gradient_overlay->deg) && !empty($options->gradient_overlay->deg)) ? $options->gradient_overlay->deg : '0'; $overlay_gradientPos = (isset($options->gradient_overlay->pos) && !empty($options->gradient_overlay->pos)) ? $options->gradient_overlay->pos : '0'; $overlay_gradientPos2 = (isset($options->gradient_overlay->pos2) && !empty($options->gradient_overlay->pos2)) ? $options->gradient_overlay->pos2 : '100'; if (isset($options->gradient_overlay->type) && $options->gradient_overlay->type == 'radial') { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background: radial-gradient(at ' . $overlay_radialPos . ', ' . $overlay_gradientColor . ' ' . $overlay_gradientPos . '%, ' . $overlay_gradientColor2 . ' ' . $overlay_gradientPos2 . '%) transparent; }'; } else { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background: linear-gradient(' . $overlay_gradientDeg . 'deg, ' . $overlay_gradientColor . ' ' . $overlay_gradientPos . '%, ' . $overlay_gradientColor2 . ' ' . $overlay_gradientPos2 . '%) transparent; }'; } } if (isset($options->pattern_overlay) && $options->pattern_overlay && $options->overlay_type == 'overlay_pattern') { if (is_object($options->pattern_overlay)) { if (strpos($options->pattern_overlay->src, "http://") !== false || strpos($options->pattern_overlay->src, "https://") !== false) { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background-image:url(' . $options->pattern_overlay->src . '); background-attachment: scroll; }'; if (isset($options->overlay_pattern_color)) { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background-color:' . $options->overlay_pattern_color . '; }'; } } else { $original_src = Uri::base(true) . '/' . $options->pattern_overlay->src; $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background-image:url(' . SppagebuilderHelperSite::cleanPath($original_src) . '); background-attachment: scroll; }'; if (isset($options->overlay_pattern_color)) { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background-color:' . $options->overlay_pattern_color . '; }'; } } } else { if (strpos($options->pattern_overlay, "http://") !== false || strpos($options->pattern_overlay, "https://") !== false) { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background-image:url(' . $options->pattern_overlay . '); background-attachment: scroll; }'; if (isset($options->overlay_pattern_color)) { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background-color:' . $options->overlay_pattern_color . '; }'; } } else { $original_src = Uri::base(true) . '/' . $options->pattern_overlay; $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background-image:url(' . SppagebuilderHelperSite::cleanPath($original_src) . '); background-attachment: scroll; }'; if (isset($options->overlay_pattern_color)) { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { background-color:' . $options->overlay_pattern_color . '; }'; } } } } } //Blend Mode if (isset($options->background_type) && $options->background_type) { if ($options->background_type == 'image') { if (isset($options->blend_mode) && $options->blend_mode) { $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' > .sppb-row-overlay { mix-blend-mode:' . $options->blend_mode . '; }'; } } } // Row Title if ((isset($options->title) && $options->title) || (isset($options->subtitle) && $options->subtitle)) { if (!empty($options->title)) { $titleStyle = ''; if (!empty($options->title_fontsize)) { $titleFontSize = AddonHelper::generateMultiDeviceObject($options, 'title_fontsize', ['font-size', 'line-height'], $device); $titleStyle .= $titleFontSize->$device; } if (!empty($options->title_position)) { $titleAlignment = CSSHelper::parseAlignment($options, 'title_position'); $titleStyle .= 'text-align: ' . $titleAlignment . ';'; } if (!empty($options->title_fontweight)) { $titleStyle .= 'font-weight: ' . $options->title_fontweight . ';'; } if (!empty($options->title_text_color)) { $titleStyle .= 'color:' . $options->title_text_color . ';'; } $titleMarginTop = AddonHelper::generateMultiDeviceObject($options, 'title_margin_top', 'margin-top', $device); $titleMarginBottom = AddonHelper::generateMultiDeviceObject($options, 'title_margin_bottom', 'margin-bottom', $device); $titleStyle .= $titleMarginTop->$device; $titleStyle .= $titleMarginBottom->$device; $titleSelector = '.sp-page-builder .page-content #' . $row_id . ' .sppb-section-title .sppb-title-heading'; $titleFontSize = $titleFontSize ?? new stdClass; $titleStyleMedia = array_map( function ($size) use ( $titleSelector, $titleFontSize, $titleMarginTop, $titleMarginBottom ) { $str = AddonHelper::mediaQuery($size); $str .= $titleSelector . '{'; $str .= $titleFontSize->$size ?? ''; $str .= $titleMarginTop->$size ?? ''; $str .= $titleMarginBottom->$size ?? ''; $str .= '}'; $str .= '}'; return $str; }, $deviceList ); $titleStyleMedia = implode("\r\n", $titleStyleMedia); $row_styles .= !empty($titleStyle) ? '.sp-page-builder .page-content #' . $row_id . ' .sppb-section-title .sppb-title-heading {' . $titleStyle . '}' : ''; $row_styles .= !empty($titleStyleMedia) ? $titleStyleMedia : ''; } // Subtitle font size if (!empty($options->subtitle)) { $subTitleStyle = ''; $subtitleFontSize = AddonHelper::generateMultiDeviceObject($options, 'subtitle_fontsize', 'font-size', $device); $subtitleSelector = '.sp-page-builder .page-content #' . $row_id . ' .sppb-section-title .sppb-title-subheading'; if (!empty($options->title_position)) { $titleAlignment = CSSHelper::parseAlignment($options, 'title_position'); $subTitleStyle .= 'text-align: ' . $titleAlignment . ';'; } $subtitleStyleMedia = array_map( function ($size) use ( $subtitleSelector, $subtitleFontSize ) { $str = AddonHelper::mediaQuery($size); $str .= $subtitleSelector . '{'; $str .= $subtitleFontSize->$size; $str .= '}'; $str .= '}'; return $str; }, $deviceList ); $subtitleStyleMedia = implode("\r\n", $subtitleStyleMedia); $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' .sppb-section-title .sppb-title-subheading {' . $subtitleFontSize->$device . '}'; $row_styles .= '.sp-page-builder .page-content #' . $row_id . ' .sppb-section-title .sppb-title-subheading {' . $subTitleStyle . '}'; $row_styles .= !empty($subtitleStyleMedia) ? $subtitleStyleMedia : ''; } } //container width if (isset($options->fullscreen) && !$options->fullscreen && isset($options->container_width) && is_object($options->container_width) && isset($options->container_width->md) && $options->container_width->md != '') { $row_styles .= '@media (min-width: 1400px) {#' . $row_id . ' > .sppb-row-container { max-width:' . $options->container_width->md . 'px;}}'; } else if (isset($options->fullscreen) && !$options->fullscreen && isset($options->container_width) && !is_object($options->container_width)) { $row_styles .= '@media (min-width: 1400px) {#' . $row_id . ' > .sppb-row-container { max-width:' . $options->container_width . 'px;}}'; } if (property_exists($options, 'no_gutter') && !$options->no_gutter) { if (!$options->no_gutter && isset($options->columns_gap) && is_object($options->columns_gap)) { $columnsGapMargin = AddonHelper::initDeviceObject(); $columnsGapPadding = AddonHelper::initDeviceObject(); $gapUnit = $options->columns_gap->unit; foreach ($columnsGapMargin as $key => $gaps) { if (!empty($options->columns_gap->$key)) { $gap = (int) $options->columns_gap->$key / 2; $columnsGapMargin->$key .= 'margin-left: -' . $gap . $gapUnit . ';'; $columnsGapMargin->$key .= 'margin-right: -' . $gap . $gapUnit . ';'; $columnsGapPadding->$key .= 'padding-left: ' . $gap . $gapUnit . ';'; $columnsGapPadding->$key .= 'padding-right: ' . $gap . $gapUnit . ';'; } } $rowContainerClass = (isset($options->fullscreen) && boolval($options->fullscreen)) ? ".sppb-container-inner" : ".sppb-row-container"; $marginSelector = '#' . $row_id . ' > ' . $rowContainerClass . ' > .sppb-row '; $paddingSelector = '#' . $row_id . ' > ' . $rowContainerClass . ' > .sppb-row > div'; $columnsGapMarginStyle = $marginSelector . '{' . $columnsGapMargin->$device . '}'; $columnsGapPaddingStyle = $paddingSelector . '{' . $columnsGapPadding->$device . '}'; $columnsGapMedia = array_map( function ($size) use ( $marginSelector, $paddingSelector, $columnsGapMargin, $columnsGapPadding ) { $str = AddonHelper::mediaQuery($size); $str .= $marginSelector . '{'; $str .= $columnsGapMargin->$size; $str .= '}'; $str .= $paddingSelector . '{'; $str .= $columnsGapPadding->$size; $str .= '}'; $str .= '}'; return $str; }, $deviceList ); $columnsGapMedia = implode("\r\n", $columnsGapMedia); $row_styles .= $columnsGapMarginStyle; $row_styles .= $columnsGapPaddingStyle; $row_styles .= $columnsGapMedia; // nested row $marginSelectorNested = '#' . $row_id . ' > .sppb-container-inner > .sppb-nested-row'; $paddingSelectorNested = '#' . $row_id . ' > .sppb-container-inner > .sppb-nested-row > div'; $columnsGapMarginStyleNested = $marginSelectorNested . '{' . $columnsGapMargin->$device . '}'; $columnsGapPaddingStyleNested = $paddingSelectorNested . '{' . $columnsGapPadding->$device . '}'; $columnsGapMediaNested = array_map( function ($size) use ( $marginSelectorNested, $paddingSelectorNested, $columnsGapMargin, $columnsGapPadding ) { $str = AddonHelper::mediaQuery($size); $str .= $marginSelectorNested . '{'; $str .= $columnsGapMargin->$size; $str .= '}'; $str .= $paddingSelectorNested . '{'; $str .= $columnsGapPadding->$size; $str .= '}'; $str .= '}'; return $str; }, $deviceList ); $columnsGapMediaNested = implode("\r\n", $columnsGapMediaNested); $row_styles .= $columnsGapMarginStyleNested; $row_styles .= $columnsGapPaddingStyleNested; $row_styles .= $columnsGapMediaNested; } } echo $row_styles; PK R�\8�5�. . end.phpnu �[��� <?php /** * @package SP Page Builder * @author JoomShaper http://www.joomshaper.com * @copyright Copyright (c) 2010 - 2023 JoomShaper * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later */ //no direct access defined ('_JEXEC') or die ('Restricted access'); $options = $displayData['options']; $fluid_row = (isset($options->fullscreen) && $options->fullscreen) ? $options->fullscreen : 0; $html = '</div>'; if(!$fluid_row){ $html .= '</div>'; $html .= '</section>'; } else { $html .= '</div>'; $html .= '</div>'; } echo $html; PK R�\M3Ҟ�G �G start.phpnu �[��� <?php /** * @package SP Page Builder * @author JoomShaper http://www.joomshaper.com * @copyright Copyright (c) 2010 - 2023 JoomShaper * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later */ //no direct access defined('_JEXEC') or die('Restricted access'); use Joomla\CMS\Factory; use Joomla\CMS\Uri\Uri; use Joomla\CMS\Component\ComponentHelper; $options = $displayData['options']; $doc = Factory::getDocument(); //Image lazy load $config = ComponentHelper::getParams('com_sppagebuilder'); $lazyload = $config->get('lazyloadimg', '0'); $custom_class = (isset($options->class) && ($options->class)) ? ' ' . $options->class : ''; $row_id = (isset($options->id) && $options->id) ? $options->id : 'section-id-' . $options->dynamicId; $fluid_row = (isset($options->fullscreen) && $options->fullscreen) ? $options->fullscreen : 0; $stretch_section = (isset($options->stretch_section) && $options->stretch_section) ? $options->stretch_section : 0; $row_class = (isset($options->no_gutter) && $options->no_gutter) ? ' sppb-no-gutter' : ''; $row_class .= isset($options->isNestedRow) && $options->isNestedRow ? ' sppb-nested-row' : ''; $cssHelper = new CSSHelper($row_id); if ($lazyload && isset($options->background_type) && $options->background_type) { if ($options->background_type === 'image' || $options->background_type === 'video') { $custom_class .= ' sppb-element-lazy'; } } if (isset($options->columns_content_alignment) && ($options->columns_content_alignment === 'top' || $options->columns_content_alignment === 'start')) { $row_class .= (isset($options->columns_align_center) && $options->columns_align_center) ? ' sppb-align-top' : ''; } elseif (isset($options->columns_content_alignment) && ($options->columns_content_alignment === 'bottom' || $options->columns_content_alignment === 'end')) { $row_class .= (isset($options->columns_align_center) && $options->columns_align_center) ? ' sppb-align-bottom' : ''; } else { $row_class .= (isset($options->columns_align_center) && $options->columns_align_center) ? ' sppb-align-center' : ''; } $external_video = (isset($options->background_external_video) && $options->background_external_video) ? $options->background_external_video : ''; $background_parallax = (isset($options->background_parallax) && $options->background_parallax) ? (int) $options->background_parallax : 0; $sec_cont_center = ''; if (isset($options->columns_content_alignment) && ($options->columns_content_alignment === 'top' || $options->columns_content_alignment === 'start')) { $sec_cont_center = (isset($options->columns_align_center) && $options->columns_align_center) ? ' sppb-section-content-top' : ''; } elseif (isset($options->columns_content_alignment) && ($options->columns_content_alignment === 'bottom' || $options->columns_content_alignment === 'end')) { $sec_cont_center = (isset($options->columns_align_center) && $options->columns_align_center) ? ' sppb-section-content-bottom' : ''; } else { $sec_cont_center = (isset($options->columns_align_center) && $options->columns_align_center) ? ' sppb-section-content-center' : ''; } // Visibility if (isset($options->hidden_xl) && $options->hidden_xl) { $custom_class .= ' sppb-hidden-xl'; } if (isset($options->hidden_lg) && $options->hidden_lg) { $custom_class .= ' sppb-hidden-lg'; } if (isset($options->hidden_md) && $options->hidden_md) { $custom_class .= ' sppb-hidden-md'; } if (isset($options->hidden_sm) && $options->hidden_sm) { $custom_class .= ' sppb-hidden-sm'; } if (isset($options->hidden_xs) && $options->hidden_xs) { $custom_class .= ' sppb-hidden-xs'; } $addon_attr = ''; // Animation $hasEnableAnimationProperty = property_exists($options, 'enable_animation'); $isAnimationEnabled = false; if ($hasEnableAnimationProperty) { $isAnimationEnabled = !empty($options->enable_animation) && !empty($options->animation); } else { $isAnimationEnabled = !empty($options->animation); } if ($isAnimationEnabled) { $custom_class .= ' sppb-wow ' . $options->animation; if (!empty($options->animationduration)) { $addon_attr .= ' data-sppb-wow-duration="' . $options->animationduration . 'ms"'; } if (!empty($options->animationdelay)) { $addon_attr .= ' data-sppb-wow-delay="' . $options->animationdelay . 'ms"'; } } if (!empty($external_video)) { $custom_class .= ' sppb-row-have-ext-bg'; } // Top Shape CSS $cssTop = ""; $cssTop .= $cssHelper->generateStyle(".sppb-shape-container.sppb-top-shape > svg", $options, ['shape_width' => ['width', 'max-width'], 'shape_height' => 'height'], ['shape_width' => '%', 'shape_height' => 'px']); if (isset($options->show_top_shape) && $options->show_top_shape) { $doc->addStyleDeclaration($cssTop); } $top_shape_path_css = (isset($options->shape_color) && !empty($options->shape_color)) ? 'fill:' . $options->shape_color . ';' : ''; if (isset($options->show_top_shape) && $options->show_top_shape && !empty($top_shape_path_css)) { $doc->addStyledeclaration('#' . $row_id . ' .sppb-shape-container.sppb-top-shape > svg path, #' . $row_id . ' .sppb-shape-container.sppb-top-shape > svg polygon{' . $top_shape_path_css . '}'); } // Bottom Shape CSS $css = $cssHelper->generateStyle(".sppb-shape-container.sppb-bottom-shape > svg", $options, ['bottom_shape_width' => ['width', 'max-width'], 'bottom_shape_height' => 'height'], ['bottom_shape_width' => '%', 'bottom_shape_height' => 'px']); if (isset($options->show_bottom_shape) && $options->show_bottom_shape) { $doc->addStyleDeclaration($css); } $bottom_shape_path_css = (isset($options->bottom_shape_color) && !empty($options->bottom_shape_color)) ? 'fill:' . $options->bottom_shape_color . ';' : ''; if (isset($options->show_bottom_shape) && $options->show_bottom_shape && !empty($bottom_shape_path_css)) { $doc->addStyledeclaration('#' . $row_id . ' .sppb-shape-container.sppb-bottom-shape > svg path, #' . $row_id . ' .sppb-shape-container.sppb-bottom-shape > svg polygon{' . $bottom_shape_path_css . '}'); } // Video $video_loop = ''; if (isset($options->video_loop) && $options->video_loop == true) { $video_loop = 'loop'; } else { $video_loop = ''; } $video_params = ''; $video_poster = ''; $mp4_url = ''; $ogv_url = ''; $external_background_video = 0; if (isset($options->external_background_video) && $options->external_background_video) { $external_background_video = $options->external_background_video; } $background_image = (isset($options->background_image) && $options->background_image) ? $options->background_image : ''; $background_image_src = isset($background_image->src) ? $background_image->src : $background_image; $background_video_mp4 = (isset($options->background_video_mp4) && $options->background_video_mp4) ? $options->background_video_mp4 : ''; $background_video_mp4_src = isset($background_video_mp4->src) ? $background_video_mp4->src : $background_video_mp4; $background_video_ogv = (isset($options->background_video_ogv) && $options->background_video_ogv) ? $options->background_video_ogv : ''; $background_video_ogv_src = isset($background_video_ogv->src) ? $background_video_ogv->src : $background_video_ogv; if (isset($options->background_type)) { if ($options->background_type === 'video' && !$external_background_video) { if ($background_image_src) { if (strpos($background_image_src, "http://") !== false || strpos($background_image_src, "https://") !== false) { $video_poster .= $background_image_src; $video_params .= $video_loop; } else { $video_poster .= Uri::base(true) . '/' . $background_image_src; } } if ($background_video_mp4_src) { $mp4_parsed = parse_url($background_video_mp4_src); $mp4_url = (isset($mp4_parsed['host']) && $mp4_parsed['host']) ? $background_video_mp4_src : Uri::base(true) . '/' . $background_video_mp4_src; } if ($background_video_ogv_src) { $ogv_parsed = parse_url($background_video_ogv_src); $ogv_url = (isset($ogv_parsed['host']) && $ogv_parsed['host']) ? $background_video_ogv_src : Uri::base(true) . '/' . $background_video_ogv_src; } } } else { if (isset($options->background_video) && $options->background_video && !$external_background_video) { if ($background_image_src) { if (strpos($background_image_src, "http://") !== false || strpos($background_image_src, "https://") !== false) { $video_poster .= $background_image_src; $video_params .= $video_loop; } else { $video_poster .= Uri::base(true) . '/' . $background_image_src; $video_params .= $video_loop; } } if (isset($options->background_video_mp4) && $options->background_video_mp4) { $mp4_parsed = parse_url($options->background_video_mp4); $mp4_url = (isset($mp4_parsed['host']) && $mp4_parsed['host']) ? $options->background_video_mp4 : Uri::base(true) . '/' . $options->background_video_mp4; } if (isset($options->background_video_ogv) && $options->background_video_ogv) { $ogv_parsed = parse_url($options->background_video_ogv); $ogv_url = (isset($ogv_parsed['host']) && $ogv_parsed['host']) ? $options->background_video_ogv : Uri::base(true) . '/' . $options->background_video_ogv; } } } $parallax_params = ''; if ($background_parallax && $background_image_src) { $parallax_params = ' data-sppb-parallax="on"'; } $video_content = ''; if (isset($options->background_type)) { if (!empty($external_video) && $options->external_background_video && $options->background_type === 'video') { $video = parse_url($external_video); $src = ''; $vidId = ''; switch ($video['host']) { case 'youtu.be': $id = trim($video['path'], '/'); $src = '//www.youtube.com/embed/' . $id . '?playlist=' . $id . '&iv_load_policy=3&enablejsapi=1&disablekb=1&autoplay=1&controls=0&showinfo=0&rel=0&loop=1&wmode=transparent&widgetid=1&mute=1'; break; case 'www.youtube.com': case 'youtube.com': parse_str($video['query'], $query); $id = $query['v']; $src = '//www.youtube.com/embed/' . $id . '?playlist=' . $id . '&iv_load_policy=3&enablejsapi=1&disablekb=1&autoplay=1&controls=0&showinfo=0&rel=0&loop=1&wmode=transparent&widgetid=1&mute=1'; break; case 'vimeo.com': case 'www.vimeo.com': $id = trim($video['path'], '/'); $src = "//player.vimeo.com/video/{$id}?background=1&autoplay=1&loop=1&title=0&byline=0&portrait=0"; } $video_content .= '<div class="sppb-youtube-video-bg hidden"><iframe class="sppb-youtube-iframe" ' . ($lazyload ? 'data-src="' . $src . '"' : 'src="' . $src . '"') . ' frameborder="0" allowfullscreen></iframe></div>'; } } else { if (!empty($external_video) && $options->external_background_video && $options->background_video) { $video = parse_url($external_video); $src = ''; switch ($video['host']) { case 'youtu.be': $id = trim($video['path'], '/'); $src = '//www.youtube.com/embed/' . $id . '?playlist=' . $id . '&iv_load_policy=3&enablejsapi=1&disablekb=1&autoplay=1&controls=0&showinfo=0&rel=0&loop=1&wmode=transparent&widgetid=1&mute=1'; break; case 'www.youtube.com': case 'youtube.com': parse_str($video['query'], $query); $id = $query['v']; $src = '//www.youtube.com/embed/' . $id . '?playlist=' . $id . '&iv_load_policy=3&enablejsapi=1&disablekb=1&autoplay=1&controls=0&showinfo=0&rel=0&loop=1&wmode=transparent&widgetid=1&mute=1'; break; case 'vimeo.com': case 'www.vimeo.com': $id = trim($video['path'], '/'); $src = "//player.vimeo.com/video/{$id}?background=1&autoplay=1&loop=1&title=0&byline=0&portrait=0"; break; } $video_content .= '<div class="sppb-youtube-video-bg hidden"><iframe class="sppb-youtube-iframe" ' . ($lazyload ? 'data-src="' . $src . '"' : 'src="' . $src . '"') . ' frameborder="0" allowfullscreen></iframe></div>'; } } $shape_content = ''; if (isset($options->show_top_shape) && $options->show_top_shape && isset($options->shape_name) && $options->shape_name) { $shape_class = ''; $shape_code = ''; $inversionNotAllowed = [ 'clouds-opacity', 'slope-opacity', 'waves3-opacity', 'paper-torn', 'hill-wave', 'line-wave', 'swirl', 'wavy-opacity', 'zigzag-sharp', 'brushed', ]; if (in_array($options->shape_name, $inversionNotAllowed)) { $shape_invert = 0; } else { $shape_invert = isset($options->shape_invert) && $options->shape_invert ? 1 : 0; } if (class_exists('SppagebuilderHelperSite')) { $shape_code = SppagebuilderHelperSite::getSvgShapeCode($options->shape_name, $shape_invert); } if (isset($options->shape_flip) && $options->shape_flip) { $shape_class .= ' sppb-shape-flip'; } if (!empty($shape_invert) && !empty($shape_code)) { $shape_class .= ' sppb-shape-invert'; } if (isset($options->shape_to_front) && $options->shape_to_front) { $shape_class .= ' sppb-shape-to-front'; } $shape_content .= '<div class="sppb-shape-container sppb-top-shape ' . $shape_class . '">'; $shape_content .= $shape_code; $shape_content .= '</div>'; } if (isset($options->show_bottom_shape) && $options->show_bottom_shape && isset($options->bottom_shape_name) && $options->bottom_shape_name) { $bottom_shape_class = ''; $bottom_shape_code = ''; $inversionNotAllowed = [ 'clouds-opacity', 'slope-opacity', 'waves3-opacity', 'paper-torn', 'hill-wave', 'line-wave', 'swirl', 'wavy-opacity', 'zigzag-sharp', 'brushed', ]; if (isset($options->shape_name) && in_array($options->shape_name, $inversionNotAllowed)) { $bottom_shape_invert = 0; } else { $bottom_shape_invert = isset($options->bottom_shape_invert) && $options->bottom_shape_invert ? 1 : 0; } if (class_exists('SppagebuilderHelperSite') && isset($options->bottom_shape_name)) { $bottom_shape_code = SppagebuilderHelperSite::getSvgShapeCode($options->bottom_shape_name, $bottom_shape_invert); } if (isset($options->bottom_shape_flip) && $options->bottom_shape_flip) { $bottom_shape_class .= ' sppb-shape-flip'; } if (!empty($bottom_shape_invert) && !empty($bottom_shape_code)) { $bottom_shape_class .= ' sppb-shape-invert'; } if (isset($options->bottom_shape_to_front) && $options->bottom_shape_to_front) { $bottom_shape_class .= ' sppb-shape-to-front'; } $shape_content .= '<div class="sppb-shape-container sppb-bottom-shape ' . $bottom_shape_class . '">'; $shape_content .= $bottom_shape_code; $shape_content .= '</div>'; } $html = ''; $stretchSectionStyle = "max-width: 100vw;margin-right: calc(50% - 50vw);margin-left: calc(50% - 50vw);"; if (!$fluid_row) { $html .= '<section id="' . $row_id . '" class="sppb-section' . $custom_class . '' . $sec_cont_center . '" ' . $addon_attr . $parallax_params; if($stretch_section) { $html .= ' style="' . $stretchSectionStyle . '"'; } $html .= '>'; if ($mp4_url || $ogv_url) { $html .= '<div class="sppb-section-background-video">'; $html .= '<video class="section-bg-video" autoplay muted playsinline ' . $video_loop . '' . $video_params . '' . ($lazyload ? ' data-poster="' . $video_poster . '"' : ' poster="' . $video_poster . '"') . '>'; if ($mp4_url) { $html .= '<source ' . ($lazyload ? 'data-large="' . $mp4_url . '"' : 'src="' . $mp4_url . '"') . ' type="video/mp4">'; } if ($ogv_url) { $html .= '<source ' . ($lazyload ? 'data-large="' . $ogv_url . '"' : 'src="' . $ogv_url . '"') . ' type="video/ogg">'; } $html .= '</video>'; $html .= '</div>'; } // When there was no gradient or pattern overlay after adding those option need Backward Compatiblity for pervious color overlay if (isset($options->overlay) && $options->overlay) { $options->overlay_type = 'overlay_color'; } if ($shape_content) { $html .= $shape_content; } if ($video_content) { $html .= $video_content; } if (isset($options->overlay_type) && $options->overlay_type !== 'overlay_none') { $html .= '<div class="sppb-row-overlay"></div>'; } $html .= '<div class="sppb-row-container">'; } else { $html .= '<div id="' . $row_id . '" class="sppb-section' . $custom_class . '' . $sec_cont_center . '" ' . $addon_attr . $parallax_params; if($stretch_section) { $html .= ' style="' . $stretchSectionStyle . '"'; } $html .= '>'; if ($mp4_url || $ogv_url) { $html .= '<div class="sppb-section-background-video">'; $html .= '<video class="section-bg-video" autoplay muted playsinline ' . $video_loop . '' . $video_params . '' . ($lazyload ? ' data-poster="' . $video_poster . '"' : ' poster="' . $video_poster . '"') . '>'; if ($mp4_url) { $html .= '<source ' . ($lazyload ? 'data-large="' . $mp4_url . '"' : 'src="' . $mp4_url . '"') . ' type="video/mp4">'; } if ($ogv_url) { $html .= '<source ' . ($lazyload ? 'data-large="' . $ogv_url . '"' : 'src="' . $ogv_url . '"') . ' type="video/ogg">'; } $html .= '</video>'; $html .= '</div>'; } // When there was no gradient or pattern overlay after adding those option need Backward Compatiblity for pervious color overlay if (isset($options->overlay) && $options->overlay) { $options->overlay_type = 'overlay_color'; } if ($shape_content) { $html .= $shape_content; } if ($video_content) { $html .= $video_content; } if (isset($options->overlay_type) && $options->overlay_type !== 'overlay_none') { $html .= '<div class="sppb-row-overlay"></div>'; } $html .= '<div class="sppb-container-inner">'; } // Row Title if ((isset($options->title) && $options->title) || (isset($options->subtitle) && $options->subtitle)) { $title_position = ''; if (isset($options->title_position) && $options->title_position) { $title_position = $options->title_position; } if ($fluid_row) { $html .= '<div class="sppb-container">'; } $html .= '<div class="sppb-section-title ' . $title_position . '">'; if (isset($options->title) && $options->title) { $heading_selector = 'h2'; if (isset($options->heading_selector) && $options->heading_selector) { $heading_selector = $options->heading_selector; } $html .= '<' . $heading_selector . ' class="sppb-title-heading">' . $options->title . '</' . $heading_selector . '>'; } if (isset($options->subtitle) && $options->subtitle) { $html .= '<p class="sppb-title-subheading">' . $options->subtitle . '</p>'; } $html .= '</div>'; if ($fluid_row) { $html .= '</div>'; } } $html .= '<div class="sppb-row' . $row_class . '">'; echo $html; PK R�\�Sʉ� � .htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK R�\!�¡u u css.phpnu �[��� PK R�\8�5�. . �u end.phpnu �[��� PK R�\M3Ҟ�G �G x start.phpnu �[��� PK R�\�Sʉ� � � .htaccessnu �7��m PK �
| ver. 1.4 |
Github
|
.
| PHP 8.2.32 | Generation time: 0.06 |
proxy
|
phpinfo
|
Settings