|
TOC: No TOC in "TWiki.TWikiFuncModule"
|
|
Description
|
< < |
This module defines official funtions that Plugins and add-on
scripts can use to interact with the TWiki engine and content.
|
> > |
This module defines official funtions that Plugins
and add-on scripts can use to interact with the TWiki engine and content.
|
|
Plugins should only use functions published in this module. If you use
functions in other TWiki libraries you might impose a security hole and
you will likely need to change your Plugin when you upgrade TWiki.
|
> > |
The "Since" field refers to the VERSION number of
the TWiki::Plugins module and the date that the function was addded.
|
|
Functions: CGI Environment
getSessionValue( $key ) ==> $value
|
|
Description: | Get a session value from the Session Plugin (if installed) |
Parameter: $key | Session key |
Return: $value | Value associated with key; empty string if not set; undef if session plugin is not installed |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (27 Feb 2001) |
|
|
setSessionValue( $key, $value ) ==> $result
|
|
Parameter: $key | Session key |
Parameter: $value | Value associated with key |
Return: $result | "1" if success; undef if session plugin is not installed |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (17 Aug 2001) |
|
|
getSkin( ) ==> $skin
Description: | Get the name of the skin, set by the SKIN preferences variable or the skin CGI parameter |
Return: $skin | Name of skin, e.g. "gnu" . Empty string if none |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (29 Jul 2001) |
|
|
getUrlHost( ) ==> $host
Description: | Get protocol, domain and optional port of script URL |
Return: $host | URL host, e.g. "http://example.com:80" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
getScriptUrl( $web, $topic, $script ) ==> $url
|
|
Parameter: $topic | Topic name, e.g. "WebNotify" |
Parameter: $script | Script name, e.g. "view" |
Return: $url | URL, e.g. "http://example.com:80/cgi-bin/view.pl/Main/WebNotify" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
getScriptUrlPath( ) ==> $path
Description: | Get script URL path |
Return: $path | URL path of TWiki scripts, e.g. "/cgi-bin" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
getViewUrl( $web, $topic ) ==> $url
|
|
Parameter: $web | Web name, e.g. "Main" . The current web is taken if empty |
Parameter: $topic | Topic name, e.g. "WebNotify" |
Return: $url | URL, e.g. "http://example.com:80/cgi-bin/view.pl/Main/WebNotify" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
getOopsUrl( $web, $topic, $template, $param1, $param2, $param3, $param4 ) ==> $url
|
|
Parameter: $template | Oops template name, e.g. "oopslocked" |
Parameter: $param1 ... $param4 | Parameter values for %PARAM1% ... %PARAM4% variables in template, optional |
Return: $url | URL, e.g. "http://example.com:80/cgi-bin/oops.pl/ Main/WebNotify?template=oopslocked¶m1=joe" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
getPubUrlPath( ) ==> $path
Description: | Get pub URL path |
Return: $path | URL path of pub directory, e.g. "/pub" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (14 Jul 2001) |
|
|
getCgiQuery( ) ==> $query
Description: | Get CGI query object. Important: Plugins cannot assume that scripts run under CGI, Plugins must always test if the CGI query object is set |
Return: $query | CGI query object; or 0 if script is called as a shell script |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
writeHeader( $query )
Description: | Prints a basic content-type HTML header for text/html to standard out |
Parameter: $query | CGI query object |
Return: | none |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
redirectCgiQuery( $query, $url )
|
|
Parameter: $query | CGI query object |
Parameter: $url | URL to redirect to |
Return: | none, never returns |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
Functions: Preferences
|
|
Parameter: $attr | Attribute string |
Parameter: $name | Name, optional |
Return: $value | Extracted value |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
- Example:
- Variable:
%TEST{ "nameless" name1="val1" name2="val2" }%
- First extract text between
{...} to get: "nameless" name1="val1" name2="val2"
- Then call this on the text:
my $noname = TWiki::Func::extractNameValuePair( $text );
|
< < |
my $name1 = TWiki::Func::extractNameValuePair( $text, "name1" );
my $name2 = TWiki::Func::extractNameValuePair( $text, "name2" );
|
> > |
my $val1 = TWiki::Func::extractNameValuePair( $text, "name1" );
my $val2 = TWiki::Func::extractNameValuePair( $text, "name2" );
|
|
getPreferencesValue( $key, $web ) ==> $value
|
|
Parameter: $key | Preferences key |
Parameter: $web | Name of web, optional. Current web if not specified; does not apply to settings of Plugin topics |
Return: $value | Preferences value; empty string if not set |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
- Example for Plugin setting:
- MyPlugin? topic has:
* Set COLOR = red
|
|
-
- WebPreferences topic has:
* Set WEBBGCOLOR = #FFFFC0
-
my $webColor = TWiki::Func::getPreferencesValue( "WEBBGCOLOR", "Sandbox" );
|
> > |
getPluginPreferencesValue( $key ) ==> $value
Description: | Get a preferences value from your Plugin |
Parameter: $key | Plugin Preferences key w/o PLUGINNAME_ prefix. |
Return: $value | Preferences value; empty string if not set |
Since: | TWiki::Plugins::VERSION 1.021 (27 Mar 2004) |
|
|
getPreferencesFlag( $key, $web ) ==> $value
Description: | Get a preferences flag from TWiki or from a Plugin |
Parameter: $key | Preferences key |
Parameter: $web | Name of web, optional. Current web if not specified; does not apply to settings of Plugin topics |
Return: $value | Preferences flag "1" (if set), or "0" (for preferences values "off" , "no" and "0" ) |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
- Example for Plugin setting:
- MyPlugin? topic has:
* Set SHOWHELP = off
- Use
"MYPLUGIN_SHOWHELP" for $key
-
my $showHelp = TWiki::Func::getPreferencesFlag( "MYPLUGIN_SHOWHELP" );
|
> > |
getPluginPreferencesFlag( $key ) ==> $flag
Description: | Get a preferences flag from your Plugin |
Parameter: $key | Plugin Preferences key w/o PLUGINNAME_ prefix. |
Return: $flag | Preferences flag "1" (if set), or "0" (for preferences values "off" , "no" and "0" , or values not set at all) |
Since: | TWiki::Plugins::VERSION 1.021 (27 Mar 2004) |
|
|
getWikiToolName( ) ==> $name
Description: | Get toolname as defined in TWiki.cfg |
Return: $name | Name of tool, e.g. "TWiki" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (27 Feb 2001) |
|
|
getMainWebname( ) ==> $name
Description: | Get name of Main web as defined in TWiki.cfg |
Return: $name | Name, e.g. "Main" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (27 Feb 2001) |
|
|
getTwikiWebname( ) ==> $name
Description: | Get name of TWiki documentation web as defined in TWiki.cfg |
Return: $name | Name, e.g. "TWiki" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (27 Feb 2001) |
|
|
Functions: User Handling and Access Control
|
|
Description: | Get default user name as defined in TWiki.cfg's $defaultUserName |
Return: $loginName | Default user name, e.g. "guest" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
getWikiName( ) ==> $wikiName
Description: | Get Wiki name of logged in user |
Return: $wikiName | Wiki Name, e.g. "JohnDoe" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
getWikiUserName( $text ) ==> $wikiName
Description: | Get Wiki name of logged in user with web prefix |
Return: $wikiName | Wiki Name, e.g. "Main.JohnDoe" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
wikiToUserName( $wikiName ) ==> $loginName
Description: | Translate a Wiki name to a login name based on Main.TWikiUsers topic |
Parameter: $wikiName | Wiki name, e.g. "Main.JohnDoe" or "JohnDoe" |
Return: $loginName | Login name of user, e.g. "jdoe" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
userToWikiName( $loginName, $dontAddWeb ) ==> $wikiName
|
|
Parameter: $loginName | Login name, e.g. "jdoe" |
Parameter: $dontAddWeb | Do not add web prefix if "1" |
Return: $wikiName | Wiki name of user, e.g. "Main.JohnDoe" or "JohnDoe" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
isGuest( ) ==> $flag
Description: | Test if logged in user is a guest |
Return: $flag | "1" if yes, "0" if not |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
permissionsSet( $web ) ==> $flag
Description: | Test if any access restrictions are set for this web, ignoring settings on individual pages |
Parameter: $web | Web name, required, e.g. "Sandbox" |
Return: $flag | "1" if yes, "0" if no |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (27 Feb 2001) |
|
|
checkAccessPermission( $type, $wikiName, $text, $topic, $web ) ==> $flag
|
|
Parameter: $topic | Topic name, required, e.g. "PrivateStuff" |
Parameter: $web | Web name, required, e.g. "Sandbox" |
Return: $flag | "1" if access may be granted, "0" if not |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (27 Feb 2001) |
|
|
Functions: Content Handling
|
|
Description: | Test if web exists |
Parameter: $web | Web name, required, e.g. "Sandbox" |
Return: $flag | "1" if web exists, "0" if not |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (14 Jul 2001) |
|
|
topicExists( $web, $topic ) ==> $flag
|
|
Parameter: $web | Web name, optional, e.g. "Main" |
Parameter: $topic | Topic name, required, e.g. "TokyoOffice" , or "Main.TokyoOffice" |
Return: $flag | "1" if topic exists, "0" if not |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (14 Jul 2001) |
|
|
|
< < |
getRevisionInfo( $web, $topic ) ==> ( $date, $loginName, $rev )
|
> > |
getRevisionInfo($theWebName, $theTopic, $theRev, $attachment ) ==> ( $date, $user, $rev, $comment )
|
|
Description: | Get revision info of a topic |
|
< < |
Parameter: $web | Web name, optional, e.g. "Main" |
Parameter: $topic | Topic name, required, e.g. "TokyoOffice" |
Return: ( $date, $loginName, $rev ) | List with: ( last update date, login name of last user, minor part of top revision number ), e.g. ( "01 Jan 2003", "phoeny", "5" ) |
|
> > |
Parameter: $theWebName | Web name, optional, e.g. "Main" |
Parameter: $theTopic | Topic name, required, e.g. "TokyoOffice" |
Parameter: $theRev | revsion number, or tag name (can be in the format 1.2, or just the minor number) |
Parameter: $attachment | attachment filename |
Return: ( $date, $user, $rev, $comment ) | List with: ( last update date, login name of last user, minor part of top revision number ), e.g. ( 1234561, "phoeny", "5" ) |
$date | in epochSec |
$user | |
$rev | |
$comment | WHAT COMMENT? |
Since: | TWiki::Plugins::VERSION 1.000 (29 Jul 2001) |
|
|
checkTopicEditLock( $web, $topic ) ==> ( $oopsUrl, $loginName, $unlockTime )
|
|
Parameter: $web | Web name, e.g. "Main" , or empty |
Parameter: $topic | Topic name, e.g. "MyTopic" , or "Main.MyTopic" |
Return: ( $oopsUrl, $loginName, $unlockTime ) | The $oopsUrl for calling redirectCgiQuery(), user's $loginName , and estimated $unlockTime in minutes. The $oopsUrl and $loginName is empty if topic has no edit lock. |
|
> > |
Since: | TWiki::Plugins::VERSION 1.010 (31 Dec 2002) |
|
|
setTopicEditLock( $web, $topic, $lock ) ==> $oopsUrl
|
|
Parameter: $topic | Topic name, e.g. "MyTopic" , or "Main.MyTopic" |
Parameter: $lock | Set to 1 to lock topic, 0 to unlock |
Return: $oopsUrl | Empty string if OK; the $oopsUrl for calling redirectCgiQuery() in case lock is already taken when trying to lock topic |
|
> > |
Since: | TWiki::Plugins::VERSION 1.010 (31 Dec 2002) |
|
|
readTopicText( $web, $topic, $rev, $ignorePermissions ) ==> $text
|
|
Parameter: $rev | Topic revision to read, optional. Specify the minor part of the revision, e.g. "5" , not "1.5" ; the top revision is returned if omitted or empty. |
Parameter: $ignorePermissions | Set to "1" if checkAccessPermission() is already performed and OK; an oops URL is returned if user has no permission |
Return: $text | Topic text with embedded meta data; an oops URL for calling redirectCgiQuery() is returned in case of an error |
|
> > |
Since: | TWiki::Plugins::VERSION 1.010 (31 Dec 2002) |
|
|
saveTopicText( $web, $topic, $text, $ignorePermissions, $dontNotify ) ==> $oopsUrl
|
|
Parameter: $ignorePermissions | Set to "1" if checkAccessPermission() is already performed and OK |
Parameter: $dontNotify | Set to "1" if not to notify users of the change |
Return: $oopsUrl | Empty string if OK; the $oopsUrl for calling redirectCgiQuery() in case of error |
|
> > |
Since: | TWiki::Plugins::VERSION 1.010 (31 Dec 2002) |
|
|
- Example:
my $oopsUrl = TWiki::Func::setTopicEditLock( $web, $topic, 1 );
|
|
Description: | Get list of all public webs, e.g. all webs that do not have the NOSEARCHALL flag set in the WebPreferences |
Return: @webs | List of all public webs, e.g. ( "Main", "Know", "TWiki" ) |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
getTopicList( $web ) ==> @topics
Description: | Get list of all topics in a web |
Parameter: $web | Web name, required, e.g. "Sandbox" |
Return: @topics | Topic list, e.g. ( "WebChanges", "WebHome", "WebIndex", "WebNotify" ) |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
Functions: Rendering
|
|
Parameter: $topic | Current topic name, e.g. "WebNotify" |
Parameter: $web | Web name, optional, e.g. "Main" . The current web is taken if missing |
Return: $text | Expanded text, e.g. "Current user is TWikiGuest" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
renderText( $text, $web ) ==> $text
|
|
Parameter: $text | Text to render, e.g. "*bold* text and =fixed font=" |
Parameter: $web | Web name, optional, e.g. "Main" . The current web is taken if missing |
Return: $text | XHTML text, e.g. "<b>bold</b> and <code>fixed font</code>" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
internalLink( $pre, $web, $topic, $label, $anchor, $createLink ) ==> $text
|
|
Parameter: $anchor | Anchor, optional, e.g. "#Jump" |
Parameter: $createLink | Set to "1" to add question linked mark after topic name if topic does not exist; set to "0" to suppress link for non-existing topics |
Return: $text | XHTML anchor, e.g. "<a href="/cgi-bin/view/Main/WebNotify#Jump">notify</a>" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
search text( $text ) ==> $text
Description: | This is not a function, just a how-to note. Use: expandCommonVariables("%SEARCH{...}%" ); |
Parameter: $text | Search variable |
|
< < |
|
> > |
formatTime( $time, $format, $timezone ) ==> $text
Description: | Format the time in seconds into the desired time string |
Parameter: $time | Time in epoc seconds |
Parameter: $format | Format type, optional. Default e.g. " TWiki::Plugins::VERSION 1.010 (31 Dec 2002) - 19:30" , can be "iso" (e.g. "2002-12-31T19:30Z" ), "rcs" (e.g. "2001/12/31 23:59:59" , "http" for HTTP header format (e.g. "Thu, 23 Jul 1998 07:21:56 GMT" ) |
Parameter: $timezone | either not defined (uses the displaytime setting), "gmtime", or "servertime" |
Return: $text | Formatted time string |
Note: | if you used the removed formatGmTime, add a third parameter "gmtime" |
Since: | TWiki::Plugins::VERSION 1.020 (26 Feb 2004) |
|
|
formatGmTime( $time, $format ) ==> $text
|
> > |
NOTE: | The following function is deprecated and should not be used. Use formatTime() instead |
|
|
Description: | Format the time to GM time |
Parameter: $time | Time in epoc seconds |
Parameter: $format | Format type, optional. Default e.g. "31 Dec 2002 - 19:30" , can be "iso" (e.g. "2002-12-31T19:30Z" ), "rcs" (e.g. "2001/12/31 23:59:59" , "http" for HTTP header format (e.g. "Thu, 23 Jul 1998 07:21:56 GMT" ) |
Return: $text | Formatted time string |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
Functions: File I/O
|
|
Description: | Get data directory (topic file root) |
Return: $dir | Data directory, e.g. "/twiki/data" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
getPubDir( ) ==> $dir
Description: | Get pub directory (file attachment root). Attachments are in $dir/Web/TopicName |
Return: $dir | Pub directory, e.g. "/htdocs/twiki/pub" |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
readTopic( $web, $topic ) ==> ( $meta, $text )
NOTE: | The following function is deprecated and should not be used. Use readTopicText() instead |
Description: | Read topic text and meta data, regardless of access permissions. |
Parameter: $web | Web name, required, e.g. "Main" |
Parameter: $topic | Topic name, required, e.g. "TokyoOffice" |
Return: ( $meta, $text ) | Meta data object and topic text |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
readTemplate( $name, $skin ) ==> $text
|
|
Parameter: $name | Template name, e.g. "view" |
Parameter: $skin | Skin name, optional, e.g. "print" |
Return: $text | Template text |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
readFile( $filename ) ==> $text
Description: | Read text file, low level. NOTE: For topics use readTopicText() |
Parameter: $filename | Full path name of file |
Return: $text | Content of file |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
|
|
saveFile( $filename, $text )
|
|
Parameter: $filename | Full path name of file |
Parameter: $text | Text to save |
Return: | none |
|
> > |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
TODO: | This should return an error for the different failure modes. |
|
|
writeWarning( $text )
Description: | Log Warning that may require admin intervention to data/warning.txt |
Parameter: $text | Text to write; timestamp gets added |
Return: | none |
|
> > |
Since: | TWiki::Plugins::VERSION 1.020 (16 Feb 2004) |
|
|
writeDebug( $text )
Description: | Log debug message to data/debug.txt |
Parameter: $text | Text to write; timestamp gets added |
Return: | none |
|
> > |
Since: | TWiki::Plugins::VERSION 1.020 (16 Feb 2004) |
Functions: I18N related
getRegularExpression( $regexName ) ==> $pattern
Description: | Retrieves a TWiki predefined regular expression |
Parameter: $regexName | Name of the regular expression to retrieve. See notes below |
Return: | String or precompiled regular expression matching as described below |
Since: | TWiki::Plugins::VERSION 1.020 (9 Feb 2004) |
Notes: TWiki internally precompiles several regular expressions to represent various string entities
in an I18N-compatible manner. Plugins are encouraged to use these in matching where appropriate.
The following are guaranteed to be present; others may exist, but their use is unsupported and
they may be removed in future TWiki versions. Those which are marked "CC" are for use within
character classes and may not produce the desired results outside of them.
Name | Matches | CC |
mixedAlpha | Alphabetic characters | Y |
mixedAlphaNum | Alphanumeric charactecs | Y |
lowerAlpha | Lower case characters | Y |
upperAlpha | Upper case characters | Y |
wikiWordRegex | WikiWords | N |
Example:
my $upper = TWiki::Func::getRegularExpression("upperAlpha");
my $alpha = TWiki::Func::getRegularExpression("mixedAlpha");
my $capitalized = qr/[$upper][$alpha]+/;
setTopicRevisionTag( $web, $topic, $rev, $tag ) ==> $success
Description: | sets a names tag on the specified revision |
Parameter: $web | webname |
Parameter: $topic | topic name |
Parameter: $rev | the revision we are taging |
Parameter: $tag | the string to tag with |
Return: $success | |
TODO: | we need an error mechanism! |
Since: | TWiki::Plugins::VERSION 1.022 (20 April 2004) |
checkDependencies
Description: | checks a list of Perl dependencies at runtime |
Parameter: $context | Context description e.g. name of the module being checked |
Parameter: $deps | List of hashes containing dependency information |
Returns: | undef if dependencies are OK, an error message otherwise |
Since: | TWiki::Plugins::VERSION 1.025 (01 Aug 2004) |
The dependencies are expressed as a list of hashes. Each hash contains
the name of a package and (optionally) a boolean constraint on the VERSION
variable in that package. It is usually used from the initPlugin method
like this:
if( $TWiki::Plugins::VERSION >= 1.025 ) {
my @deps = (
{ package => 'TWiki::Plugins::CalendarPlugin', constraint => '>= 5.030' },
{ package => 'Time::ParseDate' },
{ package => 'Apache::VMonitor' }
);
my $err = TWiki::Func::checkDependencies( $pluginName, \@deps );
if( $err ) {
TWiki::Func::writeWarning( $err );
print STDERR $err; # print to webserver log file
return 0; # plugin initialisation failed
}
}
|
|
Copyright and License
|
< < |
Copyright (C) 2000-2003 Peter Thoeny, Peter@Thoeny.com
|
> > |
Copyright (C) 2000-2004 Peter Thoeny, Peter@Thoeny.com
|
|
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
|