public function update()
    {
        global $DB;
        $ok = $DB->execute('
            UPDATE nv_websites
                SET
                    name	=   ?,
                    protocol =  ?,
                    subdomain = ?,
                    domain	=   ?,
                    folder	=   ?,
                    redirect_to = ?,
                    wrong_path_action = ?,
                    wrong_path_redirect = ?,
                    empty_path_action = ?,
                    languages = ?,
                    languages_published = ?,
                    aliases = ?,
                    word_separator = ?,
                    date_format = ?,
                    tinymce_css = ?,
                    resize_uploaded_images = ?,
                    comments_enabled_for = ?,
					comments_default_moderator = ?,
					share_files_media_browser = ?,
                    additional_scripts = ?,
                    permission = ?,
                    mail_mailer = ?,
                    mail_server = ?,
                    mail_port = ?,
                    mail_security = ?,
                    mail_user = ?,
                    mail_address = ?,
                    mail_password = ?,
                    contact_emails = ?,
                    homepage = ?,
                    default_timezone = ?,
                    metatag_description = ?,
                    metatag_keywords = ?,
                    metatags = ?,
                    favicon = ?,
                    theme = ?,
                    theme_options = ?
                WHERE id = ' . $this->id, array(value_or_default($this->name, ""), value_or_default($this->protocol, "http://"), value_or_default($this->subdomain, ""), value_or_default($this->domain, ""), value_or_default($this->folder, ""), value_or_default($this->redirect_to, ""), value_or_default($this->wrong_path_action, "blank"), value_or_default($this->wrong_path_redirect, ""), value_or_default($this->empty_path_action, "homepage_redirect"), is_array($this->languages) ? serialize($this->languages) : $this->languages, is_array($this->languages_published) ? serialize($this->languages_published) : $this->languages_published, json_encode($this->aliases), value_or_default($this->word_separator, "-"), $this->date_format, value_or_default($this->tinymce_css, ""), $this->resize_uploaded_images, $this->comments_enabled_for, $this->comments_default_moderator, $this->share_files_media_browser, $this->additional_scripts, $this->permission, value_or_default($this->mail_mailer, ""), value_or_default($this->mail_server, ""), value_or_default($this->mail_port, 25), value_or_default($this->mail_security, 0), value_or_default($this->mail_user, ""), value_or_default($this->mail_address, ""), value_or_default($this->mail_password, ""), serialize($this->contact_emails), $this->homepage, $this->default_timezone, json_encode($this->metatag_description), json_encode($this->metatag_keywords), json_encode($this->metatags), value_or_default($this->favicon, 0), value_or_default($this->theme, ""), json_encode($this->theme_options)));
        if (!$ok) {
            throw new Exception($DB->get_last_error());
        }
        if (!file_exists(NAVIGATE_PRIVATE . '/' . $this->id)) {
            @mkdir(NAVIGATE_PRIVATE . '/' . $this->id, 0755, true);
            @mkdir(NAVIGATE_PRIVATE . '/' . $this->id . '/files', 0755, true);
            @mkdir(NAVIGATE_PRIVATE . '/' . $this->id . '/templates', 0755, true);
            @mkdir(NAVIGATE_PRIVATE . '/' . $this->id . '/thumbnails', 0755, true);
            @mkdir(NAVIGATE_PRIVATE . '/' . $this->id . '/webgets', 0755, true);
            @mkdir(NAVIGATE_PRIVATE . '/' . $this->id . '/backups', 0755, true);
            @mkdir(NAVIGATE_PRIVATE . '/' . $this->id . '/cache', 0755, true);
        }
        // if allowed, send statistics to navigatecms.com
        if (NAVIGATECMS_STATS) {
            global $user;
            @core_curl_post('http://statistics.navigatecms.com/website/update', array('ip' => $_SERVER['SERVER_ADDR'], 'website_id' => $this->id, 'name' => $this->name, 'url' => $this->absolute_path(), 'folder' => $this->folder, 'word_separator' => $this->word_separator, 'homepage' => $this->homepage, 'theme' => $this->theme, 'emails' => serialize($this->contact_emails), 'languages' => serialize($this->languages_published), 'permission' => $this->permission, 'author_name' => $user->username, 'author_email' => $user->email, 'author_language' => $user->language), NULL, 10, 'post');
        }
        return true;
    }
function nvweb_template_oembed_cache($provider, $oembed_url, $minutes = 43200)
{
    $file = NAVIGATE_PRIVATE . '/oembed/' . $provider . '.' . md5($oembed_url) . '.json';
    if (file_exists($file) && filemtime($file) > time() - $minutes * 60) {
        // a previous request has already been posted in the last xx minutes
        $response = file_get_contents($file);
    } else {
        // request has not been cached or it has expired
        $response = core_curl_post($oembed_url, NULL, NULL, 60, "get");
        if ($response == 'Not found') {
            $response = '';
        }
        if (!empty($response)) {
            file_put_contents($file, $response);
        }
    }
    if (!empty($response)) {
        $response = json_decode($response);
    }
    return $response;
}
 public static function latest_available()
 {
     $list = extension::list_installed();
     $post = array();
     if (!is_array($list)) {
         return false;
     }
     foreach ($list as $extension) {
         $post[$extension['code']] = $extension['version'];
     }
     $latest_update = core_curl_post('http://update.navigatecms.com/extensions', array('extensions' => json_encode($post)));
     if (empty($latest_update)) {
         return false;
     }
     $latest_update = json_decode($latest_update, true);
     return $latest_update;
 }
 public static function latest_available()
 {
     $list = theme::list_available();
     $post = array();
     if (!is_array($list)) {
         return false;
     }
     foreach ($list as $theme) {
         $post[$theme['code']] = $theme['version'];
     }
     $latest_update = core_curl_post('http://update.navigatecms.com/themes', array('themes' => json_encode($post)));
     if (empty($latest_update)) {
         return false;
     }
     $latest_update = json_decode($latest_update, true);
     return $latest_update;
 }