GlisWeb framework
_015.site.php
Vai alla documentazione di questo file.
1 <?php
2 
63  // multisito di default
64  if( ! defined( 'DEFAULT_SITE' ) ) {
65  define( 'DEFAULT_SITE' , 1 );
66  }
67 
68  // configurazione extra
69  if( isset( $cx['sites'] ) ) {
70  $cf['sites'] = array_replace_recursive( $cf['sites'], $cx['sites'] );
71  }
72 
73  // cerco di ricavare il sito corrente dal dominio
74  foreach( $cf['sites'] as $id => $site ) {
75 
76  // ciclo sulle lingue del sito
77  // TODO
78 
79  // ciclo sugli stati del sito
80  // TODO modificare in base a quanto sopra
81  foreach( $site['domains'] as $status => $domain ) {
82 
83  // se c'è un dominio per questo status
84  if( ! empty( $domain ) ) {
85 
86  // debug
87  // echo $id . '->';
88  // echo $status . '->' . $domain . PHP_EOL;
89  // echo $domain .' -> ' . $_SERVER['HTTP_HOST'] . PHP_EOL;
90 
91  // inizializzazioni
92  $hosts = $domains = array();
93 
94  // per lo stato corrente, verifico se c'è un host specificato
95  if( isset( $site['hosts'][ $status ] ) ) {
96  $hosts[] = $site['hosts'][ $status ];
97 #L $hosts[] = $site['hosts'][ $status ][ $language ];
98  }
99 
100  // per lo stato corrente, verifico se ci sono degli alias di host
101  if( isset( $site['alias']['hosts'][ $status ] ) ) {
102  $hosts = array_merge( $hosts, $site['alias']['hosts'][ $status ] );
103 #L $hosts = array_merge( $hosts, $site['alias']['hosts'][ $status ][ $language ] );
104  }
105 
106  // per lo stato corrente, aggiungo il domain
107  $domains[] = $site['domains'][ $status ];
108 #L $domains[] = $site['domains'][ $status ][ $language ];
109 
110  // per lo stato corrente, verifico se ci sono degli alias di domain
111  if( isset( $site['alias']['domains'][ $status ] ) ) {
112  $domains = array_merge( $domains, $site['alias']['domains'][ $status ] );
113 #L $domains = array_merge( $domains, $site['alias']['domains'][ $status ][ $language ] );
114  }
115 
116  // numeratore host in base a www
117  if( in_array( 'www', $hosts ) ) {
118  $numerator = '{0,1}';
119  } else {
120  $numerator = '{1}';
121  }
122 
123  // composizione dell'espressione regolare
124  $regex = '/^(?:' . implode( '|', $hosts ) . ')' . $numerator . '(?:\.)*(' . str_replace( '.', '\.', implode( '|', $domains ) ) . '){1}/';
125 
126  // debug
127  // echo $regex .' -> ' . $_SERVER['HTTP_HOST'] . PHP_EOL;
128 
129  // espressione regolare
130  if( preg_match( $regex, $_SERVER['HTTP_HOST'] ) === 1 ) {
131  if( ! defined( 'CURRENT_SITE' ) ) {
132  // echo 'MATCH (' . $status . ') -> ' . $_SERVER['HTTP_HOST'] . PHP_EOL;
133  define( 'CURRENT_SITE', $id );
134  $cStatus = $status;
135 #L $cLanguage = $language;
136  }
137  }
138 
139  }
140 
141  }
142 
143 # } // fine ciclo sulle lingue
144 
145  }
146 
147  // multisito corrente
148  if( ! defined( 'CURRENT_SITE' ) ) {
149  define( 'CURRENT_SITE' , DEFAULT_SITE );
150  }
151 
152  // link al sito corrente
153  $cf['site'] = &$cf['sites'][ CURRENT_SITE ];
154 
155  // status del sito
156  if( isset( $cStatus ) ) {
157  $cf['site']['status'] = $cStatus;
158  } elseif( file_exists( DIRECTORY_BASE . 'etc/status.conf' ) ) {
159  $cf['site']['status'] = trim( file_get_contents( DIRECTORY_BASE . 'etc/status.conf' ) );
160  } else {
161  $cf['site']['status'] = TESTING;
162  }
163 
164  // lingua del sito
165  // TODO correggere $cLanguage in base alla lingua richiesta dal browser? nel caso usare parseHttpRequestedLanguage()
166 #L $_REQUEST['__lg__'] = $cLanguage;
167 
168  // configurazione extra
169  if( isset( $cx['site'] ) ) {
170  $cf['site'] = array_replace_recursive( $cf['site'], $cx['site'] );
171  }
172 
173  // licenza commerciale
174  if( file_exists( DIRECTORY_BASE . 'etc/license.conf' ) ) {
175  $cf['site']['license'] = trim( readFromFile( DIRECTORY_BASE . 'etc/license.conf', READ_FILE_AS_STRING ) );
176  } else {
177  $cf['site']['license'] = NULL;
178  }
179 
180  // status del sito
181  define( 'SITE_STATUS' , $cf['site']['status'] );
182 
183  // debug
184  // die( 'host: ' . $_SERVER['HTTP_HOST'] );
185  // print_r( $cf['site'] );
186 
187 ?>
const READ_FILE_AS_STRING
const TESTING
Definition: _000.debug.php:60
const DIRECTORY_BASE
Definition: _osm.php:3
readFromFile( $f, $m=READ_FILE_AS_ARRAY)
legge il contenuto di un file in una stringa o in un array di stringhe
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__')
if(! defined( 'DEFAULT_SITE')) if(isset( $cx['sites'])) foreach( $cf['sites'] as $id=> $site) if(! defined( 'CURRENT_SITE')) $cf['site']
Definition: _015.site.php:153