/** * Save Field Settings * * @param array $field_settings The field's settings * @return array modified $settings */ function save_field_settings($settings) { global $DB, $TYPE; // merge nested wygwam settings if (isset($settings['wygwam'])) { $settings = array_merge($settings, $settings['wygwam']); unset($settings['wygwam']); } // ------------------------------------------- // Advanced Settings // ------------------------------------------- $config_lists = $this->helper->config_lists(); // convert any advanced settings to their proper formats if (isset($settings['config']) && is_array($settings['config'])) { foreach ($settings['config'] as $config => $value) { // format_tags? if ($config == 'format_tags') { $settings['config'][$config] = implode(';', $value); } // list? if (in_array($config, $config_lists)) { $settings['config'][$config] = array_filter(preg_split('/[\r\n]+/', $value)); } } } // ------------------------------------------- // Field Conversion // ------------------------------------------- if (isset($_POST['field_id']) && $_POST['field_id'] && isset($settings['convert']) && $settings['convert']) { $field_id = $_POST['field_id']; $query = $DB->query('SELECT entry_id, field_id_'.$field_id.' data, field_ft_'.$field_id.' format FROM exp_weblog_data WHERE field_id_'.$field_id.' != ""'); if ($query->num_rows) { // prepare Typography if (! $TYPE) { if (! class_exists('Typography')) { require PATH_CORE.'core.typography'.EXT; } $TYPE = new Typography; } // prepare Textile if ($settings['convert'] == 'textile') { if (! class_exists('Textile')) { require FT_PATH.'wygwam/lib/textile/textile.php'; } $textile = new Textile(); } foreach ($query->result as $row) { $data = $row['data']; $convert = FALSE; // Auto <br /> and XHTML switch ($row['format']) { case 'br': $convert = TRUE; $data = $TYPE->nl2br_except_pre($data); break; case 'xhtml': $convert = TRUE; $data = $TYPE->auto_typography($data); break; } // Textile if ($settings['convert'] == 'textile') { $convert = TRUE; $data = $textile->TextileThis($data); } // Save the new field data if ($convert) { $DB->query($DB->update_string('exp_weblog_data', array( 'field_id_'.$field_id => $data, 'field_ft_'.$field_id => 'none' ), 'entry_id = '.$row['entry_id'] )); } } } } return $settings; }