Example #1
0
function countries()
{
    return Config::countries();
}
Example #2
0
 private static function process_object($data, $parent_name = '', $current_tree = '')
 {
     $fields = array();
     if ($data['name'] == '_versions') {
         $fields['version_id'] = array('type' => 'int', 'length' => 10, 'index' => 'primary');
         $fields['id'] = array('type' => 'int', 'length' => 10, 'index' => 'index');
         if ($parent_name) {
             $fields[$parent_name . '_id'] = array('type' => 'int', 'length' => 10, 'index' => 'index');
         }
     } else {
         $fields['id'] = array('type' => 'int', 'length' => 10, 'index' => 'primary');
         if ($parent_name && !isset($data['child'])) {
             $fields[$parent_name . '_id'] = array('type' => 'int', 'length' => 10, 'index' => 'index');
         }
     }
     if ($data->getName() == 'site') {
         $data = new SimpleXMLElement('<object path="site" name="site" stack="site">' . Config::site_fields() . '</object>');
         $fields['name'] = array('type' => 'varchar', 'length' => 150, 'default' => '');
         $fields['url'] = array('type' => 'varchar', 'length' => 150, 'default' => '');
         $language_codes = array_keys(languages());
         if ($countries = Config::countries()) {
             $language_codes = array_keys($countries);
         }
         if (count($language_codes) > 1) {
             foreach ($language_codes as $code) {
                 $fields['url_' . $code] = array('type' => 'varchar', 'length' => 150, 'default' => '');
             }
         }
         $fields['table_check_date'] = array('type' => 'int', 'length' => 10);
         $fields['routing_check_date'] = array('type' => 'int', 'length' => 10);
         $fields['structure_xml'] = array('type' => 'mediumtext');
         $fields['structure_xml_expanded'] = array('type' => 'mediumtext');
         $fields['routing'] = array('type' => 'text');
         $fields['live'] = array('type' => 'bool', 'default' => '0');
         $fields['piwik_id'] = array('type' => 'varchar', 'length' => 50, 'default' => '');
         $cmsdownloads = $data->addChild('files');
         $cmsdownloads->addAttribute('name', 'downloads');
         $cmsdownloads->addAttribute('sortable', 'true');
         $cmsimages = $data->addChild('images');
         $cmsimages->addAttribute('name', 'images');
         $cmsimages->addAttribute('sortable', 'true');
         $cmsvideos = $data->addChild('object');
         $cmsvideos->addAttribute('name', 'videos');
         $cmsvideos->addAttribute('sortable', 'true');
         $cmsvideo = $cmsvideos->addChild('video');
         $cmsvideo->addAttribute('name', 'video');
     }
     $attributes = $data->attributes();
     $children = $data->children();
     if (!isset($attributes['name'])) {
         return false;
     }
     if (isset($data['sortable']) && $data['sortable']) {
         $fields['_sort_order'] = array('type' => 'int', 'length' => 10, 'index' => 'index');
     }
     if (isset($data['recursive']) && $data['recursive']) {
         $fields['parent_id'] = array('type' => 'int', 'length' => 10, 'index' => 'index');
     }
     foreach ($children as $key => $child) {
         $fields = self::process_field($key, $child, $fields, $data, $current_tree);
     }
     self::modify_table($current_tree . $attributes['name'], $fields, $data);
 }
Example #3
0
 public static function determine_language()
 {
     // If multilanguage, determine current language. Redirect to appropriate language if unable to determine.
     if (count(languages()) > 1) {
         $language_codes = array_keys(languages());
         if ($countries = Config::countries()) {
             $language_codes = array_keys($countries);
         }
         $language_values = languages();
         if ($countries) {
             $language_values = $countries;
         }
         $site = current_site();
         $url_key = 'url_' . reset($language_codes);
         if ($site->{$url_key} && false === stristr($_SERVER['HTTP_HOST'], '.fw4.be')) {
             foreach ($language_codes as $lang) {
                 $url_key = 'url_' . $lang;
                 if ($_SERVER['HTTP_HOST'] == $site->{$url_key}) {
                     if ($countries) {
                         self::set_language($countries[$lang]);
                         self::set_country($lang);
                     } else {
                         self::set_language($lang);
                     }
                     break;
                 }
             }
         } else {
             foreach ($language_codes as $lang) {
                 if (segment(0) == $lang) {
                     if ($countries) {
                         self::set_country(array_shift(self::$segments));
                         self::set_language($countries[country()]);
                     } else {
                         self::set_language(array_shift(self::$segments));
                     }
                     break;
                 }
             }
         }
         if (!language()) {
             if (isset($_COOKIE['language']) && isset($language_values[$_COOKIE['language']])) {
                 $language = $_COOKIE['language'];
             } else {
                 if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && ($negotiated = self::prefered_language($language_codes))) {
                     $language = $negotiated;
                 } else {
                     $language = array_shift($language_codes);
                 }
             }
             if ($countries) {
                 self::set_country($language);
                 self::set_language($countries[$language]);
             } else {
                 self::set_language($language);
             }
             return false;
         }
         if (!isset($_COOKIE['language']) || $_COOKIE['language'] != language_identifier()) {
             setcookie('language', language_identifier(), time() + 60 * 60 * 24 * 30 * 24, '/');
         }
     } else {
         $languages = array_keys(languages());
         self::set_language(array_shift($languages));
         // If single language, define it.
     }
     return true;
 }
Example #4
0
 public static function reload_site()
 {
     $db = FW4_Db::get_instance();
     $site = false;
     if (!$site) {
         try {
             if (count(languages()) > 1) {
                 $query = from('site')->where('url LIKE %s', $_SERVER['HTTP_HOST'] . '%');
                 $language_codes = array_keys(languages());
                 if ($countries = Config::countries()) {
                     $language_codes = array_keys($countries);
                 }
                 foreach ($language_codes as $code) {
                     $query->or_where('`url_' . $code . '` LIKE %s', $_SERVER['HTTP_HOST'] . '%');
                 }
                 $site = $query->get_row();
             } else {
                 $site = from('site')->where('url LIKE %s', $_SERVER['HTTP_HOST'] . '%')->get_row();
             }
         } catch (PDOException $exception) {
             FW4_Structure::check_structure('', true);
         }
         if (!$site) {
             if (!($site = get_row('site'))) {
                 $name = str_ireplace('www.', '', $_SERVER['HTTP_HOST']);
                 $name = ucfirst(substr($name, 0, strpos($name, '.')));
                 $url = $_SERVER['HTTP_HOST'];
                 if (stristr(getcwd(), 'httpdocs')) {
                     $url .= substr(getcwd(), stripos(getcwd(), 'httpdocs') + strlen('httpdocs'));
                 }
                 insert('site', array("url" => $url, "name" => $name));
                 FW4_Structure::check_structure();
                 $site = where('url LIKE %s', $_SERVER['HTTP_HOST'])->get_row('site');
             } else {
                 $domain_handled = false;
                 // Process minisites
                 $types = FW4_Type_Manager::get_instance()->get_types();
                 foreach ($types as $typename => $type) {
                     if (method_exists($type, 'handle_domain')) {
                         if (!$site->structure_xml_expanded) {
                             FW4_Structure::check_structure("", true);
                             return self::reload_site();
                         }
                         $structure = new SimpleXMLElement($site->structure_xml_expanded);
                         $fields = $structure->xpath('//*[@type_name="' . $typename . '"]');
                         if (count($fields)) {
                             $prev = self::$current;
                             self::$current = $site;
                             if (call_user_func_array(array($type, 'handle_domain'), array($_SERVER['HTTP_HOST'], $fields))) {
                                 $domain_handled = true;
                                 break;
                             }
                             self::$current = $prev;
                         }
                     }
                 }
                 // Process subdomains
                 foreach (Config::subdomains() as $subdomain => $handler) {
                     //if () Router::set_content_prefix($handler);
                 }
                 if (!$domain_handled && $site->live) {
                     redirect((Config::https() ? 'https' : 'http') . '://' . $site->url . $_SERVER['REQUEST_URI']);
                 }
             }
         }
     }
     if (!$site->live && false === stristr($_SERVER['HTTP_HOST'], '.fw4.') && false === stristr($_SERVER['HTTP_HOST'], 'local')) {
         $db->query("UPDATE site SET live = 1 WHERE id = " . $site->id);
         if (stristr($site->url, '.fw4.be')) {
             where('id = %d', $site->id)->update('site', array('url' => $_SERVER['HTTP_HOST']));
         }
     }
     self::$current = $site;
     return $site;
 }