^if($ip eq '127.0.0.1'){ $ip[95.69.184.141] }{ $ip[$env:REMOTE_ADDR] } ^try{ $geoLocate[^file::load[text;http://freegeoip.net/json/$ip]] $geoLocate[^json:parse[^untaint{$geoLocate.text}]] }{ $exception.handled(1) } $langs[^sql:table{ SELECT id, pageTitle, uriTitle FROM $tbl WHERE parent_id = '$config.site.langs_id' && visible = '1' && type = 'l' ORDER BY order_id }] $langsOrder[^table::create{uriTitle^#0A$config.site.defaultLang}] $langs[^customSort[$langs;$langsOrder;uriTitle;uriTitle]] ^if($env:HTTPS eq 'on'){ $protocol[https] }{ $protocol[http] } $form[^getFormParamsHash[]] ### DEBUG SWITCH ### ^if($form:nameless eq 'debug'){ ^if($cookie:debug){ $cookie:debug[] }{ $cookie:debug(1) } $response:location[./] } ^if(def $cookie:debug){ } ### CURRENT PAGE ### $uri[^if(def $form:uri){$form:uri}{/}] ^if( ( ^env:SERVER_NAME.left(7) eq 'mobile.' # || ($env:REMOTE_ADDR eq '127.0.0.1') ) && $uri eq '/' ){ $isMobileApp(1) } ^if(def $form:lang){ $lang[$form:lang] }{ $lang[$config.site.defaultLang] } ^if($langs > 1){ $dict[^getDict[$lang]] } ^if( ( $env:SERVER_NAME eq 'lifecell.chiqchaq.com.ua' # || $cookie:debug ) && $config.country.code eq 'ua' ){ $isLifecell(true) ^if($uri ne '/'){ $response:location[https://chiqchaq.com.ua$request:uri] } ^if($lang ne 'ua'){ $response:location[https://lifecell.chiqchaq.com.ua/ua/] } } $langID(^sql:int{SELECT id FROM $tbl WHERE parent_id = '2' && uriTitle = '$lang'}) $page[^sql:table{ SELECT id, parent_id, pageTitle, IF(windowTitle != '',windowTitle,pageTitle) AS windowTitle, module, method, results, template, keywords, description, text, clearCache, showSub, comments FROM $tbl WHERE uri = '$uri' && lang = '$lang' && visible = '1' && parentInvisible != '1' }[ $.limit(1) ]] ^if(def $page.template){ ### CACHE PARAMS ### $cacheFile[/data/cache/$page.id/^math:md5[$request:uri]${cookie:[sort-$page.module]}${cookie:[results-$page.module]}${cookie:currency}${env:HTTP_HOST}^auth:isLogin[]] ^if($env:REQUEST_METHOD eq 'POST' || $cookie:debug || $form:nameless eq 'nocache'){ $cacheTime(0) }{ $cacheTime($config.site.cacheTime) } ^if($page.clearCache == 1){ ^cache[$cacheFile] ^sql:void{UPDATE $tbl SET clearCache = '' WHERE id = '$page.id' LIMIT 1} } ### TEMPLATE ### $jTemplateCode{ ^if($langs > 1 && !def $form:lang){ $response:status(301) $response:location[^langPrefix[^untaint{$request:uri}]] } ^if($langs > 1){ $translList[^getTranslList[]] } $markList[^getMarkList[]] $path[^getPath[$page.parent_id]] ^if($form:mode eq 'amp'){ ^use[/include/templates/$page.template/template-amp.p] }($isMobileApp){ ^use[/include/templates/mobile/template.p] }{ ^use[/include/templates/$page.template/template.p] } ^template:show[] } ^try{ ^cache[$cacheFile]($cacheTime){ $jTemplateCode } }{ ^if(^exception.comment.pos[cache_put failed] >=0){ $exception.handled(1) $jTemplateCode } } ### VISIT COUNTER ### ^use[/include/classes/counter.p] ^file:lock[/include/counter.lock]{ ^counter:setHits[$page.id] ^counter:setHosts[] } ^if($form:utm_source eq 'facebook'){ ^sql:void{ INSERT INTO ${tbl}_fb_visits ( dt, uri ) VALUES ( '^date.sql-string[]', '$request:uri' ) } $response:location[./] } }{ # (def $userSelectedLang){ # $lang[$userSelectedLang] # }(def $userSystemLang && ^langs.locate[uriTitle;$userSystemLang]){ # $lang[$userSystemLang] # }{ # $lang[$config.site.defaultLang] # } ^if(!def $form:lang && $langs > 1 && def $uri){ $response:status(301) $response:location[${protocol}://$env:SERVER_NAME/${lang}$uri] }{ $response:status(404) $404[^file::load[text;/404.html]] ^process{^untaint{$404.text}} } } ################# ### REDIRECTS ### ################# ### WWW REDIRECT ^if(^env:SERVER_NAME.left(4) eq 'www.'){ $response:status(301) $response:location[${protocol}://^env:SERVER_NAME.mid(4)$request:uri] } ### TRAILING SLASH REDIRECT ^if( ^request:uri.right(1) ne '/' && ( !$form:fields || ( $form:fields == 2 && def $form:fields.lang && def $form:fields.uri ) ) && !def ^file:justext[$request:uri] && !def $form:nameless && !def $form:search && !def $form:confirm && !def $form:tab && !def $form:category && !$form.tables ){ $response:status(301) $response:location[${protocol}://${env:SERVER_NAME}$request:uri/] } ### PRESET DATABASE REDIRECT $newUri[^sql:table{SELECT id, newUri AS value FROM ${tbl}_redirect WHERE oldUri = '$request:uri'}[ $.limit(1) ]] ^if($newUri){ ^sql:void{UPDATE ${tbl}_redirect SET visitDate = '^date.sql-string[]' WHERE id = '$newUri.id' LIMIT 1} $response:status(301) $response:location[${protocol}://${env:SERVER_NAME}$newUri.value^if(def $form:param && ^request:uri.pos[/param/] < 0){param$form:param}] } ^sql:delOld[redirect;visitDate;180] ### PAGE=1 REDIRECT ^if($form.page eq '1'){ $response:status(301) $response:location[${form:uri}^formFields[ $.page[] ]] } ^if(!def $form:lang && $langs > 1){ $envLang[$env:HTTP_ACCEPT_LANGUAGE] $envLangSplit[^envLang.split[^;]] $envLangSplit[^envLangSplit.piece.split[,]] ^envLangSplit.offset(-1) $userSystemLang[$envLangSplit.piece] ^if(^auth:isLogin[]){ $userSelectedLang[^sql:string{ SELECT selectedLang FROM ${tbl}_users WHERE id = '$cookie:uid' }] } ^if(^auth:isLogin[] && def $userSelectedLang){ $langToRedirect[$userSelectedLang] }(^geoLocate.country_code.lower[] eq 'he'){ $langToRedirect[he] # }(^langs.locate[uriTitle;$userSystemLang]){ # $langToRedirect[$userSystemLang] }{ $langToRedirect[$config.site.defaultLang] } $response:status(301) $response:location[${protocol}://$env:SERVER_NAME/${langToRedirect}$uri] }