From: Reini U. <ru...@us...> - 2005-01-21 12:02:42
|
Update of /cvsroot/phpwiki/phpwiki/lib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26401 Modified Files: main.php Log Message: deduce username for xmlrpc also Index: main.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/main.php,v retrieving revision 1.201 retrieving revision 1.202 diff -u -2 -b -p -d -r1.201 -r1.202 --- main.php 20 Jan 2005 10:18:17 -0000 1.201 +++ main.php 21 Jan 2005 12:02:32 -0000 1.202 @@ -1,4 +1,23 @@ <?php //-*-php-*- rcs_id('$Id$'); +/* + Copyright 1999,2000,2001,2002,2004,2005 $ThePhpWikiProgrammingTeam + + This file is part of PhpWiki. + + PhpWiki is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + PhpWiki is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with PhpWiki; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ define ('USE_PREFS_IN_PAGE', true); @@ -39,6 +58,7 @@ class WikiRequest extends Request { } if (ENABLE_USER_NEW) { - // load all necessary userclasses (otherwise session => __PHP_Incomplete_Class_Name) - // There's no way to demandload it later. (This way it's much slower but needs less memory than loading all) + // Preload all necessary userclasses. Otherwise session => __PHP_Incomplete_Class_Name + // There's no way to demandload it later. This way it's much slower but needs + // less memory than loading all if (ALLOW_BOGO_LOGIN) include_once("lib/WikiUser/BogoLogin.php"); @@ -58,7 +78,9 @@ class WikiRequest extends Request { $this->_dbsession = new DbSession($dbi, $dbi->getParam('prefix') . $dbi->getParam('db_session_table')); } + // Fixme: Does pear reset the error mask to 1? We have to find the culprit //$x = error_reporting(); -$this->version = phpwiki_version(); + + $this->version = phpwiki_version(); $this->Request(); // [90ms] @@ -73,6 +95,6 @@ $this->version = phpwiki_version(); // Restore auth state. This doesn't check for proper authorization! - if (ENABLE_USER_NEW) { $userid = $this->_deduceUsername(); + if (ENABLE_USER_NEW) { if (isset($this->_user) and !empty($this->_user->_authhow) and @@ -103,5 +125,7 @@ $this->version = phpwiki_version(); //$level = $this->_user->_level; $this->_user = UpgradeUser($this->_user, - new _FilePassUser($userid, $this->_user->_prefs, $this->_user->_file->filename)); + new _FilePassUser($userid, + $this->_user->_prefs, + $this->_user->_file->filename)); //$this->_user->_level = $level; } @@ -113,5 +137,5 @@ $this->version = phpwiki_version(); } } else { - $this->_user = new WikiUser($this, $this->_deduceUsername()); + $this->_user = new WikiUser($this, $userid); $this->_prefs = $this->_user->getPreferences(); } @@ -174,5 +198,5 @@ $this->version = phpwiki_version(); function updateAuthAndPrefs () { - if (isset($this->_user) and (!isa($this->_user,WikiUserClassname()))) { + if (isset($this->_user) and (!isa($this->_user, WikiUserClassname()))) { $this->_user = false; } @@ -191,6 +215,8 @@ $this->version = phpwiki_version(); } + $action = $this->getArg('action'); + // Save preferences in session and cookie - if (!defined('WIKI_XMLRPC') or !WIKI_XMLRPC) { + if ((defined('WIKI_XMLRPC') and !WIKI_XMLRPC) or $action != 'xmlrpc') { if (isset($this->_user)) { if (!isset($this->_user->_authhow) or $this->_user->_authhow != 'session') { @@ -204,5 +230,4 @@ $this->version = phpwiki_version(); // HACK ALERT: We may not set the request arg to create, // since the pageeditor has an ugly logic for action == create. - $action = $this->getArg('action'); if ($action == 'edit' or $action == 'create') { $page = $this->getPage(); @@ -340,5 +365,5 @@ $this->version = phpwiki_version(); } $user = $this->_user->AuthCheck(array('userid' => $userid)); - if (isa($user,WikiUserClassname())) { + if (isa($user, WikiUserClassname())) { $this->_setUser($user); // success! } @@ -630,7 +655,7 @@ TODO: check against these cases: function handleAction () { $action = $this->getArg('action'); - if ($this->isPost()) { + if ($this->isPost() and !$this->_user->isAdmin() and $action != 'browse') { $page = $this->getPage(); - if (!$this->_user->isAdmin() and $action != 'browse' and $page->get('moderation')) { + if ( $page->get('moderation') ) { require_once("lib/WikiPlugin.php"); $loader = new WikiPluginLoader(); @@ -758,12 +783,12 @@ TODO: check against these cases: function _deduceAction () { if (!($action = $this->getArg('action'))) { - // Detect XML-RPC requests + // Detect XML-RPC requests. TODO: SOAP? if ($this->isPost() - && $this->get('CONTENT_TYPE') == 'text/xml') { - global $HTTP_RAW_POST_DATA; - if (strstr($HTTP_RAW_POST_DATA, '<methodCall>')) { + && $this->get('CONTENT_TYPE') == 'text/xml' + && strstr($GLOBALS['HTTP_RAW_POST_DATA'], '<methodCall>') + ) + { return 'xmlrpc'; } - } return 'browse'; // Default if no action specified. } @@ -816,4 +841,19 @@ TODO: check against these cases: } } + + if ($this->getArg('action') == 'xmlrpc') { // how about SOAP? + // wiki.putPage has special otional userid/passwd arguments. check that later. + $userid = ''; + if (isset($HTTP_SERVER_VARS['REMOTE_USER'])) + $userid = $HTTP_SERVER_VARS['REMOTE_USER']; + elseif (isset($HTTP_SERVER_VARS['REMOTE_ADDR'])) + $userid = $HTTP_SERVER_VARS['REMOTE_ADDR']; + elseif (isset($HTTP_ENV_VARS['REMOTE_ADDR'])) + $userid = $HTTP_ENV_VARS['REMOTE_ADDR']; + elseif (isset($GLOBALS['REMOTE_ADDR'])) + $userid = $GLOBALS['REMOTE_ADDR']; + return $userid; + } + return false; } @@ -1195,4 +1235,7 @@ if (!defined('PHPWIKI_NOMAIN') or !PHPWI // $Log$ +// Revision 1.202 2005/01/21 12:02:32 rurban +// deduce username for xmlrpc also +// // Revision 1.201 2005/01/20 10:18:17 rurban // reformatting |