コード例 #1
0
ファイル: cp.admin.php プロジェクト: jlleblanc/ConnectBoom
 function Admin()
 {
     global $IN, $LANG, $SESS, $LOG, $DSP;
     // This flag determines if a user can edit categories from the publish page.
     $category_exception = ($IN->GBL('M') == 'blog_admin' and in_array($IN->GBL('P'), array('category_editor', 'edit_category', 'update_category', 'del_category_conf', 'del_category', 'cat_order')) and $IN->GBL('Z') == 1) ? TRUE : FALSE;
     if ($category_exception == FALSE and !$DSP->allowed_group('can_access_admin') and $IN->GBL('P', 'GET') != 'save_ping_servers') {
         return $DSP->no_access_message();
     }
     switch ($IN->GBL('M')) {
         case 'config_mgr':
             if (!$DSP->allowed_group('can_admin_preferences')) {
                 return $DSP->no_access_message();
             }
             switch ($IN->GBL('P')) {
                 case 'update_cfg':
                     $this->update_config_prefs();
                     break;
                 case 'member_cfg':
                     $this->member_config_manager();
                     break;
                 default:
                     $this->config_manager();
                     break;
             }
             break;
         case 'members':
             // Instantiate the member administration class
             require PATH_CP . 'cp.members' . EXT;
             $MBR = new Members();
             switch ($IN->GBL('P')) {
                 case 'view_members':
                     $MBR->view_all_members();
                     break;
                 case 'mbr_conf':
                     $MBR->member_confirm();
                     break;
                 case 'mbr_del_conf':
                     $MBR->member_delete_confirm();
                     break;
                 case 'mbr_delete':
                     $MBR->member_delete();
                     break;
                 case 'resend_act_email':
                     $MBR->resend_activation_emails();
                     break;
                 case 'member_reg_form':
                     $MBR->new_member_profile_form();
                     break;
                 case 'register_member':
                     $MBR->create_member_profile();
                     break;
                 case 'mbr_group_manager':
                     $MBR->member_group_manager();
                     break;
                 case 'edit_mbr_group':
                     $MBR->edit_member_group_form();
                     break;
                 case 'update_mbr_group':
                     $MBR->update_member_group();
                     break;
                 case 'mbr_group_del_conf':
                     $MBR->delete_member_group_conf();
                     break;
                 case 'delete_mbr_group':
                     $MBR->delete_member_group();
                     break;
                 case 'member_banning':
                     $MBR->member_banning_forms();
                     break;
                 case 'save_ban_data':
                     $MBR->update_banning_data();
                     break;
                 case 'profile_fields':
                     $MBR->custom_profile_fields();
                     break;
                 case 'edit_field':
                     $MBR->edit_profile_field_form();
                     break;
                 case 'del_field_conf':
                     $MBR->delete_profile_field_conf();
                     break;
                 case 'delete_field':
                     $MBR->delete_profile_field();
                     break;
                 case 'edit_field_order':
                     $MBR->edit_field_order_form();
                     break;
                 case 'update_field_order':
                     $MBR->update_field_order();
                     break;
                 case 'update_profile_fields':
                     $MBR->update_profile_fields();
                     break;
                 case 'member_search':
                     $MBR->member_search_form();
                     break;
                 case 'do_member_search':
                     $MBR->do_member_search();
                     break;
                 case 'ip_search':
                     $MBR->ip_search_form();
                     break;
                 case 'do_ip_search':
                     $MBR->do_ip_search();
                     break;
                 case 'member_validation':
                     $MBR->member_validation();
                     break;
                 case 'validate_members':
                     $MBR->validate_members();
                     break;
                 case 'email_console_logs':
                     $MBR->email_console_logs();
                     break;
                 case 'view_email':
                     $MBR->view_email();
                     break;
                 case 'delete_email_console':
                     $MBR->delete_email_console_messages();
                     break;
                 case 'profile_templates':
                     $MBR->profile_templates();
                     break;
                 case 'list_templates':
                     $MBR->list_templates();
                     break;
                 case 'edit_template':
                     $MBR->edit_template();
                     break;
                 case 'save_template':
                     $MBR->save_template();
                     break;
                 case 'login_as_member':
                     $MBR->login_as_member();
                     break;
                 case 'do_login_as_member':
                     $MBR->do_login_as_member();
                     break;
                 default:
                     return FALSE;
                     break;
             }
             break;
         case 'sp_templ':
             // Instantiate the specialty templates class
             require PATH_CP . 'cp.specialty_tmp' . EXT;
             $SP = new Specialty_Templates();
             switch ($IN->GBL('P')) {
                 case 'mbr_notification_tmpl':
                     $SP->mbr_notification_tmpl();
                     break;
                 case 'edit_notification_tmpl':
                     $SP->edit_notification_tmpl();
                     break;
                 case 'update_notification_tmpl':
                     $SP->update_notification_tmpl();
                     break;
                 case 'offline_tmpl':
                     $SP->offline_template();
                     break;
                 case 'update_offline_template':
                     $SP->update_offline_template();
                     break;
                 case 'user_messages_tmpl':
                     $SP->user_messages_template();
                     break;
                 case 'update_user_messages_tmpl':
                     $SP->update_user_messages_template();
                     break;
             }
             break;
         case 'site_admin':
             if (!$DSP->allowed_group('can_admin_sites')) {
                 return $DSP->no_access_message();
             }
             // Instantiate the site administration class
             require PATH_CP . 'cp.sites' . EXT;
             $SA = new SitesAdmin();
             switch ($IN->GBL('P')) {
                 case 'sites_list':
                     $SA->sites_list();
                     break;
                 case 'new_site':
                     $SA->new_site_form();
                     break;
                 case 'edit_site':
                     $SA->edit_site_form();
                     break;
                 case 'update_site':
                     $SA->update_site();
                     break;
                 case 'delete_site':
                     $SA->delete_site();
                     break;
                 case 'delete_site_confirm':
                     $SA->delete_site_confirm();
                     break;
                 default:
                     $SA->sites_list();
                     break;
             }
             break;
         case 'blog_admin':
             if ($category_exception == FALSE and !$DSP->allowed_group('can_admin_weblogs') and $IN->GBL('P', 'GET') != 'save_ping_servers') {
                 return $DSP->no_access_message();
             }
             // Instantiate the publish administration class
             require PATH_CP . 'cp.publish_ad' . EXT;
             $PA = new PublishAdmin();
             switch ($IN->GBL('P')) {
                 case 'blog_list':
                     $PA->weblog_overview();
                     break;
                 case 'new_weblog':
                     $PA->new_weblog_form();
                     break;
                 case 'blog_prefs':
                     $PA->edit_blog_form();
                     break;
                 case 'group_prefs':
                     $PA->edit_group_form();
                     break;
                 case 'create_blog':
                     $PA->update_weblog_prefs();
                     break;
                 case 'update_preferences':
                     $PA->update_weblog_prefs();
                     break;
                 case 'delete_conf':
                     $PA->delete_weblog_conf();
                     break;
                 case 'delete':
                     $PA->delete_weblog();
                     break;
                 case 'categories':
                     $PA->category_overview();
                     break;
                 case 'cat_group_editor':
                     $PA->edit_category_group_form();
                     break;
                 case 'update_cat_group':
                     $PA->update_category_group();
                     break;
                 case 'cat_group_del_conf':
                     $PA->delete_category_group_conf();
                     break;
                 case 'delete_group':
                     $PA->delete_category_group();
                     break;
                 case 'category_editor':
                     $PA->category_manager();
                     break;
                 case 'update_category':
                     $PA->update_category();
                     break;
                 case 'edit_category':
                     $PA->edit_category_form();
                     break;
                 case 'cat_order':
                     $PA->change_category_order();
                     break;
                 case 'global_cat_order':
                     $PA->global_category_order();
                     break;
                 case 'del_category_conf':
                     $PA->delete_category_confirm();
                     break;
                 case 'del_category':
                     $PA->delete_category();
                     break;
                 case 'cat_field_group_edit':
                     $PA->category_field_group_manager();
                     break;
                 case 'del_cat_field_conf':
                     $PA->delete_category_field_confirm();
                     break;
                 case 'del_cat_field':
                     $PA->delete_category_field();
                     break;
                 case 'edit_cat_field':
                     $PA->edit_category_field_form();
                     break;
                 case 'edit_cat_field_order':
                     $PA->edit_category_field_order_form();
                     break;
                 case 'ud_cat_field_order':
                     $PA->update_category_field_order();
                     break;
                 case 'update_cat_fields':
                     $PA->update_category_fields();
                     break;
                 case 'statuses':
                     $PA->status_overview();
                     break;
                 case 'status_group_editor':
                     $PA->edit_status_group_form();
                     break;
                 case 'update_status_group':
                     $PA->update_status_group();
                     break;
                 case 'status_group_del_conf':
                     $PA->delete_status_group_conf();
                     break;
                 case 'delete_status_group':
                     $PA->delete_status_group();
                     break;
                 case 'status_editor':
                     $PA->status_manager();
                     break;
                 case 'update_status':
                     $PA->update_status();
                     break;
                 case 'edit_status':
                     $PA->edit_status_form();
                     break;
                 case 'del_status_conf':
                     $PA->delete_status_confirm();
                     break;
                 case 'del_status':
                     $PA->delete_status();
                     break;
                 case 'edit_status_order':
                     $PA->edit_status_order();
                     break;
                 case 'update_status_order':
                     $PA->update_status_order();
                     break;
                 case 'custom_fields':
                     $PA->field_overview();
                     break;
                 case 'update_field_group':
                     $PA->update_field_group();
                     break;
                 case 'del_field_group_conf':
                     $PA->delete_field_group_conf();
                     break;
                 case 'delete_field_group':
                     $PA->delete_field_group();
                     break;
                 case 'field_editor':
                     $PA->field_manager();
                     break;
                 case 'edit_field':
                     $PA->edit_field_form();
                     break;
                 case 'update_weblog_fields':
                     $PA->update_weblog_fields();
                     break;
                 case 'field_group_editor':
                     $PA->edit_field_group_form();
                     break;
                 case 'del_field_conf':
                     $PA->delete_field_conf();
                     break;
                 case 'delete_field':
                     $PA->delete_field();
                     break;
                 case 'edit_field_order':
                     $PA->edit_field_order_form();
                     break;
                 case 'update_field_order':
                     $PA->update_field_order();
                     break;
                 case 'edit_fmt_buttons':
                     $PA->edit_formatting_buttons();
                     break;
                 case 'update_fmt_buttons':
                     $PA->update_formatting_buttons();
                     break;
                 case 'html_buttons':
                     $PA->html_buttons();
                     break;
                 case 'save_html_buttons':
                     $PA->save_html_buttons();
                     break;
                 case 'ping_servers':
                     $PA->ping_servers();
                     break;
                 case 'save_ping_servers':
                     $PA->save_ping_servers();
                     break;
                 case 'upload_prefs':
                     $PA->file_upload_preferences();
                     break;
                 case 'edit_upload_pref':
                     $PA->edit_upload_preferences_form();
                     break;
                 case 'update_upload_prefs':
                     $PA->update_upload_preferences();
                     break;
                 case 'del_upload_pref_conf':
                     $PA->delete_upload_preferences_conf();
                     break;
                 case 'del_upload_pref':
                     $PA->delete_upload_preferences();
                     break;
                 default:
                     return FALSE;
                     break;
             }
             break;
         case 'utilities':
             if (!$DSP->allowed_group('can_admin_utilities')) {
                 return $DSP->no_access_message();
             }
             // We handle the pMachine import via a different class,
             // so we'll test for that separately
             if ($IN->GBL('P') == 'pm_import') {
                 require PATH_CP . 'cp.pm_import' . EXT;
                 $PMI = new PM_Import();
                 return;
             }
             if ($IN->GBL('P') == 'mt_import') {
                 require PATH_CP . 'cp.mt_import' . EXT;
                 $MT = new MT_Import();
                 return;
             }
             if ($IN->GBL('P') == 'member_import') {
                 require PATH_CP . 'cp.member_import' . EXT;
                 $MI = new Member_Import();
                 return;
             }
             require PATH_CP . 'cp.utilities' . EXT;
             switch ($IN->GBL('P')) {
                 case 'view_logs':
                     $LOG->view_logs();
                     break;
                 case 'clear_cplogs':
                     $LOG->clear_cp_logs();
                     break;
                 case 'view_search_log':
                     $LOG->view_search_log();
                     break;
                 case 'view_throttle_log':
                     $LOG->view_throttle_log();
                     break;
                 case 'blacklist_ips':
                     $LOG->blacklist_ips();
                     break;
                 case 'clear_search_log':
                     $LOG->clear_search_log();
                     break;
                 case 'clear_cache_form':
                     Utilities::clear_cache_form();
                     break;
                 case 'clear_caching':
                     Utilities::clear_caching();
                     break;
                 case 'run_query':
                     Utilities::sql_manager('run_query');
                     break;
                 case 'sql_query':
                     Utilities::sql_query_form();
                     break;
                     //case 'sql_backup'			: Utilities::sql_backup();
                     //	break;
                     //case 'do_sql_backup'		: Utilities::do_sql_backup();
                     //	break;
                 //case 'sql_backup'			: Utilities::sql_backup();
                 //	break;
                 //case 'do_sql_backup'		: Utilities::do_sql_backup();
                 //	break;
                 case 'view_database':
                     Utilities::view_database();
                     break;
                 case 'table_action':
                     Utilities::run_table_action();
                     break;
                 case 'sandr':
                     Utilities::search_and_replace_form();
                     break;
                 case 'recount_stats':
                     Utilities::recount_statistics();
                     break;
                 case 'recount_prefs':
                     Utilities::recount_preferences_form();
                     break;
                 case 'set_recount_prefs':
                     Utilities::set_recount_prefs();
                     break;
                 case 'do_recount':
                     Utilities::do_recount();
                     break;
                 case 'do_stats_recount':
                     Utilities::do_stats_recount();
                     break;
                 case 'prune':
                     Utilities::data_pruning();
                     break;
                 case 'member_pruning':
                     Utilities::member_pruning();
                     break;
                 case 'prune_member_conf':
                     Utilities::prune_member_confirm();
                     break;
                 case 'prune_members':
                     Utilities::prune_members();
                     break;
                 case 'entry_pruning':
                     Utilities::entry_pruning();
                     break;
                 case 'prune_entry_conf':
                     Utilities::prune_entry_confirm();
                     break;
                 case 'prune_entries':
                     Utilities::prune_entries();
                     break;
                 case 'comment_pruning':
                     Utilities::comment_pruning();
                     break;
                 case 'prune_comment_conf':
                     Utilities::prune_comment_confirmation();
                     break;
                 case 'prune_comments':
                     Utilities::prune_comments();
                     break;
                 case 'trackback_pruning':
                     Utilities::trackback_pruning();
                     break;
                 case 'prune_trackback_conf':
                     Utilities::prune_trackback_confirmation();
                     break;
                 case 'prune_trackbacks':
                     Utilities::prune_trackbacks();
                     break;
                     /* Someday, oh someday...
                     		 case 'pm_pruning'			: Utilities::pm_pruning();
                     			break;
                     		 case 'prune_pm_conf'		: Utilities::prune_pm_confirmation();
                     			break;
                     		 case 'prune_pms'			: Utilities::prune_pms();
                     			break;
                     		 */
                 /* Someday, oh someday...
                 		 case 'pm_pruning'			: Utilities::pm_pruning();
                 			break;
                 		 case 'prune_pm_conf'		: Utilities::prune_pm_confirmation();
                 			break;
                 		 case 'prune_pms'			: Utilities::prune_pms();
                 			break;
                 		 */
                 case 'topic_pruning':
                     Utilities::topic_pruning();
                     break;
                 case 'prune_topic_conf':
                     Utilities::prune_topic_confirmation();
                     break;
                 case 'prune_topics':
                     Utilities::prune_topics();
                     break;
                 case 'run_sandr':
                     Utilities::search_and_replace();
                     break;
                 case 'php_info':
                     Utilities::php_info();
                     break;
                 case 'sql_manager':
                     Utilities::sql_info();
                     break;
                 case 'sql_status':
                     Utilities::sql_manager('status');
                     break;
                 case 'sql_sysvars':
                     Utilities::sql_manager('sysvars');
                     break;
                 case 'sql_plist':
                     Utilities::sql_manager('plist');
                     break;
                 case 'plugin_manager':
                     Utilities::plugin_manager();
                     break;
                 case 'plugin_info':
                     Utilities::plugin_info();
                     break;
                 case 'plugin_remove_conf':
                     Utilities::plugin_remove_confirm();
                     break;
                 case 'plugin_remove':
                     Utilities::plugin_remove();
                     break;
                 case 'plugin_install':
                     Utilities::plugin_install('file');
                     break;
                 case 'import_utilities':
                     Utilities::import_utilities();
                     break;
                 case 'trans_menu':
                     Utilities::translate_select();
                     break;
                 case 'translate':
                     Utilities::translate();
                     break;
                 case 'save_translation':
                     Utilities::save_translation();
                     break;
                 case 'extensions_manager':
                     Utilities::extensions_manager();
                     break;
                 case 'toggle_extension_confirm':
                     Utilities::toggle_extension_confirm();
                     break;
                 case 'toggle_extension':
                     Utilities::toggle_extension();
                     break;
                 case 'extension_settings':
                     Utilities::extension_settings();
                     break;
                 case 'save_extension_settings':
                     Utilities::save_extension_settings();
                     break;
                 default:
                     return FALSE;
                     break;
             }
             break;
         default:
             $this->admin_home_page();
             break;
     }
 }
コード例 #2
0
    /**
     * Module Updater
     *
     * @access	public
     * @return	bool
     */
    public function update()
    {
        // --------------------------------------------
        //  ExpressionEngine 2.x attempts to do automatic updates.
        //		- Mitchell questioned clients/customers and discovered
        //		that the majority preferred to update
        //		themselves, especially on higher traffic sites.
        //		So, we forbid EE 2.x from doing updates
        //		unless it comes through our update form.
        // --------------------------------------------
        if (!isset($_POST['run_update']) or $_POST['run_update'] != 'y') {
            return FALSE;
        }
        if ($this->version_compare($this->database_version(TRUE), '==', constant(strtoupper($this->lower_name) . '_VERSION')) and $this->extensions_enabled()) {
            return TRUE;
        }
        if (APP_VER < 2.0 and !$this->extensions_enabled() and !$this->extensions_allowed()) {
            return ee()->output->show_user_error('general', lang('cannot_update_extensions_disabled'));
        }
        // --------------------------------------------
        //  Default Module Update
        // --------------------------------------------
        $this->default_module_update();
        // --------------------------------------------
        //  Do DB work
        // --------------------------------------------
        if (!file_exists($this->addon_path . strtolower($this->lower_name) . '.sql')) {
            return FALSE;
        }
        $sql = preg_split("/;;\\s*(\n+|\$)/", file_get_contents($this->addon_path . strtolower($this->lower_name) . '.sql'), -1, PREG_SPLIT_NO_EMPTY);
        if (count($sql) == 0) {
            return FALSE;
        }
        foreach ($sql as $i => $query) {
            $sql[$i] = trim($query);
        }
        // --------------------------------------------
        //  Database Change
        //  - Added: 1.0.0.a2
        // --------------------------------------------
        if ($this->version_compare($this->database_version(), '<', '1.0.0.a2')) {
            $sql[] = '	ALTER TABLE ' . CALENDAR_TABLE_CALENDARS . '
						ADD COLUMN `tz_offset` CHAR(5) NOT NULL DEFAULT "+0000",
						ADD COLUMN `timezone` VARCHAR(100) NOT NULL DEFAULT "Europe/London",
						ADD COLUMN `time_format` VARCHAR(10) NOT NULL DEFAULT "H:i a"
						';
        }
        // --------------------------------------------
        //  Database Change
        //  - Added: 1.0.0.b2
        // --------------------------------------------
        if ($this->version_compare($this->database_version(), '<', '1.0.0.b2')) {
            // -------------------------------------
            //  Add a new field
            // -------------------------------------
            $query = ee()->db->query('SELECT	group_id
				 FROM	exp_field_groups
				 WHERE	group_name = "' . CALENDAR_CALENDARS_FIELD_GROUP . '"');
            $calendars_field_group = $query->row['group_id'];
            $fields[] = array('site_id' => $this->data->get_site_id(), 'group_id' => $calendars_field_group, 'field_name' => CALENDAR_CALENDARS_FIELD_PREFIX . 'ics_url', 'field_label' => '.ics URL', 'field_instructions' => 'Add one or more URLs to .ics files - separated by newlines - to import to this calendar.', 'field_type' => 'textarea', 'field_list_items' => '', 'field_pre_populate' => 'n', 'field_pre_blog_id' => '0', 'field_pre_field_id' => '0', 'field_related_to' => APP_VER < 2.0 ? 'blog' : 'channel', 'field_related_id' => '0', 'field_related_orderby' => 'date', 'field_related_sort' => 'desc', 'field_related_max' => '0', 'field_ta_rows' => '3', 'field_maxl' => '20', 'field_required' => 'n', 'field_text_direction' => 'ltr', 'field_search' => 'n', 'field_is_hidden' => 'y', 'field_fmt' => 'none', 'field_show_fmt' => 'n', 'field_order' => '');
            // -------------------------------------
            //  Create new fields
            // -------------------------------------
            $PA;
            if (APP_VER < 2.0) {
                if (!class_exists('PublishAdmin')) {
                    require_once PATH_CP . 'cp.publish_ad' . EXT;
                }
                $PA = new PublishAdmin();
            }
            foreach ($fields as $field) {
                $_POST = $field;
                if (APP_VER < 2.0) {
                    $PA->update_weblog_fields();
                } else {
                    $this->update_channel_fields();
                }
            }
            // -------------------------------------
            //  Add a new column
            // -------------------------------------
            $sql[] = '	ALTER TABLE exp_calendar_calendars
						ADD COLUMN ics_url TEXT DEFAULT ""
						';
            // -------------------------------------
            //  Modify a column
            // -------------------------------------
            $sql[] = '	UPDATE exp_calendar_preferences
						SET preferences = "' . ee()->db->escape_str($this->_default_preferences()) . '"
						WHERE preferences = ""
						';
        }
        // --------------------------------------------
        //  Database Change
        //  - Added: 1.0.0.b3
        // --------------------------------------------
        if ($this->version_compare($this->database_version(), '<', '1.0.0.b3')) {
            // -------------------------------------
            // Add a new column
            // -------------------------------------
            $sql[] = '	ALTER TABLE exp_calendar_calendars
						ADD COLUMN ics_updated DATETIME DEFAULT "0000-00-00"
						';
            $sql[] = '	UPDATE exp_calendar_calendars
						SET ics_updated = "0000-00-00"
						WHERE ics_updated IS NULL';
        }
        // --------------------------------------------
        //  Run module SQL - dependent on CREATE TABLE IF NOT EXISTS syntax
        // --------------------------------------------
        foreach ($sql as $query) {
            ee()->db->query($query);
        }
        // --------------------------------------------
        //  Database Change
        //  - Added: 1.0.2.d3
        // --------------------------------------------
        if ($this->version_compare($this->database_version(), '<', '1.0.2.d3')) {
            $asql = '	SELECT cp.*
						FROM exp_calendar_preferences cp';
            $query = ee()->db->query($asql);
            if ($query->num_rows() > 0) {
                foreach ($query->result_array() as $row) {
                    $data = unserialize($row['preferences']);
                    if (!array_key_exists('date_format', $data)) {
                        $data['date_format'] = 'mm/dd/yy';
                    }
                    ee()->db->query(ee()->db->update_string('exp_calendar_preferences', array('preferences' => serialize($data)), 'site_id = ' . ee()->db->escape_str($row['site_id'])));
                }
            }
        }
        // --------------------------------------------
        //  Preferences go wacko before this
        // --------------------------------------------
        if ($this->version_compare($this->database_version(), '<', '1.5.1')) {
            $prefs = $this->data->get_module_preferences(TRUE);
            if (!isset($prefs['calendar_weblog']) or $prefs['calendar_weblog'] === '') {
                $query = ee()->db->query("SELECT {$this->sc->db->channel_id}\n\t\t\t\t\t FROM \t{$this->sc->db->channels}\n\t\t\t\t\t WHERE \t{$this->sc->db->channel_name} = '" . ee()->db->escape_str(CALENDAR_CALENDARS_CHANNEL_NAME_DEFAULT) . "'");
                $prefs['calendar_weblog'] = $query->num_rows() > 0 ? $query->row($this->sc->db->channel_id) : '';
            }
            if (!isset($prefs['event_weblog']) or $prefs['event_weblog'] === '') {
                $query = ee()->db->query("SELECT {$this->sc->db->channel_id}\n\t\t\t\t\t FROM \t{$this->sc->db->channels}\n\t\t\t\t\t WHERE \t{$this->sc->db->channel_name} = '" . ee()->db->escape_str(CALENDAR_EVENTS_CHANNEL_NAME_DEFAULT) . "'");
                $prefs['event_weblog'] = $query->num_rows() > 0 ? $query->row($this->sc->db->channel_id) : '';
            }
            $this->data->update_preferences($prefs);
        }
        //seems that we did not properly set default_entry_title and that causes all heck with
        //liveUrlTitle() in the publish area.
        if ($this->version_compare($this->database_version(), '<', '1.5.2')) {
            $prefs = $this->data->get_module_preferences(TRUE);
            $where = implode(',', ee()->db->escape_str(array($prefs['calendar_weblog'], $prefs['event_weblog'])));
            ee()->db->query("UPDATE {$this->sc->db->channels}\n\t\t\t\t SET \tdefault_entry_title = ''\n\t\t\t\t WHERE \t{$this->sc->db->channel_id}\n\t\t\t\t IN\t\t({$where})");
        }
        //Update the tables to have a default status_group of one
        //the default for the table is 0, and everything _should_
        //work fine, but it seems like this might come to a head
        //at some point, so extra protection.
        if ($this->version_compare($this->database_version(), '<', '1.5.5')) {
            $prefs = $this->data->get_module_preferences(TRUE);
            $where = implode(',', ee()->db->escape_str(array($prefs['calendar_weblog'], $prefs['event_weblog'])));
            ee()->db->query("UPDATE {$this->sc->db->channels}\n\t\t\t\t SET \tstatus_group = 1\n\t\t\t\t WHERE \t{$this->sc->db->channel_id}\n\t\t\t\t IN\t\t({$where})\n\t\t\t\t AND\t( status_group IS NULL OR status_group = 0 )");
        }
        if ($this->version_compare($this->database_version(), '<', '1.6.4')) {
            ee()->db->query("UPDATE exp_extensions\n\t\t\t\t SET \thook = 'calendar_calendars_channel_query'\n\t\t\t\t WHERE \thook = 'calendar_calendars_weblog_query'");
        }
        if ($this->version_compare($this->database_version(), '<', '1.7.0')) {
            if (APP_VER >= 2.0 and ee()->db->table_exists('exp_calendar_permissions_preferences') === FALSE) {
                $newest_prefs = TRUE;
                $module_install_sql = file_get_contents($this->addon_path . strtolower($this->lower_name) . '.sql');
                //gets JUST the tag prefs table from the sql
                $prefs_table = stristr($module_install_sql, "CREATE TABLE IF NOT EXISTS `exp_calendar_permissions_preferences`");
                $prefs_table = substr($prefs_table, 0, stripos($prefs_table, ';;'));
                //install it
                ee()->db->query($prefs_table);
            }
        }
        if ($this->version_compare($this->database_version(), '<', '1.7.1.b1')) {
            $fqiu = ee()->db->where('field_name', CALENDAR_CALENDARS_FIELD_PREFIX . 'ics_url')->where('site_id', $this->data->get_site_id())->limit(1)->get('exp_channel_fields');
            if ($fqiu->num_rows() > 0) {
                ee()->db->query(ee()->db->update_string('exp_channel_fields', array('field_instructions' => $fqiu->row('field_instructions') . ' ' . lang('ics_url_stub')), array('site_id' => $fqiu->row('site_id'), 'field_id' => $fqiu->row('field_id'))));
            }
        }
        // -------------------------------------
        //	Is this going from EE 1.x to EE 2.x?
        // -------------------------------------
        if (APP_VER >= 2.0) {
            // -------------------------------------
            //	If the calendar fieldtype isn't installed
            //	we can assume that this is EE 1.x -> 2.x
            // -------------------------------------
            $ft_query = ee()->db->where('name', 'calendar')->get('exp_fieldtypes');
            if ($ft_query->num_rows() == 0) {
                //install calendar fieldtype
                ee()->load->library('addons/addons_installer');
                ee()->load->model('addons_model');
                if (!ee()->addons_model->fieldtype_installed($this->lower_name)) {
                    ee()->addons_installer->install($this->lower_name, 'fieldtype', FALSE);
                }
                //update field_related_to
                ee()->db->where_in('field_name', array(CALENDAR_CALENDARS_FIELD_PREFIX . 'summary', CALENDAR_CALENDARS_FIELD_PREFIX . 'tz_offset', CALENDAR_CALENDARS_FIELD_PREFIX . 'time_format', CALENDAR_CALENDARS_FIELD_PREFIX . 'ics_url', CALENDAR_EVENTS_FIELD_PREFIX . 'dates_and_options', CALENDAR_EVENTS_FIELD_PREFIX . 'summary', CALENDAR_EVENTS_FIELD_PREFIX . 'location'))->update('exp_channel_fields', array('field_related_to' => 'channel'));
                //update fieldtypes for
                ee()->db->where_in('field_name', array(CALENDAR_CALENDARS_FIELD_PREFIX . 'tz_offset', CALENDAR_EVENTS_FIELD_PREFIX . 'dates_and_options'))->update('exp_channel_fields', array('field_type' => 'calendar'));
            }
        }
        // --------------------------------------------
        //  Version Number Update - LAST!
        // --------------------------------------------
        $data = array('module_version' => CALENDAR_VERSION);
        //for EE 1.x -> 2.x update
        if (APP_VER >= 2.0) {
            $data['has_publish_fields'] = 'n';
        }
        ee()->db->query(ee()->db->update_string('exp_modules', $data, array('module_name' => $this->class_name)));
        return TRUE;
    }