1411 lines
53 KiB
PHP
1411 lines
53 KiB
PHP
<?php
|
||
class S
|
||
{
|
||
static public function get_text_between_tag( $tagname, $string )
|
||
{
|
||
$pattern = "/<$tagname ?.*>(.*)<\/$tagname>/";
|
||
preg_match($pattern, $string, $matches);
|
||
return $matches[1];
|
||
}
|
||
|
||
static public function generate_webp_image($file, $compression_quality = 85)
|
||
{
|
||
if (!file_exists($file))
|
||
return false;
|
||
|
||
$output_file = 'cache/' . $file . '.webp';
|
||
if (file_exists($output_file))
|
||
return $output_file;
|
||
|
||
$file_type = strtolower(pathinfo($file, PATHINFO_EXTENSION));
|
||
|
||
if (function_exists('imagewebp'))
|
||
{
|
||
switch ($file_type)
|
||
{
|
||
case 'jpeg':
|
||
case 'jpg':
|
||
$image = imagecreatefromjpeg($file);
|
||
break;
|
||
|
||
case 'png':
|
||
$image = imagecreatefrompng($file);
|
||
imagepalettetotruecolor($image);
|
||
imagealphablending($image, true);
|
||
imagesavealpha($image, true);
|
||
break;
|
||
|
||
case 'gif':
|
||
$image = imagecreatefromgif($file);
|
||
break;
|
||
|
||
default:
|
||
return false;
|
||
}
|
||
|
||
$dir = dirname($output_file);
|
||
if (!is_dir($dir))
|
||
mkdir($dir, 0755, true);
|
||
|
||
$result = imagewebp($image, $output_file, $compression_quality);
|
||
if (false === $result)
|
||
return false;
|
||
|
||
imagedestroy($image);
|
||
|
||
return $output_file;
|
||
}
|
||
elseif (class_exists('Imagick'))
|
||
{
|
||
$dir = dirname($output_file);
|
||
if (!is_dir($dir))
|
||
mkdir($dir, 0755, true);
|
||
|
||
$image = new \Imagick();
|
||
$image->readImage($file);
|
||
|
||
if ($file_type === 'png')
|
||
{
|
||
$image->setImageFormat('webp');
|
||
$image->setImageCompressionQuality($compression_quality);
|
||
$image->setOption('webp:lossless', 'true');
|
||
}
|
||
|
||
$image->writeImage($output_file);
|
||
return $output_file;
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
static public function is_array_fix($value)
|
||
{
|
||
if (is_array($value) and count($value))
|
||
return true;
|
||
return false;
|
||
}
|
||
|
||
public static function suAppendHtmlById(&$s, $sId, $sHtml, &$oDoc = null)
|
||
{
|
||
return \S::suSetHtmlElementById($oDoc, $s, $sId, $sHtml, true, false);
|
||
}
|
||
|
||
public static function suInsertHtmlById(&$s, $sId, $sHtml, &$oDoc = null)
|
||
{
|
||
return \S::suSetHtmlElementById($oDoc, $s, $sId, $sHtml, false, true);
|
||
}
|
||
|
||
public static function suAddHtmlBeforeById(&$s, $sId, $sHtml, &$oDoc = null)
|
||
{
|
||
return \S::suSetHtmlElementById($oDoc, $s, $sId, $sHtml, false, true, true);
|
||
}
|
||
|
||
public static function suAddHtmlAfterById(&$s, $sId, $sHtml, &$oDoc = null)
|
||
{
|
||
return \S::suSetHtmlElementById($oDoc, $s, $sId, $sHtml, true, false, true);
|
||
}
|
||
|
||
public static function suSetHtmlById(&$s, $sId, $sHtml, &$oDoc = null)
|
||
{
|
||
return \S::suSetHtmlElementById($oDoc, $s, $sId, $sHtml, true, true);
|
||
}
|
||
|
||
public static function suReplaceHtmlElementById(&$s, $sId, $sHtml, &$oDoc = null)
|
||
{
|
||
return \S::suSetHtmlElementById($oDoc, $s, $sId, $sHtml, false, false);
|
||
}
|
||
|
||
public static function suRemoveHtmlElementById(&$s, $sId, &$oDoc = null)
|
||
{
|
||
return \S::suSetHtmlElementById($oDoc, $s, $sId, null, false, false);
|
||
}
|
||
|
||
public static function suSetHtmlElementById(&$oDoc, &$s, $sId, $sHtml, $bAppend = false, $bInsert = false, $bAddToOuter = false)
|
||
{
|
||
if (\S::suIsValidString($s) && \S::suIsValidString($sId))
|
||
{
|
||
$bCreate = true;
|
||
if (is_object($oDoc))
|
||
{
|
||
if (!($oDoc instanceof DOMDocument))
|
||
{
|
||
return false;
|
||
}
|
||
$bCreate = false;
|
||
}
|
||
|
||
if ($bCreate)
|
||
{
|
||
$oDoc = new DOMDocument();
|
||
}
|
||
|
||
libxml_use_internal_errors(true);
|
||
$oDoc->loadHTML($s, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
|
||
libxml_use_internal_errors(false);
|
||
$oNode = $oDoc->getElementById($sId);
|
||
|
||
if (is_object($oNode))
|
||
{
|
||
$bReplaceOuter = (!$bAppend && !$bInsert);
|
||
|
||
$sId = uniqid('SHEBI-');
|
||
$aId = array("<!-- $sId -->", "<!--$sId-->");
|
||
|
||
if ($bReplaceOuter)
|
||
{
|
||
if (\S::suIsValidString($sHtml))
|
||
{
|
||
$oNode->parentNode->replaceChild($oDoc->createComment($sId), $oNode);
|
||
$s = $oDoc->saveHtml();
|
||
$s = str_replace($aId, $sHtml, $oDoc->saveHtml());
|
||
}
|
||
else
|
||
{
|
||
$oNode->parentNode->removeChild($oNode);
|
||
$s = $oDoc->saveHtml();
|
||
}
|
||
return true;
|
||
}
|
||
|
||
$bReplaceInner = ($bAppend && $bInsert);
|
||
$sThis = null;
|
||
|
||
if (!$bReplaceInner)
|
||
{
|
||
$sThis = $oDoc->saveHTML($oNode);
|
||
$sThis = ($bInsert ? $sHtml : '') . ($bAddToOuter ? $sThis : (substr($sThis, strpos($sThis, '>') + 1, - (strlen($oNode->nodeName) + 3)))) . ($bAppend ? $sHtml : '');
|
||
}
|
||
|
||
if (!$bReplaceInner && $bAddToOuter)
|
||
{
|
||
$oNode->parentNode->replaceChild($oDoc->createComment($sId), $oNode);
|
||
$sId = &$aId;
|
||
}
|
||
else
|
||
{
|
||
$oNode->nodeValue = $sId;
|
||
}
|
||
|
||
$s = str_replace($sId, $bReplaceInner ? $sHtml : $sThis, $oDoc->saveHtml());
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
|
||
public static function suIsValidString(&$s, &$iLen = null, $minLen = null, $maxLen = null)
|
||
{
|
||
if (!is_string($s) || !isset($s{
|
||
0}))
|
||
{
|
||
return false;
|
||
}
|
||
|
||
if ($iLen !== null)
|
||
{
|
||
$iLen = strlen($s);
|
||
}
|
||
|
||
return (($minLen === null ? true : ($minLen > 0 && isset($s{
|
||
$minLen - 1}))) &&
|
||
$maxLen === null ? true : ($maxLen >= $minLen && !isset($s{
|
||
$maxLen})));
|
||
}
|
||
|
||
public static function log_db_error($db_tmp, $debug)
|
||
{
|
||
global $settings;
|
||
|
||
if ($settings['mysql_debug'])
|
||
{
|
||
$out .= date('Y-m-d H:i:s') . PHP_EOL;
|
||
$out .= $db_tmp->error()[2] . PHP_EOL;
|
||
$out .= $db_tmp->last() . PHP_EOL;
|
||
$out .= $debug[0]['file'] . ' | ' . $debug[0]['line'] . PHP_EOL;
|
||
$out .= '--------------------------------------------------------------------------------------------' . PHP_EOL;
|
||
|
||
if (!is_dir('logs'))
|
||
mkdir('logs', 0755, true);
|
||
|
||
$content = file_get_contents('logs/' . date('Y-m-d') . '.txt');
|
||
$content = $out . $content;
|
||
file_put_contents('logs/' . date('Y-m-d') . '.txt', $content);
|
||
die('Blad bazy danych.');
|
||
}
|
||
}
|
||
|
||
public static function lang($text)
|
||
{
|
||
global $lang;
|
||
return $lang[$text] ? $lang[$text] : 'LANG-' . $text;
|
||
}
|
||
|
||
public static function cache_read($path)
|
||
{
|
||
$f = fopen($path, 'r');
|
||
$buffer = '';
|
||
while (!feof($f))
|
||
{
|
||
$buffer .= fread($f, 2048);
|
||
}
|
||
fclose($f);
|
||
return $buffer;
|
||
}
|
||
|
||
public static function cache_write($cache_url, $cache_file, $html)
|
||
{
|
||
$dir = md5($cache_url);
|
||
$dir = 'cache/' . $dir[0] . '/' . $dir[1] . '/';
|
||
|
||
if (!is_dir($dir))
|
||
mkdir($dir, 0755, true);
|
||
|
||
$f = fopen($cache_file, 'w');
|
||
fwrite($f, $html, strlen($html));
|
||
fclose($f);
|
||
return true;
|
||
}
|
||
|
||
public static function cache_file_url($cache_url)
|
||
{
|
||
$cache = md5($cache_url);
|
||
return 'cache/' . $cache{
|
||
1} . '/' . $cache{
|
||
2} . '/' . $cache;
|
||
}
|
||
|
||
public static function date_diff($data1, $data2, $rodz = '60')
|
||
{
|
||
$data1 = date('Y-m-d H:i:s', strtotime($data1));
|
||
$data2 = date('Y-m-d H:i:s', strtotime($data2));
|
||
|
||
$d1_t = explode(' ', $data1);
|
||
$d1_tt = explode('-', $d1_t[0]);
|
||
$rok1 = $d1_tt[0];
|
||
$mc1 = $d1_tt[1];
|
||
$d1 = $d1_tt[2];
|
||
$d1_tt = explode(':', $d1_t[1]);
|
||
$g1 = $d1_tt[0];
|
||
$m1 = $d1_tt[1];
|
||
$s1 = $d1_tt[2];
|
||
|
||
$d2_t = explode(' ', $data2);
|
||
$d2_tt = explode('-', $d2_t[0]);
|
||
$rok2 = $d2_tt[0];
|
||
$mc2 = $d2_tt[1];
|
||
$d2 = $d2_tt[2];
|
||
$d2_tt = explode(':', $d2_t[1]);
|
||
$g2 = $d2_tt[0];
|
||
$m2 = $d2_tt[1];
|
||
$s2 = $d2_tt[2];
|
||
|
||
$lt = mktime($g2, $m2, $s2, $mc2, $d2, $rok2);
|
||
$st = mktime($g1, $m1, $s1, $mc1, $d1, $rok1);
|
||
|
||
return round(($lt - $st) / $rodz);
|
||
}
|
||
|
||
public static function is_token_valid($token)
|
||
{
|
||
if (!empty($_SESSION['tokens'][$token]))
|
||
{
|
||
unset($_SESSION['tokens'][$token]);
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
public static function get_token()
|
||
{
|
||
$token = sha1(mt_rand());
|
||
if (!isset($_SESSION['tokens']))
|
||
$_SESSION['tokens'] = [$token => 1];
|
||
else
|
||
$_SESSION['tokens'][$token] = 1;
|
||
return $token;
|
||
}
|
||
|
||
public static function get_domain($url)
|
||
{
|
||
$parseUrl = parse_url(trim($url));
|
||
return trim($parseUrl[host] ? str_replace('www.', '', $parseUrl[host]) : str_replace('www.', '', array_shift(explode('/', $parseUrl[path], 2))));
|
||
}
|
||
|
||
public static function get_domain_url($url)
|
||
{
|
||
global $settings;
|
||
|
||
$settings['link_version'] ? $www = 'www.' : $www = '';
|
||
$settings['ssl'] == true ? $domain_prefix = 'https' : $domain_prefix = 'http';
|
||
return $domain_prefix . '://' . $www . \S::get_domain($url);
|
||
}
|
||
|
||
public static function max_db_value($table, $column)
|
||
{
|
||
global $mdb;
|
||
$results = $mdb->query('SELECT MAX(' . $column . ') FROM ' . $table)->fetchAll();
|
||
return $results[0][0];
|
||
}
|
||
|
||
public static function shuffle_assoc($list)
|
||
{
|
||
if (!is_array($list))
|
||
return $list;
|
||
|
||
$keys = array_keys($list);
|
||
shuffle($keys);
|
||
$random = array();
|
||
foreach ($keys as $key)
|
||
$random[$key] = $list[$key];
|
||
return $random;
|
||
}
|
||
|
||
public static function escape($value)
|
||
{
|
||
$return = '';
|
||
for ($i = 0; $i < strlen($value); ++$i)
|
||
{
|
||
$char = $value[$i];
|
||
$ord = ord($char);
|
||
if ($char !== "'" && $char !== "\"" && $char !== '\\' && $ord >= 32 && $ord <= 126)
|
||
$return .= $char;
|
||
else
|
||
$return .= '\\x' . dechex($ord);
|
||
}
|
||
return $return;
|
||
}
|
||
|
||
public static function is_bot()
|
||
{
|
||
$bots = ["Slurp", "Scooter", "URL_Spider_SQL", "Googlebot", "Firefly", "WebBug", "WebFindBot", "crawler", "appie", "msnbot", "InfoSeek", "FAST", "Spade", "NationalDirectory"];
|
||
$agent = strtolower($_SERVER['HTTP_USER_AGENT']);
|
||
foreach ($bots as $bot)
|
||
if (stripos($agent, $bot) !== false)
|
||
return true;
|
||
return false;
|
||
}
|
||
|
||
public static function months()
|
||
{
|
||
return array(1 => 'Styczeń', 2 => 'Luty', 3 => 'Marzec', 4 => 'Kwiecień', 5 => 'Maj', 6 => 'Czerwiec', 7 => 'Lipiec', 8 => 'Sierpień', 9 => 'Wrzesień', 10 => 'Październik', 11 => 'Listopad', 12 => 'Grudzień');
|
||
}
|
||
|
||
public static function months_short()
|
||
{
|
||
return [1 => 'sty', 2 => 'lut', 3 => 'mar', 4 => 'kwi', 5 => 'maj', 6 => 'cze', 7 => 'lip', 8 => 'sie', 9 => 'wrz', 10 => 'paź', 11 => 'lis', 12 => 'gru'];
|
||
}
|
||
|
||
public static function chmod_r($path, $chmod = 0755)
|
||
{
|
||
$dir = new DirectoryIterator($path);
|
||
foreach ($dir as $item)
|
||
{
|
||
chmod($item->getPathname(), $chmod);
|
||
if ($item->isDir() && !$item->isDot())
|
||
self::chmod_r($item->getPathname());
|
||
}
|
||
}
|
||
|
||
public static function rrmdir($dir)
|
||
{
|
||
if (is_dir($dir))
|
||
{
|
||
$files = scandir($dir);
|
||
foreach ($files as $file)
|
||
if ($file != "." && $file != "..")
|
||
\S::rrmdir("$dir/$file");
|
||
rmdir($dir);
|
||
}
|
||
else if (file_exists($dir))
|
||
unlink($dir);
|
||
}
|
||
|
||
public static function rcopy($src, $dst)
|
||
{
|
||
if (is_dir($src))
|
||
{
|
||
mkdir($dst, 0755);
|
||
$files = scandir($src);
|
||
foreach ($files as $file)
|
||
if ($file != "." && $file != "..")
|
||
\S::rcopy("$src/$file", "$dst/$file");
|
||
}
|
||
else if (file_exists($src))
|
||
copy($src, $dst);
|
||
|
||
\S::rrmdir($src);
|
||
}
|
||
|
||
public static function is_mobile()
|
||
{
|
||
$detect = new \Mobile_Detect;
|
||
return $detect->isMobile();
|
||
}
|
||
|
||
public static function get_new_version()
|
||
{
|
||
global $settings;
|
||
|
||
if ($version = \S::get_session('new-version'))
|
||
return $version;
|
||
|
||
$versions = file_get_contents('http://www.cmspro.project-dc.pl/updates/versions.php?key=' . $settings['update_key']);
|
||
$versions = explode(PHP_EOL, $versions);
|
||
$version = str_replace(',', '.', max($versions));
|
||
|
||
\S::set_session('new-version', $version);
|
||
|
||
return $version;
|
||
}
|
||
|
||
public static function get_version()
|
||
{
|
||
return str_replace(',', '.', @file_get_contents('../libraries/version.ini'));
|
||
}
|
||
|
||
public static function pre($data, $type = '')
|
||
{
|
||
$data = str_replace('Array
|
||
(', '', $data);
|
||
$data = str_replace(')', '', $data);
|
||
|
||
echo '<pre';
|
||
if ($type == 'error')
|
||
echo ' style="color: #cc0000;" ';
|
||
else if ($type == 'info')
|
||
echo ' style="color: #2c539e;" ';
|
||
else
|
||
echo ' style="color: #8fc400;" ';
|
||
echo '>' . print_r($data, true) . '</pre>';
|
||
}
|
||
|
||
public static function json_to_array($json)
|
||
{
|
||
$values_tmp = json_decode($json, true);
|
||
|
||
if (is_array($values_tmp))
|
||
foreach ($values_tmp as $val)
|
||
{
|
||
if (isset($values[$val['name']]))
|
||
{
|
||
if (is_array($values[$val['name']]))
|
||
$values[$val['name']][] = $val['value'];
|
||
else
|
||
$values[$val['name']] = array($values[$val['name']], $val['value']);
|
||
}
|
||
else
|
||
$values[$val['name']] = $val['value'];
|
||
}
|
||
return $values;
|
||
}
|
||
|
||
public static function set_session($var, $val)
|
||
{
|
||
$_SESSION[$var] = $val;
|
||
}
|
||
|
||
public static function get_session($var)
|
||
{
|
||
return $_SESSION[$var];
|
||
}
|
||
|
||
public static function delete_session($var)
|
||
{
|
||
unset($_SESSION[$var]);
|
||
}
|
||
|
||
public static function get($var, $strip_tags = false)
|
||
{
|
||
if (isset($_POST[$var]))
|
||
{
|
||
if (is_string($_POST[$var]))
|
||
{
|
||
if ($strip_tags)
|
||
return trim(strip_tags($_POST[$var]));
|
||
else
|
||
return trim($_POST[$var]);
|
||
}
|
||
else
|
||
return $_POST[$var];
|
||
}
|
||
else
|
||
{
|
||
if (isset($_GET[$var]))
|
||
{
|
||
if (is_string($_GET[$var]))
|
||
{
|
||
if ($strip_tags)
|
||
return trim(strip_tags($_GET[$var]));
|
||
else
|
||
return trim($_GET[$var]);
|
||
}
|
||
else
|
||
return $_GET[$var];
|
||
}
|
||
}
|
||
}
|
||
|
||
public static function set_message($text)
|
||
{
|
||
self::set_session('message', $text);
|
||
}
|
||
|
||
public static function alert($text, $class = 'alert-success')
|
||
{
|
||
self::set_session('alert', $text);
|
||
self::set_session('alert-class', $class);
|
||
}
|
||
|
||
static public function get_language_domain($lang_id)
|
||
{
|
||
global $mdb;
|
||
|
||
$settings = \front\factory\Settings::settings_details();
|
||
$default_domain = \admin\factory\Languages::default_domain();
|
||
$settings['link_version'] ? $www = 'www.' : $www = '';
|
||
|
||
$domain = $mdb->get('pp_langs', 'domain', ['id' => $lang_id]);
|
||
if (!$domain)
|
||
{
|
||
if ($default_domain)
|
||
return $www . $default_domain;
|
||
else
|
||
return $www . preg_replace('#^(http(s)?://)?w{3}\.#', '$1', $_SERVER['SERVER_NAME']);
|
||
}
|
||
else
|
||
{
|
||
return $www . $domain;
|
||
}
|
||
}
|
||
|
||
public static function htacces($dir = '../')
|
||
{
|
||
global $mdb;
|
||
|
||
$settings = \front\factory\Settings::settings_details();
|
||
$default_domain = \admin\factory\Languages::default_domain();
|
||
$available_domains = \admin\factory\Languages::available_domains();
|
||
|
||
$settings['link_version'] ? $www = 'www.' : $www = '';
|
||
|
||
$settings['ssl'] == true ? $domain_prefix = 'https' : $domain_prefix = 'http';
|
||
|
||
$default_domain ? $url = $default_domain : $url = preg_replace('#^(http(s)?://)?w{3}\.#', '$1', $_SERVER['SERVER_NAME']);
|
||
|
||
$robots = 'User-agent: *' . PHP_EOL;
|
||
$robots .= 'Allow: /' . PHP_EOL;
|
||
$robots .= 'Sitemap: https://zaufane.pl/sitemap.xml' . PHP_EOL;
|
||
|
||
unlink('../sitemap.xml');
|
||
if (is_array($available_domains) and !empty($available_domains))
|
||
{
|
||
foreach ($available_domains as $domain)
|
||
{
|
||
$site_map[$domain['domain']] = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
|
||
$site_map[$domain['domain']] .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . PHP_EOL;
|
||
$site_map[$domain['domain']] .= '<url>' . PHP_EOL;
|
||
$site_map[$domain['domain']] .= '<loc>' . $domain_prefix . '://' . $www . $domain['domain'] . '</loc>' . PHP_EOL;
|
||
$site_map[$domain['domain']] .= '<lastmod>' . date('Y-m-d') . '</lastmod>' . PHP_EOL;
|
||
$site_map[$domain['domain']] .= '<changefreq>daily</changefreq>' . PHP_EOL;
|
||
$site_map[$domain['domain']] .= '<priority>1</priority>' . PHP_EOL;
|
||
$site_map[$domain['domain']] .= '</url>' . PHP_EOL;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
$site_map[$url] = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
|
||
$site_map[$url] .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . PHP_EOL;
|
||
$site_map[$url] .= '<url>' . PHP_EOL;
|
||
$site_map[$url] .= '<loc>' . $domain_prefix . '://' . $www . $url . '</loc>' . PHP_EOL;
|
||
$site_map[$url] .= '<lastmod>' . date('Y-m-d') . '</lastmod>' . PHP_EOL;
|
||
$site_map[$url] .= '<changefreq>daily</changefreq>' . PHP_EOL;
|
||
$site_map[$url] .= '<priority>1</priority>' . PHP_EOL;
|
||
$site_map[$url] .= '</url>' . PHP_EOL;
|
||
}
|
||
|
||
$htaccess_data = file_get_contents($dir . 'libraries/htaccess.conf');
|
||
|
||
/* cache */
|
||
if ($settings['htaccess_cache'])
|
||
{
|
||
$htaccess_data = str_replace(
|
||
'{HTACCESS_CACHE}',
|
||
'<IfModule mod_deflate.c>' . PHP_EOL
|
||
. 'AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript' . PHP_EOL
|
||
. '</IfModule>' . PHP_EOL
|
||
. '<IfModule mod_expires.c>' . PHP_EOL
|
||
. 'ExpiresActive on' . PHP_EOL
|
||
. 'ExpiresDefault "access plus 1 year"' . PHP_EOL
|
||
. 'ExpiresByType text/css "access plus 1 year"' . PHP_EOL
|
||
. 'ExpiresByType application/json "access plus 0 seconds"' . PHP_EOL
|
||
. 'ExpiresByType application/xml "access plus 0 seconds"' . PHP_EOL
|
||
. 'ExpiresByType text/xml "access plus 0 seconds"' . PHP_EOL
|
||
. 'ExpiresByType image/x-icon "access plus 1 week"' . PHP_EOL
|
||
. 'ExpiresByType text/x-component "access plus 1 year"' . PHP_EOL
|
||
. 'ExpiresByType text/html "access plus 0 seconds"' . PHP_EOL
|
||
. 'ExpiresByType application/javascript "access plus 1 year"' . PHP_EOL
|
||
. 'ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"' . PHP_EOL
|
||
. 'ExpiresByType text/cache-manifest "access plus 0 seconds"' . PHP_EOL
|
||
. 'ExpiresByType audio/ogg "access plus 1 year"' . PHP_EOL
|
||
. 'ExpiresByType image/gif "access plus 1 year"' . PHP_EOL
|
||
. 'ExpiresByType image/jpeg "access plus 1 year"' . PHP_EOL
|
||
. 'ExpiresByType image/webp "access plus 1 year"' . PHP_EOL
|
||
. 'ExpiresByType image/png "access plus 1 year"' . PHP_EOL
|
||
. 'ExpiresByType video/mp4 "access plus 1 year"' . PHP_EOL
|
||
. 'ExpiresByType video/ogg "access plus 1 year"' . PHP_EOL
|
||
. 'ExpiresByType video/webm "access plus 1 year"' . PHP_EOL
|
||
. 'ExpiresByType application/atom+xml "access plus 1 hour"' . PHP_EOL
|
||
. 'ExpiresByType application/rss+xml "access plus 1 hour"' . PHP_EOL
|
||
. 'ExpiresByType application/font-woff "access plus 1 year"' . PHP_EOL
|
||
. 'ExpiresByType application/vnd.ms-fontobject "access plus 1 year"' . PHP_EOL
|
||
. 'ExpiresByType application/x-font-ttf "access plus 1 year"' . PHP_EOL
|
||
. 'ExpiresByType font/opentype "access plus 1 year"' . PHP_EOL
|
||
. 'ExpiresByType image/svg+xml "access plus 1 year"' . PHP_EOL
|
||
. '</IfModule>',
|
||
$htaccess_data
|
||
);
|
||
}
|
||
else
|
||
{
|
||
$htaccess_data = str_replace(
|
||
'{HTACCESS_CACHE}',
|
||
'<IfModule mod_headers.c>' . PHP_EOL
|
||
. 'Header set Cache-Control "no-cache, no-store, must-revalidate"' . PHP_EOL
|
||
. 'Header set Pragma "no-cache"' . PHP_EOL
|
||
. 'Header set Expires 0' . PHP_EOL
|
||
. '</IfModule>',
|
||
$htaccess_data
|
||
);
|
||
}
|
||
|
||
/* języki w domenie głównej */
|
||
$results = $mdb->select('pp_langs', ['id'], ['AND' => ['status' => 1, 'domain' => null], 'ORDER' => ['o' => 'ASC']]);
|
||
if (is_array($results)) foreach ($results as $row)
|
||
{
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $row['id'] . '/$ index.php?a=change_language&id=' . $row['id'] . ' [L]';
|
||
}
|
||
|
||
$htaccess_data .= PHP_EOL;
|
||
|
||
$results = $mdb->select('pp_langs', ['id', 'start', 'domain', 'main_domain'], ['status' => 1, 'ORDER' => ['o' => 'ASC']]);
|
||
if (is_array($results)) foreach ($results as $row)
|
||
{
|
||
$row['domain'] ? $url_tmp = $row['domain'] : $url_tmp = $url;
|
||
|
||
!$row['start'] ? $language_link = $row['id'] . '/' : $language_link = '';
|
||
|
||
$results2 = $mdb->select(
|
||
'pp_pages_langs',
|
||
['[><]pp_pages' => ['page_id' => 'id']],
|
||
['seo_link', 'title', 'page_id', 'noindex', 'start', 'page_type'],
|
||
['AND' => ['status' => 1, 'lang_id' => $row['id'], 'block_direct_access' => 0], 'ORDER' => ['start' => 'DESC', 'o' => 'ASC']]
|
||
);
|
||
if (is_array($results2)) foreach ($results2 as $row2)
|
||
{
|
||
if ($row2['title'])
|
||
{
|
||
/* sitemap.xml */
|
||
if ($row2['page_type'] != 3 and !$row2['noindex'])
|
||
{
|
||
$site_map[$url_tmp] .= '<url>' . PHP_EOL;
|
||
|
||
if ($row2['seo_link'])
|
||
{
|
||
if ($settings['links_structure'])
|
||
$seo = \admin\factory\Pages::google_url_preview($row2['page_id'], $row2['title'], $row[id], 0, 0, $row2['seo_link'], $language_link);
|
||
else
|
||
$seo = $language_link . \S::seo($row2['seo_link']);
|
||
|
||
$site_map[$url_tmp] .= '<loc>' . $domain_prefix . '://' . $www . $url_tmp . '/' . $seo . '</loc>' . PHP_EOL;
|
||
}
|
||
else
|
||
{
|
||
if ($settings['links_structure'])
|
||
$seo = \admin\factory\Pages::google_url_preview($row2['page_id'], $row2['title'], $row['id'], 0, 0, $row2['seo_link'], $language_link);
|
||
else
|
||
$seo = $language_link . 's-' . $row2['page_id'] . '-' . \S::seo($row2['title']);
|
||
|
||
$site_map[$url_tmp] .= '<loc>' . $domain_prefix . '://' . $www . $url_tmp . '/' . $seo . '</loc>' . PHP_EOL;
|
||
}
|
||
|
||
$site_map[$url_tmp] .= '<lastmod>' . date('Y-m-d') . '</lastmod>' . PHP_EOL;
|
||
$site_map[$url_tmp] .= '<changefreq>daily</changefreq>' . PHP_EOL;
|
||
|
||
$row['start'] ? $priority = 1 : $priority = 0.8;
|
||
|
||
$site_map[$url_tmp] .= '<priority>' . $priority . '</priority>' . PHP_EOL;
|
||
$site_map[$url_tmp] .= '</url>' . PHP_EOL;
|
||
}
|
||
|
||
/* robotx.txt */
|
||
if ($row2['noindex'] and $row2['page_type'] != 3)
|
||
{
|
||
$robots .= 'User-agent: GoogleBot' . PHP_EOL;
|
||
|
||
if ($row2['seo_link'])
|
||
{
|
||
if ($settings['links_structure'])
|
||
$seo = \admin\factory\Pages::google_url_preview($row2['page_id'], $row2['title'], $row[id], 0, 0, $row2['seo_link'], $language_link);
|
||
else
|
||
$seo = $language_link . \S::seo($row2['seo_link']);
|
||
|
||
$robots .= 'Disallow: /' . $seo . '$' . PHP_EOL;
|
||
$robots .= 'Disallow: /' . $seo . '-s-*' . PHP_EOL;
|
||
}
|
||
else
|
||
{
|
||
if ($settings['links_structure'])
|
||
$seo = \admin\factory\Pages::google_url_preview($row2['page_id'], $row2['title'], $row['id'], 0, 0, $row2['seo_link'], $language_link);
|
||
else
|
||
$seo = $language_link . 's-' . $row2['page_id'] . '-' . \S::seo($row2['title']);
|
||
|
||
$robots .= 'Disallow: /' . $seo . '$' . PHP_EOL;
|
||
$robots .= 'Disallow: /' . $seo . '-s-*$' . PHP_EOL;
|
||
}
|
||
}
|
||
|
||
/* htaccess */
|
||
if ($row2['page_type'] != 3)
|
||
{
|
||
if ($row['start'] and $row2['start'])
|
||
{
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $www . $url_tmp . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{QUERY_STRING} ^(.*)(?:^|&)(utm_source|gclid|hash)=[^&]+(&.*)?';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^$ index.php?a=page&id=' . $row2['page_id'] . '&lang=' . $row['id'] . '&%{QUERY_STRING} [L]' . PHP_EOL;
|
||
|
||
if ($row2['seo_link'])
|
||
{
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $www . $url_tmp . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{REQUEST_URI} ^/' . \S::seo($row2['seo_link']) . '$';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^(.*)$ ' . $domain_prefix . '://' . $www . $url_tmp . '/' . $language_link . ' [R=301,L]';
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $www . $url_tmp . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{REQUEST_URI} ^/' . \S::seo($row2['seo_link']) . '-s-1$';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^(.*)$ ' . $domain_prefix . '://' . $www . $url_tmp . '/' . $language_link . ' [R=301,L]';
|
||
}
|
||
else
|
||
{
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $www . $url_tmp . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{REQUEST_URI} ^/s-' . $row2['page_id'] . '-' . \S::seo($row2['title']) . '$';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^(.*)$ ' . $domain_prefix . '://' . $www . $url_tmp . '/' . $language_link . ' [R=301,L]';
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $www . $url_tmp . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{REQUEST_URI} ^/s-' . $row2['page_id'] . '-' . \S::seo($row2['title']) . '-s-1$';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^(.*)$ ' . $domain_prefix . '://' . $www . $url_tmp . '/' . $language_link . ' [R=301,L]';
|
||
}
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $www . $url_tmp . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{REQUEST_URI} "^/$"';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^$ index.php?a=page&id=' . $row2['page_id'] . '&lang=' . $row['id'] . ' [L]';
|
||
|
||
$htaccess_data .= PHP_EOL;
|
||
}
|
||
|
||
if ($row2['seo_link'])
|
||
{
|
||
if ($settings['links_structure'])
|
||
$seo = \admin\factory\Pages::google_url_preview($row2['page_id'], $row2['title'], $row[id], 0, 0, $row2['seo_link'], $language_link);
|
||
else
|
||
$seo = $language_link . \S::seo($row2['seo_link']);
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $www . $url_tmp . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{QUERY_STRING} ^(.*)(?:^|&)(utm_source|gclid)=[^&]+(&.*)?';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $seo . '$ index.php?a=page&id=' . $row2['page_id'] . '&lang=' . $row['id'] . '&%{QUERY_STRING} [L]';
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $www . $url_tmp . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $seo . '-s-1$ ' . $seo . ' [R=301,L]';
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $www . $url_tmp . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{QUERY_STRING} ^(.*)(?:^|&)(utm_source|gclid)=[^&]+(&.*)?';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $seo . '-s-([0-9]+)$ index.php?a=page&id=' . $row2['page_id'] . '&lang=' . $row['id'] . '&bs=$1&%{QUERY_STRING} [L]';
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $www . $url_tmp . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{QUERY_STRING} !=""';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ' . $seo . ' %{REQUEST_URI}? [R=301,L]';
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $www . $url_tmp . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $seo . '$ index.php?a=page&id=' . $row2['page_id'] . '&lang=' . $row['id'] . ' [L]';
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $www . $url_tmp . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $seo . '-s-([0-9]+)$ index.php?a=page&id=' . $row2['page_id'] . '&lang=' . $row['id'] . '&bs=$1 [L]';
|
||
}
|
||
else
|
||
{
|
||
if ($settings['links_structure'])
|
||
$seo = \admin\factory\Pages::google_url_preview($row2['page_id'], $row2['title'], $row['id'], 0, 0, $row2['seo_link'], $language_link);
|
||
else
|
||
$seo = $language_link . 's-' . $row2['page_id'] . '-' . \S::seo($row2['title']);
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $www . $url_tmp . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{QUERY_STRING} ^(.*)(?:^|&)(utm_source|gclid)=[^&]+(&.*)?';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $seo . '$ index.php?a=page&id=' . $row2['page_id'] . '&lang=' . $row['id'] . '&%{QUERY_STRING} [L]';
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $www . $url_tmp . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $seo . '-s-1$ ' . $seo . ' [R=301,L]';
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $www . $url_tmp . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{QUERY_STRING} ^(.*)(?:^|&)(utm_source|gclid)=[^&]+(&.*)?';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $seo . '-s-([0-9]+)$ index.php?a=page&id=' . $row2['page_id'] . '&lang=' . $row['id'] . '&bs=$1&%{QUERY_STRING} [L]';
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $www . $url_tmp . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{QUERY_STRING} !=""';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ' . $seo . ' %{REQUEST_URI}? [R=301,L]';
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $www . $url_tmp . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $seo . '$ index.php?a=page&id=' . $row2['page_id'] . '&lang=' . $row['id'] . ' [L]';
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $www . $url_tmp . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $seo . '-s-([0-9]+)$ index.php?a=page&id=' . $row2['page_id'] . '&lang=' . $row['id'] . '&bs=$1 [L]';
|
||
}
|
||
$htaccess_data .= PHP_EOL;
|
||
}
|
||
}
|
||
}
|
||
|
||
$results2 = $mdb->select(
|
||
'pp_articles_langs',
|
||
['[><]pp_articles' => ['article_id' => 'id']],
|
||
['seo_link', 'title', 'article_id', 'noindex', 'copy_from', 'block_direct_access'],
|
||
['AND' => ['status' => 1, 'lang_id' => $row['id']]]
|
||
);
|
||
if (is_array($results2)) foreach ($results2 as $row2)
|
||
{
|
||
$domain = \S::get_language_domain($row['id']);
|
||
|
||
if ($row2['copy_from'] != null)
|
||
{
|
||
$results_tmp = $mdb->get(
|
||
'pp_articles_langs',
|
||
[
|
||
'seo_link',
|
||
'title'
|
||
],
|
||
[
|
||
'AND' => [
|
||
'article_id' => $row2['article_id'],
|
||
'lang_id' => $row2['copy_from']
|
||
]
|
||
]
|
||
);
|
||
$row2['seo_link'] = $results_tmp['seo_link'];
|
||
$row2['title'] = $results_tmp['title'];
|
||
}
|
||
|
||
/* sitemap */
|
||
if (!$row2['block_direct_access'] and $row2['title'])
|
||
{
|
||
$site_map[$url_tmp] .= '<url>' . PHP_EOL;
|
||
if ($row2['seo_link'])
|
||
$site_map[$url_tmp] .= '<loc>' . $domain_prefix . '://' . $www . $url_tmp . '/' . $language_link . \S::seo($row2['seo_link']) . '</loc>' . PHP_EOL;
|
||
else
|
||
$site_map[$url_tmp] .= '<loc>' . $domain_prefix . '://' . $www . $url_tmp . '/' . $language_link . 'a-' . $row2['article_id'] . '-' . self::seo($row2['title']) . '</loc>' . PHP_EOL;
|
||
$site_map[$url_tmp] .= '<lastmod>' . date('Y-m-d') . '</lastmod>' . PHP_EOL;
|
||
$site_map[$url_tmp] .= '<changefreq>daily</changefreq>' . PHP_EOL;
|
||
$site_map[$url_tmp] .= '<priority>0.6</priority>' . PHP_EOL;
|
||
$site_map[$url_tmp] .= '</url>' . PHP_EOL;
|
||
}
|
||
|
||
/* robots.txt */
|
||
if ($row2['noindex'])
|
||
{
|
||
$robots .= 'User-agent: GoogleBot' . PHP_EOL;
|
||
if ($row2['seo_link'])
|
||
$robots .= 'Disallow: /' . $row2['seo_link'] . '$' . PHP_EOL;
|
||
else
|
||
$robots .= 'Disallow: /a-' . $row2['article_id'] . '-' . self::seo($row2['title']) . '$' . PHP_EOL;
|
||
}
|
||
|
||
if (!$row2['block_direct_access'])
|
||
{
|
||
if ($row2['seo_link'])
|
||
{
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $domain . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{QUERY_STRING} ^(.*)(?:^|&)(utm_source|gclid)=[^&]+(&.*)?';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . \S::seo($row2['seo_link']) . '$ index.php?article=' . $row2['article_id'] . '&lang=' . $row['id'] . '&%{QUERY_STRING} [L]';
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $domain . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{QUERY_STRING} !=""';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . \S::seo($row2['seo_link']) . ' %{REQUEST_URI}? [R=301,L]';
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $domain . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . \S::seo($row2['seo_link']) . '$ index.php?article=' . $row2['article_id'] . '&lang=' . $row['id'] . ' [L]';
|
||
}
|
||
else if ($row2['title'] != null)
|
||
{
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $domain . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{QUERY_STRING} ^(.*)(?:^|&)(utm_source|gclid)=[^&]+(&.*)?';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . 'a-' . $row2['article_id'] . '-' . \S::seo($row2['title']) . '$ index.php?article=' . $row2['article_id'] . '&lang=' . $row['id'] . '&%{QUERY_STRING} [L]';
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $domain . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{QUERY_STRING} !=""';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . 'a-' . $row2['article_id'] . '-' . \S::seo($row2['title']) . ' %{REQUEST_URI}? [R=301,L]';
|
||
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{HTTP_HOST} ^' . $domain . '$ [NC]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . 'a-' . $row2['article_id'] . '-' . \S::seo($row2['title']) . '$ index.php?article=' . $row2['article_id'] . '&lang=' . $row['id'] . ' [L]';
|
||
}
|
||
$htaccess_data .= PHP_EOL;
|
||
}
|
||
}
|
||
|
||
|
||
$site_map[$url_tmp] .= '<url>' . PHP_EOL;
|
||
$site_map[$url_tmp] .= '<loc>' . $domain_prefix . '://' . $www . $url_tmp . '/case-study/</loc>' . PHP_EOL;
|
||
$site_map[$url_tmp] .= '<lastmod>' . date('Y-m-d') . '</lastmod>' . PHP_EOL;
|
||
$site_map[$url_tmp] .= '<changefreq>daily</changefreq>' . PHP_EOL;
|
||
$site_map[$url_tmp] .= '<priority>0.6</priority>' . PHP_EOL;
|
||
$site_map[$url_tmp] .= '</url>' . PHP_EOL;
|
||
|
||
$case_study_ids = $mdb->select('pp_case_study', 'id', [
|
||
'status' => 1
|
||
]);
|
||
if (!empty($case_study_ids)) {
|
||
$case_study_values = $mdb->select('pp_case_study_values', [
|
||
'case_study_id',
|
||
'param',
|
||
'value'
|
||
], [
|
||
'case_study_id' => $case_study_ids
|
||
]);
|
||
$results3 = [];
|
||
foreach ($case_study_values as $value) {
|
||
$case_study_id = $value['case_study_id'];
|
||
$param = $value['param'];
|
||
$param_value = $value['value'];
|
||
if (!isset($results3[$case_study_id])) {
|
||
$results3[$case_study_id] = [];
|
||
}
|
||
$results3[$case_study_id][$param] = $param_value;
|
||
}
|
||
}
|
||
if (is_array($results3)) foreach ($results3 as $row3)
|
||
{
|
||
/* sitemap */
|
||
if ($row3['title']){
|
||
|
||
$site_map[$url_tmp] .= '<url>' . PHP_EOL;
|
||
$site_map[$url_tmp] .= '<loc>' . $domain_prefix . '://' . $www . $url_tmp . '/case-study/' . \S::seo($row3['title'] ) . '</loc>' . PHP_EOL;
|
||
$site_map[$url_tmp] .= '<lastmod>' . date('Y-m-d') . '</lastmod>' . PHP_EOL;
|
||
$site_map[$url_tmp] .= '<changefreq>daily</changefreq>' . PHP_EOL;
|
||
$site_map[$url_tmp] .= '<priority>0.6</priority>' . PHP_EOL;
|
||
$site_map[$url_tmp] .= '</url>' . PHP_EOL;
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
$results = $mdb -> select( 'pp_case_study', 'id' );
|
||
if ( $results ) foreach ( $results as $case_study_id )
|
||
{
|
||
$case_study_title = $mdb -> get( 'pp_case_study_values', 'value', [ 'AND' => [ 'param' => 'title', 'case_study_id' => $case_study_id ] ] );
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^case-study/' . \S::seo( $case_study_title ) . '$ index.php?module=CaseStudy&action=single_case_study&id=' . $case_study_id . '&layout_id=22 [L]';
|
||
}
|
||
|
||
$results = $mdb->query('SELECT '
|
||
. 'name, tag_id '
|
||
. 'FROM '
|
||
. 'pp_tags AS pt '
|
||
. 'INNER JOIN '
|
||
. 'pp_articles_tags AS pat ON pat.tag_id = pt.id '
|
||
. 'GROUP BY '
|
||
. 'tag_id')->fetchAll();
|
||
if (is_array($results) and !empty($results)) foreach ($results as $row)
|
||
{
|
||
$htaccess_data .= PHP_EOL . 'RewriteCond %{QUERY_STRING} !=""';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule tag,' . \S::seo($row['name']) . ' %{REQUEST_URI}? [R=301,L]';
|
||
$htaccess_data .= PHP_EOL . 'RewriteRule ^tag,' . \S::seo($row['name']) . '$ index.php?tag=' . $row['tag_id'] . ' [L]';
|
||
}
|
||
|
||
$results = $mdb->get('pp_settings', 'value', ['param' => 'htaccess']);
|
||
if ($results)
|
||
$htaccess_data .= PHP_EOL . $results;
|
||
|
||
if (file_exists('../libraries/htaccess.ini'))
|
||
$htaccess_data .= PHP_EOL . file_get_contents('../libraries/htaccess.ini');
|
||
|
||
$results = $mdb->get('pp_settings', 'value', ['param' => 'robots']);
|
||
if ($results)
|
||
$robots .= PHP_EOL . $results;
|
||
|
||
if (is_array($available_domains) and !empty($available_domains))
|
||
{
|
||
foreach ($available_domains as $domain)
|
||
$site_map[$domain['domain']] .= '</urlset>';
|
||
}
|
||
else
|
||
$site_map[$url] .= '
|
||
</urlset>';
|
||
|
||
if ($settings['ssl'])
|
||
{
|
||
if ($settings['link_version'])
|
||
{
|
||
$htaccess_data = str_replace(
|
||
'{REDIRECT}',
|
||
'RewriteCond %{HTTP_HOST} !^www\.' . PHP_EOL
|
||
. 'RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=permanent]' . PHP_EOL
|
||
|
||
. 'RewriteCond %{SERVER_PORT} !=443' . PHP_EOL
|
||
. 'RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=permanent]' . PHP_EOL
|
||
|
||
. '## Remove trailing slash' . PHP_EOL
|
||
. 'RewriteCond %{REQUEST_FILENAME} !-d [NC]' . PHP_EOL
|
||
. 'RewriteCond %{REQUEST_URI} !^/admin/(.*) [NC]' . PHP_EOL
|
||
. 'RewriteRule ^(.*)/$ https://%{HTTP_HOST}/$1 [L,R=301]',
|
||
$htaccess_data
|
||
);
|
||
}
|
||
else
|
||
{
|
||
$htaccess_data = str_replace(
|
||
'{REDIRECT}',
|
||
'RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]' . PHP_EOL
|
||
. 'RewriteRule ^(.*)$ https://%1/$1 [R=301,L]' . PHP_EOL
|
||
. 'RewriteCond %{SERVER_PORT} !=443' . PHP_EOL
|
||
. 'RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=permanent]' . PHP_EOL
|
||
|
||
. '## Remove trailing slash' . PHP_EOL
|
||
. 'RewriteCond %{REQUEST_FILENAME} !-d [NC]' . PHP_EOL
|
||
. 'RewriteCond %{REQUEST_URI} !^/admin/(.*) [NC]' . PHP_EOL
|
||
. 'RewriteRule ^(.*)/$ https://%{HTTP_HOST}/$1 [L,R=301]',
|
||
$htaccess_data
|
||
);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if ($settings['link_version'])
|
||
{
|
||
$htaccess_data = str_replace(
|
||
'{REDIRECT}',
|
||
'RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]' . PHP_EOL
|
||
. 'RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=permanent]' . PHP_EOL
|
||
|
||
. 'RewriteCond %{SERVER_PORT} =443' . PHP_EOL
|
||
. 'RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=permanent]' . PHP_EOL
|
||
|
||
. '## Remove trailing slash' . PHP_EOL
|
||
. 'RewriteCond %{REQUEST_FILENAME} !-d [NC]' . PHP_EOL
|
||
. 'RewriteCond %{REQUEST_URI} !^/admin/(.*) [NC]' . PHP_EOL
|
||
. 'RewriteRule ^(.*)/$ http://%{HTTP_HOST}/$1 [L,R=301]',
|
||
$htaccess_data
|
||
);
|
||
}
|
||
else
|
||
{
|
||
$htaccess_data = str_replace(
|
||
'{REDIRECT}',
|
||
'RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]' . PHP_EOL
|
||
. 'RewriteRule ^(.*)$ http://%1/$1 [R=301,L]' . PHP_EOL
|
||
. 'RewriteCond %{SERVER_PORT} =443' . PHP_EOL
|
||
. 'RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=permanent]' . PHP_EOL
|
||
|
||
. '## Remove trailing slash' . PHP_EOL
|
||
. 'RewriteCond %{REQUEST_FILENAME} !-d [NC]' . PHP_EOL
|
||
. 'RewriteCond %{REQUEST_URI} !^/admin/(.*) [NC]' . PHP_EOL
|
||
. 'RewriteRule ^(.*)/$ http://%{HTTP_HOST}/$1 [L,R=301]',
|
||
$htaccess_data
|
||
);
|
||
}
|
||
}
|
||
|
||
$additional_classes = file_get_contents('../libraries/additional-classes.ini');
|
||
$additional_classes = explode(PHP_EOL, $additional_classes);
|
||
$additional_classes = array_filter($additional_classes);
|
||
if (is_array($additional_classes) and !empty($additional_classes))
|
||
{
|
||
foreach ($additional_classes as $class)
|
||
{
|
||
$classes .= 'RewriteCond %{REQUEST_URI} ^/' . trim($class) . '/(.*) [NC]' . PHP_EOL;
|
||
$classes .= 'RewriteRule ^([^/]*)/([^/]*)(|/([^/]*))$ index.php?module=$1&action=$2&$4 [L]' . PHP_EOL;
|
||
}
|
||
}
|
||
$htaccess_data = str_replace('{ADDITIONAL_CLASSES}', $classes, $htaccess_data);
|
||
|
||
/* pozostałe linki */
|
||
$htaccess_data .= PHP_EOL;
|
||
$htaccess_data .= 'RewriteRule ^newsletter/signin$ index.php?module=newsletter&action=signin [L]' . PHP_EOL;
|
||
$htaccess_data .= 'RewriteRule ^newsletter/confirm/hash=(.*)$ index.php?module=newsletter&action=confirm&hash=$1 [L]' . PHP_EOL;
|
||
$htaccess_data .= 'RewriteRule ^newsletter/unsubscribe/hash=(.*)$ index.php?module=newsletter&action=unsubscribe&hash=$1 [L]' . PHP_EOL;
|
||
|
||
/* pixieset */
|
||
$results = $mdb->select('pp_articles', 'id', ['pixieset' => 1]);
|
||
if (is_array($results) and count($results))
|
||
{
|
||
$pixieset = 'RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?' . $url_tmp . ' [NC]' . PHP_EOL;
|
||
$pixieset .= 'RewriteCond %{REQUEST_URI} ^(';
|
||
foreach ($results as $row)
|
||
{
|
||
$pixieset .= '/upload/article_images/article_' . $row . '/';
|
||
if ($row != end($results))
|
||
$pixieset .= '|';
|
||
}
|
||
$pixieset .= ') [NC]' . PHP_EOL . 'RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]' . PHP_EOL;
|
||
|
||
$htaccess_data = str_replace('{PIXIESET]', $pixieset, $htaccess_data);
|
||
}
|
||
else
|
||
{
|
||
$htaccess_data = str_replace('{PIXIESET]', '', $htaccess_data);
|
||
}
|
||
|
||
$fp = fopen($dir . '.htaccess', 'w');
|
||
fwrite($fp, $htaccess_data);
|
||
fclose($fp);
|
||
|
||
$class = '\admin\factory\Sitemap';
|
||
$action = 'sitemap';
|
||
|
||
if (class_exists($class) and method_exists(new $class, $action))
|
||
$site_map = call_user_func_array(array($class, $action), array($site_map, $available_domains, $domain_prefix, $www, $url));
|
||
|
||
if (is_array($available_domains) and !empty($available_domains))
|
||
{
|
||
foreach ($available_domains as $domain)
|
||
{
|
||
$fp = fopen($dir . 'sitemap_' . \S::seo($domain['domain']) . '.xml', 'w');
|
||
fwrite($fp, $site_map[$domain['domain']]);
|
||
fclose($fp);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
$fp = fopen($dir . 'sitemap.xml', 'w');
|
||
fwrite($fp, $site_map[$url]);
|
||
fclose($fp);
|
||
}
|
||
|
||
$fp = fopen($dir . 'robots.txt', 'w');
|
||
fwrite($fp, $robots);
|
||
fclose($fp);
|
||
}
|
||
|
||
public static function seo( $val, $delete_rhombs = false )
|
||
{
|
||
$array_rep1 = array('*', '_', ' ', '+', '"', "'", '?', '-', ',', '!', '~', '<', '>', '@', '#', '$', '%', '^', '&', '*' . '(', ')' . '-', '=', '\\', '|', '[', ']', ':', '(', ')');
|
||
$array_rep2 = array('-', '-', '-', '-', '', '', '', '-', '-', '', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '', '-', '-', '-', '-', '-', '-', '-', '-');
|
||
$val = self::noPl($val);
|
||
$val = str_replace($array_rep1, $array_rep2, $val);
|
||
if ($delete_rhombs)
|
||
$val = str_replace('/', '', $val);
|
||
|
||
$val = strtolower($val);
|
||
$val = preg_replace('/(-){2,}/', '-', $val);
|
||
$val = ltrim($val, '-');
|
||
$val = rtrim($val, '-');
|
||
return $val;
|
||
}
|
||
|
||
public static function noPL($string)
|
||
{
|
||
$chars = array( // Decompositions for Latin-1 Supplement chr(195).chr(128)=> 'A', chr(195).chr(129) => 'A',
|
||
chr(195) . chr(130) => 'A', chr(195) . chr(131) => 'A',
|
||
chr(195) . chr(132) => 'A', chr(195) . chr(133) => 'A',
|
||
chr(195) . chr(135) => 'C', chr(195) . chr(136) => 'E',
|
||
chr(195) . chr(137) => 'E', chr(195) . chr(138) => 'E',
|
||
chr(195) . chr(139) => 'E', chr(195) . chr(140) => 'I',
|
||
chr(195) . chr(141) => 'I', chr(195) . chr(142) => 'I',
|
||
chr(195) . chr(143) => 'I', chr(195) . chr(145) => 'N',
|
||
chr(195) . chr(146) => 'O', chr(195) . chr(147) => 'O',
|
||
chr(195) . chr(148) => 'O', chr(195) . chr(149) => 'O',
|
||
chr(195) . chr(150) => 'O', chr(195) . chr(153) => 'U',
|
||
chr(195) . chr(154) => 'U', chr(195) . chr(155) => 'U',
|
||
chr(195) . chr(156) => 'U', chr(195) . chr(157) => 'Y',
|
||
chr(195) . chr(159) => 's', chr(195) . chr(160) => 'a',
|
||
chr(195) . chr(161) => 'a', chr(195) . chr(162) => 'a',
|
||
chr(195) . chr(163) => 'a', chr(195) . chr(164) => 'a',
|
||
chr(195) . chr(165) => 'a', chr(195) . chr(167) => 'c',
|
||
chr(195) . chr(168) => 'e', chr(195) . chr(169) => 'e',
|
||
chr(195) . chr(170) => 'e', chr(195) . chr(171) => 'e',
|
||
chr(195) . chr(172) => 'i', chr(195) . chr(173) => 'i',
|
||
chr(195) . chr(174) => 'i', chr(195) . chr(175) => 'i',
|
||
chr(195) . chr(177) => 'n', chr(195) . chr(178) => 'o',
|
||
chr(195) . chr(179) => 'o', chr(195) . chr(180) => 'o',
|
||
chr(195) . chr(181) => 'o', chr(195) . chr(182) => 'o',
|
||
chr(195) . chr(182) => 'o', chr(195) . chr(185) => 'u',
|
||
chr(195) . chr(186) => 'u', chr(195) . chr(187) => 'u',
|
||
chr(195) . chr(188) => 'u', chr(195) . chr(189) => 'y',
|
||
chr(195) . chr(191) => 'y',
|
||
// Decompositions for Latin Extended-A
|
||
chr(196) . chr(128) => 'A', chr(196) . chr(129) => 'a',
|
||
chr(196) . chr(130) => 'A', chr(196) . chr(131) => 'a',
|
||
chr(196) . chr(132) => 'A', chr(196) . chr(133) => 'a',
|
||
chr(196) . chr(134) => 'C', chr(196) . chr(135) => 'c',
|
||
chr(196) . chr(136) => 'C', chr(196) . chr(137) => 'c',
|
||
chr(196) . chr(138) => 'C', chr(196) . chr(139) => 'c',
|
||
chr(196) . chr(140) => 'C', chr(196) . chr(141) => 'c',
|
||
chr(196) . chr(142) => 'D', chr(196) . chr(143) => 'd',
|
||
chr(196) . chr(144) => 'D', chr(196) . chr(145) => 'd',
|
||
chr(196) . chr(146) => 'E', chr(196) . chr(147) => 'e',
|
||
chr(196) . chr(148) => 'E', chr(196) . chr(149) => 'e',
|
||
chr(196) . chr(150) => 'E', chr(196) . chr(151) => 'e',
|
||
chr(196) . chr(152) => 'E', chr(196) . chr(153) => 'e',
|
||
chr(196) . chr(154) => 'E', chr(196) . chr(155) => 'e',
|
||
chr(196) . chr(156) => 'G', chr(196) . chr(157) => 'g',
|
||
chr(196) . chr(158) => 'G', chr(196) . chr(159) => 'g',
|
||
chr(196) . chr(160) => 'G', chr(196) . chr(161) => 'g',
|
||
chr(196) . chr(162) => 'G', chr(196) . chr(163) => 'g',
|
||
chr(196) . chr(164) => 'H', chr(196) . chr(165) => 'h',
|
||
chr(196) . chr(166) => 'H', chr(196) . chr(167) => 'h',
|
||
chr(196) . chr(168) => 'I', chr(196) . chr(169) => 'i',
|
||
chr(196) . chr(170) => 'I', chr(196) . chr(171) => 'i',
|
||
chr(196) . chr(172) => 'I', chr(196) . chr(173) => 'i',
|
||
chr(196) . chr(174) => 'I', chr(196) . chr(175) => 'i',
|
||
chr(196) . chr(176) => 'I', chr(196) . chr(177) => 'i',
|
||
chr(196) . chr(178) => 'IJ', chr(196) . chr(179) => 'ij',
|
||
chr(196) . chr(180) => 'J', chr(196) . chr(181) => 'j',
|
||
chr(196) . chr(182) => 'K', chr(196) . chr(183) => 'k',
|
||
chr(196) . chr(184) => 'k', chr(196) . chr(185) => 'L',
|
||
chr(196) . chr(186) => 'l', chr(196) . chr(187) => 'L',
|
||
chr(196) . chr(188) => 'l', chr(196) . chr(189) => 'L',
|
||
chr(196) . chr(190) => 'l', chr(196) . chr(191) => 'L',
|
||
chr(197) . chr(128) => 'l', chr(197) . chr(129) => 'L',
|
||
chr(197) . chr(130) => 'l', chr(197) . chr(131) => 'N',
|
||
chr(197) . chr(132) => 'n', chr(197) . chr(133) => 'N',
|
||
chr(197) . chr(134) => 'n', chr(197) . chr(135) => 'N',
|
||
chr(197) . chr(136) => 'n', chr(197) . chr(137) => 'N',
|
||
chr(197) . chr(138) => 'n', chr(197) . chr(139) => 'N',
|
||
chr(197) . chr(140) => 'O', chr(197) . chr(141) => 'o',
|
||
chr(197) . chr(142) => 'O', chr(197) . chr(143) => 'o',
|
||
chr(197) . chr(144) => 'O', chr(197) . chr(145) => 'o',
|
||
chr(197) . chr(146) => 'OE', chr(197) . chr(147) => 'oe',
|
||
chr(197) . chr(148) => 'R', chr(197) . chr(149) => 'r',
|
||
chr(197) . chr(150) => 'R', chr(197) . chr(151) => 'r',
|
||
chr(197) . chr(152) => 'R', chr(197) . chr(153) => 'r',
|
||
chr(197) . chr(154) => 'S', chr(197) . chr(155) => 's',
|
||
chr(197) . chr(156) => 'S', chr(197) . chr(157) => 's',
|
||
chr(197) . chr(158) => 'S', chr(197) . chr(159) => 's',
|
||
chr(197) . chr(160) => 'S', chr(197) . chr(161) => 's',
|
||
chr(197) . chr(162) => 'T', chr(197) . chr(163) => 't',
|
||
chr(197) . chr(164) => 'T', chr(197) . chr(165) => 't',
|
||
chr(197) . chr(166) => 'T', chr(197) . chr(167) => 't',
|
||
chr(197) . chr(168) => 'U', chr(197) . chr(169) => 'u',
|
||
chr(197) . chr(170) => 'U', chr(197) . chr(171) => 'u',
|
||
chr(197) . chr(172) => 'U', chr(197) . chr(173) => 'u',
|
||
chr(197) . chr(174) => 'U', chr(197) . chr(175) => 'u',
|
||
chr(197) . chr(176) => 'U', chr(197) . chr(177) => 'u',
|
||
chr(197) . chr(178) => 'U', chr(197) . chr(179) => 'u',
|
||
chr(197) . chr(180) => 'W', chr(197) . chr(181) => 'w',
|
||
chr(197) . chr(182) => 'Y', chr(197) . chr(183) => 'y',
|
||
chr(197) . chr(184) => 'Y', chr(197) . chr(185) => 'Z',
|
||
chr(197) . chr(186) => 'z', chr(197) . chr(187) => 'Z',
|
||
chr(197) . chr(188) => 'z', chr(197) . chr(189) => 'Z',
|
||
chr(197) . chr(190) => 'z', chr(197) . chr(191) => 's'
|
||
);
|
||
|
||
$string = strtr($string, $chars);
|
||
|
||
$table = array(
|
||
"А" => "a", "Б" => "b", "В" => "v", "Г" => "g", "Д" => "d",
|
||
"Е" => "e", "Ё" => "yo", "Ж" => "zh", "З" => "z", "И" => "i",
|
||
"Й" => "j", "К" => "k", "Л" => "l", "М" => "m", "Н" => "n",
|
||
"О" => "o", "П" => "p", "Р" => "r", "С" => "s", "Т" => "t",
|
||
"У" => "u", "Ф" => "f", "Х" => "kh", "Ц" => "ts", "Ч" => "ch",
|
||
"Ш" => "sh", "Щ" => "sch", "Ъ" => "", "Ы" => "y", "Ь" => "",
|
||
"Э" => "e", "Ю" => "yu", "Я" => "ya", "а" => "a", "б" => "b",
|
||
"в" => "v", "г" => "g", "д" => "d", "е" => "e", "ё" => "yo",
|
||
"ж" => "zh", "з" => "z", "и" => "i", "й" => "j", "к" => "k",
|
||
"л" => "l", "м" => "m", "н" => "n", "о" => "o", "п" => "p",
|
||
"р" => "r", "с" => "s", "т" => "t", "у" => "u", "ф" => "f",
|
||
"х" => "kh", "ц" => "ts", "ч" => "ch", "ш" => "sh", "щ" => "sch",
|
||
"ъ" => "", "ы" => "y", "ь" => "", "э" => "e", "ю" => "yu",
|
||
"я" => "ya", " " => "-", "." => "", "," => "",
|
||
":" => "", ";" => "", "—" => "", "–" => "-"
|
||
);
|
||
|
||
$string = strtr($string, $table);
|
||
|
||
return $string;
|
||
}
|
||
|
||
public static function delete_cache()
|
||
{
|
||
\S::delete_dir('../cache/');
|
||
\S::delete_dir('../temp/');
|
||
\S::delete_dir('temp/');
|
||
}
|
||
|
||
public static function delete_dir($dir)
|
||
{
|
||
if (is_file($dir))
|
||
return @unlink($dir);
|
||
|
||
else if (is_dir($dir))
|
||
{
|
||
$scan = glob(rtrim($dir, '/') . '/*');
|
||
|
||
if (is_array($scan))
|
||
foreach ($scan as $index => $path)
|
||
self::delete_dir($path);
|
||
|
||
if (is_dir($dir) && self::is_empty_dir($dir) and $dir != '../temp/')
|
||
return @rmdir($dir);
|
||
}
|
||
}
|
||
|
||
public static function is_empty_dir($dir)
|
||
{
|
||
return (($files = @scandir($dir)) && count($files) <= 2);
|
||
}
|
||
public static function email_check($email)
|
||
{
|
||
return filter_var($email, FILTER_VALIDATE_EMAIL);
|
||
}
|
||
public static function send_email($email, $subject, $text, $replay = '', $file = '')
|
||
{
|
||
global $settings;
|
||
if (file_exists('libraries/phpmailer/class.phpmailer.php')) require_once 'libraries/phpmailer/class.phpmailer.php';
|
||
if (file_exists('libraries/phpmailer/class.smtp.php')) require_once 'libraries/phpmailer/class.smtp.php';
|
||
if (file_exists('../libraries/phpmailer/class.phpmailer.php')) require_once '../libraries/phpmailer/class.phpmailer.php';
|
||
if (file_exists('../libraries/phpmailer/class.smtp.php')) require_once '../libraries/phpmailer/class.smtp.php';
|
||
if ($email and $subject)
|
||
{
|
||
$mail = new PHPMailer();
|
||
$mail->IsSMTP();
|
||
$mail->SMTPAuth = true;
|
||
$mail->Host = $settings['email_host'];
|
||
$mail->Port = $settings['email_port'];
|
||
$mail->Username = $settings['email_login'];
|
||
$mail->Password = $settings['email_password'];
|
||
$mail->CharSet = "UTF-8";
|
||
$mail->SMTPOptions = array(
|
||
'ssl' => array(
|
||
'verify_peer' => false,
|
||
'verify_peer_name' => false,
|
||
'allow_self_signed' => true
|
||
)
|
||
);
|
||
|
||
if (self::email_check($replay))
|
||
{
|
||
$mail->AddReplyTo($replay, $replay);
|
||
$mail->SetFrom($settings['contact_email'], $settings['contact_email']);
|
||
}
|
||
else
|
||
{
|
||
$mail->AddReplyTo($settings['contact_email'], $settings['firm_name']);
|
||
$mail->SetFrom($settings['contact_email'], $settings['firm_name']);
|
||
}
|
||
|
||
$mail->AddAddress($email, '');
|
||
$mail->Subject = $subject;
|
||
$mail->Body = $text;
|
||
if (is_array($file))
|
||
{
|
||
foreach ($file as $file_tmp)
|
||
{
|
||
if (file_exists($file_tmp))
|
||
$mail->AddAttachment($file_tmp);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (file_exists($file))
|
||
$mail->AddAttachment($file);
|
||
}
|
||
$mail->IsHTML(true);
|
||
return $mail->Send();
|
||
}
|
||
return false;
|
||
}
|
||
}
|