Exemple #1
0
	/**
	 * 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;
	}