/**
     * Update Extension
     *
     * @param string  $current  Previous installed version of the extension
     */
    function update_extension($current = '')
    {
        global $DB;
        if (!$current or $current == FF_VERSION) {
            return FALSE;
        }
        if ($current < '1.1.3') {
            // no longer saving settings on a per-site basis
            $sql = array();
            // no more per-site FF settings
            $query = $DB->query('SELECT settings FROM exp_extensions WHERE class = "' . FF_CLASS . '" AND settings != "" LIMIT 1');
            if ($query->row) {
                $settings = array_shift(Fieldframe_Main::_unserialize($query->row['settings']));
                $sql[] = $DB->update_string('exp_extensions', array('settings' => Fieldframe_Main::_serialize($settings)), 'class = "' . FF_CLASS . '"');
            }
            // collect conversion info
            $query = $DB->query('SELECT * FROM exp_ff_fieldtypes ORDER BY enabled DESC, site_id ASC');
            $firsts = array();
            $conversions = array();
            foreach ($query->result as $ftype) {
                if (!isset($firsts[$ftype['class']])) {
                    $firsts[$ftype['class']] = $ftype['fieldtype_id'];
                } else {
                    $conversions[$ftype['fieldtype_id']] = $firsts[$ftype['class']];
                }
            }
            if ($conversions) {
                // remove duplicate ftype rows in exp_ff_fieldtypes
                $sql[] = 'DELETE FROM exp_ff_fieldtypes WHERE fieldtype_id IN (' . implode(',', array_keys($conversions)) . ')';
                // update field_type's in exp_weblog_fields
                foreach ($conversions as $old_id => $new_id) {
                    $sql[] = $DB->update_string('exp_weblog_fields', array('field_type' => 'ftype_id_' . $new_id), 'field_type = "ftype_id_' . $old_id . '"');
                }
            }
            // remove site_id column from exp_ff_fieldtypes
            $sql[] = 'ALTER TABLE exp_ff_fieldtypes DROP COLUMN site_id';
            // apply changes
            foreach ($sql as $query) {
                //$this->log($query);
                $DB->query($query);
            }
        }
        if ($current < '1.1.0') {
            // hooks have changed, so go through
            // the whole activate_extension() process
            $this->activate_extension();
        } else {
            // just update the version #s
            $DB->query('UPDATE exp_extensions
			              SET version = "' . FF_VERSION . '"
			              WHERE class = "' . FF_CLASS . '"');
        }
    }
 function save_settings()
 {
     $settings = Fieldframe_Main::_get_all_settings();
     $this->_init_main($settings, TRUE);
     global $FF;
     $FF->save_settings();
 }