|
|
|
|
|
|
|
|
|
Activate the Drupal glue code for the FCKeditor filemanager.
|
|
|
|
|
|
|
|
|
|
Index: sites/all/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/config.php
|
|
|
|
|
--- sites/all/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/config.php.orig 2008-03-25 16:28:24 +0100
|
|
|
|
|
+++ sites/all/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/config.php 2008-05-02 23:02:23 +0200
|
|
|
|
|
@@ -39,6 +39,9 @@
|
|
|
|
|
// Attention: The above 'UserFilesPath' must point to the same directory.
|
|
|
|
|
$Config['UserFilesAbsolutePath'] = '' ;
|
|
|
|
|
|
|
|
|
|
+// activate Drupal glue code for filemanager
|
|
|
|
|
+require_once "../../../../../filemanager.config.php";
|
|
|
|
|
+
|
|
|
|
|
// Due to security issues with Apache modules, it is recommended to leave the
|
|
|
|
|
// following setting enabled.
|
|
|
|
|
$Config['ForceSingleExtension'] = true ;
|
|
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
1. Fix content validation in "xmlcontent" module in case
|
|
|
|
|
one has enabled multiple filters on a particular input format.
|
|
|
|
|
2. Additionally, allow absolute paths to support .xsd/.xsl files
|
|
|
|
|
in arbitrary directories.
|
|
|
|
|
3. Finally, do not create a new DOM and output it as XML. Instead directly
|
|
|
|
|
output the transformed XML in order to get rid of the <?xml...?> declaration.
|
|
|
|
|
4. Additionally, support an optional XML content template (mainly
|
|
|
|
|
for loading ENTITY definitions which cannot be done via XSD and XSLT)
|
|
|
|
|
|
|
|
|
|
Index: sites/all/modules/xmlcontent/xmlcontent.module
|
|
|
|
|
--- sites/all/modules/xmlcontent/xmlcontent.module.orig 2007-03-14 22:59:59 +0100
|
|
|
|
|
+++ sites/all/modules/xmlcontent/xmlcontent.module 2008-05-30 21:13:16 +0200
|
|
|
|
|
@@ -39,8 +39,22 @@
|
|
|
|
|
return t('Allows users to post XML node content and get it transformed through a configured XSLT script');
|
|
|
|
|
|
|
|
|
|
case 'process':
|
|
|
|
|
- $xslt_path = drupal_get_path('module', 'xmlcontent'). '/' . variable_get("xmlcontent_xslt_path_$format", '');
|
|
|
|
|
- return _xmlcontent_transform($text, $xslt_path);
|
|
|
|
|
+ $tpl_path = variable_get("xmlcontent_tpl_path_$format", '');
|
|
|
|
|
+ if ($tpl_path) {
|
|
|
|
|
+ if (substr($tpl_path, 0, 1) != "/")
|
|
|
|
|
+ $tpl_path = drupal_get_path('module', 'xmlcontent') . '/' . $tpl_path;
|
|
|
|
|
+ $tpl = file_get_contents($tpl_path);
|
|
|
|
|
+ $text = preg_replace("/&template_body;/", $text, $tpl);
|
|
|
|
|
+ $cwd = getcwd();
|
|
|
|
|
+ chdir(preg_replace("/\\/[^\\/]+\$/", "", $tpl_path));
|
|
|
|
|
+ }
|
|
|
|
|
+ $xslt_path = variable_get("xmlcontent_xslt_path_$format", '');
|
|
|
|
|
+ if (substr($xslt_path, 0, 1) != "/")
|
|
|
|
|
+ $xslt_path = drupal_get_path('module', 'xmlcontent') . '/' . $xslt_path;
|
|
|
|
|
+ $result = _xmlcontent_transform($text, $xslt_path);
|
|
|
|
|
+ if ($tpl_path)
|
|
|
|
|
+ chdir($cwd);
|
|
|
|
|
+ return $result;
|
|
|
|
|
|
|
|
|
|
case 'settings':
|
|
|
|
|
return _xmlcontent_filter_settings($format);
|
|
|
|
|
@@ -72,7 +86,7 @@
|
|
|
|
|
}
|
|
|
|
|
// Does the input format of this node use XML Content filter?
|
|
|
|
|
$format = filter_resolve_format($node->format);
|
|
|
|
|
- $module = db_result(db_query('SELECT module FROM {filters} WHERE format = %d', $format));
|
|
|
|
|
+ $module = db_result(db_query("SELECT module FROM {filters} WHERE format = %d AND module = 'xmlcontent'", $format));
|
|
|
|
|
if ($module != 'xmlcontent') {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
@@ -83,7 +97,10 @@
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- $schema_path = drupal_get_path('module', 'xmlcontent'). '/' . variable_get("xmlcontent_schema_path_$format",'');
|
|
|
|
|
+ $schema_path = variable_get("xmlcontent_schema_path_$format", '');
|
|
|
|
|
+ if (substr($schema_path, 0, 1) != "/")
|
|
|
|
|
+ $schema_path = drupal_get_path('module', 'xmlcontent') . '/' . $schema_path;
|
|
|
|
|
+
|
|
|
|
|
if (!is_file($schema_path) && ($validation == 'xsd' or $validation == 'rng')) {
|
|
|
|
|
$schema_path = null;
|
|
|
|
|
watchdog( 'xmlcontent', t('Validation required but no schema file'), WATCHDOG_WARNING );
|
|
|
|
|
@@ -93,7 +110,23 @@
|
|
|
|
|
libxml_clear_errors();
|
|
|
|
|
libxml_use_internal_errors(true);
|
|
|
|
|
|
|
|
|
|
- if (!_xmlcontent_validate($node->body, $validation, $schema_path)) {
|
|
|
|
|
+ $text = $node->body;
|
|
|
|
|
+ $tpl_path = variable_get("xmlcontent_tpl_path_$format", '');
|
|
|
|
|
+ if ($tpl_path) {
|
|
|
|
|
+ if (substr($tpl_path, 0, 1) != "/")
|
|
|
|
|
+ $tpl_path = drupal_get_path('module', 'xmlcontent') . '/' . $tpl_path;
|
|
|
|
|
+ $tpl = file_get_contents($tpl_path);
|
|
|
|
|
+ $text = preg_replace("/&template_body;/", $text, $tpl);
|
|
|
|
|
+ $cwd = getcwd();
|
|
|
|
|
+ chdir(preg_replace("/\\/[^\\/]+\$/", "", $tpl_path));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $result = _xmlcontent_validate($text, $validation, $schema_path);
|
|
|
|
|
+
|
|
|
|
|
+ if ($tpl_path)
|
|
|
|
|
+ chdir($cwd);
|
|
|
|
|
+
|
|
|
|
|
+ if (!$result) {
|
|
|
|
|
form_set_error('body', t('XML Content: Invalid XML') . libxml_errors_string());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -156,6 +189,13 @@
|
|
|
|
|
'#collapsible' => TRUE,
|
|
|
|
|
'#collapsed' => FALSE,
|
|
|
|
|
);
|
|
|
|
|
+ $form['xmlcontent']["xmlcontent_tpl_path_$format"] = array(
|
|
|
|
|
+ '#type' => 'textfield',
|
|
|
|
|
+ '#title' => t('Optional XML Template File Path'),
|
|
|
|
|
+ '#default_value' => variable_get("xmlcontent_tpl_path_$format", ''),
|
|
|
|
|
+ '#field_prefix' => drupal_get_path('module', 'xmlcontent'). '/',
|
|
|
|
|
+ '#description' => t('The file path to the optional XML template, wrapper around the XML content before processing.'),
|
|
|
|
|
+ );
|
|
|
|
|
$form['xmlcontent']["xmlcontent_xslt_path_$format"] = array(
|
|
|
|
|
'#type' => 'textfield',
|
|
|
|
|
'#title' => t('XSLT Script File Path'),
|
|
|
|
|
@@ -218,6 +258,8 @@
|
|
|
|
|
|
|
|
|
|
// Load the XML document
|
|
|
|
|
$dom = new DomDocument('1.0', 'UTF-8');
|
|
|
|
|
+ $dom->resolveExternals = true;
|
|
|
|
|
+ $dom->substituteEntities = true;
|
|
|
|
|
$valid = $dom->loadXML($xml);
|
|
|
|
|
if (!$valid) {
|
|
|
|
|
watchdog('xmlcontent', "Invalid XML Content", WATCHDOG_WARNING);
|
|
|
|
|
@@ -227,6 +269,8 @@
|
|
|
|
|
// Load the XSLT script
|
|
|
|
|
// TODO: is there a way to cache it, or not necessary
|
|
|
|
|
$xsl = new DomDocument('1.0', 'UTF-8');
|
|
|
|
|
+ $xsl->resolveExternals = true;
|
|
|
|
|
+ $xsl->substituteEntities = true;
|
|
|
|
|
$xsl->load($path_to_xslt);
|
|
|
|
|
|
|
|
|
|
// Create the XSLT processor
|
|
|
|
|
@@ -242,10 +286,8 @@
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Transform
|
|
|
|
|
- $newdom = $proc->transformToDoc($dom);
|
|
|
|
|
-
|
|
|
|
|
- // Return the output as XML text (in fact subset of XHTML, depending on the XSLT script)
|
|
|
|
|
- return $newdom->saveXML();
|
|
|
|
|
+ $xml = $proc->transformToXML($dom);
|
|
|
|
|
+ return $xml;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Fix upgrading in "simplefeed" module if PostgreSQL is used.
|
|
|
|
|
Fix modules as Drupal 6.2 does not provide db_num_rows() anymore.
|
|
|
|
|
|
|
|
|
|
Index: sites/all/modules/simplefeed/simplefeed.install
|
|
|
|
|
--- sites/all/modules/simplefeed/simplefeed.install.orig 2008-06-11 07:22:28 +0200
|
|
|
|
|
+++ sites/all/modules/simplefeed/simplefeed.install 2008-06-14 15:09:53 +0200
|
|
|
|
|
@@ -31,8 +31,17 @@
|
|
|
|
|
|
|
|
|
|
function simplefeed_update_2() {
|
|
|
|
|
$ret = array();
|
|
|
|
|
- $ret[] = update_sql("ALTER TABLE {simplefeed_feed} DROP INDEX url");
|
|
|
|
|
- $ret[] = update_sql("ALTER TABLE {simplefeed_feed} CHANGE url url text");
|
|
|
|
|
+ switch ($GLOBALS['db_type']) {
|
|
|
|
|
+ case 'mysql':
|
|
|
|
|
+ case 'mysqli':
|
|
|
|
|
+ $ret[] = update_sql("ALTER TABLE {simplefeed_feed} DROP INDEX url");
|
|
|
|
|
+ $ret[] = update_sql("ALTER TABLE {simplefeed_feed} CHANGE url url text");
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'pgsql':
|
|
|
|
|
+ $ret[] = update_sql("DROP INDEX {simplefeed_feed}_url_idx");
|
|
|
|
|
+ $ret[] = update_sql("ALTER TABLE {simplefeed_feed} ALTER COLUMN url TYPE text");
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Index: sites/all/modules/simplefeed/simplefeed_item.install
|
|
|
|
|
--- sites/all/modules/simplefeed/simplefeed_item.install.orig 2008-06-11 07:22:28 +0200
|
|
|
|
|
+++ sites/all/modules/simplefeed/simplefeed_item.install 2008-06-14 16:23:01 +0200
|
|
|
|
|
@@ -60,8 +62,18 @@
|
|
|
|
|
|
|
|
|
|
function simplefeed_item_update_3() {
|
|
|
|
|
$ret = array();
|
|
|
|
|
- $ret[] = update_sql("ALTER TABLE {simplefeed_feed_item} CHANGE url url text");
|
|
|
|
|
- $ret[] = update_sql("ALTER TABLE {simplefeed_feed_item} CHANGE iid iid varchar(32) NOT NULL");
|
|
|
|
|
+ switch ($GLOBALS['db_type']) {
|
|
|
|
|
+ case 'mysql':
|
|
|
|
|
+ case 'mysqli':
|
|
|
|
|
+ $ret[] = update_sql("ALTER TABLE {simplefeed_feed_item} CHANGE url url text");
|
|
|
|
|
+ $ret[] = update_sql("ALTER TABLE {simplefeed_feed_item} CHANGE iid iid varchar(32) NOT NULL");
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'pgsql':
|
|
|
|
|
+ $ret[] = update_sql("ALTER TABLE {simplefeed_feed_item} ALTER COLUMN url TYPE text");
|
|
|
|
|
+ $ret[] = update_sql("ALTER TABLE {simplefeed_feed_item} ALTER COLUMN iid TYPE VARCHAR(32)");
|
|
|
|
|
+ $ret[] = update_sql("ALTER TABLE {simplefeed_feed_item} ALTER COLUMN iid SET NOT NULL");
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Fix helpers module for PostgreSQL usage.
|
|
|
|
|
|
|
|
|
|
Index: sites/all/modules/helpers/helpers_database.module
|
|
|
|
|
--- sites/all/modules/helpers/helpers_database.module.orig 2008-04-23 04:38:34 +0200
|
|
|
|
|
+++ sites/all/modules/helpers/helpers_database.module 2008-06-16 18:06:41 +0200
|
|
|
|
|
@@ -16,7 +16,7 @@
|
|
|
|
|
*
|
|
|
|
|
* NOTE: This is open code - do not put a function declaration on it.
|
|
|
|
|
*/
|
|
|
|
|
- $db_types = array('mysql', 'mysqli', 'postgres');
|
|
|
|
|
+ $db_types = array('mysql', 'mysqli', 'pgsql');
|
|
|
|
|
$dbtype = $GLOBALS['db_type'];
|
|
|
|
|
if (in_array($dbtype, $db_types)) {
|
|
|
|
|
// Using include because the site may not be using this so we don't want a fatal error.
|
|
|
|
|
Index: sites/all/modules/helpers/includes/dra_pgsql.inc
|
|
|
|
|
--- sites/all/modules/helpers/includes/dra_pgsql.inc.orig 2008-06-16 17:49:43 +0200
|
|
|
|
|
+++ sites/all/modules/helpers/includes/dra_pgsql.inc 2008-06-16 18:05:19 +0200
|
|
|
|
|
@@ -0,0 +1,40 @@
|
|
|
|
|
+<?php
|
|
|
|
|
+/* $Id */
|
|
|
|
|
+ /**
|
|
|
|
|
+ * Return a result array from the previous query. PostgreSql version.
|
|
|
|
|
+ * This is very handy for building an option list for a form element.
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param $result
|
|
|
|
|
+ * A database query result resource, as returned from db_query().
|
|
|
|
|
+ * @return
|
|
|
|
|
+ * The resulting array or FALSE.
|
|
|
|
|
+ * If the query contains -- the result array would be
|
|
|
|
|
+ * 0 columns (bool)FALSE
|
|
|
|
|
+ * 1 column value => value
|
|
|
|
|
+ * 2 columns 1st value => 2nd value
|
|
|
|
|
+ * 3 or more 1st value => array(2nd value, 3rd value, ...)
|
|
|
|
|
+ */
|
|
|
|
|
+function db_result_array($result) {
|
|
|
|
|
+ $array = array();
|
|
|
|
|
+ while ($row = pg_fetch_array($result, NULL, PGSQL_NUM)) {
|
|
|
|
|
+ $y = count($row);
|
|
|
|
|
+ switch ($y) {
|
|
|
|
|
+ case 0:
|
|
|
|
|
+ drupal_set_message(t('Db_result_array found no columns in the result set.'), 'error');
|
|
|
|
|
+ return false;
|
|
|
|
|
+
|
|
|
|
|
+ case 1:
|
|
|
|
|
+ $array[$row[0]] = $row[0];
|
|
|
|
|
+ break;
|
|
|
|
|
+
|
|
|
|
|
+ case 2:
|
|
|
|
|
+ $array[$row[0]] = $row[1];
|
|
|
|
|
+ break;
|
|
|
|
|
+
|
|
|
|
|
+ default:
|
|
|
|
|
+ $array[$row[0]] = array_slice($row, 1);
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return $array;
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Fix PostgreSQL usage.
|
|
|
|
|
|
|
|
|
|
Index: sites/all/modules/nodeupdates/nodeupdates.install
|
|
|
|
|
--- sites/all/modules/nodeupdates/nodeupdates.install.orig 2007-12-31 15:11:57 +0100
|
|
|
|
|
+++ sites/all/modules/nodeupdates/nodeupdates.install 2008-06-18 18:00:08 +0200
|
|
|
|
|
@@ -15,10 +15,10 @@
|
|
|
|
|
|
|
|
|
|
case 'pgsql':
|
|
|
|
|
db_query("CREATE TABLE {nodeupdates} (
|
|
|
|
|
- nid integer(10) NOT NULL default '0',
|
|
|
|
|
+ nid integer NOT NULL default '0',
|
|
|
|
|
title varchar(128) NOT NULL default '',
|
|
|
|
|
- message longtext NOT NULL default '',
|
|
|
|
|
- timestamp integer(11) NOT NULL default '0'
|
|
|
|
|
+ message text NOT NULL default '',
|
|
|
|
|
+ timestamp integer NOT NULL default '0'
|
|
|
|
|
)");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Since PHP 5.3 calling functions with objects and having the function
|
|
|
|
|
declare the object parameter as a reference causes a run-time error.
|
|
|
|
|
The "call-by-reference" indicator "&" has to be removed from parameters
|
|
|
|
|
which are known to be passed as objects (by reference).
|
|
|
|
|
|
|
|
|
|
Index: sites/all/modules/diff/diff.module
|
|
|
|
|
--- sites/all/modules/diff/diff.module.orig 2010-08-12 18:34:08.000000000 +0200
|
|
|
|
|
+++ sites/all/modules/diff/diff.module 2010-08-13 14:18:26.000000000 +0200
|
|
|
|
|
@@ -87,7 +87,7 @@
|
|
|
|
|
/**
|
|
|
|
|
* Implementation of hook_menu_alter().
|
|
|
|
|
*/
|
|
|
|
|
-function diff_menu_alter(&$callbacks) {
|
|
|
|
|
+function diff_menu_alter($callbacks) {
|
|
|
|
|
// Overwrite the default 'Revisions' page
|
|
|
|
|
$callbacks['node/%node/revisions']['page callback'] = 'diff_diffs_overview';
|
|
|
|
|
$callbacks['node/%node/revisions']['module'] = 'diff';
|
|
|
|
|
@@ -133,7 +133,7 @@
|
|
|
|
|
/**
|
|
|
|
|
* Implementation of hook_nodeapi().
|
|
|
|
|
*/
|
|
|
|
|
-function diff_nodeapi(&$node, $op, $teaser, $page) {
|
|
|
|
|
+function diff_nodeapi($node, $op, $teaser, $page) {
|
|
|
|
|
if ($page && $op == 'view' && user_access('view revisions') && variable_get('show_diff_inline_'. $node->type, FALSE)) {
|
|
|
|
|
// Ugly but cheap way to check that we are viewing a node's revision page.
|
|
|
|
|
if (arg(2) === 'revisions' && arg(3) === $node->vid) {
|
|
|
|
|
@@ -149,7 +149,7 @@
|
|
|
|
|
/**
|
|
|
|
|
* Implementation of hook_form_alter().
|
|
|
|
|
*/
|
|
|
|
|
-function diff_form_alter(&$form, $form_state, $form_id) {
|
|
|
|
|
+function diff_form_alter($form, $form_state, $form_id) {
|
|
|
|
|
if (isset($form['type']['#value']) && $form['type']['#value'] .'_node_form' == $form_id) {
|
|
|
|
|
// Add a 'View changes' button on the node edit form.
|
|
|
|
|
if (variable_get('show_preview_changes_'. $form['type']['#value'], TRUE) && $form['nid']['#value'] > 0) {
|
|
|
|
|
@@ -194,7 +194,7 @@
|
|
|
|
|
/**
|
|
|
|
|
* Callback if 'View changes' is pressed.
|
|
|
|
|
*/
|
|
|
|
|
-function diff_node_form_build_preview_changes($form, &$form_state) {
|
|
|
|
|
+function diff_node_form_build_preview_changes($form, $form_state) {
|
|
|
|
|
module_load_include('inc', 'diff', 'diff.pages');
|
|
|
|
|
$node = node_form_submit_build_node($form, $form_state);
|
|
|
|
|
|
|
|
|
|
@@ -323,7 +323,7 @@
|
|
|
|
|
/**
|
|
|
|
|
* Form submission handler for diff_inline_form() for JS-disabled clients.
|
|
|
|
|
*/
|
|
|
|
|
-function diff_inline_form_submit(&$form, &$form_state) {
|
|
|
|
|
+function diff_inline_form_submit($form, $form_state) {
|
|
|
|
|
if (isset($form_state['values']['revision'], $form_state['values']['node'])) {
|
|
|
|
|
$node = $form_state['values']['node'];
|
|
|
|
|
$vid = $form_state['values']['revision'];
|
|
|
|
|
|