Index: .htaccess =================================================================== RCS file: /cvs/drupal/drupal/.htaccess,v retrieving revision 1.90.2.3 diff -u -p -r1.90.2.3 .htaccess --- .htaccess 10 Dec 2008 20:04:08 -0000 1.90.2.3 +++ .htaccess 3 Aug 2009 22:38:00 -0000 @@ -100,10 +100,13 @@ DirectoryIndex index.php # uncomment the following line: # RewriteBase / + RewriteRule ^xmlrpc/([0-9]+)/?$ xmlrpc.php?version=$1 [L] + # Rewrite URLs of the form 'x' to the form 'index.php?q=x'. RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !=/favicon.ico + RewriteCond %{REQUEST_URI} !=/xmlrpc(.*) RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] Index: xmlrpc.php =================================================================== RCS file: /cvs/drupal/drupal/xmlrpc.php,v retrieving revision 1.15 diff -u -p -r1.15 xmlrpc.php --- xmlrpc.php 10 Dec 2005 19:26:47 -0000 1.15 +++ xmlrpc.php 3 Aug 2009 22:38:00 -0000 @@ -6,9 +6,77 @@ * PHP page for handling incoming XML-RPC requests from clients. */ +// define xmlrpc method location +define('XMLRPC_PATH', 'sites/all/modules'); +define('XMLRPC_MODULE', 'logger'); +define('XMLRPC_FILE', 'xmlrpc'); + +// defined xmlrpc endpoints +$xmlrpc_versions = array('', 1); + +// any common.inc or other core functions that xmlrpc processing relies upon +function t($string, $args = array(), $langcode = NULL) { + if (empty($args)) { + return $string; + } + else { + // Transform arguments before inserting them. + foreach ($args as $key => $value) { + switch ($key[0]) { + case '@': + case '%': + default: + // Escaped only. + $args[$key] = check_plain($value); + break; + + case '!': + // Pass-through. + } + } + return strtr($string, $args); + } +} + +function watchdog_xmlrpc($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL) { + global $base_root; + + $current_db = db_set_active(); + + db_query("INSERT INTO {watchdog} + (type, message, variables, severity, link, location, referer, hostname, timestamp) + VALUES + ('%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', %d)", + $type, + $message, + serialize($variables), + $severity, + $link, + $base_root . request_uri(), + referer_uri(), + ip_address(), + time()); + + if ($current_db) { + db_set_active($current_db); + } +} + + include_once './includes/bootstrap.inc'; -drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); +drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE); include_once './includes/xmlrpc.inc'; include_once './includes/xmlrpcs.inc'; -xmlrpc_server(module_invoke_all('xmlrpc')); +if (in_array($_REQUEST['version'], $xmlrpc_versions)) { + require_once XMLRPC_PATH . '/' . XMLRPC_MODULE . '/' . XMLRPC_FILE . $_REQUEST['version'] . '.inc'; + + //debugging watchdog_xmlrpc('xmlrpc', 'xmlrpc api called with version %version', array('%version' => $_REQUEST['version']), WATCHDOG_DEBUG); + + $function = XMLRPC_MODULE . '_xmlrpc'; + $callbacks = $function(); + xmlrpc_server($callbacks); +} +else { + xmlrpc_server_error(-32601, t('Server error. Requested method version (@version) not specified.', array("@version" => $_REQUEST['version']))); +} Index: includes/menu.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/menu.inc,v retrieving revision 1.255.2.31 diff -u -p -r1.255.2.31 menu.inc --- includes/menu.inc 27 Apr 2009 12:50:13 -0000 1.255.2.31 +++ includes/menu.inc 3 Aug 2009 22:38:02 -0000 @@ -1422,8 +1422,8 @@ function menu_local_tasks($level = 0, $r return $root_path; } else { - // We do not display single tabs. - return (isset($tabs[$level]) && $tabs[$level]['count'] > 1) ? $tabs[$level]['output'] : ''; + // We do not display single tabs: BVDM yes we do for flukso! + return (isset($tabs[$level])) ? $tabs[$level]['output'] : ''; } }