GlisWeb framework
_400.rewrite.php
Vai alla documentazione di questo file.
1 <?php
2 
58  // debug
59  // print_r( $cf['localization']['language'] );
60  // print_r( $cf['contents']['shortcuts'] );
61  // var_dump( $_SERVER['REQUEST_URI'] );
62 
63  // default
64  $parent = NULL;
65  $page = NULL;
66  $lingua = $cf['localization']['language']['ietf'];
67 
68  // TODO perché si parte dalla pagina NULL? il default dovrebbe essere la 404, se uno cerca una
69  // pagina che non esiste è corretto che approdi sulla pagina "non trovato"; oppure vogliamo rendere
70  // la pagina NULL "non trovato"?
71 
72  // test della pagina
73  if( isset( $_REQUEST['p'] ) && ! empty( isset( $_REQUEST['p'] ) ) ) {
74  $_REQUEST['__pg__'] = $_REQUEST['p'];
75  }
76 
77  // verifico se la pagina corrente è indicata esplicitamente tramite $_REQUEST['__pg__']
78  if( empty( $_REQUEST['__pg__'] ) ) {
79 /*
80  NOTA
81  // verifico se la pagina corrente è un 301
82  if( isset( $cf['contents']['301'] ) && array_key_exists( strtok( $_SERVER['REQUEST_URI'], '?' ), $cf['contents']['301'] ) ) {
83 
84  // TODO o questo è un inutile duplicato di quello che succede in 340/345.redirect.php OPPURE facciamo in modo che
85  // il CMS tenga traccia di tutte le modifiche agli URL delle pagine e faccia da solo i redirect 301
86 
87  // NOTA se lo facciamo aggiornando il file 301.csv ci risparmiamo di fare qui questa logica e sfruttiamo quello
88  // che già viene fatto in 340/345
89 
90  // se la pagina corrente è un 301
91  // $page = $cf['contents']['301'][ $_SERVER['REQUEST_URI'] ];
92  $page = $cf['contents']['301'][ strtok( $_SERVER['REQUEST_URI'], '?' ) ];
93 
94  // assegno l'header 301 alla pagina
95  $cf['contents']['pages'][ $page ]['headers'] = array(
96  'HTTP/1.1 301 Moved Permanently',
97  'Location: ' . $cf['contents']['pages'][ $page ]['url'][ $lingua ] . ( ( strpos( $_SERVER['REQUEST_URI'], '?' ) !== false ) ? substr( $_SERVER['REQUEST_URI'], strpos( $_SERVER['REQUEST_URI'], '?' ) ) : NULL )
98  );
99 
100  // log
101  logWrite( 'pagina permanentemente spostata (301): ' . $page , 'rewrite' , LOG_DEBUG );
102 
103  // verifico se la pagina corrente è una shortcut
104  } elseif( ! array_key_exists( $_SERVER['REQUEST_URI'], $cf['contents']['shortcuts'] ) ) {
105 */
106  if( ! array_key_exists( strtok( $_SERVER['REQUEST_URI'], '?' ), $cf['contents']['shortcuts'] ) ) {
107 
108  // verifico che la pagina corrente non sia già settata
109  if( empty( $cf['contents']['page'] ) && ! empty( $_SERVER['REDIRECT_URL'] ) ) {
110 
111  // controllo che la lingua sia settata
112  if( ! empty( $lingua ) ) {
113 
114  // log
115  logWrite( 'parsing di: ' . $_SERVER['REDIRECT_URL'], 'rewrite' , LOG_DEBUG );
116 
117  // verifico se l'URL contiene dei nomi di pagina
118  if( isset( $_REQUEST['__rp__'] ) && is_array( $_REQUEST['__rp__'] ) && count( $_REQUEST['__rp__'] ) > 0 ) {
119 
120  // pulisco l'array degli step dalle cartelle del path base
121  $_REQUEST['__rp__'] = array_diff( $_REQUEST['__rp__'], explode( '/', $cf['site']['root'] ) );
122 
123  // scorro gli elementi pagina trovati nell'URL
124  foreach( $_REQUEST['__rp__'] as $step ) {
125 
126  // se la pagina non viene trovata, devo restituire un errore 404
127  // TODO questa cosa non è implementata
128  $page = NULL;
129 
130  // log
131  logWrite( 'cerco: ' . $step, 'rewrite' , LOG_DEBUG );
132 
133  // verifico se l'elemento corrente è presente nell'indice delle pagine rewritate
134  if( array_key_exists( $step, $cf['contents']['index'][ $lingua ] ) ) {
135 
136  // esamino le pagine presenti nell'indice per vedere se ce n'e' una che ha lo stesso genitore di quella corrente
137  foreach( $cf['contents']['index'][ $lingua ][ $step ] as $candidate ) {
138 
139  // se la pagina attualmente controllata ha lo stesso id genitore della pagina step, allora e' lei
140  if( $cf['contents']['pages'][ $candidate ]['parent']['id'] == $parent ) {
141 
142  // la pagina trovata diventa la nuova pagina corrente
143  $page = $candidate;
144 
145  // scendo di un livello nell'analisi dell'albero: la pagina trovata diventa il nuovo genitore
146  $parent = $candidate;
147 
148  }
149 
150  }
151 
152  } else {
153 
154  // log
155  logWrite( $step . ' non trovato in contents/index/'.$lingua, 'rewrite' , LOG_DEBUG );
156 
157  }
158 
159  }
160 
161  } else {
162 
163  // se non è stata trovata alcuna pagina, torno a NULL
164  $page = NULL;
165 
166  // log
167  logWrite( 'nessuna pagina ricavata da URL' , 'rewrite' , LOG_DEBUG );
168 
169  }
170 
171  } else {
172 
173  // se non è stata trovata alcuna pagina, torno a NULL
174  $page = NULL;
175 
176  // log
177  logWrite( 'impossibile fare il parsing di URL senza lingua impostata' , 'rewrite' , LOG_DEBUG );
178 
179  }
180 
181  } elseif( in_array( $cf['site']['home'], array_keys( $cf['contents']['pages'] ) ) ) {
182 
183  // se non è stata richiesta nessuna pagina in particolare, allora vuol dire che sono nella home page
184  $page = $cf['site']['home'];
185 
186  // log
187  logWrite( 'accesso implicito alla home page' , 'rewrite' , LOG_DEBUG );
188 
189  } else {
190 
191  // se non è stata trovata alcuna pagina, torno a NULL
192  // TODO vedi sopra per il discorso NULL/404
193  $page = NULL;
194 
195  // log
196  logWrite( 'nessuna pagina trovata' , 'rewrite' , LOG_DEBUG );
197 
198  }
199 
200  } else {
201 
202  // se la pagina corrente è una shortcut
203  $page = $cf['contents']['shortcuts'][ strtok( $_SERVER['REQUEST_URI'], '?' ) ];
204 
205  // log
206  logWrite( 'pagina richiesta tramite shortcut: ' . $page , 'rewrite' , LOG_DEBUG );
207 
208  }
209 
210  } else {
211 
212  // se e' stata richiesta espressamente una pagina, utilizzo quella
213  $page = $_REQUEST['__pg__'];
214 
215  // log
216  logWrite( 'pagina richiesta esplicitamente: ' . $page , 'rewrite' , LOG_DEBUG );
217 
218  }
219 
220  // debug
221  // print_r( $cf['contents']['index'] );
222 
223 ?>
$lingua
logWrite( $m, $f='site', $l=LOG_NOTICE, $d=DIRECTORY_LOG, $t=CURRENT_LOG_LEVEL, $s=SITE_STATUS)
scrive un messaggio nei log del sito
Definition: _log.utils.php:48
$cf['ricerca']['template']
Definition: _030.common.php:7
$page
if(! isset( $_REQUEST['__view__'][ $ct['view']['id']]['__extra__']['assegnato'])|| $_REQUEST['__view__'][ $ct['view']['id']]['__extra__']['assegnato']=='__me__') elseif($_REQUEST[ '__view__'][$ct[ 'view'][ 'id']][ '__extra__'][ 'assegnato']=='__nessuno__')
$parent
$_REQUEST['__view__'][ $ct['view']['id']]['__restrict__']['id_progetto']['EQ']