taula.'_'.($n->lang == 1 ? 'fk' : 'id').' AS id, '.$n->taula.'_mr AS mr FROM '.$n->taula.($n->lang == 1 ? '_lang' : '').' WHERE '; if ($n->lang == 1) { $sql .= $n->taula.'_fk="'.$n->id.'" AND '.$n->taula.'_lang_fk="'.$lang.'"'; } else { $sql .= $n->taula.'_id="'.$n->id.'"'; } if ($n->actiu == 1) { $sql .= ' AND '.$n->taula.'_actiu=1 '; } $db->ExecQuery($sql); if ($row = $db->Fetch()) { $new_mr .= $row->mr; if (in_array($n->taula, array('activitat', 'excursio', 'experiencia'))) { $new_mr .= '-'.$row->id; } $new_mr .= '/'; } else { $new_mr = ''; break; } } if (!empty($new_mr)) { $_SESSION['navega'] = array(); header('Location: '.$new_mr); exit(); } } $_SESSION['lang'] = $lang; $_SESSION['navega'] = array(); //Recuperar paràmetres $param = new stdClass(); $db->ExecQuery('SELECT parametre_id AS id, parametre_valor AS valor FROM parametre'); while ($row = $db->Fetch()) { $param->{$row->id} = $row->valor; } // Recuperar wishlist $wishlist = array(); if (!empty($_COOKIE[WISHLIST_COOKIE_NAME])) { try { $wishlist = json_decode(base64_decode($_COOKIE[WISHLIST_COOKIE_NAME]), true); } catch (Exception $e) { $wishlist = array(); } } $ruta = new Navega(); $ruta->addLink($mr, __('Inici')); /*if(isset($_GET['beta'])||($_SESSION['beta']==1)){ $_SESSION['beta']=1; }else{ exit(); }*/ $mr = ''; $mod_fitxer = 'mod_generic.php'; //MR personalitzat $i = 0; $trobat = 0; if (!empty($_GET['p1']) && empty($_GET['p2'])) { $sql = " SELECT CONCAT_WS( '/', apartat_mr, categoria_mr, municipi_mr, IF(recurs_mdrw != '', recurs_mdrw, recurs_mr) ) AS mr FROM recurs INNER JOIN recurs_lang ON recurs_fk = recurs_id AND recurs_lang_fk = '{$lang}' AND recurs_actiu = 1 INNER JOIN apartat ON apartat_mod = 'mod_recurs.php' INNER JOIN apartat_lang ON apartat_fk = apartat_id AND apartat_lang_fk = '{$lang}' AND apartat_actiu = 1 INNER JOIN recurs_categoria ON recurs_categoria_recurs_fk = recurs_id AND recurs_categoria_ordre = 1 INNER JOIN categoria ON categoria_id = recurs_categoria_categoria_fk INNER JOIN categoria_lang ON categoria_fk = categoria_id AND categoria_lang_fk = '{$lang}' AND categoria_actiu = 1 LEFT JOIN municipi_recurs ON municipi_recurs_recurs_fk = recurs_id LEFT JOIN municipi ON municipi_recurs_municipi_fk = municipi_id LEFT JOIN municipi_lang ON municipi_fk = municipi_id AND municipi_lang_fk = '{$lang}' AND municipi_actiu = 1 WHERE IF(recurs_mdrw != '', recurs_mdrw, recurs_mr) = '".$db->Escape($_GET['p1'])."' GROUP BY recurs_id "; $db->ExecQuery($sql); if ($recurs = $db->Fetch()) { header('Location: /'.$recurs->mr.'/'); exit(); } $sql = 'SELECT *, apartat_id AS id, apartat_apartat_fk AS fk, apartat_mod AS modul, apartat_fitxer AS fitxer, apartat_actiu AS actiu, apartat_menu AS menu, apartat_nom AS nom, apartat_mr AS mr, apartat_llista AS llista, apartat_text AS text, apartat_nota AS nota, apartat_resum AS resum, apartat_redireccio_fk AS redireccio_fk, apartat_experiencia_fk AS experiencia_fk, apartat_municipi_fk AS municipi_fk, apartat_formulari_fk AS formulari_fk, apartat_formulari_desti AS formulari_email, apartat_categoria_fk AS categoria_fk, apartat_title AS title, apartat_keywords AS keywords, apartat_description AS description, apartat_embed AS embed, apartat_embed_x AS embed_x, apartat_embed_y AS embed_y, apartat_amplada_completa as amplada_completa, apartat_contingut_fluid as contingut_fluid, apartat_top, GROUP_CONCAT(apartat_rol_rol_fk) AS rols, GROUP_CONCAT(rol_nom) AS rols_nom FROM apartat INNER JOIN apartat_lang ON apartat_fk=apartat_id AND apartat_lang_fk=\''.$lang.'\' AND apartat_actiu=1 LEFT JOIN apartat_rol ON apartat_rol_apartat_fk=apartat_id LEFT JOIN rol ON rol_id=apartat_rol_rol_fk WHERE apartat_mdrw=\''.$_GET['p1'].'\' GROUP BY apartat_id'; $db->ExecQuery($sql); if ($apartat = $db->Fetch()) { $i++; $historic[$i] = $apartat; if (!empty($apartat->modul)) { $mod_fitxer = $apartat->modul; } if (!empty($apartat->fitxer)) { $apt_fitxer = $apartat->fitxer; } if (!empty($apartat->title)) { $title = $apartat->title; } else { $title = $apartat->nom; } if ($apartat->menu != 'U') { $titol = $title; } if (!empty($apartat->nom)) { $nom = $apartat->nom; } if (!empty($apartat->keywords)) { $keywords = $apartat->keywords; } if (!empty($apartat->description)) { $description = $apartat->description; } $arbreApartatsActual = array(); $apartatArbre = apartat($apartat->id, 0); if (!empty($apartatArbre)) { $mr = $apartatArbre->mr.'/'; while (!empty($apartatArbre)) { array_unshift($arbreApartatsActual, $apartatArbre); $apartatArbre = !empty($apartatArbre->fk) ? apartat($apartatArbre->fk, 0) : null; } foreach ($arbreApartatsActual as $apartatArbre) { $ruta->addLink($apartatArbre->mr.'/', $apartatArbre->nom); $_SESSION['navega'][] = array( 'taula' => 'apartat', 'id' => $apartatArbre->id, 'lang' => 1, 'actiu' => 1, ); } } $trobat = 1; if (!empty($_SESSION['user'])) { $user_rols = explode(',', $_SESSION['user']['rols']); } } } if ($trobat == 0) { while (!empty($_GET['p'.($i + 1)]) || empty($_GET['p1'])) { $i++; if (empty($_GET['p1'])) { $where = " AND apartat_mod='mod_inici.php'"; } else { $where = ' AND apartat_mr=\''.$_GET['p'.$i].'\''; } if ($i > 1) { $where .= ' AND apartat_apartat_fk='.$apartat->apartat_id; } $where_rols = ''; if (!empty($_SESSION['user'])) { // $where_rols=' AND (apartat_rol_rol_fk IN ('.$_SESSION['user']['rols'].') OR apartat_rol_apartat_fk IS NULL)'; $user_rols = explode(',', $_SESSION['user']['rols']); } else { //$where_rols=' AND apartat_rol_apartat_fk IS NULL'; $where_rols = ''; } $sql = 'SELECT *, apartat_id AS id, apartat_apartat_fk AS fk, apartat_mod AS modul, apartat_fitxer AS fitxer, apartat_actiu AS actiu, apartat_menu AS menu, apartat_nom AS nom, apartat_mr AS mr, apartat_llista AS llista, apartat_text AS text, apartat_nota AS nota, apartat_resum AS resum, apartat_redireccio_fk AS redireccio_fk, apartat_experiencia_fk AS experiencia_fk, apartat_municipi_fk AS municipi_fk, apartat_formulari_fk AS formulari_fk, apartat_formulari_desti AS formulari_email, apartat_categoria_fk AS categoria_fk, apartat_title AS title, apartat_keywords AS keywords, apartat_description AS description, apartat_embed AS embed, apartat_embed_x AS embed_x, apartat_embed_y AS embed_y, apartat_amplada_completa as amplada_completa, apartat_contingut_fluid as contingut_fluid, apartat_top, GROUP_CONCAT(apartat_rol_rol_fk) AS rols, GROUP_CONCAT(rol_nom) AS rols_nom FROM apartat LEFT JOIN apartat_lang ON apartat_fk=apartat_id AND apartat_lang_fk=\''.$lang.'\' AND apartat_actiu=1 LEFT JOIN apartat_rol ON apartat_rol_apartat_fk=apartat_id LEFT JOIN rol ON rol_id=apartat_rol_rol_fk WHERE apartat_lang_fk=\''.$lang.'\' '.$where.$where_rols.' GROUP BY apartat_id'; $db->ExecQuery($sql); if ($db->num_resultats() == 0) { $i--; $apt_fitxer = ''; break; } else { $apartat = $db->Fetch(); $historic[$i] = $apartat; if (!empty($apartat->modul)) { $mod_fitxer = $apartat->modul; } if (!empty($apartat->fitxer)) { $apt_fitxer = $apartat->fitxer; } if (!empty($apartat->title)) { $title = $apartat->title; } else { $title = $apartat->nom; } if ($apartat->menu != 'U') { $titol = $title; } if (!empty($apartat->nom)) { $nom = $apartat->nom; } if (!empty($apartat->keywords)) { $keywords = $apartat->keywords; } if (!empty($apartat->description)) { $description = $apartat->description; } $mr .= $apartat->mr.'/'; $ruta->addLink($mr, $apartat->nom); $_SESSION['navega'][] = array( 'taula' => 'apartat', 'id' => $apartat->id, 'lang' => 1, 'actiu' => 1, ); } //Si és portada només entra una vegada if (empty($_GET['p1'])) { break; } } } /*if(empty($apartat)){ $mod_fitxer='mod_recurs.php'; }*/ //Redirecció a un altre apartat o experiència o municipi. if (!empty($apartat->redireccio_fk)) { $new_mr = apartat($apartat->redireccio_fk); header('Location: /'.$new_mr); exit(); } elseif (!empty($apartat->experiencia_fk)) { $redireccio = 'experiencia'; $vredireccio = $apartat->experiencia_fk; } elseif (!empty($apartat->municipi_fk)) { $redireccio = 'municipi'; $vredireccio = $apartat->municipi_fk; } if (!empty($redireccio)) { $sql = "SELECT {$redireccio}_id AS id, CONCAT_WS('/', apartat_mr, {$redireccio}_mr) AS mr FROM {$redireccio} INNER JOIN {$redireccio}_lang ON {$redireccio}_fk={$redireccio}_id AND {$redireccio}_lang_fk='{$lang}' INNER JOIN apartat ON apartat_mod='mod_{$redireccio}.php' INNER JOIN apartat_lang ON apartat_fk=apartat_id AND apartat_lang_fk='{$lang}' AND apartat_actiu=1 WHERE {$redireccio}_fk={$vredireccio} AND {$redireccio}_lang_fk='{$lang}' AND {$redireccio}_actiu=1"; $db->ExecQuery($sql); if ($row = $db->Fetch()) { $new_mr = $row->mr; if ($redireccio === 'experiencia') { $new_mr .= '-'.$row->id; } header('Location: /'.$new_mr.'/'); exit(); } } // Imatges per defecte $sql = ' SELECT adjunt_tipus AS tipus, adjunt_fitxer AS fitxer, adjunt_lang.adjunt_text FROM adjunt INNER JOIN adjunt_lang ON adjunt_fk=adjunt_id AND adjunt_lang_fk="'.$lang.'" AND adjunt_lang.adjunt_actiu=1 WHERE adjunt_web_fk = 1 AND adjunt_format = "F" '; $db->ExecQuery($sql); $imgDefecte = array(); while ($row = $db->Fetch()) { $imgDefecte[$row->tipus] = $row->fitxer; $imgDefecte[$row->tipus."_text"] = $row->adjunt_text; } if (!empty($apartat->id)) { $sql = "SELECT adjunt_fitxer AS fitxer, adjunt_tipus AS tipus, adjunt_format AS format, adjunt_extensio AS extensio, adjunt_lang.adjunt_text AS text FROM adjunt INNER JOIN adjunt_lang ON adjunt_fk=adjunt_id AND adjunt_lang_fk='{$lang}' AND adjunt_lang.adjunt_actiu=1 WHERE adjunt_apartat_fk={$apartat->id} AND adjunt_format IN ('F','L','D') AND adjunt_tipus IN ('generic','youtube','vimeo', 'enllac') ORDER BY adjunt_ordre"; $db->ExecQuery($sql); $adjunts = array(); while ($doc = $db->Fetch()) { if (!empty($doc->fitxer)) { $adjunts[$doc->format][$doc->tipus][] = array("fitxer" => $doc->fitxer, "text" => $doc->text, "extensio" => $doc->extensio); if ($doc->format == 'F') { $fb_images[] = SCHEME.'://'.$_SERVER['SERVER_NAME'].'/img-apartat-1200-630/'.$doc->fitxer; } } } } //Faig la select que em retorna l'imatge de background del body $sql = "SELECT adjunt_fitxer AS foto, CASE adjunt_apartat_fk WHEN a1.apartat_id THEN '0' WHEN a2.apartat_id THEN '1' WHEN a3.apartat_id THEN '2' WHEN a4.apartat_id THEN '3' END AS nivell FROM adjunt INNER JOIN adjunt_lang ON adjunt_fk=adjunt_id AND adjunt_lang_fk='{$lang}' AND adjunt_lang.adjunt_actiu=1 LEFT JOIN apartat AS a1 ON a1.apartat_id={$apartat->id} LEFT JOIN apartat AS a2 ON a2.apartat_id=a1.apartat_apartat_fk LEFT JOIN apartat AS a3 ON a3.apartat_id=a2.apartat_apartat_fk LEFT JOIN apartat AS a4 ON a4.apartat_fitxer='apt_inici.php' WHERE adjunt_taula='apartat' AND adjunt_format = 'F' AND adjunt_tipus='fons' AND adjunt_apartat_fk IN(a1.apartat_id, a2.apartat_id, a3.apartat_id, a4.apartat_id) ORDER BY nivell ASC, RAND()"; $res = $db->ExecQuery($sql); if ($bkg = $db->Fetch($res)) { $background_image = '/qimg-apartat-0-0/'.$bkg->foto; $fb_images[] = SCHEME.'://'.$_SERVER['SERVER_NAME'].'/img-apartat-1200-630/'.$bkg->foto; } if (empty($background_image)) { //$background_image='img/img_bkg-body.jpg'; $background_image = '/qimg-web-0-0/'.$imgDefecte['bkg_large']; } //COmprovem que l'usuari realment pugui accedir a l'apartat if (!empty($apartat->rols)) { $pot_accedir = false; $apartat_rols = explode(',', $apartat->rols); foreach ($apartat_rols AS $key => $rol) { if (in_array($rol, $user_rols)) { $pot_accedir = true; break; } } if (!$pot_accedir) { $mod_fitxer = 'mod_login.php'; } } //Comprovar que estem loguejats quan intentem entrar a un apartat de l'Àrea interna if ($apartat->menu == 'U' && empty($_SESSION['user'])) { $mod_fitxer = 'mod_login.php'; } // AMP $isAmpPage = $_GET['amphtml'] === '1'; require_once 'vendor/mobiledetect/mobiledetectlib/Mobile_Detect.php'; $detect = new Mobile_Detect(); if ($detect->isMobile() && !$isAmpPage){ $isAmpPage = true; } // Links $linkCanonical = null; $linkAmpHtml = null; // Menu $sql = ' SELECT *, apartat_id AS id, apartat_nom AS nom, apartat_menu AS menu, apartat_mr AS mr, apartat_url AS url, apartat_redireccio_fk AS redireccio_fk, adjunt_fitxer AS foto FROM apartat INNER JOIN apartat_lang ON apartat_fk = apartat_id AND apartat_lang_fk = "'.$lang.'" AND apartat_actiu = 1 LEFT JOIN adjunt ON adjunt_apartat_fk = apartat_id AND adjunt_tipus = "icona" AND adjunt_format = "F" LEFT JOIN adjunt_lang ON adjunt_lang.adjunt_fk = adjunt_id AND adjunt_lang.adjunt_lang_fk = "'.$lang.'" AND adjunt_lang.adjunt_actiu = 1 WHERE apartat_apartat_fk IS NULL GROUP BY apartat_id ORDER BY apartat_ordre ASC '; $mysqlResult = $db->ExecQuery($sql); $menu = array(); while ($row = $db->Fetch($mysqlResult, 'ASSOC')) { if (!empty($row['url'])) { $url = trueUrl($row['url']); $target = ' target="_blank"'; } else { $url = $row['mr'].'/'; $target = ''; } $menu[$row['menu']][$row['id']] = array( 'nom' => $row['nom'], 'url' => $url, 'target' => $target, 'redireccio' => $row['redireccio_fk'], 'icona' => $row['foto'], ); } // Xarxes socials $sql = ' SELECT social_nom AS nom, social_url AS url, adjunt_fitxer AS icona FROM social INNER JOIN social_lang ON social_fk = social_id AND social_lang_fk = "'.$lang.'" AND social_actiu = 1 INNER JOIN adjunt ON adjunt_social_fk = social_id ORDER BY social_ordre '; $mysqlResult = $db->ExecQuery($sql); $xarxesSocials = array(); while ($row = $db->Fetch($mysqlResult, 'ASSOC')) { $row['link'] = !empty($row['url']) ? trueUrl($row['url']) : ''; $xarxesSocials[] = $row; } //Per defecte la plantilla és plantilla.php sinó la cambien en el mod. $plantilla = 'plantilla.php'; if (!empty($mod_fitxer)) { include $mod_fitxer; } if (empty($apartat) AND empty($recurs)) { header("HTTP/1.0 404 Not Found"); header("Status: 404 Not Found"); $apt_fitxer = 'apt_404.php'; } ob_start(); //Per saber si vinc d'una llista de recursos al plantilla.php $_SESSION['llistat_recursos'][] = empty($apartat->categoria_fk) ? 0 : 1; //recuperar l'apartat del newsletter $id_newsletter = 431; $newsletter_obj = getApartatIdiomaByIdApartat($id_newsletter); if (IS_INTERACTIU && '1' === $_REQUEST['debug']) { echo "Plantila:{$plantilla} :: Controller:{$mod_fitxer} :: Template:{$apt_fitxer}"; } include $plantilla; ob_end_flush(); $db->close();