/* =================================================================== ETAPA 2b - functiile care depind de template-urile denysa =================================================================== */ function baga_meniurile_pentru_categorie($cat_id, $menu_dir, $template) { global $config, $meniu_gata_bagat; /* Plasa de siguranta la migrarea de arhitectura din Etapa 2b: pana cand cron_categorii.php si cron_categorii_desktop.php populeaza templates/{google,visitors,visitors_clean}/, cadem inapoi pe cele 457 de fragmente vechi din templates/. Fara asta, un deploy facut inainte de rularea cronurilor ar lasa site-ul fara meniuri. */ if (!is_dir($config['path']['templates'] . $menu_dir)) { $menu_dir = ''; } $file = $config['path']['templates'] . $menu_dir . 'vertical_menu_list_'.$cat_id.'.html'; if (file_exists($file)) { $template = str_replace('###vertical_menu_list###', file_get_contents($file), $template); } else { $template = str_replace('###vertical_menu_list###', file_get_contents($config['path']['templates'] . $menu_dir . 'vertical_menu_list.html'), $template); } $file = $config['path']['templates'] . $menu_dir . 'new_vertical_menu_list_'.$cat_id.'.html'; if (file_exists($file)) { $template = str_replace('###new_vertical_menu_list###', file_get_contents($file), $template); } else { $template = str_replace('###new_vertical_menu_list###', file_get_contents($config['path']['templates'] . $menu_dir . 'new_vertical_menu_list.html'), $template); } $file = $config['path']['templates'] . $menu_dir . 'main_menu_'.$cat_id.'.html'; $file0 = $config['path']['templates'] . $menu_dir . 'main_menu_0.html'; if (file_exists($file)) { $template = str_replace('###main_menu###', file_get_contents($file), $template); } elseif (file_exists($file0)) { $template = str_replace('###main_menu###', file_get_contents($file0), $template); } else { $template = str_replace('###main_menu###', '', $template); } $meniu_gata_bagat = 1; return $template; } function proceseaza_query_string_si_cookies() { global $_SERVER, $config, $cookie_value, $redirect, $order_by_value; /* Adaptata pentru domnisoare fata de versiunea denysa: - fara blocul ads_clicks_log / gclid / gbraid / wbraid (Google Ads exclus) - fara recunoasterea linkurilor scurte ?SL si fara cookie-ul `tg` (subsistemul a fost scos; vezi docs/DELTA-DOMNISOARE.md §2.2) - contorul ip_stats ramane conditionat, ca in codul vechi domnisoare: denysa il incrementeaza la FIECARE request, pentru detectia de click-fraud pe Ads. Fara Ads, asta ar umfla degeaba tabelul. */ if(isset($_SERVER['QUERY_STRING']) AND trim($_SERVER['QUERY_STRING']) != '' AND !is_numeric($_SERVER['QUERY_STRING'])) { $cookie_value = curata_ref(urldecode($_SERVER['QUERY_STRING'])); $cookie_value = explode('&', $cookie_value); if (isset($cookie_value[1]) AND $cookie_value[1]) { $_ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']); q_async('INSERT IGNORE INTO `ip_stats`(`ip`, `nr`) VALUES("'.$_ip.'", 0)'); q_async('UPDATE `ip_stats` SET `nr` = `nr` + 1, `last_time` = '.time().' WHERE `ip` = "'.$_ip.'"'); } $cookie_value = $cookie_value[0]; $redirect = 1; } else { if(!isset($_COOKIE['ref'])) { if(isset($_SERVER['HTTP_REFERER']) AND trim($_SERVER['HTTP_REFERER']) != '') { $referer = parse_url($_SERVER['HTTP_REFERER']); if(isset($referer['host']) AND stristr($referer['host'], 'google')) { $queryParts = array(); if(isset($referer['query']) AND trim($referer['query']) != '' AND stristr($referer['query'], '&')) { foreach(explode('&', $referer['query']) as $part) { $p = explode('=', $part); $queryParts[$p[0]] = $p[1]; } } if(isset($queryParts['q'])) { $cookie_value = curata_ref($queryParts['q']); } } else { if (isset($referer['host'])) $cookie_value = curata_ref($referer['host']); } } } } if(!isset($cookie_value) AND !isset($_COOKIE['ref'])) $cookie_value = $config['domeniu_magazin']; if(isset($cookie_value) AND !stristr($cookie_value, 'empty_cart')) { $cookie_value = explode(':', $cookie_value); if (isset($cookie_value[1])) $order_by_value = $cookie_value[1]; $cookie_value = $cookie_value[0]; setCookie('ref', $cookie_value, time()+365*86400, '/', '.' . $config['domeniu_magazin']); } } function afiseaza_404() { global $config, $main_color; $template = incarca_template('main'); $template = str_replace('###header###', incarca_template('header'), $template); $template = str_replace('###footer###', incarca_template('footer'), $template); $template = str_replace('###search_token###', search_token(), $template); //ultimele inlocuiri $template = str_replace('###telefon###', $config['contact']['telefon'], $template); $template = str_replace('###apel_telefon###', $config['contact']['apel_telefon'], $template); $template = str_replace('###domeniu_magazin###', $config['domeniu_magazin'], $template); $template = str_replace('###cookie_notice###', cookie_notice(), $template); $template = str_replace('###whatsapp_float###', wa_float_button(''), $template); // Contul meu — link in header (shows for all pages that use the main header) if (!empty($config['account']['enabled'])) { $session_cookie = $config['auth']['session_cookie']; if (isset($_COOKIE[$session_cookie]) AND $_COOKIE[$session_cookie] !== '') { $cont_menu_link = 'Contul meu'; } else { $cont_menu_link = 'Contul meu'; } } else { $cont_menu_link = ''; } $template = str_replace('###cont_menu_link###', $cont_menu_link, $template); // Contul meu — mobile icon in top nav bar (visible when .support-link is hidden) $_cont_icon = ''; if (!empty($config['account']['enabled'])) { $session_cookie = $config['auth']['session_cookie']; if (isset($_COOKIE[$session_cookie]) AND $_COOKIE[$session_cookie] !== '') { $cont_menu_link_mobile = '' . $_cont_icon . ''; } else { $cont_menu_link_mobile = '' . $_cont_icon . ''; } } else { $cont_menu_link_mobile = ''; } unset($_cont_icon); $template = str_replace('###cont_menu_link_mobile###', $cont_menu_link_mobile, $template); // Contul meu — link in footer if (!empty($config['account']['enabled'])) { $session_cookie = $config['auth']['session_cookie']; if (isset($_COOKIE[$session_cookie]) AND $_COOKIE[$session_cookie] !== '') { $cont_menu_link_footer = '
  • Contul meu
  • '; } else { $cont_menu_link_footer = '
  • Contul meu
  • '; } } else { $cont_menu_link_footer = ''; } $template = str_replace('###cont_menu_link_footer###', $cont_menu_link_footer, $template); /* Fara astea, pagina de 404 iesea cu `--mc:###main_color###`, adica o declaratie CSS invalida: browserul arunca variabila, iar tot ce foloseste var(--mc) ramanea fara culoarea de brand. */ /* sexlab tine culoarea in $main_color (din /www/config_personalizat.php), naturo si denysa in $config['main_color']. Acceptam ambele forme, ca functia sa fie identica pe toate trei site-urile. */ $_mc = isset($main_color) ? $main_color : (isset($config['main_color']) ? $config['main_color'] : ''); $template = str_replace('###main_color###', $_mc, $template); $template = str_replace('###logo_alt_1###', ucwords($config['domeniu_magazin']), $template); $template = str_replace('###logo_alt_2###', ucwords($config['domeniu_magazin']), $template); $template = str_replace('###cost_livrare_header###', '', $template); $template = str_replace('###description###', '', $template); $template = str_replace('###keywords###', '', $template); $template = str_replace('###breadcrumb_snippet###', '', $template); $template = str_replace('###og###', '', $template); $template = str_replace('###orase_links###', '', $template); $template = str_replace('###link_tags###', '', $template); $template = str_replace('###info_nou_veniti###', '', $template); $template = str_replace('###mesaj_universal###', '', $template); $template = str_replace('###cart_link###', '/cart/', $template); $template = str_replace('###cart_no_items###', '0', $template); $template = str_replace('###cart_no_items2###', '0', $template); $template = str_replace('###cart_total_price###', '0', $template); $template = str_replace('###year###', date('Y'), $template); $template = str_replace('###title###', 'Aceasta pagina nu poate fi afisata', $template); ob_start(); include_once($config['path']['pages'] . '404.php'); $content = ob_get_clean(); $template = str_replace('###content###', $content, $template); if (e_bot_google_bot()) { $menu_dir = 'google/'; if (e_mobile()) { $template = str_replace('###main_menu###', '', $template); $template = str_replace('###vertical_menu_list###', '', $template); } else { $template = str_replace('###new_vertical_menu_list###', '', $template); } } else { $menu_dir = 'visitors/'; } $template = baga_meniurile_pentru_categorie(0, $menu_dir, $template); echo $template; } /* Etapa 2b: includes/products.php vine acum de la denysa si nu le mai defineste local, deci versiunile denysa devin cele in vigoare. */ function egalitate_filtru($filtru, $valoare_cautata, $valoare_master) { global $matrice_masuri; if ($filtru == 'pret') { $valoare_master = explode('-', $valoare_master); if ($valoare_cautata > $valoare_master[0] AND isset($valoare_master[1]) AND $valoare_cautata <= $valoare_master[1]) { return TRUE; } else { return FALSE; } } if (filtru_este_interval_numeric($filtru)) { return filtru_intervale_se_intersecteaza($valoare_cautata, $valoare_master); } if ($filtru == 'material') { return in_array($valoare_master, filtru_material_din_produs($valoare_cautata)); } if (in_array($filtru, Array('power', 'control'))) { return in_array($valoare_master, filtru_categoric_special_din_produs($filtru, $valoare_cautata)); } if ($filtru == 'waterproof') { return strval($valoare_cautata) === strval($valoare_master); } if ($filtru == 'marime') { if (isset($matrice_masuri[$valoare_master]) AND in_array($valoare_cautata, $matrice_masuri[$valoare_master])) return TRUE; } if ($valoare_cautata == $valoare_master) return TRUE; // toleranta la diacritice si majuscule: valorile din URL vin adesea fara // diacritice (feed-ul Google Ads, useri), iar colatia DB oricum le // echivaleaza - comparatia PHP trebuie sa faca la fel ("Rosu" == "Roșu") if (strtolower(replaceDiacritice(strval($valoare_cautata))) == strtolower(replaceDiacritice(strval($valoare_master)))) return TRUE; return FALSE; } function make_filters($filters, $url_vars) { global $campuri_filtre; $campuri_filtre2 = filtru_campuri_pentru_categorie($url_vars['catid']); //if ($_SERVER['REMOTE_ADDR'] != '86.123.185.101') return ''; $str_out = '
    '; $nr = 0; //calculam nr de coloane foreach($campuri_filtre2 AS $cf) { if (isset($filters[$cf])) $nr++; } if (!$nr) return ''; $nr = max(2, ceil(12 / ($nr + 1))); $filtre_selectate = 0; $campuri_selectate = Array(); foreach($campuri_filtre2 AS $cf) { if (filtru_url_var_setata($url_vars, $cf)) { $filtre_selectate++; $campuri_selectate[$cf] = filtru_url_value_to_filter_value($cf, $url_vars[$cf]); // URL-urile pot veni fara diacritice (ex. feed-ul Google Ads trimite // /culoare/Rosu/ desi valoarea reala e "Roșu"); canonicalizam la // valoarea-master din filtre, altfel comparatiile pe bytes de mai jos // pica si dropdown-urile raman goale / neselectate if (isset($filters[$cf]) AND is_array($filters[$cf]) AND !isset($filters[$cf][$campuri_selectate[$cf]])) { $valoare_cautata_fd = strtolower(replaceDiacritice($campuri_selectate[$cf])); foreach($filters[$cf] AS $valoare_master_fd => $nvm_fd) { if (strtolower(replaceDiacritice($valoare_master_fd)) == $valoare_cautata_fd) { $campuri_selectate[$cf] = $valoare_master_fd; break; } } } } } // Filtrele active, afisate ca etichete cu ✕ pentru eliminare dintr-un tap if ($filtre_selectate) { $str_chips = ''; foreach($campuri_selectate AS $cf => $valoare) { $url_fara = '/products/catid/'.$url_vars['catid']; foreach($campuri_filtre2 AS $cf2) { if ($cf2 == $cf) continue; if (filtru_url_var_setata($url_vars, $cf2)) $url_fara .= '/'.$cf2.'/'.$url_vars[$cf2]; } if (isset($url_vars['order']) AND $url_vars['order']) $url_fara .= '/order/'.$url_vars['order']; $url_fara .= '/'; $eticheta_chip = filtru_label_optiune($cf, $valoare) . filtru_suffix_optiune($cf); if (filtru_chip_are_prefix($cf)) $eticheta_chip = filtru_label_select($cf) . ': ' . $eticheta_chip; $str_chips .= ''.$eticheta_chip.' ×'; } $str_out .= '
    '.$str_chips.'
    '; } $coloane = Array(); foreach($campuri_filtre2 AS $cf) { $ucf = ucwords($cf); if (isset($filters[$cf])) { $nr_optiuni = 0; $str_out2 = ''; $str_out2 .= ''; if ($nr_optiuni) $coloane[] = $str_out2; } } // Pe mobil aratam primele 4 filtre, restul intra sub "Mai multe filtre" $i_col = 0; foreach($coloane AS $col) { $str_out .= '
    '.$col.'
    '; $i_col++; } if (count($coloane) > 4) { $str_out .= '
    '; } $str_out .= '
    ###sort_inline###
    '; $str_out .= '
    '; $str_out .= ''; return $str_out; } ?>