From: Reini U. <ru...@us...> - 2004-05-02 15:10:18
|
Update of /cvsroot/phpwiki/phpwiki/lib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28815/lib Modified Files: IniConfig.php InlineParser.php WikiUserNew.php config.php imagecache.php loadsave.php main.php Log Message: new finally reliable way to detect if /index.php is called directly and if to include lib/main.php new global AllActionPages SetupWiki now loads all mandatory pages: HOME_PAGE, action pages, and warns if not. WikiTranslation what=buttons for Carsten to create the missing MacOSX buttons PageGroupTestOne => subpages renamed PhpWikiRss to PhpWikiRecentChanges more docs, default configs, ... Index: IniConfig.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/IniConfig.php,v retrieving revision 1.15 retrieving revision 1.16 diff -u -2 -b -p -d -r1.15 -r1.16 --- IniConfig.php 1 May 2004 15:59:29 -0000 1.15 +++ IniConfig.php 2 May 2004 15:10:05 -0000 1.16 @@ -237,8 +237,6 @@ function IniConfig($file) { } - // Default Wiki pages + // Default Wiki pages to force loading from pgsrc global $GenericPages; - if (!isset($rs['DEFAULT_WIKI_PAGES'])) - $rs['DEFAULT_WIKI_PAGES'] = "ReleaseNotes:SteveWainstead:TestPage"; $GenericPages = preg_split('/\s*:\s*/', @$rs['DEFAULT_WIKI_PAGES']); @@ -264,5 +262,5 @@ function IniConfig($file) { // moved from lib/config.php function fix_configs() { - global $FieldSeparator, $charset, $WikiNameRegexp, $KeywordLinkRegexp; + global $FieldSeparator, $charset, $WikiNameRegexp, $KeywordLinkRegexp, $AllActionPages; global $DisabledActions, $HTTP_SERVER_VARS, $DBParams, $LANG; @@ -324,4 +322,10 @@ function fix_configs() { $KeywordLinkRegexp = pcre_fix_posix_classes($KeywordLinkRegexp); + $AllActionPages = explode(':','AllPages:BackLinks:DebugInfo:FindPage:FullRecentChanges:' + .'FullTextSearch:FuzzyPages:InterWikiSearch:LikePages:MostPopular:' + .'OrphanedPages:PageDump:PageHistory:PageInfo:RandomPage:RateIt:' + .'RecentChanges:RecentEdits:RelatedChanges:TitleSearch:TranslateText:' + .'UpLoad:UserPreferences:WantedPages:WhoIsOnline'); + ////////////////////////////////////////////////////////////////// // Autodetect URL settings: @@ -364,8 +368,4 @@ function fix_configs() { } - // If user has not defined DATA_PATH, we want to use relative URLs. - if (!defined('DATA_PATH') && USE_PATH_INFO) - define('DATA_PATH', '..'); - // If user has not defined PHPWIKI_DIR, and we need it if (!defined('PHPWIKI_DIR') and !file_exists("themes/default")) { @@ -400,5 +400,8 @@ function fix_configs() { // FIXME: This is a hack, and won't work if the requested // pagename has a slash in it. - define('VIRTUAL_PATH', dirname($REDIRECT_URL . 'x')); + $temp = strtr(dirname($REDIRECT_URL . 'x'),"\\",'/'); + if ( ($temp == '/') || ($temp == '\\') ) + $temp = ''; + define('VIRTUAL_PATH', $temp); } else { define('VIRTUAL_PATH', SCRIPT_NAME); @@ -406,4 +409,18 @@ function fix_configs() { } + // If user has not defined DATA_PATH, we want to use relative URLs. + if (!defined('DATA_PATH')) { + // fix similar to the one suggested by jkalmbach for + // installations in the webrootdir, like "http://phpwiki.org/HomePage" + $temp = dirname(SCRIPT_NAME); + if ( ($temp == '/') || ($temp == '\\') ) + $temp = ''; + define('DATA_PATH', $temp); + /* + if (USE_PATH_INFO) + define('DATA_PATH', '..'); + */ + } + if (SERVER_PORT && SERVER_PORT != (SERVER_PROTOCOL == 'https' ? 443 : 80)) { @@ -423,8 +440,19 @@ function fix_configs() { define('PATH_INFO_PREFIX', '/'); - define('PHPWIKI_BASE_URL', SERVER_URL . (USE_PATH_INFO ? VIRTUAL_PATH . '/' : SCRIPT_NAME)); + // Detect PrettyWiki setup (not loading index.php directly) + // $SCRIPT_FILENAME should be the same as __FILE__ in index.php + if (!isset($SCRIPT_FILENAME)) + $SCRIPT_FILENAME = @$HTTP_SERVER_VARS['SCRIPT_FILENAME']; + if (!isset($SCRIPT_FILENAME)) + $SCRIPT_FILENAME = @$HTTP_ENV_VARS['SCRIPT_FILENAME']; + if (!isset($SCRIPT_FILENAME)) + $SCRIPT_FILENAME = dirname(__FILE__.'/../') . '/index.php'; + if (isWindows()) + $SCRIPT_FILENAME = strtr($SCRIPT_FILENAME,'/','\\'); + define('SCRIPT_FILENAME',$SCRIPT_FILENAME); + ////////////////////////////////////////////////////////////////// // Select database @@ -491,4 +519,14 @@ function fix_configs() { // $Log$ +// Revision 1.16 2004/05/02 15:10:05 rurban +// new finally reliable way to detect if /index.php is called directly +// and if to include lib/main.php +// new global AllActionPages +// SetupWiki now loads all mandatory pages: HOME_PAGE, action pages, and warns if not. +// WikiTranslation what=buttons for Carsten to create the missing MacOSX buttons +// PageGroupTestOne => subpages +// renamed PhpWikiRss to PhpWikiRecentChanges +// more docs, default configs, ... +// // Revision 1.15 2004/05/01 15:59:29 rurban // more php-4.0.6 compatibility: superglobals Index: InlineParser.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/InlineParser.php,v retrieving revision 1.39 retrieving revision 1.40 diff -u -2 -b -p -d -r1.39 -r1.40 --- InlineParser.php 29 Apr 2004 19:39:44 -0000 1.39 +++ InlineParser.php 2 May 2004 15:10:05 -0000 1.40 @@ -90,5 +90,5 @@ class RegexpSet */ function RegexpSet ($regexps) { - $this->_regexps = $regexps; + $this->_regexps = array_unique($regexps); } Index: WikiUserNew.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/WikiUserNew.php,v retrieving revision 1.63 retrieving revision 1.64 diff -u -2 -b -p -d -r1.63 -r1.64 --- WikiUserNew.php 1 May 2004 15:59:29 -0000 1.63 +++ WikiUserNew.php 2 May 2004 15:10:06 -0000 1.64 @@ -818,22 +818,17 @@ extends _AnonUser // Check the configured Prefs methods - if ( !isset($this->_prefs->_select) and !empty($DBAuthParams['pref_select']) - and in_array($DBParams['dbtype'],array('SQL','ADODB'))) { + $dbi = $this->getAuthDbh(); + if ( $dbi and !isset($this->_prefs->_select) and !empty($DBAuthParams['pref_select'])) { $this->_prefs->_method = $DBParams['dbtype']; - // preparate the SELECT statement $this->_prefs->_select = $this->prepare($DBAuthParams['pref_select'], "'\$userid'"); - //} else { - // unset($this->_prefs->_select); - } else { - $this->_prefs->_method = 'HomePage'; - } - if ( !isset($this->_prefs->_update) and !empty($DBAuthParams['pref_update']) - and in_array($DBParams['dbtype'],array('SQL','ADODB'))) { - $this->_prefs->_method = $DBParams['dbtype']; - // preparate the SELECT statement + // read-only prefs? + if ( !isset($this->_prefs->_update) and !empty($DBAuthParams['pref_update'])) { $this->_prefs->_update = $this->prepare($DBAuthParams['pref_update'], array("'\$userid'","'\$pref_blob'")); } + } else { + $this->_prefs->_method = 'HomePage'; + } // Upgrade to the next parent _PassUser class. Avoid recursion. @@ -2806,4 +2801,14 @@ extends UserPreferences // $Log$ +// Revision 1.64 2004/05/02 15:10:06 rurban +// new finally reliable way to detect if /index.php is called directly +// and if to include lib/main.php +// new global AllActionPages +// SetupWiki now loads all mandatory pages: HOME_PAGE, action pages, and warns if not. +// WikiTranslation what=buttons for Carsten to create the missing MacOSX buttons +// PageGroupTestOne => subpages +// renamed PhpWikiRss to PhpWikiRecentChanges +// more docs, default configs, ... +// // Revision 1.63 2004/05/01 15:59:29 rurban // more php-4.0.6 compatibility: superglobals Index: config.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/config.php,v retrieving revision 1.104 retrieving revision 1.105 diff -u -2 -b -p -d -r1.104 -r1.105 --- config.php 1 May 2004 11:26:37 -0000 1.104 +++ config.php 2 May 2004 15:10:06 -0000 1.105 @@ -271,5 +271,5 @@ function deduce_script_name() { function IsProbablyRedirectToIndex () { // This might be a redirect to the DirectoryIndex, - // e.g. REQUEST_URI = /dir/ got redirected + // e.g. REQUEST_URI = /dir/?some_action got redirected // to SCRIPT_NAME = /dir/index.php @@ -278,5 +278,6 @@ function IsProbablyRedirectToIndex () { // e.g. /dir/index.php/HomePage. - $requri = preg_quote($GLOBALS['HTTP_SERVER_VARS']['REQUEST_URI'], '%'); + $requri = preg_replace('/\?.*$/','',$GLOBALS['HTTP_SERVER_VARS']['REQUEST_URI']); + $requri = preg_quote($requri, '%'); return preg_match("%^${requri}[^/]*$%", $GLOBALS['HTTP_SERVER_VARS']['SCRIPT_NAME']); } @@ -291,4 +292,14 @@ if (!function_exists('array_key_exists') // $Log$ +// Revision 1.105 2004/05/02 15:10:06 rurban +// new finally reliable way to detect if /index.php is called directly +// and if to include lib/main.php +// new global AllActionPages +// SetupWiki now loads all mandatory pages: HOME_PAGE, action pages, and warns if not. +// WikiTranslation what=buttons for Carsten to create the missing MacOSX buttons +// PageGroupTestOne => subpages +// renamed PhpWikiRss to PhpWikiRecentChanges +// more docs, default configs, ... +// // Revision 1.104 2004/05/01 11:26:37 rurban // php-4.0.x support: array_key_exists (PHP 4 >= 4.1.0) Index: imagecache.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/imagecache.php,v retrieving revision 1.3 retrieving revision 1.4 diff -u -2 -b -p -d -r1.3 -r1.4 --- imagecache.php 25 Jan 2004 10:14:13 -0000 1.3 +++ imagecache.php 2 May 2004 15:10:07 -0000 1.4 @@ -3,5 +3,5 @@ Copyright (C) 2002 Johannes Große (Johannes Große) - This file is (not yet) part of PhpWiki. + This file is part of PhpWiki. PhpWiki is free software; you can redistribute it and/or modify @@ -29,8 +29,6 @@ include "lib/config.php"; require_once("lib/stdlib.php"); require_once('lib/Request.php'); -if (ENABLE_USER_NEW) - require_once("lib/WikiUserNew.php"); -else - require_once("lib/WikiUser.php"); +if (ENABLE_USER_NEW) require_once("lib/WikiUserNew.php"); +else require_once("lib/WikiUser.php"); require_once('lib/WikiDB.php'); @@ -39,7 +37,5 @@ require_once "lib/WikiPluginCached.php"; // ----------------------------------------------------------------------- -// FIXME: do I need this? What the hell does it? - -function deduce_pagename ($request) { +function deducePagename ($request) { if ($request->getArg('pagename')) return $request->getArg('pagename'); @@ -47,6 +43,14 @@ function deduce_pagename ($request) { if (USE_PATH_INFO) { $pathinfo = $request->get('PATH_INFO'); - if (ereg('^' . PATH_INFO_PREFIX . '(..*)$', $pathinfo, $m)) - return $m[1]; + $tail = substr($pathinfo, strlen(PATH_INFO_PREFIX)); + if ($tail != '' and $pathinfo == PATH_INFO_PREFIX . $tail) { + return $tail; + } + } + elseif ($this->isPost()) { + global $HTTP_GET_VARS; + if (isset($HTTP_GET_VARS['pagename'])) { + return $HTTP_GET_VARS['pagename']; + } } @@ -55,5 +59,28 @@ function deduce_pagename ($request) { return urldecode($query_string); - return gettext("HomePage"); + return HOME_PAGE; +} + +function deduceUsername() { + global $request, $HTTP_SERVER_VARS, $HTTP_ENV_VARS; + if (!empty($request->args['auth']) and !empty($request->args['auth']['userid'])) + return $request->args['auth']['userid']; + if (!empty($HTTP_SERVER_VARS['PHP_AUTH_USER'])) + return $HTTP_SERVER_VARS['PHP_AUTH_USER']; + if (!empty($HTTP_ENV_VARS['REMOTE_USER'])) + return $HTTP_ENV_VARS['REMOTE_USER']; + + if ($user = $request->getSessionVar('wiki_user')) { + $request->_user = $user; + $request->_user->_authhow = 'session'; + return ENABLE_USER_NEW ? $user->UserName() : $request->_user; + } + if ($userid = $request->getCookieVar('WIKI_ID')) { + if (!empty($userid) and substr($userid,0,2) != 's:') { + $request->_user->authhow = 'cookie'; + return $userid; + } + } + return false; } @@ -67,14 +94,42 @@ function deduce_pagename ($request) { function mainImageCache() { $request = new Request; - //$request->setArg('pagename', deduce_pagename($request)); - //$pagename = $request->getArg('pagename'); + // normalize pagename + $request->setArg('pagename', deducePagename($request)); + $pagename = $request->getArg('pagename'); // assume that every user may use the cache global $user; // FIXME: necessary ? - if (ENABLE_USER_NEW) - $user = WikiUser(); - else - $user = new WikiUser($request, 'ANON_OK'); - + if (ENABLE_USER_NEW) { + $userid = deduceUsername(); + if (isset($request->_user) and + !empty($request->_user->_authhow) and + $request->_user->_authhow == 'session') + { + if (isset($request->_user) and + ( ! isa($request->_user,WikiUserClassname()) + or (strtolower(get_class($request->_user)) == '_passuser'))) + { + $request->_user = WikiUser($userid,$request->_user->_prefs); + } + unset($request->_user->_HomePagehandle); + $request->_user->hasHomePage(); + // update the lockfile filehandle + if ( isa($request->_user,'_FilePassUser') and + $request->_user->_file->lockfile and + !$request->_user->_file->fplock ) + { + $request->_user = new _FilePassUser($userid,$request->_user->_prefs,$request->_user->_file->filename); + } + $request->_prefs = & $request->_user->_prefs; + } else { + $user = WikiUser($userid); + $request->_user =& $user; + $request->_prefs =& $request->_user->_prefs; + } + } else { + $user = new WikiUser($request, deduceUsername()); + $request->_user =& $user; + $request->_prefs = $request->_user->getPreferences(); + } $dbi = WikiDB::open($GLOBALS['DBParams']); Index: loadsave.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/loadsave.php,v retrieving revision 1.98 retrieving revision 1.99 diff -u -2 -b -p -d -r1.98 -r1.99 --- loadsave.php 29 Apr 2004 23:25:12 -0000 1.98 +++ loadsave.php 2 May 2004 15:10:07 -0000 1.99 @@ -548,10 +548,9 @@ function _tryinsertInterWikiMap($content trigger_error(_("Default InterWiki map file not loaded.") . $error_html, E_USER_NOTICE); - if ($goback) return $content; - trigger_error(sprintf(_("Loading InterWikiMap from external file %s."), - $$mapfile), E_USER_NOTICE); + // if loading from virgin setup do echo, otherwise trigger_error E_USER_NOTICE + echo sprintf(_("Loading InterWikiMap from external file %s."), $mapfile),"<br />"; $fd = fopen ($mapfile, "rb"); @@ -812,4 +811,6 @@ function LoadFileOrDir (&$request) { $source = $request->getArg('source'); + $finder = new FileFinder; + $source = $finder->slashifyPath($source); $page = rawurldecode(basename($source)); StartLoadDump($request, fmt("Loading '%s'", @@ -852,7 +853,29 @@ function SetupWiki (&$request) if ($default_pgsrc != $pgsrc) LoadAny($request, $default_pgsrc, $GenericPages); - + $request->setArg('overwrite',true); LoadAny($request, $pgsrc); + // Ensure that all mandatory pages are loaded + $finder = new FileFinder; + foreach (array_merge(explode(':',constant('HOME_PAGE') + .':OldTextFormattingRules:TextFormattingRules'), + $GLOBALS['AllActionPages'])) as $f) { + $page = gettext($f); + if (! $request->_dbi->isWikiPage($page) ) { + // translated version provided? + if ($f = FindLocalizedFile($pgsrc . $finder->_pathsep . $page, 1)) + LoadAny($request, $f); + /* + else { + LoadAny($request, FindFile(WIKI_PGSRC . $finder->_pathsep . $f)); + $page = basename($f); + } + */ + } + if (!$request->_dbi->isWikiPage($page)) { + trigger_error("Mandatory file %s couldn't be loaded!",E_USER_WARNING); + } + } + echo "</dl>\n"; EndLoadDump($request); @@ -883,4 +906,14 @@ function LoadPostFile (&$request) /** $Log$ + Revision 1.99 2004/05/02 15:10:07 rurban + new finally reliable way to detect if /index.php is called directly + and if to include lib/main.php + new global AllActionPages + SetupWiki now loads all mandatory pages: HOME_PAGE, action pages, and warns if not. + WikiTranslation what=buttons for Carsten to create the missing MacOSX buttons + PageGroupTestOne => subpages + renamed PhpWikiRss to PhpWikiRecentChanges + more docs, default configs, ... + Revision 1.98 2004/04/29 23:25:12 rurban re-ordered locale init (as in 1.3.9) Index: main.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/main.php,v retrieving revision 1.138 retrieving revision 1.139 diff -u -2 -b -p -d -r1.138 -r1.139 --- main.php 1 May 2004 15:59:29 -0000 1.138 +++ main.php 2 May 2004 15:10:07 -0000 1.139 @@ -95,5 +95,5 @@ class WikiRequest extends Request { if ($user_theme = $this->getPref('theme')) include_once("themes/$user_theme/themeinfo.php"); - if (empty($Theme) and defined ('THEME')) + if (empty($Theme) and defined('THEME')) include_once("themes/" . THEME . "/themeinfo.php"); if (empty($Theme)) @@ -325,4 +325,5 @@ class WikiRequest extends Request { 'viewsource' => _("view the source of this page"), 'xmlrpc' => _("access this wiki via XML-RPC"), + 'soap' => _("access this wiki via SOAP"), 'zip' => _("download a zip dump from this wiki"), 'ziphtml' => _("download an html zip dump from this wiki") @@ -352,4 +353,5 @@ class WikiRequest extends Request { 'viewsource' => _("Viewing the source of pages"), 'xmlrpc' => _("XML-RPC access"), + 'soap' => _("SOAP access"), 'zip' => _("Downloading zip dumps"), 'ziphtml' => _("Downloading html zip dumps") @@ -404,4 +406,5 @@ class WikiRequest extends Request { case 'edit': + case 'soap': if (defined('REQUIRE_SIGNIN_BEFORE_EDIT') && REQUIRE_SIGNIN_BEFORE_EDIT) return WIKIAUTH_BOGO; @@ -887,4 +890,14 @@ main(); // $Log$ +// Revision 1.139 2004/05/02 15:10:07 rurban +// new finally reliable way to detect if /index.php is called directly +// and if to include lib/main.php +// new global AllActionPages +// SetupWiki now loads all mandatory pages: HOME_PAGE, action pages, and warns if not. +// WikiTranslation what=buttons for Carsten to create the missing MacOSX buttons +// PageGroupTestOne => subpages +// renamed PhpWikiRss to PhpWikiRecentChanges +// more docs, default configs, ... +// // Revision 1.138 2004/05/01 15:59:29 rurban // more php-4.0.6 compatibility: superglobals |