* @Copyright (C) 2014 VINADES.,JSC. All rights reserved * @License GNU/GPL version 2 or any later version * @Createdate 4/13/2010 20:00 */ if (! defined('NV_MAINFILE')) { die('Stop!!!'); } /** * nv_error_info() * * @return */ function nv_error_info() { global $lang_global, $global_config, $error_info; if (! defined('NV_IS_ADMIN')) { return; } if (empty($error_info)) { return; } $errortype = array( E_ERROR => array( $lang_global['error_error'], 'bad.png' ), E_WARNING => array( $lang_global['error_warning'], 'warning.png' ), E_PARSE => array( $lang_global['error_error'], 'bad.png' ), E_NOTICE => array( $lang_global['error_notice'], 'comment.png' ), E_CORE_ERROR => array( $lang_global['error_error'], 'bad.png' ), E_CORE_WARNING => array( $lang_global['error_warning'], 'warning.png' ), E_COMPILE_ERROR => array( $lang_global['error_error'], 'bad.png' ), E_COMPILE_WARNING => array( $lang_global['error_warning'], 'warning.png' ), E_USER_ERROR => array( $lang_global['error_error'], 'bad.png' ), E_USER_WARNING => array( $lang_global['error_warning'], 'warning.png' ), E_USER_NOTICE => array( $lang_global['error_notice'], 'comment.png' ), E_STRICT => array( $lang_global['error_notice'], 'comment.png' ), E_RECOVERABLE_ERROR => array( $lang_global['error_error'], 'bad.png' ), E_DEPRECATED => array( $lang_global['error_notice'], 'comment.png' ), E_USER_DEPRECATED => array( $lang_global['error_warning'], 'warning.png' ) ); if (defined('NV_ADMIN') and file_exists(NV_ROOTDIR . '/themes/' . $global_config['admin_theme'] . '/system/error_info.tpl')) { $tpl_path = NV_ROOTDIR . '/themes/' . $global_config['admin_theme'] . '/system'; $image_path = NV_BASE_SITEURL . 'themes/' . $global_config['admin_theme'] . '/images/icons/'; } elseif (defined('NV_ADMIN')) { $tpl_path = NV_ROOTDIR . '/themes/admin_default/system'; $image_path = NV_BASE_SITEURL . 'themes/admin_default/images/'; } elseif (file_exists(NV_ROOTDIR . '/themes/' . $global_config['site_theme'] . '/system/error_info.tpl')) { $tpl_path = NV_ROOTDIR . '/themes/' . $global_config['site_theme'] . '/system'; $image_path = NV_BASE_SITEURL . 'themes/' . $global_config['site_theme'] . '/images/icons/'; } else { $tpl_path = NV_ROOTDIR . '/themes/default/system'; $image_path = NV_BASE_SITEURL . 'themes/default/images/icons/'; } $xtpl = new XTemplate('error_info.tpl', $tpl_path); $xtpl->assign('TPL_E_CAPTION', $lang_global['error_info_caption']); $a = 0; foreach ($error_info as $key => $value) { $xtpl->assign('TPL_E_CLASS', ($a % 2) ? ' class="second"' : ''); $xtpl->assign('TPL_E_ALT', $errortype[$value['errno']][0]); $xtpl->assign('TPL_E_SRC', $image_path . $errortype[$value['errno']][1]); $xtpl->assign('TPL_E_ERRNO', $errortype[$value['errno']][0]); $xtpl->assign('TPL_E_MESS', $value['info']); $xtpl->set_autoreset(); $xtpl->parse('error_info.error_item'); ++$a; } $xtpl->parse('error_info'); return $xtpl->text('error_info'); } /** * nv_info_die() * * @param string $page_title * @param mixed $info_title * @param mixed $info_content * @param string $admin_link * @param string $admin_title * @param string $site_link * @param string $site_title * @return */ function nv_info_die($page_title = '', $info_title, $info_content, $error_code = 200, $admin_link = NV_BASE_ADMINURL, $admin_title = '', $site_link = NV_BASE_SITEURL, $site_title = '') { global $lang_global, $global_config; http_response_code($error_code); if (empty($page_title)) { $page_title = $global_config['site_description']; } // Get theme $template = ''; if (defined('NV_ADMIN') and isset($global_config['admin_theme']) and file_exists(NV_ROOTDIR . '/themes/' . $global_config['admin_theme'] . '/system/info_die.tpl')) { $tpl_path = NV_ROOTDIR . '/themes/' . $global_config['admin_theme'] . '/system'; $template = $global_config['admin_theme']; } elseif (defined('NV_ADMIN') and file_exists(NV_ROOTDIR . '/themes/admin_default/system/info_die.tpl')) { $tpl_path = NV_ROOTDIR . '/themes/admin_default/system'; $template = 'admin_default'; } elseif (isset($global_config['module_theme']) and file_exists(NV_ROOTDIR . '/themes/' . $global_config['module_theme'] . '/system/info_die.tpl')) { $tpl_path = NV_ROOTDIR . '/themes/' . $global_config['module_theme'] . '/system'; $template = $global_config['module_theme']; } elseif (isset($global_config['site_theme']) and file_exists(NV_ROOTDIR . '/themes/' . $global_config['site_theme'] . '/system/info_die.tpl')) { $tpl_path = NV_ROOTDIR . '/themes/' . $global_config['site_theme'] . '/system'; $template = $global_config['site_theme']; } else { $tpl_path = NV_ROOTDIR . '/themes/default/system'; $template = 'default'; } $size = @getimagesize(NV_ROOTDIR . '/' . $global_config['site_logo']); $xtpl = new XTemplate('info_die.tpl', $tpl_path); $xtpl->assign('SITE_CHARSET', $global_config['site_charset']); $xtpl->assign('PAGE_TITLE', $page_title); $xtpl->assign('HOME_LINK', $global_config['site_url']); $xtpl->assign('LANG', $lang_global); $xtpl->assign('TEMPLATE', $template); $xtpl->assign('NV_BASE_SITEURL', NV_BASE_SITEURL); $xtpl->assign('NV_ASSETS_DIR', NV_ASSETS_DIR); $xtpl->assign('SITE_NAME', empty($global_config['site_name']) ? '' : $global_config['site_name']); $site_favicon = NV_BASE_SITEURL . 'favicon.ico'; if (!empty($global_config['site_favicon']) and file_exists(NV_ROOTDIR . '/' . $global_config['site_favicon'])) { $site_favicon = NV_BASE_SITEURL . $global_config['site_favicon']; } $xtpl->assign('SITE_FAVICON', $site_favicon); if (isset($size[1])) { if ($size[0] > 490) { $size[1] = ceil(490 * $size[1] / $size[0]); $size[0] = 490; } $xtpl->assign('LOGO', NV_BASE_SITEURL . $global_config['site_logo']); $xtpl->assign('WIDTH', $size[0]); $xtpl->assign('HEIGHT', $size[1]); if (isset($size['mime']) and $size['mime'] == 'application/x-shockwave-flash') { $xtpl->parse('main.swf'); } else { $xtpl->parse('main.image'); } } $xtpl->assign('INFO_TITLE', $info_title); $xtpl->assign('INFO_CONTENT', $info_content); if (defined('NV_IS_ADMIN') and ! empty($admin_link)) { $xtpl->assign('ADMIN_LINK', $admin_link); $xtpl->assign('GO_ADMINPAGE', empty($admin_title) ? $lang_global['admin_page'] : $admin_title); $xtpl->parse('main.adminlink'); } if (! empty($site_link)) { $xtpl->assign('SITE_LINK', $site_link); $xtpl->assign('GO_SITEPAGE', empty($site_title) ? $lang_global['go_homepage'] : $site_title); $xtpl->parse('main.sitelink'); } $xtpl->parse('main'); include NV_ROOTDIR . '/includes/header.php'; $xtpl->out('main'); include NV_ROOTDIR . '/includes/footer.php'; } /** * nv_htmlOutput() * * @param array $html * @return void */ function nv_htmlOutput($html) { header('Content-Type: text/html; charset=utf-8'); Header('Cache-Control: no-cache, must-revalidate'); if (defined('NV_ADMIN') or NV_ANTI_IFRAME != 0) { Header('X-Frame-Options: SAMEORIGIN'); } Header('X-Content-Type-Options: nosniff'); Header('X-XSS-Protection: 1; mode=block'); ob_start('ob_gzhandler'); echo $html; exit(0); } /** * nv_jsonOutput() * * @param array $array_data * @return void */ function nv_jsonOutput($array_data) { Header('Cache-Control: no-cache, must-revalidate'); Header('Content-type: application/json'); if (defined('NV_ADMIN') or NV_ANTI_IFRAME != 0) { Header('X-Frame-Options: SAMEORIGIN'); } Header('X-Content-Type-Options: nosniff'); Header('X-XSS-Protection: 1; mode=block'); ob_start('ob_gzhandler'); echo json_encode($array_data); exit(0); } /** * nv_xmlOutput() * * @param string $content * @param mixed $lastModified * @return void */ function nv_xmlOutput($content, $lastModified) { if (class_exists('tidy', false)) { $tidy_options = array( 'input-xml' => true, 'output-xml' => true, 'indent' => true, 'indent-cdata' => true, 'wrap' => false ); $tidy = new tidy(); $tidy->parseString($content, $tidy_options, 'utf8'); $tidy->cleanRepair(); $content = ( string )$tidy; } else { $content = trim($content); } @Header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $lastModified) . ' GMT'); @Header('Expires: ' . gmdate('D, d M Y H:i:s', $lastModified) . ' GMT'); @Header('Content-Type: text/xml; charset=utf-8'); if (! empty($_SERVER['SERVER_SOFTWARE']) and strstr($_SERVER['SERVER_SOFTWARE'], 'Apache/2')) { @Header('Cache-Control: no-cache, pre-check=0, post-check=0'); } else { @Header('Cache-Control: private, pre-check=0, post-check=0, max-age=0'); } if (defined('NV_ADMIN') or NV_ANTI_IFRAME != 0) { Header('X-Frame-Options: SAMEORIGIN'); } Header('X-Content-Type-Options: nosniff'); Header('X-XSS-Protection: 1; mode=block'); @Header('Pragma: no-cache'); $encoding = 'none'; if (nv_function_exists('gzencode') and isset($_SERVER['HTTP_ACCEPT_ENCODING'])) { $encoding = strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') ? 'gzip' : (strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate') ? 'deflate' : 'none'); if ($encoding != 'none') { if (! strstr($_SERVER['HTTP_USER_AGENT'], 'Opera') and preg_match('/^Mozilla\/4\.0 \(compatible; MSIE ([0-9]\.[0-9])/i', $_SERVER['HTTP_USER_AGENT'], $matches)) { $version = floatval($matches[1]); if ($version < 6 or ($version == 6 and ! strstr($_SERVER['HTTP_USER_AGENT'], 'EV1'))) { $encoding = 'none'; } } } } if ($encoding != 'none') { $content = gzencode($content, 6, $encoding == 'gzip' ? FORCE_GZIP : FORCE_DEFLATE); header('Content-Encoding: ' . $encoding); header('Content-Length: ' . strlen($content)); header('Vary: Accept-Encoding'); } print_r($content); exit(0); } /** * nv_rss_generate() * * @param mixed $channel * @param mixed $items * @param string $timemode * @return void */ function nv_rss_generate($channel, $items, $timemode = 'GMT') { global $global_config, $client_info; $xtpl = new XTemplate('rss.tpl', NV_ROOTDIR . '/' . NV_ASSETS_DIR . '/tpl'); //Chi co tac dung voi IE6 va Chrome $xtpl->assign('CSSPATH', NV_BASE_SITEURL . NV_ASSETS_DIR . '/css/rss.xsl'); $xtpl->assign('CHARSET', $global_config['site_charset']); $xtpl->assign('SITELANG', $global_config['site_lang']); $channel['generator'] = 'NukeViet v4.0'; $channel['title'] = nv_htmlspecialchars($channel['title']); $channel['atomlink'] = str_replace('&', '&', $client_info['selfurl']); $channel['lang'] = $global_config['site_lang']; $channel['copyright'] = $global_config['site_name']; $channel['docs'] = nv_url_rewrite(NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=rss', true); if (strpos($channel['docs'], NV_MY_DOMAIN) !== 0) { $channel['docs'] = NV_MY_DOMAIN . $channel['docs']; } if (preg_match('/^' . nv_preg_quote(NV_MY_DOMAIN . NV_BASE_SITEURL) . '(.+)$/', $channel['link'], $matches)) { $channel['link'] = NV_BASE_SITEURL . $matches[1]; } $channel['link'] = nv_url_rewrite($channel['link'], true); if (strpos($channel['link'], NV_MY_DOMAIN) !== 0) { $channel['link'] = NV_MY_DOMAIN . $channel['link']; } if (preg_match('/^' . nv_preg_quote(NV_MY_DOMAIN . NV_BASE_SITEURL) . '(.+)$/', $channel['atomlink'], $matches)) { $channel['atomlink'] = NV_BASE_SITEURL . $matches[1]; } $channel['atomlink'] = nv_url_rewrite($channel['atomlink'], true); if (strpos($channel['atomlink'], NV_MY_DOMAIN) !== 0) { $channel['atomlink'] = NV_MY_DOMAIN . $channel['atomlink']; } $channel['pubDate'] = 0; $channel['modified'] = 0; if (! empty($items)) { foreach ($items as $item) { if (! empty($item['title']) and ! empty($item['link'])) { $item['title'] = nv_htmlspecialchars($item['title']); if (isset($item['pubdate']) and ! empty($item['pubdate'])) { $item['pubdate'] = intval($item['pubdate']); $channel['pubDate'] = max($channel['pubDate'], $item['pubdate']); if ($timemode == 'ISO8601') { $item['pubdate'] = date('c', $item['pubdate']); } else { $item['pubdate'] = gmdate('D, j M Y H:m:s', $item['pubdate']) . ' GMT'; } } if (!empty($item['modifydate'])) { $channel['modified'] = max($channel['modified'], $item['modifydate']); } if (preg_match('/^' . nv_preg_quote(NV_MY_DOMAIN . NV_BASE_SITEURL) . '(.+)$/', $item['link'], $matches)) { $item['link'] = NV_BASE_SITEURL . $matches[1]; } $item['link'] = nv_url_rewrite($item['link'], true); if (strpos($item['link'], NV_MY_DOMAIN) !== 0) { $item['link'] = NV_MY_DOMAIN . $item['link']; } $xtpl->assign('ITEM', $item); if (isset($item['guid']) and ! empty($item['guid'])) { $xtpl->parse('main.item.guid'); } if (isset($item['pubdate']) and ! empty($item['pubdate'])) { $xtpl->parse('main.item.pubdate'); } if (isset($item['author']) and ! empty($item['author'])) { $xtpl->parse('main.item.author'); } if (isset($item['content']) and ! empty($item['content'])) { if (!empty($item['content']['image'])) { $xtpl->parse('main.item.content.image'); } if (!empty($item['content']['opkicker'])) { $xtpl->parse('main.item.content.opkicker'); } if (!empty($item['content']['pubdate'])) { if ($timemode == 'ISO8601') { $published = date('c', $item['content']['pubdate']); } else { $published = gmdate('D, j M Y H:m:s', $item['content']['pubdate']) . ' GMT'; } $xtpl->assign('PUBLISHED', $published); $xtpl->assign('PUBLISHED_DISPLAY', nv_date('H:i: d/m/Y', $item['content']['pubdate'])); $xtpl->parse('main.item.content.pubdate'); } if (!empty($item['content']['modifydate'])) { if ($timemode == 'ISO8601') { $modified = date('c', $item['content']['modifydate']); } else { $modified = gmdate('D, j M Y H:m:s', $item['content']['modifydate']) . ' GMT'; } $xtpl->assign('MODIFIED', $modified); $xtpl->assign('MODIFIED_DISPLAY', nv_date('H:i: d/m/Y', $item['content']['modifydate'])); $xtpl->parse('main.item.content.modifydate'); } $xtpl->parse('main.item.content'); } $xtpl->parse('main.item'); } } } $lastModified = NV_CURRENTTIME; if (! empty($channel['pubDate'])) { $lastModified = $channel['pubDate']; if ($timemode == 'ISO8601') { $channel['pubDate'] = date('c', $channel['pubDate']); } else { $channel['pubDate'] = gmdate('D, j M Y H:m:s', $channel['pubDate']) . ' GMT'; } } if ($channel['modified'] > $lastModified) { $lastModified = $channel['modified']; } $xtpl->assign('CHANNEL', $channel); if (! empty($channel['description'])) { $xtpl->parse('main.description'); } if (! empty($channel['pubDate'])) { $xtpl->parse('main.pubDate'); } $image = file_exists(NV_ROOTDIR . '/' . $global_config['site_logo']) ? NV_ROOTDIR . '/' . $global_config['site_logo'] : NV_ROOTDIR . '/' . NV_ASSETS_DIR . '/images/logo.png'; $image = nv_ImageInfo($image, 144, true, NV_UPLOADS_REAL_DIR); if (! empty($image)) { $resSize = nv_imageResize($image['width'], $image['height'], 144, 400); $image['width'] = $resSize['width']; $image['height'] = $resSize['height']; $image['title'] = $channel['title']; $image['link'] = $channel['link']; $image['src'] = nv_url_rewrite($image['src'], true); if (strpos($image['src'], NV_MY_DOMAIN) !== 0) { $image['src'] = NV_MY_DOMAIN . $image['src']; } $xtpl->assign('IMAGE', $image); $xtpl->parse('main.image'); } $xtpl->parse('main'); $content = $xtpl->text('main'); nv_xmlOutput($content, $lastModified); } /** * @param array $url * @param string $changefreq * @param string $priority */ function nv_xmlSitemap_generate($url, $changefreq = 'daily', $priority = '0.8') { $lastModified = time() - 86400; $sitemapHeader = ''; $xml = new SimpleXMLElement($sitemapHeader); if (!empty($url)) { foreach ($url as $key => $values) { $values['link'] = nv_url_rewrite($values['link'], true); if (strpos($values['link'], NV_MY_DOMAIN) !== 0) { $values['link'] = NV_MY_DOMAIN . $values['link']; } $row = $xml->addChild('url'); $row->addChild('loc', $values['link']); $row->addChild('lastmod', date('c', $values['publtime'])); $row->addChild('changefreq', !empty($values['changefreq']) ? $values['changefreq'] : $changefreq); $row->addChild('priority', !empty($values['priority']) ? $values['priority'] : $priority); if ($key == 0) { $lastModified = $values['publtime']; } } } $contents = $xml->asXML(); $contents = nv_url_rewrite($contents); nv_xmlOutput($contents, $lastModified); } /** * @param array $url */ function nv_xmlSitemapCat_generate($url) { global $global_config; $sitemapHeader = ''; $xml = new SimpleXMLElement($sitemapHeader); $lastModified = NV_CURRENTTIME - 86400; foreach ($url as $link) { if (strpos($link, NV_MY_DOMAIN) !== 0) { $link = NV_MY_DOMAIN . $link; } $row = $xml->addChild('sitemap'); $row->addChild('loc', $link); } $contents = $xml->asXML(); if ($global_config['rewrite_enable']) { if ($global_config['check_rewrite_file']) { $contents = preg_replace("/index\.php\?" . NV_LANG_VARIABLE . "\=([a-z]{2})\&[amp\;]*" . NV_NAME_VARIABLE . "\=([a-zA-Z0-9\-]+)\&[amp\;]*" . NV_OP_VARIABLE . "\=sitemap\/([a-zA-Z0-9\-]+)/", "sitemap-\\1.\\2.\\3.xml", $contents); } elseif ($global_config['rewrite_optional']) { $contents = preg_replace("/index\.php\?" . NV_LANG_VARIABLE . "\=([a-z]{2})\&[amp\;]*" . NV_NAME_VARIABLE . "\=([a-zA-Z0-9\-]+)\&[amp\;]*" . NV_OP_VARIABLE . "\=sitemap\/([a-zA-Z0-9\-]+)/", "index.php/\\2/sitemap/\\3" . $global_config['rewrite_endurl'], $contents); } else { $contents = preg_replace("/index\.php\?" . NV_LANG_VARIABLE . "\=([a-z]{2})\&[amp\;]*" . NV_NAME_VARIABLE . "\=([a-zA-Z0-9\-]+)\&[amp\;]*" . NV_OP_VARIABLE . "\=sitemap\/([a-zA-Z0-9\-]+)/", "index.php/\\1/\\2/sitemap/\\3" . $global_config['rewrite_endurl'], $contents); } } nv_xmlOutput($contents, $lastModified); } /** * nv_xmlSitemapIndex_generate() * * @return void */ function nv_xmlSitemapIndex_generate() { global $db_config, $db, $global_config; $sitemapHeader = ''; $xml = new SimpleXMLElement($sitemapHeader); $lastModified = NV_CURRENTTIME - 86400; if ($global_config['lang_multi']) { foreach ($global_config['allow_sitelangs'] as $lang) { $sql = "SELECT m.title, m.module_file FROM " . $db_config['prefix'] . '_' . $lang . "_modules m LEFT JOIN " . $db_config['prefix'] . '_' . $lang . "_modfuncs f ON m.title=f.in_module WHERE m.act = 1 AND m.groups_view='6' AND m.sitemap=1 AND f.func_name = 'sitemap' ORDER BY m.weight, f.subweight"; $result = $db->query($sql); while (list($modname, $modfile) = $result->fetch(3)) { $sitemaps = nv_scandir(NV_ROOTDIR . '/modules/' . $modfile . '/funcs', '/^sitemap(.*?)\.php$/'); foreach ($sitemaps as $filename) { if (preg_match('/^sitemap(\.*)([a-zA-Z0-9\-]*)\.php$/', $filename, $m)) { if ($m[0] == 'sitemap.php') { $link = NV_MY_DOMAIN . NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . $lang . '&' . NV_NAME_VARIABLE . '=' . $modname . '&' . NV_OP_VARIABLE . '=sitemap'; } elseif ($m[1] == '.' and $m[2] != '') { $link = NV_MY_DOMAIN . NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . $lang . '&' . NV_NAME_VARIABLE . '=' . $modname . '&' . NV_OP_VARIABLE . '=sitemap/' . $m[2]; } $row = $xml->addChild('sitemap'); $row->addChild('loc', $link); } } } } } else { $site_mods = nv_site_mods(); foreach ($site_mods as $modname => $values) { if (isset($values['funcs']) and isset($values['funcs']['sitemap']) and !empty($values['sitemap'])) { $sitemaps = nv_scandir(NV_ROOTDIR . '/modules/' . $values['module_file'] . '/funcs', '/^sitemap(.*?)\.php$/'); foreach ($sitemaps as $filename) { if (preg_match('/^sitemap(\.*)([a-zA-Z0-9\-]*)\.php$/', $filename, $m)) { if ($m[0] == 'sitemap.php') { $link = NV_MY_DOMAIN . NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=' . $modname . '&' . NV_OP_VARIABLE . '=sitemap'; } elseif ($m[1] == '.' and $m[2] != '') { $link = NV_MY_DOMAIN . NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=' . $modname . '&' . NV_OP_VARIABLE . '=sitemap/' . $m[2]; } $row = $xml->addChild('sitemap'); $row->addChild('loc', $link); } } } } } $db = null; $contents = $xml->asXML(); if ($global_config['rewrite_enable']) { if ($global_config['check_rewrite_file']) { $contents = preg_replace("/index\.php\?" . NV_LANG_VARIABLE . "\=([a-z]{2})\&[amp\;]*" . NV_NAME_VARIABLE . "\=SitemapIndex/", "sitemap-\\1.xml", $contents); $contents = preg_replace("/index\.php\?" . NV_LANG_VARIABLE . "\=([a-z]{2})\&[amp\;]*" . NV_NAME_VARIABLE . "\=([a-zA-Z0-9\-]+)\&[amp\;]*" . NV_OP_VARIABLE . "\=sitemap\/([a-zA-Z0-9\-]+)/", "sitemap-\\1.\\2.\\3.xml", $contents); $contents = preg_replace("/index\.php\?" . NV_LANG_VARIABLE . "\=([a-z]{2})\&[amp\;]*" . NV_NAME_VARIABLE . "\=([a-zA-Z0-9\-]+)\&[amp\;]*" . NV_OP_VARIABLE . "\=sitemap/", "sitemap-\\1.\\2.xml", $contents); } elseif ($global_config['rewrite_optional']) { $contents = preg_replace("/index\.php\?" . NV_LANG_VARIABLE . "\=([a-z]{2})\&[amp\;]*" . NV_NAME_VARIABLE . "\=([a-zA-Z0-9\-]+)\&[amp\;]*" . NV_OP_VARIABLE . "\=sitemap\/([a-zA-Z0-9\-]+)/", "index.php/\\2/sitemap/\\3" . $global_config['rewrite_endurl'], $contents); $contents = preg_replace("/index\.php\?" . NV_LANG_VARIABLE . "\=([a-z]{2})\&[amp\;]*" . NV_NAME_VARIABLE . "\=([a-zA-Z0-9\-]+)\&[amp\;]*" . NV_OP_VARIABLE . "\=sitemap/", "index.php/\\2/sitemap" . $global_config['rewrite_endurl'], $contents); } else { $contents = preg_replace("/index\.php\?" . NV_LANG_VARIABLE . "\=([a-z]{2})\&[amp\;]*" . NV_NAME_VARIABLE . "\=([a-zA-Z0-9\-]+)\&[amp\;]*" . NV_OP_VARIABLE . "\=sitemap\/([a-zA-Z0-9\-]+)/", "index.php/\\1/\\2/sitemap/\\3" . $global_config['rewrite_endurl'], $contents); $contents = preg_replace("/index\.php\?" . NV_LANG_VARIABLE . "\=([a-z]{2})\&[amp\;]*" . NV_NAME_VARIABLE . "\=([a-zA-Z0-9\-]+)\&[amp\;]*" . NV_OP_VARIABLE . "\=sitemap/", "index.php/\\1/\\2/sitemap" . $global_config['rewrite_endurl'], $contents); } } nv_xmlOutput($contents, $lastModified); } /** * nv_css_setproperties() * * @param mixed $tag * @param mixed $property_array * @return */ function nv_css_setproperties($tag, $property_array) { if (empty($tag)) { return ''; } if (! is_array($property_array)) { return $property_array; } $css = ''; foreach ($property_array as $property => $value) { if ($property != 'customcss') { if (! empty($property) and ! empty($value)) { $property = str_replace('_', '-', $property); if ($property == 'background-image') { $value = "url('" . $value . "')"; } $css .= $property . ':' . $value . ';'; } } elseif (! empty($value)) { $value = substr(trim($value), -1) == ';' ? $value : $value . ';'; $css .= $value; } } ! empty($css) and $css = $tag . '{' . $css . '}'; return $css; } /** * nv_theme_alert() * * @param mixed $message_title * @param mixed $message_content * @param mixed $type * @param mixed $url_back * @param mixed $lang_back * @param mixed $time_back * @return */ function nv_theme_alert($message_title, $message_content, $type = 'info', $url_back = '', $lang_back = '', $time_back = 5) { global $global_config, $module_info, $lang_module, $page_title; if (defined('NV_ADMIN') and file_exists(NV_ROOTDIR . '/themes/' . $global_config['admin_theme'] . '/system/alert.tpl')) { $tpl_path = NV_ROOTDIR . '/themes/' . $global_config['admin_theme'] . '/system'; } elseif (defined('NV_ADMIN')) { $tpl_path = NV_ROOTDIR . '/themes/admin_default/system'; } elseif (file_exists(NV_ROOTDIR . '/themes/' . $global_config['site_theme'] . '/system/alert.tpl')) { $tpl_path = NV_ROOTDIR . '/themes/' . $global_config['site_theme'] . '/system'; } else { $tpl_path = NV_ROOTDIR . '/themes/default/system'; } $xtpl = new XTemplate('alert.tpl', $tpl_path); $xtpl->assign('LANG', $lang_module); $xtpl->assign('LANG_BACK', $lang_back); $xtpl->assign('CONTENT', $message_content); if ($type == 'success') { $xtpl->parse('main.success'); } elseif ($type == 'warning') { $xtpl->parse('main.warning'); } elseif ($type == 'danger') { $xtpl->parse('main.danger'); } else { $xtpl->parse('main.info'); } if (!empty($message_title)) { $page_title = $message_title; $xtpl->assign('TITLE', $message_title); $xtpl->parse('main.title'); } elseif (!empty($module_info['site_title'])) { // For admin if use in admin area $page_title = $module_info['site_title']; } else { $page_title = $module_info['custom_title']; } if (!empty($url_back)) { $xtpl->assign('TIME', $time_back); $xtpl->assign('URL', $url_back); $xtpl->parse('main.url_back'); $xtpl->parse('main.loading_icon'); if (!empty($lang_back)) { $xtpl->parse('main.url_back_button'); } } $xtpl->parse('main'); return $xtpl->text('main'); }