Many PHPDocs, some unused and dyn declared vars

many PHPDocs
some unused variables
some dynamically declared variables declared
This commit is contained in:
Gerrit Uitslag 2014-10-01 11:30:27 +02:00
parent 59bc3b48fd
commit 42ea7f447f
41 changed files with 1354 additions and 249 deletions

View file

@ -101,7 +101,7 @@ class GitToolCLI extends DokuCLI {
/**
* Tries to install the given extensions using git clone
*
* @param $extensions
* @param array $extensions
*/
public function cmd_clone($extensions) {
$errors = array();
@ -130,7 +130,7 @@ class GitToolCLI extends DokuCLI {
/**
* Tries to install the given extensions using git clone with fallback to install
*
* @param $extensions
* @param array $extensions
*/
public function cmd_install($extensions) {
$errors = array();
@ -291,7 +291,7 @@ class GitToolCLI extends DokuCLI {
* Returns the repository for the given extension
*
* @param $extension
* @return bool|string
* @return false|string
*/
private function getSourceRepo($extension) {
/** @var helper_plugin_extension_extension $ext */

View file

@ -61,6 +61,13 @@ class WantedPagesCLI extends DokuCLI {
}
}
/**
* Determine directions of the search loop
*
* @param string $entry
* @param string $basepath
* @return int
*/
protected function dir_filter($entry, $basepath) {
if($entry == '.' || $entry == '..') {
return WantedPagesCLI::DIR_CONTINUE;
@ -77,6 +84,13 @@ class WantedPagesCLI extends DokuCLI {
return WantedPagesCLI::DIR_CONTINUE;
}
/**
* Collects recursively the pages in a namespace
*
* @param string $dir
* @return array
* @throws DokuCLI_Exception
*/
protected function get_pages($dir) {
static $trunclen = null;
if(!$trunclen) {
@ -108,6 +122,12 @@ class WantedPagesCLI extends DokuCLI {
return $pages;
}
/**
* Parse instructions and returns the non-existing links
*
* @param array $page array with page id and file path
* @return array
*/
function internal_links($page) {
global $conf;
$instructions = p_get_instructions(file_get_contents($page['file']));

View file

@ -14,6 +14,9 @@ class _DiffOp {
var $orig;
var $closing;
/**
* @return _DiffOp
*/
function reverse() {
trigger_error("pure virtual", E_USER_ERROR);
}
@ -104,6 +107,21 @@ class _DiffOp_Change extends _DiffOp {
*/
class _DiffEngine {
var $xchanged = array();
var $ychanged = array();
var $xv = array();
var $yv = array();
var $xind = array();
var $yind = array();
var $seq;
var $in_seq;
var $lcs;
/**
* @param array $from_lines
* @param array $to_lines
* @return _DiffOp[]
*/
function diff($from_lines, $to_lines) {
$n_from = count($from_lines);
$n_to = count($to_lines);
@ -495,9 +513,9 @@ class Diff {
* Constructor.
* Computes diff between sequences of strings.
*
* @param $from_lines array An array of strings.
* (Typically these are lines from a file.)
* @param $to_lines array An array of strings.
* @param array $from_lines An array of strings.
* (Typically these are lines from a file.)
* @param array $to_lines An array of strings.
*/
function __construct($from_lines, $to_lines) {
$eng = new _DiffEngine;
@ -512,8 +530,9 @@ class Diff {
*
* $diff = new Diff($lines1, $lines2);
* $rev = $diff->reverse();
* @return object A Diff object representing the inverse of the
* original diff.
*
* @return Diff A Diff object representing the inverse of the
* original diff.
*/
function reverse() {
$rev = $this;
@ -631,19 +650,19 @@ class MappedDiff extends Diff {
* case-insensitve diffs, or diffs which ignore
* changes in white-space.
*
* @param $from_lines array An array of strings.
* (Typically these are lines from a file.)
* @param string[] $from_lines An array of strings.
* (Typically these are lines from a file.)
*
* @param $to_lines array An array of strings.
* @param string[] $to_lines An array of strings.
*
* @param $mapped_from_lines array This array should
* have the same size number of elements as $from_lines.
* The elements in $mapped_from_lines and
* $mapped_to_lines are what is actually compared
* when computing the diff.
* @param string[] $mapped_from_lines This array should
* have the same size number of elements as $from_lines.
* The elements in $mapped_from_lines and
* $mapped_to_lines are what is actually compared
* when computing the diff.
*
* @param $mapped_to_lines array This array should
* have the same number of elements as $to_lines.
* @param string[] $mapped_to_lines This array should
* have the same number of elements as $to_lines.
*/
function __construct($from_lines, $to_lines, $mapped_from_lines, $mapped_to_lines) {
@ -697,12 +716,13 @@ class DiffFormatter {
/**
* Format a diff.
*
* @param $diff object A Diff object.
* @param Diff $diff A Diff object.
* @return string The formatted output.
*/
function format($diff) {
$xi = $yi = 1;
$x0 = $y0 = 0;
$block = false;
$context = array();
@ -752,6 +772,13 @@ class DiffFormatter {
return $this->_end_diff();
}
/**
* @param int $xbeg
* @param int $xlen
* @param int $ybeg
* @param int $ylen
* @param array $edits
*/
function _block($xbeg, $xlen, $ybeg, $ylen, &$edits) {
$this->_start_block($this->_block_header($xbeg, $xlen, $ybeg, $ylen));
foreach ($edits as $edit) {
@ -779,6 +806,13 @@ class DiffFormatter {
return $val;
}
/**
* @param int $xbeg
* @param int $xlen
* @param int $ybeg
* @param int $ylen
* @return string
*/
function _block_header($xbeg, $xlen, $ybeg, $ylen) {
if ($xlen > 1)
$xbeg .= "," . ($xbeg + $xlen - 1);
@ -788,6 +822,9 @@ class DiffFormatter {
return $xbeg . ($xlen ? ($ylen ? 'c' : 'd') : 'a') . $ybeg;
}
/**
* @param string $header
*/
function _start_block($header) {
echo $header;
}
@ -896,6 +933,9 @@ class _HWLDF_WordAccumulator {
$this->_tag = $new_tag;
}
/**
* @param string $new_tag
*/
function _flushLine($new_tag) {
$this->_flushGroup($new_tag);
if ($this->_line != '')
@ -1055,6 +1095,10 @@ class TableDiffFormatter extends DiffFormatter {
$this->trailing_context_lines = 2;
}
/**
* @param Diff $diff
* @return string
*/
function format($diff) {
// Preserve whitespaces by converting some to non-breaking spaces.
// Do not convert all of them to allow word-wrap.
@ -1165,6 +1209,10 @@ class InlineDiffFormatter extends DiffFormatter {
$this->trailing_context_lines = 2;
}
/**
* @param Diff $diff
* @return string
*/
function format($diff) {
// Preserve whitespaces by converting some to non-breaking spaces.
// Do not convert all of them to allow word-wrap.

View file

@ -172,7 +172,8 @@ class HTTPClient {
*
* @param string $url The URL to fetch
* @param bool $sloppy304 Return body on 304 not modified
* @return bool|string response body, false on error
* @return false|string response body, false on error
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
function get($url,$sloppy304=false){
@ -193,7 +194,8 @@ class HTTPClient {
* @param string $url The URL to fetch
* @param array $data Associative array of parameters
* @param bool $sloppy304 Return body on 304 not modified
* @return bool|string response body, false on error
* @return false|string response body, false on error
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
function dget($url,$data,$sloppy304=false){
@ -213,7 +215,7 @@ class HTTPClient {
*
* @param string $url The URL to fetch
* @param array $data Associative array of parameters
* @return bool|string response body, false on error
* @return false|string response body, false on error
* @author Andreas Gohr <andi@splitbrain.org>
*/
function post($url,$data){
@ -235,6 +237,7 @@ class HTTPClient {
* @param mixed $data - the post data either as array or raw data
* @param string $method - HTTP Method usually GET or POST.
* @return bool - true on success
*
* @author Andreas Goetz <cpuidle@gmx.de>
* @author Andreas Gohr <andi@splitbrain.org>
*/
@ -602,6 +605,7 @@ class HTTPClient {
* @param string $data The data to write
* @param string $message Description of what is being read
* @throws HTTPClientException
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function _sendData($socket, $data, $message) {
@ -646,6 +650,7 @@ class HTTPClient {
* @param bool $ignore_eof End-of-file is not an error if this is set
* @throws HTTPClientException
* @return string
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function _readData($socket, $nbytes, $message, $ignore_eof = false) {
@ -695,6 +700,7 @@ class HTTPClient {
* @param string $message Description of what is being read
* @throws HTTPClientException
* @return string
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function _readLine($socket, $message) {
@ -729,6 +735,9 @@ class HTTPClient {
* Uses _debug_text or _debug_html depending on the SAPI name
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $info
* @param mixed $var
*/
function _debug($info,$var=null){
if(!$this->debug) return;
@ -742,8 +751,8 @@ class HTTPClient {
/**
* print debug info as HTML
*
* @param $info
* @param null $var
* @param string $info
* @param mixed $var
*/
function _debug_html($info, $var=null){
print '<b>'.$info.'</b> '.($this->_time() - $this->start).'s<br />';
@ -759,8 +768,8 @@ class HTTPClient {
/**
* prints debug info as plain text
*
* @param $info
* @param null $var
* @param string $info
* @param mixed $var
*/
function _debug_text($info, $var=null){
print '*'.$info.'* '.($this->_time() - $this->start)."s\n";
@ -770,6 +779,8 @@ class HTTPClient {
/**
* Return current timestamp in microsecond resolution
*
* @return float
*/
static function _time(){
list($usec, $sec) = explode(" ", microtime());
@ -782,6 +793,9 @@ class HTTPClient {
* All Keys are lowercased.
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $string
* @return array
*/
function _parseHeaders($string){
$headers = array();
@ -810,6 +824,9 @@ class HTTPClient {
* convert given header array to header string
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param array $headers
* @return string
*/
function _buildHeaders($headers){
$string = '';
@ -824,6 +841,8 @@ class HTTPClient {
* get cookies as http header string
*
* @author Andreas Goetz <cpuidle@gmx.de>
*
* @return string
*/
function _getCookies(){
$headers = '';
@ -839,6 +858,9 @@ class HTTPClient {
* Encode data for posting
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param array $data
* @return string
*/
function _postEncode($data){
return http_build_query($data,'','&');
@ -849,6 +871,9 @@ class HTTPClient {
*
* @fixme use of urlencode might be wrong here
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param array $data
* @return string
*/
function _postMultipartEncode($data){
$boundary = '--'.$this->boundary;

View file

@ -140,6 +140,10 @@ class IXR_Message {
var $_lastseen;
// The XML parser
var $_parser;
/**
* @param string $message
*/
function IXR_Message ($message) {
$this->message = $message;
}
@ -684,6 +688,13 @@ class IXR_IntrospectionServer extends IXR_Server {
'Returns a documentation string for the specified method'
);
}
/**
* @param string $method
* @param string $callback
* @param string[] $args
* @param string $help
*/
function addCallback($method, $callback, $args, $help) {
$this->callbacks[$method] = $callback;
$this->signatures[$method] = $args;

View file

@ -83,7 +83,6 @@ class Input {
*
* @see isset
* @param string $name Parameter name
* @return bool
*/
public function remove($name) {
if(isset($this->access[$name])) {
@ -146,7 +145,7 @@ class Input {
* Access a request parameter as int
*
* @param string $name Parameter name
* @param mixed $default Default to return if parameter isn't set or is an array
* @param int $default Default to return if parameter isn't set or is an array
* @param bool $nonempty Return $default if parameter is set but empty()
* @return int
*/
@ -164,7 +163,7 @@ class Input {
* Access a request parameter as string
*
* @param string $name Parameter name
* @param mixed $default Default to return if parameter isn't set or is an array
* @param string $default Default to return if parameter isn't set or is an array
* @param bool $nonempty Return $default if parameter is set but empty()
* @return string
*/
@ -246,7 +245,7 @@ class Input {
*
* This function returns the $INPUT object itself for easy chaining
*
* @param $name
* @param string $name
* @return Input
*/
public function extract($name){

View file

@ -133,6 +133,9 @@ class JpegMeta {
* through one function
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param array|string $fields field name or array with field names
* @return bool|string
*/
function getField($fields) {
if(!is_array($fields)) $fields = array($fields);
@ -178,6 +181,10 @@ class JpegMeta {
* through one function
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $field field name
* @param string $value
* @return bool success or fail
*/
function setField($field, $value) {
if(strtolower(substr($field,0,5)) == 'iptc.'){
@ -194,6 +201,9 @@ class JpegMeta {
* through one function
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $field field name
* @return bool
*/
function deleteField($field) {
if(strtolower(substr($field,0,5)) == 'iptc.'){
@ -209,6 +219,9 @@ class JpegMeta {
* Return a date field
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $field
* @return false|string
*/
function getDateField($field) {
if (!isset($this->_info['dates'])) {
@ -226,6 +239,9 @@ class JpegMeta {
* Return a file info field
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $field field name
* @return false|string
*/
function getFileField($field) {
if (!isset($this->_info['file'])) {
@ -244,6 +260,8 @@ class JpegMeta {
*
* @author Andreas Gohr <andi@splitbrain.org>
* @todo handle makernotes
*
* @return false|string
*/
function getCamera(){
$make = $this->getField(array('Exif.Make','Exif.TIFFMake'));
@ -257,6 +275,8 @@ class JpegMeta {
* Return shutter speed as a ratio
*
* @author Joe Lapp <joe.lapp@pobox.com>
*
* @return string
*/
function getShutterSpeed() {
if (!isset($this->_info['exif'])) {
@ -275,6 +295,9 @@ class JpegMeta {
* Return an EXIF field
*
* @author Sebastian Delmont <sdelmont@zonageek.com>
*
* @param string $field field name
* @return false|string
*/
function getExifField($field) {
if (!isset($this->_info['exif'])) {
@ -296,6 +319,9 @@ class JpegMeta {
* Return an XMP field
*
* @author Hakan Sandell <hakan.sandell@mydata.se>
*
* @param string $field field name
* @return false|string
*/
function getXmpField($field) {
if (!isset($this->_info['xmp'])) {
@ -317,6 +343,9 @@ class JpegMeta {
* Return an Adobe Field
*
* @author Sebastian Delmont <sdelmont@zonageek.com>
*
* @param string $field field name
* @return false|string
*/
function getAdobeField($field) {
if (!isset($this->_info['adobe'])) {
@ -338,6 +367,9 @@ class JpegMeta {
* Return an IPTC field
*
* @author Sebastian Delmont <sdelmont@zonageek.com>
*
* @param string $field field name
* @return false|string
*/
function getIPTCField($field) {
if (!isset($this->_info['iptc'])) {
@ -360,6 +392,10 @@ class JpegMeta {
*
* @author Sebastian Delmont <sdelmont@zonageek.com>
* @author Joe Lapp <joe.lapp@pobox.com>
*
* @param string $field field name
* @param string $value
* @return bool
*/
function setExifField($field, $value) {
if (!isset($this->_info['exif'])) {
@ -390,6 +426,10 @@ class JpegMeta {
* Set an Adobe Field
*
* @author Sebastian Delmont <sdelmont@zonageek.com>
*
* @param string $field field name
* @param string $value
* @return bool
*/
function setAdobeField($field, $value) {
if (!isset($this->_info['adobe'])) {
@ -414,6 +454,10 @@ class JpegMeta {
* dimensions
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param int $maxwidth
* @param int $maxheight
* @return float|int
*/
function getResizeRatio($maxwidth,$maxheight=0){
if(!$maxheight) $maxheight = $maxwidth;
@ -443,6 +487,10 @@ class JpegMeta {
* Set an IPTC field
*
* @author Sebastian Delmont <sdelmont@zonageek.com>
*
* @param string $field field name
* @param string $value
* @return bool
*/
function setIPTCField($field, $value) {
if (!isset($this->_info['iptc'])) {
@ -466,6 +514,9 @@ class JpegMeta {
* Delete an EXIF field
*
* @author Sebastian Delmont <sdelmont@zonageek.com>
*
* @param string $field field name
* @return bool
*/
function deleteExifField($field) {
if (!isset($this->_info['exif'])) {
@ -487,6 +538,9 @@ class JpegMeta {
* Delete an Adobe field
*
* @author Sebastian Delmont <sdelmont@zonageek.com>
*
* @param string $field field name
* @return bool
*/
function deleteAdobeField($field) {
if (!isset($this->_info['adobe'])) {
@ -508,6 +562,9 @@ class JpegMeta {
* Delete an IPTC field
*
* @author Sebastian Delmont <sdelmont@zonageek.com>
*
* @param string $field field name
* @return bool
*/
function deleteIPTCField($field) {
if (!isset($this->_info['iptc'])) {
@ -529,7 +586,7 @@ class JpegMeta {
* Get the image's title, tries various fields
*
* @param int $max maximum number chars (keeps words)
* @return bool|mixed|string
* @return false|string
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
@ -556,6 +613,8 @@ class JpegMeta {
* Gather various date fields
*
* @author Sebastian Delmont <sdelmont@zonageek.com>
*
* @return array|bool
*/
function getDates() {
$this->_parseAll();
@ -692,6 +751,8 @@ class JpegMeta {
* Get the image width, tries various fields
*
* @author Sebastian Delmont <sdelmont@zonageek.com>
*
* @return false|string
*/
function getWidth() {
if (!isset($this->_info['sof'])) {
@ -721,6 +782,8 @@ class JpegMeta {
* Get the image height, tries various fields
*
* @author Sebastian Delmont <sdelmont@zonageek.com>
*
* @return false|string
*/
function getHeight() {
if (!isset($this->_info['sof'])) {
@ -750,6 +813,8 @@ class JpegMeta {
* Get an dimension string for use in img tag
*
* @author Sebastian Delmont <sdelmont@zonageek.com>
*
* @return false|string
*/
function getDimStr() {
if ($this->_markers == null) {
@ -766,6 +831,9 @@ class JpegMeta {
* Checks for an embedded thumbnail
*
* @author Sebastian Delmont <sdelmont@zonageek.com>
*
* @param string $which possible values: 'any', 'exif' or 'adobe'
* @return false|string
*/
function hasThumbnail($which = 'any') {
if (($which == 'any') || ($which == 'exif')) {
@ -807,6 +875,9 @@ class JpegMeta {
* Send embedded thumbnail to browser
*
* @author Sebastian Delmont <sdelmont@zonageek.com>
*
* @param string $which possible values: 'any', 'exif' or 'adobe'
* @return bool
*/
function sendThumbnail($which = 'any') {
$data = null;
@ -857,6 +928,9 @@ class JpegMeta {
*
* @author Sebastian Delmont <sdelmont@zonageek.com>
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $fileName file name or empty string for a random name
* @return bool
*/
function save($fileName = "") {
if ($fileName == "") {

View file

@ -108,6 +108,9 @@ class Mailer {
/**
* Callback function to automatically embed images referenced in HTML templates
*
* @param array $matches
* @return string placeholder
*/
protected function autoembed_cb($matches) {
static $embeds = 0;
@ -160,6 +163,8 @@ class Mailer {
*
* Whatever is set here is directly passed to PHP's mail() command as last
* parameter. Depending on the PHP setup this might break mailing alltogether
*
* @param string $param
*/
public function setParameters($param) {
$this->sendparam = $param;
@ -265,6 +270,8 @@ class Mailer {
* Placeholders can be used to reference embedded attachments
*
* You probably want to use setBody() instead
*
* @param string $html
*/
public function setHTML($html) {
$this->html = $html;
@ -274,6 +281,8 @@ class Mailer {
* Set the plain text part of the mail
*
* You probably want to use setBody() instead
*
* @param string $text
*/
public function setText($text) {
$this->text = $text;
@ -340,8 +349,8 @@ class Mailer {
* Example:
* cc("föö <foo@bar.com>, me@somewhere.com","TBcc");
*
* @param string|array $addresses Multiple adresses separated by commas or as array
* @return bool|string the prepared header (can contain multiple lines)
* @param string|string[] $addresses Multiple adresses separated by commas or as array
* @return false|string the prepared header (can contain multiple lines)
*/
public function cleanAddress($addresses) {
// No named recipients for To: in Windows (see FS#652)
@ -418,6 +427,8 @@ class Mailer {
* Prepare the mime multiparts for all attachments
*
* Replaces placeholders in the HTML with the correct CIDs
*
* @return string mime multiparts
*/
protected function prepareAttachments() {
$mime = '';
@ -565,9 +576,9 @@ class Mailer {
/**
* Returns a complete, EOL terminated header line, wraps it if necessary
*
* @param $key
* @param $val
* @return string
* @param string $key
* @param string $val
* @return string line
*/
protected function wrappedHeaderLine($key, $val){
return wordwrap("$key: $val", 78, MAILHEADER_EOL.' ').MAILHEADER_EOL;

View file

@ -16,8 +16,9 @@ class PassHash {
* match true is is returned else false
*
* @author Andreas Gohr <andi@splitbrain.org>
* @param $clear string Clear-Text password
* @param $hash string Hash to compare against
*
* @param string $clear Clear-Text password
* @param string $hash Hash to compare against
* @return bool
*/
function verify_hash($clear, $hash) {
@ -109,9 +110,9 @@ class PassHash {
* If $salt is not null, the value is kept, but the lenght restriction is
* applied (unless, $cut is false).
*
* @param string &$salt The salt, pass null if you want one generated
* @param int $len The length of the salt
* @param bool $cut Apply length restriction to existing salt?
* @param string|null &$salt The salt, pass null if you want one generated
* @param int $len The length of the salt
* @param bool $cut Apply length restriction to existing salt?
*/
public function init_salt(&$salt, $len = 32, $cut = true) {
if(is_null($salt)) {
@ -135,6 +136,7 @@ class PassHash {
* @author Andreas Gohr <andi@splitbrain.org>
* @author <mikey_nich at hotmail dot com>
* @link http://de.php.net/manual/en/function.crypt.php#73619
*
* @param string $clear The clear text to hash
* @param string $salt The salt to use, null for random
* @return string Hashed password
@ -175,6 +177,7 @@ class PassHash {
*
* @author <mikey_nich at hotmail dot com>
* @link http://de.php.net/manual/en/function.crypt.php#73619
*
* @param string $clear The clear text to hash
* @param string $salt The salt to use, null for random
* @param string $magic The hash identifier (apr1 or 1)
@ -337,6 +340,7 @@ class PassHash {
* an exception.
*
* @link http://www.openwall.com/phpass/
*
* @param string $clear The clear text to hash
* @param string $salt The salt to use, null for random
* @param string $magic The hash identifier (P or H)
@ -404,6 +408,7 @@ class PassHash {
* This is used by the Django Python framework
*
* @link http://docs.djangoproject.com/en/dev/topics/auth/#passwords
*
* @param string $clear The clear text to hash
* @param string $salt The salt to use, null for random
* @return string Hashed password
@ -420,6 +425,7 @@ class PassHash {
* This is used by the Django Python framework
*
* @link http://docs.djangoproject.com/en/dev/topics/auth/#passwords
*
* @param string $clear The clear text to hash
* @param string $salt The salt to use, null for random
* @return string Hashed password
@ -486,6 +492,7 @@ class PassHash {
* method 'A' is not supported.
*
* @link http://www.mediawiki.org/wiki/Manual_talk:User_table#user_password_column
*
* @param string $clear The clear text to hash
* @param string $salt The salt to use, null for random
* @return string Hashed password
@ -511,7 +518,6 @@ class PassHash {
* @param string $data Message to be hashed.
* @param string $key Shared secret key used for generating the HMAC variant of the message digest.
* @param bool $raw_output When set to TRUE, outputs raw binary data. FALSE outputs lowercase hexits.
*
* @return string
*/
public static function hmac($algo, $data, $key, $raw_output = false) {
@ -545,9 +551,8 @@ class PassHash {
/**
* Use DokuWiki's secure random generator if available
*
* @param $min
* @param $max
*
* @param int $min
* @param int $max
* @return int
*/
protected function random($min, $max){

View file

@ -13,6 +13,11 @@ class RemoteAPICore {
$this->api = $api;
}
/**
* Returns details about the core methods
*
* @return array
*/
function __getRemoteInfo() {
return array(
'dokuwiki.getVersion' => array(
@ -158,19 +163,27 @@ class RemoteAPICore {
);
}
/**
* @return string
*/
function getVersion() {
return getVersion();
}
/**
* @return int unix timestamp
*/
function getTime() {
return time();
}
/**
* Return a raw wiki page
*
* @param string $id wiki page id
* @param string $rev revision number of the page
* @return page text.
* @param int|string $rev revision timestamp of the page or empty string
* @return string page text.
* @throws RemoteAccessDeniedException if no permission for page
*/
function rawPage($id,$rev=''){
$id = $this->resolvePageId($id);
@ -189,8 +202,11 @@ class RemoteAPICore {
* Return a media file
*
* @author Gina Haeussge <osd@foosel.net>
*
* @param string $id file id
* @return media file
* @return mixed media file
* @throws RemoteAccessDeniedException no permission for media
* @throws RemoteException not exist
*/
function getAttachment($id){
$id = cleanID($id);
@ -211,6 +227,9 @@ class RemoteAPICore {
* Return info about a media file
*
* @author Gina Haeussge <osd@foosel.net>
*
* @param string $id page id
* @return array
*/
function getAttachmentInfo($id){
$id = cleanID($id);
@ -230,6 +249,11 @@ class RemoteAPICore {
/**
* Return a wiki page rendered to html
*
* @param string $id page id
* @param string|int $rev revision timestamp or empty string
* @return null|string html
* @throws RemoteAccessDeniedException no access to page
*/
function htmlPage($id,$rev=''){
$id = $this->resolvePageId($id);
@ -241,6 +265,8 @@ class RemoteAPICore {
/**
* List all pages - we use the indexer list here
*
* @return array
*/
function listPages(){
$list = array();
@ -265,6 +291,12 @@ class RemoteAPICore {
/**
* List all pages in the given namespace (and below)
*
* @param string $ns
* @param array $opts
* $opts['depth'] recursion level, 0 for all
* $opts['hash'] do md5 sum of content?
* @return array
*/
function readNamespace($ns,$opts){
global $conf;
@ -281,6 +313,9 @@ class RemoteAPICore {
/**
* List all pages in the given namespace (and below)
*
* @param string $query
* @return array
*/
function search($query){
$regex = '';
@ -314,6 +349,8 @@ class RemoteAPICore {
/**
* Returns the wiki title.
*
* @return string
*/
function getTitle(){
global $conf;
@ -328,6 +365,15 @@ class RemoteAPICore {
* a regular expression matching their name.
*
* @author Gina Haeussge <osd@foosel.net>
*
* @param string $ns
* @param array $options
* $options['depth'] recursion level, 0 for all
* $options['showmsg'] shows message if invalid media id is used
* $options['pattern'] check given pattern
* $options['hash'] add hashes to result list
* @return array
* @throws RemoteAccessDeniedException no access to the media files
*/
function listAttachments($ns, $options = array()) {
global $conf;
@ -359,6 +405,9 @@ class RemoteAPICore {
/**
* Return a list of backlinks
*
* @param string $id page id
* @return array
*/
function listBackLinks($id){
return ft_backlinks($this->resolvePageId($id));
@ -366,6 +415,12 @@ class RemoteAPICore {
/**
* Return some basic data about a page
*
* @param string $id page id
* @param string|int $rev revision timestamp or empty string
* @return array
* @throws RemoteAccessDeniedException no access for page
* @throws RemoteException page not exist
*/
function pageInfo($id,$rev=''){
$id = $this->resolvePageId($id);
@ -395,6 +450,13 @@ class RemoteAPICore {
* Save a wiki page
*
* @author Michael Klier <chi@chimeric.de>
*
* @param string $id page id
* @param string $text wiki text
* @param array $params parameters: summary, minor edit
* @return bool
* @throws RemoteAccessDeniedException no write access for page
* @throws RemoteException no id, empty new page or locked
*/
function putPage($id, $text, $params) {
global $TEXT;
@ -451,6 +513,11 @@ class RemoteAPICore {
/**
* Appends text to a wiki page.
*
* @param string $id page id
* @param string $text wiki text
* @param array $params such as summary,minor
* @return bool|string
*/
function appendPage($id, $text, $params) {
$currentpage = $this->rawPage($id);
@ -464,6 +531,12 @@ class RemoteAPICore {
* Uploads a file to the wiki.
*
* Michael Klier <chi@chimeric.de>
*
* @param string $id page id
* @param string $file
* @param array $params such as overwrite
* @return false|string
* @throws RemoteException
*/
function putAttachment($id, $file, $params) {
$id = cleanID($id);
@ -493,6 +566,11 @@ class RemoteAPICore {
* Deletes a file from the wiki.
*
* @author Gina Haeussge <osd@foosel.net>
*
* @param string $id page id
* @return int
* @throws RemoteAccessDeniedException no permissions
* @throws RemoteException file in use or not deleted
*/
function deleteAttachment($id){
$id = cleanID($id);
@ -511,6 +589,9 @@ class RemoteAPICore {
/**
* Returns the permissions of a given wiki page
*
* @param string $id page id
* @return int permission level
*/
function aclCheck($id) {
$id = $this->resolvePageId($id);
@ -521,6 +602,10 @@ class RemoteAPICore {
* Lists all links contained in a wiki page
*
* @author Michael Klier <chi@chimeric.de>
*
* @param string $id page id
* @return array
* @throws RemoteAccessDeniedException no read access for page
*/
function listLinks($id) {
$id = $this->resolvePageId($id);
@ -571,6 +656,10 @@ class RemoteAPICore {
*
* @author Michael Hamann <michael@content-space.de>
* @author Michael Klier <chi@chimeric.de>
*
* @param int $timestamp unix timestamp
* @return array
* @throws RemoteException no valid timestamp
*/
function getRecentChanges($timestamp) {
if(strlen($timestamp) != 10) {
@ -596,7 +685,7 @@ class RemoteAPICore {
return $changes;
} else {
// in case we still have nothing at this point
return new RemoteException('There are no changes in the specified timeframe', 321);
throw new RemoteException('There are no changes in the specified timeframe', 321);
}
}
@ -605,6 +694,10 @@ class RemoteAPICore {
*
* @author Michael Hamann <michael@content-space.de>
* @author Michael Klier <chi@chimeric.de>
*
* @param int $timestamp unix timestamp
* @return array
* @throws RemoteException no valid timestamp
*/
function getRecentMediaChanges($timestamp) {
if(strlen($timestamp) != 10)
@ -637,6 +730,12 @@ class RemoteAPICore {
* Returns a list of available revisions of a given wiki page
*
* @author Michael Klier <chi@chimeric.de>
*
* @param string $id page id
* @param int $first skip the first n changelog lines
* @return array
* @throws RemoteAccessDeniedException no read access for page
* @throws RemoteException empty id
*/
function pageVersions($id, $first) {
$id = $this->resolvePageId($id);
@ -714,6 +813,9 @@ class RemoteAPICore {
*
* Returns an associative array with the keys locked, lockfail, unlocked and
* unlockfail, each containing lists of pages.
*
* @param array[] $set list pages with array('lock' => array, 'unlock' => array)
* @return array
*/
function setLocks($set){
$locked = array();
@ -748,13 +850,27 @@ class RemoteAPICore {
);
}
/**
* Return API version
*
* @return int
*/
function getAPIVersion(){
return DOKU_API_VERSION;
}
/**
* Login
*
* @param string $user
* @param string $pass
* @return int
*/
function login($user,$pass){
global $conf;
/** @var DokuWiki_Auth_Plugin $auth */
global $auth;
if(!$conf['useacl']) return 0;
if(!$auth) return 0;
@ -775,6 +891,11 @@ class RemoteAPICore {
return $ok;
}
/**
* Log off
*
* @return int
*/
function logoff(){
global $conf;
global $auth;
@ -786,6 +907,12 @@ class RemoteAPICore {
return 1;
}
/**
* Resolve page id
*
* @param string $id page id
* @return string
*/
private function resolvePageId($id) {
$id = cleanID($id);
if(empty($id)) {

View file

@ -24,6 +24,8 @@ class Sitemapper {
* @author Andreas Gohr
* @link https://www.google.com/webmasters/sitemaps/docs/en/about.html
* @link http://www.sitemaps.org/
*
* @return bool
*/
public static function generate(){
global $conf;
@ -75,6 +77,7 @@ class Sitemapper {
*
* @param $items array The SitemapItems that shall be included in the sitemap.
* @return string The sitemap XML.
*
* @author Michael Hamann
*/
private static function getXML($items) {
@ -95,6 +98,7 @@ class Sitemapper {
* Helper function for getting the path to the sitemap file.
*
* @return string The path to the sitemap file.
*
* @author Michael Hamann
*/
public static function getFilePath() {
@ -123,6 +127,8 @@ class Sitemapper {
* urls to ping using the SITEMAP_PING event.
*
* @author Michael Hamann
*
* @return bool
*/
public static function pingSearchEngines() {
//ping search engines...
@ -168,9 +174,9 @@ class SitemapItem {
/**
* Create a new item.
*
* @param $url string The url of the item
* @param $lastmod int Timestamp of the last modification
* @param $changefreq string How frequently the item is likely to change. Valid values: always, hourly, daily, weekly, monthly, yearly, never.
* @param string $url The url of the item
* @param int $lastmod Timestamp of the last modification
* @param string $changefreq How frequently the item is likely to change. Valid values: always, hourly, daily, weekly, monthly, yearly, never.
* @param $priority float|string The priority of the item relative to other URLs on your site. Valid values range from 0.0 to 1.0.
*/
public function __construct($url, $lastmod, $changefreq = null, $priority = null) {
@ -183,9 +189,9 @@ class SitemapItem {
/**
* Helper function for creating an item for a wikipage id.
*
* @param $id string A wikipage id.
* @param $changefreq string How frequently the item is likely to change. Valid values: always, hourly, daily, weekly, monthly, yearly, never.
* @param $priority float|string The priority of the item relative to other URLs on your site. Valid values range from 0.0 to 1.0.
* @param string $id A wikipage id.
* @param string $changefreq How frequently the item is likely to change. Valid values: always, hourly, daily, weekly, monthly, yearly, never.
* @param float|string $priority The priority of the item relative to other URLs on your site. Valid values range from 0.0 to 1.0.
* @return SitemapItem The sitemap item.
*/
public static function createFromID($id, $changefreq = null, $priority = null) {

View file

@ -105,6 +105,9 @@ class Tar {
*
* The archive is closed afer reading the contents, because rewinding is not possible in bzip2 streams.
* Reopen the file with open() again if you want to do additional operations
*
* @return array
* @throws TarIOException
*/
public function contents() {
if($this->closed || !$this->file) throw new TarIOException('Can not read from a closed archive');
@ -270,6 +273,7 @@ class Tar {
* Add a file to the current TAR archive using an existing file in the filesystem
*
* @todo handle directory adding
*
* @param string $file the original file
* @param string $name the name to use for the file in the archive
* @throws TarIOException
@ -377,6 +381,10 @@ class Tar {
* Returns the created in-memory archive data
*
* This implicitly calls close() on the Archive
*
* @param int $comptype
* @param int $complevel
* @return mixed|string
*/
public function getArchive($comptype = Tar::COMPRESS_AUTO, $complevel = 9) {
$this->close();
@ -395,7 +403,7 @@ class Tar {
* Note: It more memory effective to specify the filename in the create() function and
* let the library work on the new file directly.
*
* @param $file
* @param string $file
* @param int $comptype
* @param int $complevel
* @throws TarIOException
@ -571,7 +579,7 @@ class Tar {
/**
* Cleans up a path and removes relative parts, also strips leading slashes
*
* @param string $p_dir
* @param string $path
* @return string
*/
public function cleanPath($path) {
@ -591,7 +599,7 @@ class Tar {
/**
* Checks if the given compression type is available and throws an exception if not
*
* @param $comptype
* @param int $comptype
* @throws TarIllegalCompressionException
*/
protected function compressioncheck($comptype) {

View file

@ -221,6 +221,9 @@ function act_sendheaders($headers) {
* Sanitize the action command
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param array|string $act
* @return string
*/
function act_clean($act){
// check if the action was given as array key
@ -245,6 +248,9 @@ function act_clean($act){
* Add all allowed commands here.
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param array|string $act
* @return string
*/
function act_validate($act) {
global $conf;
@ -284,10 +290,12 @@ function act_validate($act) {
* Run permissionchecks
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $act action command
* @return string action command
*/
function act_permcheck($act){
global $INFO;
global $conf;
if(in_array($act,array('save','preview','edit','recover'))){
if($INFO['exists']){
@ -330,6 +338,9 @@ function act_permcheck($act){
* Handle 'draftdel'
*
* Deletes the draft for the current page and user
*
* @param string $act action command
* @return string action command
*/
function act_draftdel($act){
global $INFO;
@ -342,6 +353,9 @@ function act_draftdel($act){
* Saves a draft on preview
*
* @todo this currently duplicates code from ajax.php :-/
*
* @param string $act action command
* @return string action command
*/
function act_draftsave($act){
global $INFO;
@ -372,6 +386,9 @@ function act_draftsave($act){
* returns a new action.
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $act action command
* @return string action command
*/
function act_save($act){
global $ID;
@ -410,6 +427,9 @@ function act_save($act){
* Revert to a certain revision
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $act action command
* @return string action command
*/
function act_revert($act){
global $ID;
@ -457,6 +477,9 @@ function act_revert($act){
* Do a redirect after receiving post data
*
* Tries to add the section id as hash mark after section editing
*
* @param string $id page id
* @param string $preact action command before redirect
*/
function act_redirect($id,$preact){
global $PRE;
@ -478,7 +501,7 @@ function act_redirect($id,$preact){
/**
* Execute the redirect
*
* @param array $opts id and fragment for the redirect
* @param array $opts id and fragment for the redirect and the preact
*/
function act_redirect_execute($opts){
$go = wl($opts['id'],'',true);
@ -492,6 +515,9 @@ function act_redirect_execute($opts){
* Handle 'login', 'logout'
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $act action command
* @return string action command
*/
function act_auth($act){
global $ID;
@ -527,6 +553,9 @@ function act_auth($act){
* Handle 'edit', 'preview', 'recover'
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $act action command
* @return string action command
*/
function act_edit($act){
global $ID;
@ -591,6 +620,9 @@ function act_edit($act){
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Michael Klier <chi@chimeric.de>
*
* @param string $act action command
* @return string action command
*/
function act_export($act){
global $ID;
@ -671,6 +703,8 @@ function act_export($act){
* Handle sitemap delivery
*
* @author Michael Hamann <michael@content-space.de>
*
* @param string $act action command
*/
function act_sitemap($act) {
global $conf;
@ -719,6 +753,10 @@ function act_sitemap($act) {
* Throws exception on error.
*
* @author Adrian Lang <lang@cosmocode.de>
*
* @param string $act action command
* @return string action command
* @throws Exception if (un)subscribing fails
*/
function act_subscription($act){
global $lang;
@ -778,6 +816,9 @@ function act_subscription($act){
* default action for the event ACTION_HANDLE_SUBSCRIBE.
*
* @author Adrian Lang <lang@cosmocode.de>
*
* @param array &$params the parameters: target, style and action
* @throws Exception
*/
function subscription_handle_post(&$params) {
global $INFO;

View file

@ -127,6 +127,7 @@ function auth_setup() {
* Loads the ACL setup and handle user wildcards
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @return array
*/
function auth_loadACL() {
@ -173,7 +174,7 @@ function auth_loadACL() {
/**
* Event hook callback for AUTH_LOGIN_CHECK
*
* @param $evdata
* @param array $evdata
* @return bool
*/
function auth_login_wrapper($evdata) {
@ -280,6 +281,7 @@ function auth_login($user, $pass, $sticky = false, $silent = false) {
* token is correct. Will exit with a 401 Status if not.
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $token The authentication token
* @return boolean true (or will exit on failure)
*/
@ -307,6 +309,7 @@ function auth_validateToken($token) {
* NOTE: this is completely unrelated to the getSecurityToken() function
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @return string The auth token
*/
function auth_createToken() {
@ -351,6 +354,7 @@ function auth_browseruid() {
* and stored in this file.
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param bool $addsession if true, the sessionid is added to the salt
* @param bool $secure if security is more important than keeping the old value
* @return string
@ -378,6 +382,7 @@ function auth_cookiesalt($addsession = false, $secure = false) {
* @author Mark Seecof
* @author Michael Hamann <michael@content-space.de>
* @link http://www.php.net/manual/de/function.mt-rand.php#83655
*
* @param int $length number of bytes to get
* @return string binary random strings
*/
@ -444,6 +449,7 @@ function auth_randombytes($length) {
*
* @author Michael Samuel
* @author Michael Hamann <michael@content-space.de>
*
* @param int $min
* @param int $max
* @return int
@ -515,6 +521,7 @@ function auth_decrypt($ciphertext, $secret) {
* off. It also clears session data.
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param bool $keepbc - when true, the breadcrumb data is not cleared
*/
function auth_logoff($keepbc = false) {
@ -555,6 +562,7 @@ function auth_logoff($keepbc = false) {
*
* @author Andreas Gohr <andi@splitbrain.org>
* @see auth_isadmin
*
* @param string $user Username
* @param array $groups List of groups the user is in
* @param bool $adminonly when true checks if user is admin
@ -599,6 +607,7 @@ function auth_ismanager($user = null, $groups = null, $adminonly = false) {
*
* @author Andreas Gohr <andi@splitbrain.org>
* @see auth_ismanager()
*
* @param string $user Username
* @param array $groups List of groups the user is in
* @return bool
@ -613,9 +622,9 @@ function auth_isadmin($user = null, $groups = null) {
*
* Note: all input should NOT be nameencoded.
*
* @param $memberlist string commaseparated list of allowed users and groups
* @param $user string user to match against
* @param $groups array groups the user is member of
* @param string $memberlist commaseparated list of allowed users and groups
* @param string $user user to match against
* @param array $groups groups the user is member of
* @return bool true for membership acknowledged
*/
function auth_isMember($memberlist, $user, array $groups) {
@ -678,6 +687,7 @@ function auth_quickaclcheck($id) {
* Returns the maximum rights a user has for the given ID or its namespace
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @triggers AUTH_ACL_CHECK
* @param string $id page ID (needs to be resolved and cleaned)
* @param string $user Username
@ -700,6 +710,7 @@ function auth_aclcheck($id, $user, $groups) {
* DO NOT CALL DIRECTLY, use auth_aclcheck() instead
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param array $data event data
* @return int permission level
*/
@ -832,6 +843,10 @@ function auth_aclcheck_cb($data) {
*
* @author Andreas Gohr <gohr@cosmocode.de>
* @see rawurldecode()
*
* @param string $name
* @param bool $skip_group
* @return string
*/
function auth_nameencode($name, $skip_group = false) {
global $cache_authname;
@ -913,6 +928,7 @@ function auth_pwgen($foruser = '') {
* Sends a password to the given user
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $user Login name of the user
* @param string $password The new password in clear text
* @return bool true on success
@ -948,6 +964,7 @@ function auth_sendPassword($user, $password) {
* This registers a new user - Data is read directly from $_POST
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @return bool true on success, false on any error
*/
function register() {
@ -1280,6 +1297,7 @@ function act_resendpwd() {
* is chosen.
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $clear The clear text password
* @param string $method The hashing method
* @param string $salt A salt, null for random
@ -1304,6 +1322,7 @@ function auth_cryptPassword($clear, $method = '', $salt = null) {
* Verifies a cleartext password against a crypted hash
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $clear The clear text password
* @param string $crypt The hash to compare with
* @return bool true if both match

View file

@ -356,7 +356,7 @@ class Horde_Cipher_blowfish
* Encrypt a block on data.
*
* @param String $block The data to encrypt
* @param optional String $key The key to use
* @param String $key optional The key to use
*
* @return String the encrypted output
*/
@ -404,8 +404,8 @@ class Horde_Cipher_blowfish
/**
* Decrypt a block on data.
*
* @param String $block The data to decrypt
* @param optional String $key The key to use
* @param String $block The data to decrypt
* @param String $key optional The key to use
*
* @return String the decrypted output
*/
@ -452,6 +452,7 @@ class Horde_Cipher_blowfish
/**
* Converts a text key into an array.
*
* @param string $key
* @return array The key.
*/
function _formatKey($key) {
@ -464,8 +465,8 @@ class Horde_Cipher_blowfish
/**
* Encryption using blowfish algorithm
*
* @param string original data
* @param string the secret
* @param string $data original data
* @param string $secret the secret
*
* @return string the encrypted result
*
@ -493,8 +494,8 @@ function PMA_blowfish_encrypt($data, $secret) {
/**
* Decryption using blowfish algorithm
*
* @param string encrypted data
* @param string the secret
* @param string $encdata encrypted data
* @param string $secret the secret
*
* @return string original data
*

View file

@ -725,8 +725,10 @@ abstract class ChangeLog {
* If file larger than $chuncksize, only chunck is read that could contain $rev.
*
* @param int $rev revision timestamp
* @return array(fp, array(changeloglines), $head, $tail, $eof)|bool
* returns false when not succeed. fp only defined for chuck reading, needs closing.
* @return array|false
* if success returns array(fp, array(changeloglines), $head, $tail, $eof)
* where fp only defined for chuck reading, needs closing.
* otherwise false
*/
protected function readloglines($rev) {
$file = $this->getChangelogFilename();

View file

@ -108,7 +108,7 @@ abstract class DokuCLI {
/**
* Print an error message
*
* @param $string
* @param string $string
*/
public function error($string) {
$this->colors->ptln("E: $string", 'red', STDERR);
@ -117,7 +117,7 @@ abstract class DokuCLI {
/**
* Print a success message
*
* @param $string
* @param string $string
*/
public function success($string) {
$this->colors->ptln("S: $string", 'green', STDERR);
@ -126,7 +126,7 @@ abstract class DokuCLI {
/**
* Print an info message
*
* @param $string
* @param string $string
*/
public function info($string) {
$this->colors->ptln("I: $string", 'cyan', STDERR);
@ -199,8 +199,8 @@ class DokuCLI_Colors {
/**
* Convenience function to print a line in a given color
*
* @param $line
* @param $color
* @param string $line
* @param string $color
* @param resource $channel
*/
public function ptln($line, $color, $channel = STDOUT) {
@ -470,8 +470,8 @@ class DokuCLI_Options {
* Can only be used after parseOptions() has been run
*
* @param string $option
* @param mixed $default what to return if the option was not set
* @return mixed
* @param bool|string $default what to return if the option was not set
* @return false|string
*/
public function getOpt($option, $default = false) {
if(isset($this->options[$option])) return $this->options[$option];
@ -593,8 +593,8 @@ class DokuCLI_Options {
/**
* Displays text in multiple word wrapped columns
*
* @param array $widths list of column widths (in characters)
* @param array $texts list of texts for each column
* @param int[] $widths list of column widths (in characters)
* @param string[] $texts list of texts for each column
* @return string
*/
private function tableFormat($widths, $texts) {
@ -640,6 +640,11 @@ class DokuCLI_Exception extends Exception {
const E_OPT_ABIGUOUS = 4; //Option abiguous
const E_ARG_READ = 5; //Could not read argv
/**
* @param string $message The Exception message to throw.
* @param int $code The Exception code
* @param Exception $previous The previous exception used for the exception chaining.
*/
public function __construct($message = "", $code = 0, Exception $previous = null) {
if(!$code) $code = DokuCLI_Exception::E_ANY;
parent::__construct($message, $code, $previous);

View file

@ -49,7 +49,7 @@ function ptln($string, $indent = 0) {
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param $string string being stripped
* @param string $string being stripped
* @return string
*/
function stripctl($string) {
@ -62,6 +62,7 @@ function stripctl($string) {
* @author Andreas Gohr <andi@splitbrain.org>
* @link http://en.wikipedia.org/wiki/Cross-site_request_forgery
* @link http://christ1an.blogspot.com/2007/04/preventing-csrf-efficiently.html
*
* @return string
*/
function getSecurityToken() {
@ -95,7 +96,7 @@ function checkSecurityToken($token = null) {
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param bool $print if true print the field, otherwise html of the field is returned
* @return void|string html of hidden form field
* @return string html of hidden form field
*/
function formSecurityToken($print = true) {
$ret = '<div class="no"><input type="hidden" name="sectok" value="'.getSecurityToken().'" /></div>'."\n";
@ -336,7 +337,7 @@ function buildAttributes($params, $skipempty = false) {
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @return array(pageid=>name, ... )
* @return string[string] with the data: array(pageid=>name, ... )
*/
function breadcrumbs() {
// we prepare the breadcrumbs early for quick session closing
@ -1110,7 +1111,7 @@ function parsePageTemplate(&$data) {
* @param string $range in form "from-to"
* @param string $id page id
* @param string $rev optional, the revision timestamp
* @return array with three slices
* @return string[] with three slices
*/
function rawWikiSlices($range, $id, $rev = '') {
$text = io_readWikiPage(wikiFN($id, $rev), $id, $rev);
@ -1296,7 +1297,7 @@ function saveOldRevision($id) {
* @param int|string $rev Old page revision
* @param string $summary What changed
* @param boolean $minor Is this a minor edit?
* @param array $replace Additional string substitutions, @KEY@ to be replaced by value
* @param string[] $replace Additional string substitutions, @KEY@ to be replaced by value
* @return bool
*
* @author Andreas Gohr <andi@splitbrain.org>
@ -1376,8 +1377,8 @@ function getGoogleQuery() {
/**
* Return the human readable size of a file
*
* @param int $size A file size
* @param int $dec A number of decimal places
* @param int $size A file size
* @param int $dec A number of decimal places
* @return string human readable size
*
* @author Martin Benjamin <b.martin@cybernet.ch>
@ -1914,7 +1915,7 @@ function set_doku_pref($pref, $val) {
/**
* Strips source mapping declarations from given text #601
*
* @param &string $text reference to the CSS or JavaScript code to clean
* @param string &$text reference to the CSS or JavaScript code to clean
*/
function stripsourcemaps(&$text){
$text = preg_replace('/^(\/\/|\/\*)[@#]\s+sourceMappingURL=.*?(\*\/)?$/im', '\\1\\2', $text);

View file

@ -14,6 +14,10 @@
* are returned.
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $file file name
* @param bool $knownonly
* @return array with extension, mimetype and if it should be downloaded
*/
function mimetype($file, $knownonly=true){
$mtypes = getMimeTypes(); // known mimetypes

View file

@ -165,13 +165,13 @@ class Doku_Event_Handler {
*
* register a hook for an event
*
* @param $event string name used by the event, (incl '_before' or '_after' for triggers)
* @param $advise string
* @param $obj object object in whose scope method is to be executed,
* @param string $event string name used by the event, (incl '_before' or '_after' for triggers)
* @param string $advise
* @param object $obj object in whose scope method is to be executed,
* if NULL, method is assumed to be a globally available function
* @param $method string event handler function
* @param $param mixed data passed to the event handler
* @param $seq int sequence number for ordering hook execution (ascending)
* @param string $method event handler function
* @param mixed $param data passed to the event handler
* @param int $seq sequence number for ordering hook execution (ascending)
*/
function register_hook($event, $advise, $obj, $method, $param=null, $seq=0) {
$seq = (int)$seq;
@ -216,14 +216,14 @@ class Doku_Event_Handler {
*
* function wrapper to process (create, trigger and destroy) an event
*
* @param $name string name for the event
* @param $data mixed event data
* @param $action callback (optional, default=NULL) default action, a php callback function
* @param $canPreventDefault bool (optional, default=true) can hooks prevent the default action
* @param string $name name for the event
* @param mixed $data event data
* @param callback $action (optional, default=NULL) default action, a php callback function
* @param bool $canPreventDefault (optional, default=true) can hooks prevent the default action
*
* @return mixed the event results value after all event processing is complete
* by default this is the return value of the default action however
* it can be set or modified by event handler hooks
* by default this is the return value of the default action however
* it can be set or modified by event handler hooks
*/
function trigger_event($name, &$data, $action=null, $canPreventDefault=true) {

View file

@ -16,6 +16,7 @@
* @author Andreas Gohr <andi@splitbrain.org>
* @author Ben Coburn <btcoburn@silicodon.net>
* @author Gerry Weissbach <dokuwiki@gammaproduction.de>
*
* @param string $file local file to send
* @param string $mime mime type of the file
* @param bool $dl set to true to force a browser download
@ -96,12 +97,13 @@ function sendFile($file, $mime, $dl, $cache, $public = false, $orig = null) {
* WRITE: MEDIA, FILE, array( STATUS, STATUSMESSAGE )
*
* @author Gerry Weissbach <gerry.w@gammaproduction.de>
*
* @param string $media reference to the media id
* @param string $file reference to the file variable
* @param string $rev
* @param int $width
* @param int $height
* @return array(STATUS, STATUSMESSAGE)
* @return array as array(STATUS, STATUSMESSAGE)
*/
function checkFileStatus(&$media, &$file, $rev = '', $width=0, $height=0) {
global $MIME, $EXT, $CACHE, $INPUT;
@ -149,6 +151,9 @@ function checkFileStatus(&$media, &$file, $rev = '', $width=0, $height=0) {
* Resolves named constants
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $cache
* @return int cachetime in seconds
*/
function calc_cache($cache) {
global $conf;

View file

@ -52,6 +52,7 @@ class Doku_Form {
* @param bool|string $action (optional, deprecated) submit URL, defaults to current page
* @param bool|string $method (optional, deprecated) 'POST' or 'GET', default is POST
* @param bool|string $enctype (optional, deprecated) Encoding type of the data
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function Doku_Form($params, $action=false, $method=false, $enctype=false) {
@ -84,6 +85,7 @@ class Doku_Form {
* Usually results in a border drawn around the form.
*
* @param string $legend Label that will be printed with the border.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function startFieldset($legend) {
@ -115,6 +117,7 @@ class Doku_Form {
*
* @param string $name Field name.
* @param string $value Field value. If null, remove a previously added field.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function addHidden($name, $value) {
@ -132,6 +135,7 @@ class Doku_Form {
* If string, it is printed without escaping special chars. *
*
* @param string|array $elem Pseudo-tag or string to add to the form.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function addElement($elem) {
@ -145,6 +149,7 @@ class Doku_Form {
*
* @param string $pos 0-based index where the element will be inserted.
* @param string|array $elem Pseudo-tag or string to add to the form.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function insertElement($pos, $elem) {
@ -158,6 +163,7 @@ class Doku_Form {
*
* @param int $pos 0-based index the element will be placed at.
* @param string|array $elem Pseudo-tag or string to add to the form.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function replaceElement($pos, $elem) {
@ -172,7 +178,8 @@ class Doku_Form {
* Gets the position of the first of a type of element.
*
* @param string $type Element type to look for.
* @return int position of element if found, otherwise false
* @return int|false position of element if found, otherwise false
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function findElementByType($type) {
@ -189,7 +196,8 @@ class Doku_Form {
* Gets the position of the element with an ID attribute.
*
* @param string $id ID of the element to find.
* @return int position of element if found, otherwise false
* @return int|false position of element if found, otherwise false
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function findElementById($id) {
@ -207,7 +215,8 @@ class Doku_Form {
*
* @param string $name Attribute name.
* @param string $value Attribute value.
* @return int position of element if found, otherwise false
* @return int|false position of element if found, otherwise false
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function findElementByAttribute($name, $value) {
@ -227,6 +236,7 @@ class Doku_Form {
*
* @param int $pos 0-based index
* @return array reference pseudo-element
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function &getElementAt($pos) {
@ -243,6 +253,8 @@ class Doku_Form {
* 'form_$type'. The function should return the HTML to be printed.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @return string html of the form
*/
function getForm() {
global $lang;
@ -310,6 +322,7 @@ class Doku_Form {
* @param string $tag Tag name.
* @param array $attrs Optional attributes.
* @return array pseudo-tag
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function form_makeTag($tag, $attrs=array()) {
@ -326,6 +339,7 @@ function form_makeTag($tag, $attrs=array()) {
* @param string $tag Tag name.
* @param array $attrs Optional attributes.
* @return array pseudo-tag
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function form_makeOpenTag($tag, $attrs=array()) {
@ -341,6 +355,7 @@ function form_makeOpenTag($tag, $attrs=array()) {
*
* @param string $tag Tag name.
* @return array pseudo-tag
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function form_makeCloseTag($tag) {
@ -358,6 +373,7 @@ function form_makeCloseTag($tag) {
* @param string $text Text to fill the field with.
* @param array $attrs Optional attributes.
* @return array pseudo-tag
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function form_makeWikiText($text, $attrs=array()) {
@ -378,6 +394,7 @@ function form_makeWikiText($text, $attrs=array()) {
* @param string $value (optional) Displayed label. Uses $act if not provided.
* @param array $attrs Optional attributes.
* @return array pseudo-tag
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function form_makeButton($type, $act, $value='', $attrs=array()) {
@ -406,6 +423,7 @@ function form_makeButton($type, $act, $value='', $attrs=array()) {
* reference it with a 'for' attribute.
* @param array $attrs Optional attributes.
* @return array pseudo-tag
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function form_makeField($type, $name, $value='', $label=null, $id='', $class='', $attrs=array()) {
@ -522,6 +540,18 @@ function form_makeRadioField($name, $value='1', $label=null, $id='', $class='',
* a string.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param string $name Name attribute of the input.
* @param string[]|array[] $values The list of values can be strings, arrays of (value,text),
* or an associative array with the values as keys and labels as values.
* @param string|int $selected default selected value, string or index number
* @param string $class Class attribute of the label. If this is 'block',
* then a line break will be added after the field.
* @param string $label Label that will be printed before the input.
* @param string $id ID attribute of the input. If set, the label will
* reference it with a 'for' attribute.
* @param array $attrs Optional attributes.
* @return array pseudo-tag
*/
function form_makeMenuField($name, $values, $selected='', $label=null, $id='', $class='', $attrs=array()) {
if (is_null($label)) $label = $name;
@ -556,6 +586,18 @@ function form_makeMenuField($name, $values, $selected='', $label=null, $id='', $
* Items are selected by supplying its value or an array of values.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param string $name Name attribute of the input.
* @param string[]|array[] $values The list of values can be strings, arrays of (value,text),
* or an associative array with the values as keys and labels as values.
* @param array|string $selected value or array of values of the items that need to be selected
* @param string $class Class attribute of the label. If this is 'block',
* then a line break will be added after the field.
* @param string $label Label that will be printed before the input.
* @param string $id ID attribute of the input. If set, the label will
* reference it with a 'for' attribute.
* @param array $attrs Optional attributes.
* @return array pseudo-tag
*/
function form_makeListboxField($name, $values, $selected='', $label=null, $id='', $class='', $attrs=array()) {
if (is_null($label)) $label = $name;
@ -595,6 +637,9 @@ function form_makeListboxField($name, $values, $selected='', $label=null, $id=''
* Attributes are passed to buildAttributes()
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param array $attrs attributes
* @return string html of tag
*/
function form_tag($attrs) {
return '<'.$attrs['_tag'].' '.buildAttributes($attrs,true).'/>';
@ -608,6 +653,9 @@ function form_tag($attrs) {
* Attributes are passed to buildAttributes()
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param array $attrs attributes
* @return string html of tag
*/
function form_opentag($attrs) {
return '<'.$attrs['_tag'].' '.buildAttributes($attrs,true).'>';
@ -621,6 +669,9 @@ function form_opentag($attrs) {
* There are no attributes.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param array $attrs attributes
* @return string html of tag
*/
function form_closetag($attrs) {
return '</'.$attrs['_tag'].'>';
@ -634,6 +685,9 @@ function form_closetag($attrs) {
* Attributes are passed to buildAttributes()
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param array $attrs attributes
* @return string html
*/
function form_openfieldset($attrs) {
$s = '<fieldset '.buildAttributes($attrs,true).'>';
@ -648,6 +702,8 @@ function form_openfieldset($attrs) {
* There are no attributes.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @return string html
*/
function form_closefieldset() {
return '</fieldset>';
@ -661,6 +717,9 @@ function form_closefieldset() {
* Value is passed to formText()
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param array $attrs attributes
* @return string html
*/
function form_hidden($attrs) {
return '<input type="hidden" name="'.$attrs['name'].'" value="'.formText($attrs['value']).'" />';
@ -674,6 +733,9 @@ function form_hidden($attrs) {
* Text will be passed to formText(), attributes to buildAttributes()
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param array $attrs attributes
* @return string html
*/
function form_wikitext($attrs) {
// mandatory attributes
@ -693,6 +755,9 @@ function form_wikitext($attrs) {
* Other attributes are passed to buildAttributes()
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param array $attrs attributes
* @return string html
*/
function form_button($attrs) {
$p = (!empty($attrs['_action'])) ? 'name="do['.$attrs['_action'].']" ' : '';
@ -708,6 +773,9 @@ function form_button($attrs) {
* Other attributes are passed to buildAttributes() for the input tag.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param array $attrs attributes
* @return string html
*/
function form_field($attrs) {
$s = '<label';
@ -729,6 +797,9 @@ function form_field($attrs) {
* Other attributes are passed to buildAttributes() for the input tag.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param array $attrs attributes
* @return string html
*/
function form_fieldright($attrs) {
$s = '<label';
@ -750,6 +821,9 @@ function form_fieldright($attrs) {
* Other attributes are passed to buildAttributes() for the input tag.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param array $attrs attributes
* @return string html
*/
function form_textfield($attrs) {
// mandatory attributes
@ -773,6 +847,9 @@ function form_textfield($attrs) {
* Other attributes are passed to buildAttributes() for the input tag.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param array $attrs attributes
* @return string html
*/
function form_passwordfield($attrs) {
// mandatory attributes
@ -798,6 +875,9 @@ function form_passwordfield($attrs) {
* Other attributes are passed to buildAttributes() for the input tag
*
* @author Michael Klier <chi@chimeric.de>
*
* @param array $attrs attributes
* @return string html
*/
function form_filefield($attrs) {
$s = '<label';
@ -824,6 +904,9 @@ function form_filefield($attrs) {
* $attrs['value'][1] is constructed as well.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param array $attrs attributes
* @return string html
*/
function form_checkboxfield($attrs) {
// mandatory attributes
@ -853,6 +936,9 @@ function form_checkboxfield($attrs) {
* Other attributes are passed to buildAttributes() for the input tag.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param array $attrs attributes
* @return string html
*/
function form_radiofield($attrs) {
// mandatory attributes
@ -879,6 +965,9 @@ function form_radiofield($attrs) {
* Other attributes are passed to buildAttributes() for the input tag.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param array $attrs attributes
* @return string html
*/
function form_menufield($attrs) {
$attrs['size'] = '1';
@ -924,6 +1013,9 @@ function form_menufield($attrs) {
* Other attributes are passed to buildAttributes() for the input tag.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param array $attrs attributes
* @return string html
*/
function form_listboxfield($attrs) {
$s = '<label';

View file

@ -20,6 +20,9 @@ if(!defined('FT_SNIPPET_NUMBER')) define('FT_SNIPPET_NUMBER',15);
*
* refactored into ft_pageSearch(), _ft_pageSearch() and trigger_event()
*
* @param string $query
* @param array $highlight
* @return array
*/
function ft_pageSearch($query,&$highlight){
@ -35,6 +38,9 @@ function ft_pageSearch($query,&$highlight){
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Kazutaka Miyasaka <kazmiya@gmail.com>
*
* @param array $data event data
* @return array matching documents
*/
function _ft_pageSearch(&$data) {
$Indexer = idx_get_indexer();
@ -206,6 +212,11 @@ function ft_mediause($id, $ignore_perms = false){
* @triggers SEARCH_QUERY_PAGELOOKUP
* @author Andreas Gohr <andi@splitbrain.org>
* @author Adrian Lang <lang@cosmocode.de>
*
* @param string $id page id
* @param bool $in_ns match against namespace as well?
* @param bool $in_title search in title?
* @return string[]
*/
function ft_pageLookup($id, $in_ns=false, $in_title=false){
$data = compact('id', 'in_ns', 'in_title');
@ -213,6 +224,12 @@ function ft_pageLookup($id, $in_ns=false, $in_title=false){
return trigger_event('SEARCH_QUERY_PAGELOOKUP', $data, '_ft_pageLookup');
}
/**
* Returns list of pages as array(pageid => First Heading)
*
* @param array &$data event data
* @return string[]
*/
function _ft_pageLookup(&$data){
// split out original parameters
$id = $data['id'];
@ -270,6 +287,10 @@ function _ft_pageLookup(&$data){
* Tiny helper function for comparing the searched title with the title
* from the search index. This function is a wrapper around stripos with
* adapted argument order and return value.
*
* @param string $search searched title
* @param string $title title from index
* @return bool
*/
function _ft_pageLookupTitleCompare($search, $title) {
return stripos($title, $search) !== false;
@ -279,6 +300,10 @@ function _ft_pageLookupTitleCompare($search, $title) {
* Sort pages based on their namespace level first, then on their string
* values. This makes higher hierarchy pages rank higher than lower hierarchy
* pages.
*
* @param string $a
* @param string $b
* @return int Returns < 0 if $a is less than $b; > 0 if $a is greater than $b, and 0 if they are equal.
*/
function ft_pagesorter($a, $b){
$ac = count(explode(':',$a));
@ -296,6 +321,10 @@ function ft_pagesorter($a, $b){
*
* @author Andreas Gohr <andi@splitbrain.org>
* @triggers FULLTEXT_SNIPPET_CREATE
*
* @param string $id page id
* @param array $highlight
* @return mixed
*/
function ft_snippet($id,$highlight){
$text = rawWiki($id);
@ -390,6 +419,9 @@ function ft_snippet($id,$highlight){
/**
* Wraps a search term in regex boundary checks.
*
* @param string $term
* @return string
*/
function ft_snippet_re_preprocess($term) {
// do not process asian terms where word boundaries are not explicit
@ -433,6 +465,7 @@ function ft_snippet_re_preprocess($term) {
* based upon PEAR's PHP_Compat function for array_intersect_key()
*
* @param array $args An array of page arrays
* @return array
*/
function ft_resultCombine($args){
$array_count = count($args);
@ -462,6 +495,8 @@ function ft_resultCombine($args){
* based upon ft_resultCombine() function
*
* @param array $args An array of page arrays
* @return array
*
* @author Kazutaka Miyasaka <kazmiya@gmail.com>
*/
function ft_resultUnite($args) {
@ -485,6 +520,8 @@ function ft_resultUnite($args) {
* nearly identical to PHP5's array_diff_key()
*
* @param array $args An array of page arrays
* @return array
*
* @author Kazutaka Miyasaka <kazmiya@gmail.com>
*/
function ft_resultComplement($args) {
@ -507,6 +544,10 @@ function ft_resultComplement($args) {
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Kazutaka Miyasaka <kazmiya@gmail.com>
*
* @param Doku_Indexer $Indexer
* @param string $query search query
* @return array of search formulas
*/
function ft_queryParser($Indexer, $query){
/**
@ -737,6 +778,12 @@ function ft_queryParser($Indexer, $query){
* This function is used in ft_queryParser() and not for general purpose use.
*
* @author Kazutaka Miyasaka <kazmiya@gmail.com>
*
* @param Doku_Indexer $Indexer
* @param string $term
* @param bool $consider_asian
* @param bool $phrase_mode
* @return string
*/
function ft_termParser($Indexer, $term, $consider_asian = true, $phrase_mode = false) {
$parsed = '';

View file

@ -83,6 +83,10 @@ function html_denied() {
* inserts section edit buttons if wanted or removes the markers
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $text
* @param bool $show show section edit buttons?
* @return string
*/
function html_secedit($text,$show=true){
global $INFO;
@ -101,8 +105,11 @@ function html_secedit($text,$show=true){
* prepares section edit button data for event triggering
* used as a callback in html_secedit
*
* @triggers HTML_SECEDIT_BUTTON
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param array $matches matches with regexp
* @return string
* @triggers HTML_SECEDIT_BUTTON
*/
function html_secedit_button($matches){
$data = array('secid' => $matches[1],
@ -121,6 +128,9 @@ function html_secedit_button($matches){
* used as default action form HTML_SECEDIT_BUTTON
*
* @author Adrian Lang <lang@cosmocode.de>
*
* @param array $data name, section id and target
* @return string html
*/
function html_secedit_get_button($data) {
global $ID;
@ -147,6 +157,8 @@ function html_secedit_get_button($data) {
* Just the back to top button (in its own form)
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @return string html
*/
function html_topbtn(){
global $lang;
@ -161,6 +173,15 @@ function html_topbtn(){
* If tooltip exists, the access key tooltip is replaced.
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $name
* @param string $id
* @param string $akey access key
* @param string[string] $params key-value pairs added as hidden inputs
* @param string $method
* @param string $tooltip
* @param bool|string $label label text, false: lookup btn_$name in localization
* @return string
*/
function html_btn($name,$id,$akey,$params,$method='get',$tooltip='',$label=false){
global $conf;
@ -213,9 +234,11 @@ function html_btn($name,$id,$akey,$params,$method='get',$tooltip='',$label=false
}
/**
* show a wiki page
* Show a wiki page
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param null|string $txt wiki text or null for showing $ID
*/
function html_show($txt=null){
global $ID;
@ -281,6 +304,10 @@ function html_draft(){
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Harry Fuecks <hfuecks@gmail.com>
*
* @param string $html
* @param array|string $phrases
* @return string html
*/
function html_hilight($html,$phrases){
$phrases = (array) $phrases;
@ -299,6 +326,9 @@ function html_hilight($html,$phrases){
* Callback used by html_hilight()
*
* @author Harry Fuecks <hfuecks@gmail.com>
*
* @param array $m matches
* @return string html
*/
function html_hilight_callback($m) {
$hlight = unslash($m[0]);
@ -646,6 +676,9 @@ function html_revisions($first=0, $media_id = false){
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
* @author Ben Coburn <btcoburn@silicodon.net>
* @author Kate Arzamastseva <pshns@ukr.net>
*
* @param int $first
* @param string $show_changes
*/
function html_recent($first=0, $show_changes='both'){
global $conf;
@ -833,6 +866,8 @@ function html_recent($first=0, $show_changes='both'){
* Display page index
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $ns
*/
function html_index($ns){
global $conf;
@ -861,6 +896,9 @@ function html_index($ns){
* User function for html_buildlist()
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param array $item
* @return string
*/
function html_list_index($item){
global $ID, $conf;
@ -891,6 +929,9 @@ function html_list_index($item){
* it gives different classes to opened or closed "folders"
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param array $item
* @return string html
*/
function html_li_index($item){
if($item['type'] == "f"){
@ -906,6 +947,9 @@ function html_li_index($item){
* Default List item
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param array $item
* @return string html
*/
function html_li_default($item){
return '<li class="level'.$item['level'].'">';
@ -1021,12 +1065,13 @@ function html_backlinks(){
/**
* Get header of diff HTML
*
* @param string $l_rev Left revisions
* @param string $r_rev Right revision
* @param string $id Page id, if null $ID is used
* @param bool $media If it is for media files
* @param bool $inline Return the header on a single line
* @return array HTML snippets for diff header
* @return string[] HTML snippets for diff header
*/
function html_diff_head($l_rev, $r_rev, $id = null, $media = false, $inline = false) {
global $lang;
@ -1482,7 +1527,7 @@ function html_diff_navigationlink($difftype, $linktype, $lrev, $rrev = null) {
/**
* Insert soft breaks in diff html
*
* @param $diffhtml
* @param string $diffhtml
* @return string
*/
function html_insert_softbreaks($diffhtml) {
@ -1521,6 +1566,9 @@ REGEX;
* show warning on conflict detection
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $text
* @param string $summary
*/
function html_conflict($text,$summary){
global $ID;
@ -1681,7 +1729,6 @@ function html_edit(){
global $lang;
global $conf;
global $TEXT;
global $RANGE;
if ($INPUT->has('changecheck')) {
$check = $INPUT->str('changecheck');
@ -1783,6 +1830,7 @@ function html_edit(){
* Display the default edit form
*
* Is the default action for HTML_EDIT_FORMSELECTION.
*
* @param mixed[] $param
*/
function html_edit_form($param) {
@ -1802,6 +1850,8 @@ function html_edit_form($param) {
* Adds a checkbox for minor edits for logged in users
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @return array|bool
*/
function html_minoredit(){
global $conf;
@ -2081,6 +2131,9 @@ function html_resendpwd() {
* Return the TOC rendered to XHTML
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param array $toc
* @return string html
*/
function html_TOC($toc){
if(!count($toc)) return '';
@ -2099,6 +2152,9 @@ function html_TOC($toc){
/**
* Callback for html_buildlist
*
* @param array $item
* @return string html
*/
function html_list_toc($item){
if(isset($item['hid'])){
@ -2133,6 +2189,7 @@ function html_mktocitem($link, $text, $level, $hash='#'){
* Triggers an event with the form name: HTML_{$name}FORM_OUTPUT
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param string $name The name of the form
* @param Doku_Form $form The form
*/
@ -2145,6 +2202,7 @@ function html_form($name, &$form) {
/**
* Form print function.
* Just calls printForm() on the data object.
*
* @param Doku_Form $data The form
*/
function html_form_output($data) {

View file

@ -15,6 +15,7 @@ define('HTTP_CHUNK_SIZE',16*1024);
*
* @author Simon Willison <swillison@gmail.com>
* @link http://simonwillison.net/2003/Apr/23/conditionalGet/
*
* @param int $timestamp lastmodified time of the cache file
* @returns void or exits with previously header() commands executed
*/
@ -64,6 +65,7 @@ function http_conditionalRequest($timestamp){
* Let the webserver send the given file via x-sendfile method
*
* @author Chris Smith <chris@jalakai.co.uk>
*
* @param string $file absolute path of file to send
* @returns void or exits with previous header() commands executed
*/
@ -190,6 +192,9 @@ function http_rangeRequest($fh,$size,$mime){
* (samepath/samefilename.sameext.gz) created after the uncompressed file
*
* @author Chris Smith <chris.eureka@jalakai.co.uk>
*
* @param string $uncompressed_file
* @return bool
*/
function http_gzip_valid($uncompressed_file) {
$gzip = $uncompressed_file.'.gz';
@ -206,6 +211,9 @@ function http_gzip_valid($uncompressed_file) {
* This function handles output of cacheable resource files. It ses the needed
* HTTP headers. If a useable cache is present, it is passed to the web server
* and the script is terminated.
*
* @param string $cache cache file name
* @param bool $cache_ok if cache can be used
*/
function http_cached($cache, $cache_ok) {
global $conf;
@ -235,6 +243,9 @@ function http_cached($cache, $cache_ok) {
/**
* Cache content and print it
*
* @param string $file file name
* @param string $content
*/
function http_cached_finish($file, $content) {
global $conf;

View file

@ -61,6 +61,8 @@ define('IDX_ASIAN', '(?:'.IDX_ASIAN1.'|'.IDX_ASIAN2.'|'.IDX_ASIAN3.')');
*
* @author Tom N Harris <tnharris@whoopdedo.org>
* @author Michael Hamann <michael@content-space.de>
*
* @return int|string
*/
function idx_get_version(){
static $indexer_version = null;
@ -84,6 +86,9 @@ function idx_get_version(){
* Differs from strlen in handling of asian characters.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param string $w
* @return int
*/
function wordlen($w){
$l = strlen($w);
@ -115,7 +120,8 @@ class Doku_Indexer {
*
* @param string $page a page name
* @param string $text the body of the page
* @return boolean the function completed successfully
* @return string|boolean the function completed successfully
*
* @author Tom N Harris <tnharris@whoopdedo.org>
* @author Andreas Gohr <andi@splitbrain.org>
*/
@ -190,6 +196,7 @@ class Doku_Indexer {
*
* @param string $text content of the page
* @return array list of word IDs and number of times used
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Christopher Smith <chris@jalakai.co.uk>
* @author Tom N Harris <tnharris@whoopdedo.org>
@ -245,7 +252,8 @@ class Doku_Indexer {
* @param string $page a page name
* @param mixed $key a key string or array of key=>value pairs
* @param mixed $value the value or list of values
* @return boolean the function completed successfully
* @return boolean|string the function completed successfully
*
* @author Tom N Harris <tnharris@whoopdedo.org>
* @author Michael Hamann <michael@content-space.de>
*/
@ -453,7 +461,8 @@ class Doku_Indexer {
* Erases entries in all known indexes.
*
* @param string $page a page name
* @return boolean the function completed successfully
* @return string|boolean the function completed successfully
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
public function deletePage($page) {
@ -474,6 +483,7 @@ class Doku_Indexer {
*
* @param string $page a page name
* @return boolean the function completed successfully
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
protected function deletePageNoLock($page) {
@ -568,6 +578,7 @@ class Doku_Indexer {
* @param string $text plain text
* @param boolean $wc are wildcards allowed?
* @return array list of words in the text
*
* @author Tom N Harris <tnharris@whoopdedo.org>
* @author Andreas Gohr <andi@splitbrain.org>
*/
@ -676,6 +687,7 @@ class Doku_Indexer {
*
* @param array $tokens list of words to search for
* @return array list of page names with usage counts
*
* @author Tom N Harris <tnharris@whoopdedo.org>
* @author Andreas Gohr <andi@splitbrain.org>
*/
@ -730,6 +742,7 @@ class Doku_Indexer {
* @param string $value search term to look for, must be a string or array of strings
* @param callback $func comparison function
* @return array lists with page names, keys are query values if $value is array
*
* @author Tom N Harris <tnharris@whoopdedo.org>
* @author Michael Hamann <michael@content-space.de>
*/
@ -829,6 +842,7 @@ class Doku_Indexer {
* @param array $words The query terms.
* @param array $result Set to word => array("length*id" ...)
* @return array Set to length => array(id ...)
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
protected function getIndexWords(&$words, &$result) {
@ -909,6 +923,7 @@ class Doku_Indexer {
*
* @param string $key list only pages containing the metadata key (optional)
* @return array list of page names
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
public function getPages($key=null) {
@ -942,6 +957,7 @@ class Doku_Indexer {
* @param int $minlen minimum length of words to count
* @param string $key metadata key to list. Uses the fulltext index if not given
* @return array list of words as the keys and frequency as values
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
public function histogram($min=1, $max=0, $minlen=3, $key=null) {
@ -1002,6 +1018,8 @@ class Doku_Indexer {
* Lock the indexer.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @return bool|string
*/
protected function lock() {
global $conf;
@ -1033,6 +1051,8 @@ class Doku_Indexer {
* Release the indexer lock.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @return bool
*/
protected function unlock() {
global $conf;
@ -1050,6 +1070,7 @@ class Doku_Indexer {
* @param string $idx name of the index
* @param string $suffix subpart identifier
* @return array list of lines without CR or LF
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
protected function getIndex($idx, $suffix) {
@ -1066,6 +1087,7 @@ class Doku_Indexer {
* @param string $suffix subpart identifier
* @param array $lines list of lines without LF
* @return bool If saving succeeded
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
protected function saveIndex($idx, $suffix, &$lines) {
@ -1090,6 +1112,7 @@ class Doku_Indexer {
* @param string $suffix subpart identifier
* @param int $id the line number
* @return string a line with trailing whitespace removed
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
protected function getIndexKey($idx, $suffix, $id) {
@ -1114,6 +1137,7 @@ class Doku_Indexer {
* @param int $id the line number
* @param string $line line to write
* @return bool If saving succeeded
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
protected function saveIndexKey($idx, $suffix, $id, $line) {
@ -1155,6 +1179,7 @@ class Doku_Indexer {
* @param string $suffix subpart identifier
* @param string $value line to find in the index
* @return int|bool line number of the value in the index or false if writing the index failed
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
protected function addIndexKey($idx, $suffix, $value) {
@ -1178,6 +1203,8 @@ class Doku_Indexer {
* a sorted array of lengths of the words used in the wiki.
*
* @author YoBoY <yoboy.leguesh@gmail.com>
*
* @return array
*/
protected function listIndexLengths() {
return idx_listIndexLengths();
@ -1190,6 +1217,9 @@ class Doku_Indexer {
* that there are indices for.
*
* @author YoBoY <yoboy.leguesh@gmail.com>
*
* @param array|int $filter
* @return array
*/
protected function indexLengths($filter) {
global $conf;
@ -1216,6 +1246,11 @@ class Doku_Indexer {
* Insert or replace a tuple in a line.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param string $line
* @param string $id
* @param int $count
* @return string
*/
protected function updateTuple($line, $id, $count) {
if ($line != ''){
@ -1237,6 +1272,10 @@ class Doku_Indexer {
*
* @author Tom N Harris <tnharris@whoopdedo.org>
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param array $keys
* @param string $line
* @return array
*/
protected function parseTuples(&$keys, $line) {
$result = array();
@ -1257,13 +1296,16 @@ class Doku_Indexer {
* Sum the counts in a list of tuples.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param string $line
* @return int
*/
protected function countTuples($line) {
$freq = 0;
$parts = explode(':', $line);
foreach ($parts as $tuple) {
if ($tuple === '') continue;
list($pid, $cnt) = explode('*', $tuple);
list(/* $pid */, $cnt) = explode('*', $tuple);
$freq += (int)$cnt;
}
return $freq;
@ -1273,7 +1315,8 @@ class Doku_Indexer {
/**
* Create an instance of the indexer.
*
* @return Doku_Indexer a Doku_Indexer
* @return Doku_Indexer a Doku_Indexer
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function idx_get_indexer() {
@ -1288,6 +1331,7 @@ function idx_get_indexer() {
* Returns words that will be ignored.
*
* @return array list of stop words
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function & idx_get_stopwords() {
@ -1312,7 +1356,8 @@ function & idx_get_stopwords() {
* @param string $page name of the page to index
* @param boolean $verbose print status messages
* @param boolean $force force reindexing even when the index is up to date
* @return boolean the function completed successfully
* @return string|boolean the function completed successfully
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*/
function idx_addPage($page, $verbose=false, $force=false) {
@ -1441,6 +1486,10 @@ function idx_tokenizer($string, $wc=false) {
* Read the list of words in an index (if it exists).
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param string $idx
* @param string $suffix
* @return array
*/
function idx_getIndex($idx, $suffix) {
global $conf;
@ -1456,6 +1505,8 @@ function idx_getIndex($idx, $suffix) {
* a sorted array of lengths of the words used in the wiki.
*
* @author YoBoY <yoboy.leguesh@gmail.com>
*
* @return array
*/
function idx_listIndexLengths() {
global $conf;
@ -1510,6 +1561,9 @@ function idx_listIndexLengths() {
* that there are indices for.
*
* @author YoBoY <yoboy.leguesh@gmail.com>
*
* @param array|int $filter
* @return array
*/
function idx_indexLengths($filter) {
global $conf;
@ -1539,6 +1593,9 @@ function idx_indexLengths($filter) {
* not a letter, number, or underscore.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param string $name
* @return string
*/
function idx_cleanName($name) {
$name = utf8_romanize(trim((string)$name));

View file

@ -20,6 +20,7 @@ if(!defined('DOKU_INC')) die('meh.');
* @param string $id - a pageid, the namespace of that id will be tried to deleted
* @param string $basedir - the config name of the type to delete (datadir or mediadir usally)
* @return bool - true if at least one namespace was deleted
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Ben Coburn <btcoburn@silicodon.net>
*/
@ -60,6 +61,11 @@ function io_sweepNS($id,$basedir='datadir'){
* $data[3] rev: The page revision, false for current wiki pages.
*
* @author Ben Coburn <btcoburn@silicodon.net>
*
* @param string $file filename
* @param string $id page id
* @param bool|int $rev revision timestamp
* @return string
*/
function io_readWikiPage($file, $id, $rev=false) {
if (empty($rev)) { $rev = false; }
@ -69,7 +75,11 @@ function io_readWikiPage($file, $id, $rev=false) {
/**
* Callback adapter for io_readFile().
*
* @author Ben Coburn <btcoburn@silicodon.net>
*
* @param array $data event data
* @return string
*/
function _io_readWikiPage_action($data) {
if (is_array($data) && is_array($data[0]) && count($data[0])===2) {
@ -88,6 +98,10 @@ function _io_readWikiPage_action($data) {
* be sure to set $clean to false!
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $file filename
* @param bool $clean
* @return string
*/
function io_readFile($file,$clean=true){
$ret = '';
@ -108,9 +122,12 @@ function io_readFile($file,$clean=true){
}
/**
* Returns the content of a .bz2 compressed file as string
*
* @author marcel senf <marcel@rucksackreinigung.de>
*
* @param string $file filename
* @return string content
*/
function bzfile($file){
$bz = bzopen($file,"r");
$str = '';
@ -138,6 +155,12 @@ function bzfile($file){
* $data[3] rev: The page revision, false for current wiki pages.
*
* @author Ben Coburn <btcoburn@silicodon.net>
*
* @param string $file filename
* @param string $content
* @param string $id page id
* @param int|bool $rev timestamp of revision
* @return bool
*/
function io_writeWikiPage($file, $content, $id, $rev=false) {
if (empty($rev)) { $rev = false; }
@ -149,6 +172,9 @@ function io_writeWikiPage($file, $content, $id, $rev=false) {
/**
* Callback adapter for io_saveFile().
* @author Ben Coburn <btcoburn@silicodon.net>
*
* @param array $data event data
* @return bool
*/
function _io_writeWikiPage_action($data) {
if (is_array($data) && is_array($data[0]) && count($data[0])===3) {
@ -168,7 +194,11 @@ function _io_writeWikiPage_action($data) {
* and bz2 if extension is .bz2
*
* @author Andreas Gohr <andi@splitbrain.org>
* @return bool true on success
*
* @param string $file filename path to file
* @param string $content
* @param bool $append
* @return bool true on success, otherwise false
*/
function io_saveFile($file,$content,$append=false){
global $conf;
@ -221,6 +251,10 @@ function io_saveFile($file,$content,$append=false){
* 2005-10-14 : added regex option -- Christopher Smith <chris@jalakai.co.uk>
*
* @author Steven Danz <steven-danz@kc.rr.com>
*
* @param string $file filename
* @param string $badline exact linematch to remove
* @param bool $regex use regexp?
* @return bool true on success
*/
function io_deleteFromFile($file,$badline,$regex=false){
@ -285,6 +319,8 @@ function io_deleteFromFile($file,$badline,$regex=false){
* the lock is assumed to be stale and the function goes on
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $file filename
*/
function io_lock($file){
global $conf;
@ -311,6 +347,8 @@ function io_lock($file){
* Unlocks a file
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $file filename
*/
function io_unlock($file){
global $conf;
@ -331,6 +369,9 @@ function io_unlock($file){
* $data[1] ns_type: 'pages' or 'media' namespace tree.
*
* @author Ben Coburn <btcoburn@silicodon.net>
*
* @param string $id page id
* @param string $ns_type 'pages' or 'media'
*/
function io_createNamespace($id, $ns_type='pages') {
// verify ns_type
@ -365,6 +406,8 @@ function io_createNamespace($id, $ns_type='pages') {
* Create the directory needed for the given file
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $file file name
*/
function io_makeFileDir($file){
$dir = dirname($file);
@ -379,6 +422,9 @@ function io_makeFileDir($file){
* @link http://www.php.net/manual/en/function.mkdir.php
* @author <saint@corenova.com>
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $target filename
* @return bool|int|string
*/
function io_mkdir_p($target){
global $conf;
@ -454,6 +500,9 @@ function io_rmdir($path, $removefiles = false) {
* This is used when the safemode workaround is enabled
*
* @author <andi@splitbrain.org>
*
* @param string $dir name of the new directory
* @return false|string
*/
function io_mkdir_ftp($dir){
global $conf;
@ -488,6 +537,8 @@ function io_mkdir_ftp($dir){
* its path.
*
* @author Michael Klier <chi@chimeric.de>
*
* @return false|string path to new directory or false
*/
function io_mktmpdir() {
global $conf;
@ -516,6 +567,13 @@ function io_mktmpdir() {
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Chris Smith <chris@jalakai.co.uk>
*
* @param string $url url to download
* @param string $file path to file or directory where to save
* @param bool $useAttachment if true: try to use name of download, uses otherwise $defaultName, false: uses $file as path to file
* @param string $defaultName fallback for if using $useAttachment
* @param int $maxSize maximum file size
* @return bool|string if failed false, otherwise true or the name of the file in the given dir
*/
function io_download($url,$file,$useAttachment=false,$defaultName='',$maxSize=2097152){
global $conf;
@ -563,6 +621,10 @@ function io_download($url,$file,$useAttachment=false,$defaultName='',$maxSize=20
*
* rename() can not overwrite existing files on Windows
* this function will use copy/unlink instead
*
* @param string $from
* @param string $to
* @return bool succes or fail
*/
function io_rename($from,$to){
global $conf;
@ -582,6 +644,11 @@ function io_rename($from,$to){
* Returns the exit code from the process.
*
* @author Tom N Harris <tnharris@whoopdedo.org>
*
* @param string $cmd
* @param string $input input pipe
* @param string $output output pipe
* @return int exit code from process
*/
function io_exec($cmd, $input, &$output){
$descspec = array(

View file

@ -16,6 +16,9 @@ if(!defined('NL')) define('NL',"\n");
* their CSS tags except pagenames won't be links.
*
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*
* @param array $data
* @param string $id
*/
function media_filesinuse($data,$id){
global $lang;
@ -45,7 +48,7 @@ function media_filesinuse($data,$id){
* @param string $id media id
* @param int $auth permission level
* @param array $data
* @return bool
* @return false|string
*/
function media_metasave($id,$auth,$data){
if($auth < AUTH_UPLOAD) return false;
@ -91,6 +94,7 @@ function media_metasave($id,$auth,$data){
* check if a media is external source
*
* @author Gerrit Uitslag <klapinklapin@gmail.com>
*
* @param string $id the media ID or URL
* @return bool
*/
@ -103,6 +107,7 @@ function media_isexternal($id){
* Check if a media item is public (eg, external URL or readable by @ALL)
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $id the media ID or URL
* @return bool
*/
@ -214,6 +219,7 @@ define('DOKU_MEDIA_EMPTY_NS', 8);
* If configured, checks for media references before deletion
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $id media id
* @param int $auth no longer used
* @return int One of: 0,
@ -266,9 +272,9 @@ function media_delete($id,$auth){
/**
* Handle file uploads via XMLHttpRequest
*
* @param string $ns target namespace
* @param int $auth current auth check result
* @return mixed false on error, id of the new file on success
* @param string $ns target namespace
* @param int $auth current auth check result
* @return false|string false on error, id of the new file on success
*/
function media_upload_xhr($ns,$auth){
if(!checkSecurityToken()) return false;
@ -311,10 +317,11 @@ function media_upload_xhr($ns,$auth){
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Michael Klier <chi@chimeric.de>
* @param string $ns target namespace
* @param int $auth current auth check result
* @param bool|array $file $_FILES member, $_FILES['upload'] if false
* @return mixed false on error, id of the new file on success
*
* @param string $ns target namespace
* @param int $auth current auth check result
* @param bool|array $file $_FILES member, $_FILES['upload'] if false
* @return false|string false on error, id of the new file on success
*/
function media_upload($ns,$auth,$file=false){
if(!checkSecurityToken()) return false;
@ -358,6 +365,7 @@ function media_upload($ns,$auth,$file=false){
* Using copy, makes sure any setgid bits on the media directory are honored
*
* @see move_uploaded_file()
*
* @param string $from
* @param string $to
* @return bool
@ -383,14 +391,13 @@ function copy_uploaded_file($from, $to){
* $data[5] move:
*
* @triggers MEDIA_UPLOAD_FINISH
*/
/**
* @param array $file
*
* @param array $file
* @param string $id
* @param bool $ow
* @param int $auth permission level
* @param bool $ow overwrite?
* @param int $auth permission level
* @param string $move function name
* @return array|mixed
* @return false|array|string
*/
function media_save($file, $id, $ow, $auth, $move) {
if($auth < AUTH_UPLOAD) {
@ -453,8 +460,12 @@ function media_save($file, $id, $ow, $auth, $move) {
}
/**
* Callback adapter for media_upload_finish()
* Callback adapter for media_upload_finish() triggered by MEDIA_UPLOAD_FINISH
*
* @author Michael Klier <chi@chimeric.de>
*
* @param array $data event data
* @return false|array|string
*/
function _media_upload_action($data) {
// fixme do further sanity tests of given data?
@ -471,6 +482,14 @@ function _media_upload_action($data) {
* @author Andreas Gohr <andi@splitbrain.org>
* @author Michael Klier <chi@chimeric.de>
* @author Kate Arzamastseva <pshns@ukr.net>
*
* @param string $fn_tmp
* @param string $fn
* @param string $id media id
* @param string $imime mime type
* @param bool $overwrite overwrite existing?
* @param string $move function name
* @return array|string
*/
function media_upload_finish($fn_tmp, $fn, $id, $imime, $overwrite, $move = 'move_uploaded_file') {
global $conf;
@ -514,6 +533,7 @@ function media_upload_finish($fn_tmp, $fn, $id, $imime, $overwrite, $move = 'mov
* directory
*
* @author Kate Arzamastseva <pshns@ukr.net>
*
* @param string $id
* @return int - revision date
*/
@ -557,6 +577,10 @@ function media_saveOldRevision($id){
* @author Andreas Gohr <andi@splitbrain.org>
* @link http://www.splitbrain.org/blog/2007-02/12-internet_explorer_facilitates_cross_site_scripting
* @fixme check all 26 magic IE filetypes here?
*
* @param string $file path to file
* @param string $mime mimetype
* @return int
*/
function media_contentcheck($file,$mime){
global $conf;
@ -566,14 +590,14 @@ function media_contentcheck($file,$mime){
$bytes = fread($fh, 256);
fclose($fh);
if(preg_match('/<(script|a|img|html|body|iframe)[\s>]/i',$bytes)){
return -3;
return -3; //XSS: possibly malicious content
}
}
}
if(substr($mime,0,6) == 'image/'){
$info = @getimagesize($file);
if($mime == 'image/gif' && $info[2] != 1){
return -1;
return -1; // uploaded content did not match the file extension
}elseif($mime == 'image/jpeg' && $info[2] != 2){
return -1;
}elseif($mime == 'image/png' && $info[2] != 3){
@ -584,7 +608,7 @@ function media_contentcheck($file,$mime){
global $TEXT;
$TEXT = io_readFile($file);
if(checkwordblock()){
return -2;
return -2; //blocked by the spam blacklist
}
}
return 0;
@ -594,6 +618,12 @@ function media_contentcheck($file,$mime){
* Send a notify mail on uploads
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $id media id
* @param string $file path to file
* @param string $mime mime type
* @param bool|int $old_rev revision timestamp or false
* @return bool
*/
function media_notify($id,$file,$mime,$old_rev=false){
global $conf;
@ -605,6 +635,12 @@ function media_notify($id,$file,$mime,$old_rev=false){
/**
* List all files in a given Media namespace
*
* @param string $ns
* @param null|int $auth permission level
* @param string $jump id
* @param bool $fullscreenview
* @param bool|string $sort sorting order
*/
function media_filelist($ns,$auth=null,$jump='',$fullscreenview=false,$sort=false){
global $conf;
@ -747,6 +783,7 @@ function media_tab_files_options(){
* Returns type of sorting for the list of files in media manager
*
* @author Kate Arzamastseva <pshns@ukr.net>
*
* @return string - sort type
*/
function _media_get_sort_type() {
@ -757,6 +794,7 @@ function _media_get_sort_type() {
* Returns type of listing for the list of files in media manager
*
* @author Kate Arzamastseva <pshns@ukr.net>
*
* @return string - list type
*/
function _media_get_list_type() {
@ -788,6 +826,10 @@ function _media_get_display_param($param, $values) {
* Prints tab that displays a list of all files
*
* @author Kate Arzamastseva <pshns@ukr.net>
*
* @param string $ns
* @param null|int $auth permission level
* @param string $jump item id
*/
function media_tab_files($ns,$auth=null,$jump='') {
global $lang;
@ -804,6 +846,10 @@ function media_tab_files($ns,$auth=null,$jump='') {
* Prints tab that displays uploading form
*
* @author Kate Arzamastseva <pshns@ukr.net>
*
* @param string $ns
* @param null|int $auth permission level
* @param string $jump item id
*/
function media_tab_upload($ns,$auth=null,$jump='') {
global $lang;
@ -821,6 +867,9 @@ function media_tab_upload($ns,$auth=null,$jump='') {
* Prints tab that displays search form
*
* @author Kate Arzamastseva <pshns@ukr.net>
*
* @param string $ns
* @param null|int $auth permission level
*/
function media_tab_search($ns,$auth=null) {
global $INPUT;
@ -843,8 +892,8 @@ function media_tab_search($ns,$auth=null) {
*
* @param string $image media id
* @param string $ns
* @param null|int $auth permission level
* @param string|int $rev
* @param null|int $auth permission level
* @param string|int $rev revision timestamp or empty string
*/
function media_tab_view($image, $ns, $auth=null, $rev='') {
global $lang;
@ -910,10 +959,11 @@ function media_tab_history($image, $ns, $auth=null) {
/**
* Prints mediafile details
*
* @param string $image media id
* @param int $auth permission level
* @param int|string $rev revision timestamp or empty string
* @param JpegMeta|bool $meta
* @param string $image media id
* @param int $auth permission level
* @param int|string $rev revision timestamp or empty string
* @param JpegMeta|bool $meta
*
* @author Kate Arzamastseva <pshns@ukr.net>
*/
function media_preview($image, $auth, $rev='', $meta=false) {
@ -950,8 +1000,8 @@ function media_preview($image, $auth, $rev='', $meta=false) {
* @author Kate Arzamastseva <pshns@ukr.net>
*
* @param string $image media id
* @param int $auth permission level
* @param string|int $rev revision timestamp, or empty string
* @param int $auth permission level
* @param string|int $rev revision timestamp, or empty string
*/
function media_preview_buttons($image, $auth, $rev='') {
global $lang, $conf;
@ -1003,9 +1053,9 @@ function media_preview_buttons($image, $auth, $rev='') {
* @author Kate Arzamastseva <pshns@ukr.net>
* @param string $image
* @param int|string $rev
* @param JpegMeta|bool $meta
* @param JpegMeta|bool $meta
* @param int $size
* @return array|bool
* @return array|false
*/
function media_image_preview_size($image, $rev, $meta, $size = 500) {
if (!preg_match("/\.(jpe?g|gif|png)$/", $image) || !file_exists(mediaFN($image, $rev))) return false;
@ -1027,9 +1077,9 @@ function media_image_preview_size($image, $rev, $meta, $size = 500) {
*
* @author Kate Arzamastseva <pshns@ukr.net>
*
* @param array $tags
* @param array $tags array with tags, first existing is returned
* @param JpegMeta $meta
* @param string $alt
* @param string $alt alternative value
* @return string
*/
function media_getTag($tags,$meta,$alt=''){
@ -1045,7 +1095,7 @@ function media_getTag($tags,$meta,$alt=''){
* @author Kate Arzamastseva <pshns@ukr.net>
*
* @param JpegMeta $meta
* @return array
* @return array list of tags of the mediafile
*/
function media_file_tags($meta) {
// load the field descriptions
@ -1074,8 +1124,7 @@ function media_file_tags($meta) {
* Prints mediafile tags
*
* @author Kate Arzamastseva <pshns@ukr.net>
*/
/**
*
* @param string $image image id
* @param int $auth permission level
* @param string|int $rev revision timestamp, or empty string
@ -1104,13 +1153,12 @@ function media_details($image, $auth, $rev='', $meta=false) {
* Shows difference between two revisions of file
*
* @author Kate Arzamastseva <pshns@ukr.net>
*/
/**
*
* @param string $image image id
* @param string $ns
* @param int $auth permission level
* @param bool $fromajax
* @return void|bool|string
* @return false|null|string
*/
function media_diff($image, $ns, $auth, $fromajax = false) {
global $conf;
@ -1170,14 +1218,13 @@ function media_diff($image, $ns, $auth, $fromajax = false) {
// trigger event
return trigger_event('MEDIA_DIFF', $data, '_media_file_diff', true);
}
/**
* Callback for media file diff
*
* @param $data
* @return bool|void
* @param array $data event data
* @return false|null
*/
function _media_file_diff($data) {
if(is_array($data) && count($data)===6) {
@ -1318,11 +1365,12 @@ function media_file_diff($image, $l_rev, $r_rev, $ns, $auth, $fromajax){
* and slider
*
* @author Kate Arzamastseva <pshns@ukr.net>
* @param string $image
* @param int $l_rev revision timestamp, or empty string
* @param int $r_rev revision timestamp, or empty string
* @param array $l_size
* @param array $r_size
*
* @param string $image image id
* @param int $l_rev revision timestamp, or empty string
* @param int $r_rev revision timestamp, or empty string
* @param array $l_size array with width and height
* @param array $r_size array with width and height
* @param string $type
*/
function media_image_diff($image, $l_rev, $r_rev, $l_size, $r_size, $type) {
@ -1355,10 +1403,11 @@ function media_image_diff($image, $l_rev, $r_rev, $l_size, $r_size, $type) {
/**
* Restores an old revision of a media file
*
* @param string $image
* @param int $rev
* @param int $auth
* @param string $image media id
* @param int $rev revision timestamp or empty string
* @param int $auth
* @return string - file's id
*
* @author Kate Arzamastseva <pshns@ukr.net>
*/
function media_restore($image, $rev, $auth){
@ -1444,10 +1493,10 @@ function media_searchlist($query,$ns,$auth=null,$fullscreen=false,$sort='natural
/**
* Formats and prints one file in the list
*
* @param array $item
* @param int $auth permission level
* @param string $jump item id
* @param bool $display_namespace
* @param array $item
* @param int $auth permission level
* @param string $jump item id
* @param bool $display_namespace
*/
function media_printfile($item,$auth,$jump,$display_namespace=false){
global $lang;
@ -1524,9 +1573,9 @@ function media_printfile($item,$auth,$jump,$display_namespace=false){
/**
* Display a media icon
*
* @param $filename
* @param string $size the size subfolder, if not specified 16x16 is used
* @return string
* @param string $filename media id
* @param string $size the size subfolder, if not specified 16x16 is used
* @return string html
*/
function media_printicon($filename, $size=''){
list($ext) = mimetype(mediaFN($filename),false);
@ -1546,8 +1595,8 @@ function media_printicon($filename, $size=''){
* @author Kate Arzamastseva <pshns@ukr.net>
*
* @param array $item
* @param int $auth
* @param bool|string $jump
* @param int $auth permission level
* @param bool|string $jump item id
* @param bool $display_namespace
*/
function media_printfile_thumbs($item,$auth,$jump=false,$display_namespace=false){
@ -1598,7 +1647,7 @@ function media_printfile_thumbs($item,$auth,$jump=false,$display_namespace=false
* Prints a thumbnail and metainfo
*
* @param array $item
* @param bool $fullscreen
* @param bool $fullscreen
*/
function media_printimgdetail($item, $fullscreen=false){
// prepare thumbnail
@ -1662,15 +1711,15 @@ function media_printimgdetail($item, $fullscreen=false){
}
/**
* Build link based on the current, adding/rewriting
* parameters
* Build link based on the current, adding/rewriting parameters
*
* @author Kate Arzamastseva <pshns@ukr.net>
*
* @param array|bool $params
* @param string $amp - separator
* @param bool $abs
* @param bool $params_array
* @return string|array - link
* @param string $amp separator
* @param bool $abs absolute url?
* @param bool $params_array return the parmeters array?
* @return string|array - link or link parameters
*/
function media_managerURL($params=false, $amp='&amp;', $abs=false, $params_array=false) {
global $ID;
@ -1703,8 +1752,8 @@ function media_managerURL($params=false, $amp='&amp;', $abs=false, $params_array
* @author Kate Arzamastseva <pshns@ukr.net>
*
* @param string $ns
* @param int $auth permission level
* @param bool $fullscreen
* @param int $auth permission level
* @param bool $fullscreen
*/
function media_uploadform($ns, $auth, $fullscreen = false){
global $lang;
@ -1873,6 +1922,9 @@ function media_nstree($ns){
* Prints a media namespace tree item
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param array $item
* @return string html
*/
function media_nstree_item($item){
global $INPUT;
@ -1896,6 +1948,9 @@ function media_nstree_item($item){
* Prints a media namespace tree item opener
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param array $item
* @return string html
*/
function media_nstree_li($item){
$class='media level'.$item['level'];
@ -1917,6 +1972,12 @@ function media_nstree_li($item){
* Resizes the given image to the given size
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $file filename, path to file
* @param string $ext extension
* @param int $w desired width
* @param int $h desired height
* @return string path to resized or original size if failed
*/
function media_resize_image($file, $ext, $w, $h=0){
global $conf;
@ -1937,9 +1998,10 @@ function media_resize_image($file, $ext, $w, $h=0){
$local = getCacheName($file,'.media.'.$w.'x'.$h.'.'.$ext);
$mtime = @filemtime($local); // 0 if not exists
if( $mtime > filemtime($file) ||
media_resize_imageIM($ext,$file,$info[0],$info[1],$local,$w,$h) ||
media_resize_imageGD($ext,$file,$info[0],$info[1],$local,$w,$h) ){
if($mtime > filemtime($file) ||
media_resize_imageIM($ext, $file, $info[0], $info[1], $local, $w, $h) ||
media_resize_imageGD($ext, $file, $info[0], $info[1], $local, $w, $h)
) {
if(!empty($conf['fperm'])) @chmod($local, $conf['fperm']);
return $local;
}
@ -1955,6 +2017,12 @@ function media_resize_image($file, $ext, $w, $h=0){
* image because most pics are more interesting in that area (rule of thirds)
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $file filename, path to file
* @param string $ext extension
* @param int $w desired width
* @param int $h desired height
* @return string path to resized or original size if failed
*/
function media_crop_image($file, $ext, $w, $h=0){
global $conf;
@ -2019,7 +2087,7 @@ function media_crop_image($file, $ext, $w, $h=0){
* @param string $id id of the image
* @param int $w resize/crop width
* @param int $h resize/crop height
* @return string
* @return string token or empty string if no token required
*/
function media_get_token($id,$w,$h){
// token is only required for modified images
@ -2042,6 +2110,11 @@ function media_get_token($id,$w,$h){
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Pavel Vitis <Pavel.Vitis@seznam.cz>
*
* @param string $url
* @param string $ext extension
* @param int $cache cachetime in seconds
* @return false|string path to cached file
*/
function media_get_from_URL($url,$ext,$cache){
global $conf;
@ -2054,12 +2127,12 @@ function media_get_from_URL($url,$ext,$cache){
$mtime = @filemtime($local); // 0 if not exists
//decide if download needed:
if( ($mtime == 0) || // cache does not exist
($cache != -1 && $mtime < time()-$cache) // 'recache' and cache has expired
){
if(media_image_download($url,$local)){
if(($mtime == 0) || // cache does not exist
($cache != -1 && $mtime < time() - $cache) // 'recache' and cache has expired
) {
if(media_image_download($url, $local)) {
return $local;
}else{
} else {
return false;
}
}
@ -2075,6 +2148,10 @@ function media_get_from_URL($url,$ext,$cache){
* Download image files
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $url
* @param string $file path to file in which to put the downloaded content
* @return bool
*/
function media_image_download($url,$file){
global $conf;
@ -2110,6 +2187,15 @@ function media_image_download($url,$file){
*
* @author Pavel Vitis <Pavel.Vitis@seznam.cz>
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $ext extension
* @param string $from filename path to file
* @param int $from_w original width
* @param int $from_h original height
* @param string $to path to resized file
* @param int $to_w desired width
* @param int $to_h desired height
* @return bool
*/
function media_resize_imageIM($ext,$from,$from_w,$from_h,$to,$to_w,$to_h){
global $conf;
@ -2134,6 +2220,17 @@ function media_resize_imageIM($ext,$from,$from_w,$from_h,$to,$to_w,$to_h){
* crop images using external ImageMagick convert program
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $ext extension
* @param string $from filename path to file
* @param int $from_w original width
* @param int $from_h original height
* @param string $to path to resized file
* @param int $to_w desired width
* @param int $to_h desired height
* @param int $ofs_x offset of crop centre
* @param int $ofs_y offset of crop centre
* @return bool
*/
function media_crop_imageIM($ext,$from,$from_w,$from_h,$to,$to_w,$to_h,$ofs_x,$ofs_y){
global $conf;
@ -2159,6 +2256,17 @@ function media_crop_imageIM($ext,$from,$from_w,$from_h,$to,$to_w,$to_h,$ofs_x,$o
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Sebastian Wienecke <s_wienecke@web.de>
*
* @param string $ext extension
* @param string $from filename path to file
* @param int $from_w original width
* @param int $from_h original height
* @param string $to path to resized file
* @param int $to_w desired width
* @param int $to_h desired height
* @param int $ofs_x offset of crop centre
* @param int $ofs_y offset of crop centre
* @return bool
*/
function media_resize_imageGD($ext,$from,$from_w,$from_h,$to,$to_w,$to_h,$ofs_x=0,$ofs_y=0){
global $conf;
@ -2261,9 +2369,9 @@ function media_resize_imageGD($ext,$from,$from_w,$from_h,$to,$to_w,$to_h,$ofs_x=
* Return other media files with the same base name
* but different extensions.
*
* @param string $src - ID of media file
* @param array $exts - alternative extensions to find other files for
* @return array - mime type => file ID
* @param string $src - ID of media file
* @param string[] $exts - alternative extensions to find other files for
* @return array - array(mime type => file ID)
*
* @author Anika Henke <anika@selfthinker.org>
*/
@ -2288,7 +2396,7 @@ function media_alternativefiles($src, $exts){
* Check if video/audio is supported to be embedded.
*
* @param string $mime - mimetype of media file
* @param string $type - type of media files to check ('video', 'audio', or none)
* @param string $type - type of media files to check ('video', 'audio', or null for all)
* @return boolean
*
* @author Anika Henke <anika@selfthinker.org>

View file

@ -20,7 +20,7 @@
*
* @param string $param the $_REQUEST variable name, default 'id'
* @param bool $clean if true, ID is cleaned
* @return mixed|string
* @return string
*/
function getID($param='id',$clean=true){
/** @var Input $INPUT */
@ -97,6 +97,7 @@ function getID($param='id',$clean=true){
* converted to unaccented ones
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $raw_id The pageid to clean
* @param boolean $ascii Force ASCII
* @return string cleaned id
@ -152,7 +153,7 @@ function cleanID($raw_id,$ascii=false){
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $id
* @return string|bool the namespace part or false if the given ID has no namespace (root)
* @return string|false the namespace part or false if the given ID has no namespace (root)
*/
function getNS($id){
$pos = strrpos((string)$id,':');
@ -435,7 +436,7 @@ function localeFN($id,$ext='txt'){
* @param string $ns namespace which is context of id
* @param string $id relative id
* @param bool $clean flag indicating that id should be cleaned
* @return mixed|string
* @return string
*/
function resolve_id($ns,$id,$clean=true){
global $conf;
@ -718,6 +719,7 @@ function utf8_decodeFN($file){
* Used for sidebars, but can be used other stuff as well
*
* @todo add event hook
*
* @param string $page the pagename you're looking for
* @return string|false the full page id of the found page, false if any
*/

View file

@ -711,6 +711,9 @@ class Doku_Handler_CallWriter {
var $Handler;
/**
* @param Doku_Handler $Handler
*/
function Doku_Handler_CallWriter(& $Handler) {
$this->Handler = & $Handler;
}
@ -747,7 +750,7 @@ class Doku_Handler_Nest {
/**
* constructor
*
* @param object $CallWriter the renderers current call writer
* @param Doku_Handler_CallWriter $CallWriter the renderers current call writer
* @param string $close closing instruction name, this is required to properly terminate the
* syntax mode if the document ends without a closing pattern
*/

View file

@ -190,7 +190,7 @@ class Doku_Renderer extends DokuWiki_Plugin {
/**
* Render plain text data
*
* @param $text
* @param string $text
*/
function cdata($text) {
}
@ -759,6 +759,9 @@ class Doku_Renderer extends DokuWiki_Plugin {
* casing and special chars
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $name
* @return string
*/
function _simpleTitle($name) {
global $conf;
@ -778,6 +781,11 @@ class Doku_Renderer extends DokuWiki_Plugin {
/**
* Resolve an interwikilink
*
* @param string $shortcut identifier for the interwiki link
* @param string $reference fragment that refers the content
* @param null|bool $exists reference which returns if an internal page exists
* @return string interwikilink
*/
function _resolveInterWiki(&$shortcut, $reference, &$exists = null) {
//get interwiki URL

View file

@ -58,10 +58,11 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
/**
* Register a new edit section range
*
* @param $type string The section type identifier
* @param $title string The section title
* @param $start int The byte position for the edit start
* @return string A marker class for the starting HTML element
* @param string $type The section type identifier
* @param string $title The section title
* @param int $start The byte position for the edit start
* @return string A marker class for the starting HTML element
*
* @author Adrian Lang <lang@cosmocode.de>
*/
public function startSectionEdit($start, $type, $title = null) {
@ -72,8 +73,8 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
/**
* Finish an edit section range
*
* @param $end int The byte position for the edit end; null for the rest of
* the page
* @param int $end The byte position for the edit end; null for the rest of the page
*
* @author Adrian Lang <lang@cosmocode.de>
*/
public function finishSectionEdit($end = null) {

View file

@ -55,6 +55,11 @@ define('METADATA_RENDER_UNLIMITED', 4);
* wasn't found
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $id page id
* @param string|int $rev revision timestamp or empty string
* @param bool $excuse
* @return null|string
*/
function p_wiki_xhtml($id, $rev='', $excuse=true){
$file = wikiFN($id,$rev);
@ -89,6 +94,9 @@ function p_wiki_xhtml($id, $rev='', $excuse=true){
* Returns the specified local text in parsed format
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $id page id
* @return null|string
*/
function p_locale_xhtml($id){
//fetch parsed locale
@ -101,6 +109,11 @@ function p_locale_xhtml($id){
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Chris Smith <chris@jalakai.co.uk>
*
* @param string $file filename, path to file
* @param string $format
* @param string $id page id
* @return null|string
*/
function p_cached_output($file, $format='xhtml', $id='') {
global $conf;
@ -129,6 +142,11 @@ function p_cached_output($file, $format='xhtml', $id='') {
* Uses and creates a serialized cache file
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $file filename, path to file
* @param bool $cacheonly
* @param string $id page id
* @return array|null
*/
function p_cached_instructions($file,$cacheonly=false,$id='') {
static $run = null;
@ -157,7 +175,8 @@ function p_cached_instructions($file,$cacheonly=false,$id='') {
*
* @author Harry Fuecks <hfuecks@gmail.com>
* @author Andreas Gohr <andi@splitbrain.org>
* @param string $text raw wiki syntax text
*
* @param string $text raw wiki syntax text
* @return array a list of instruction arrays
*/
function p_get_instructions($text){
@ -185,9 +204,9 @@ function p_get_instructions($text){
/**
* returns the metadata of a page
*
* @param string $id The id of the page the metadata should be returned from
* @param string $key The key of the metdata value that shall be read (by default everything) - separate hierarchies by " " like "date created"
* @param int $render If the page should be rendererd - possible values:
* @param string $id The id of the page the metadata should be returned from
* @param string $key The key of the metdata value that shall be read (by default everything) - separate hierarchies by " " like "date created"
* @param int $render If the page should be rendererd - possible values:
* METADATA_DONT_RENDER, METADATA_RENDER_USING_SIMPLE_CACHE, METADATA_RENDER_USING_CACHE
* METADATA_RENDER_UNLIMITED (also combined with the previous two options),
* default: METADATA_RENDER_USING_CACHE
@ -360,6 +379,9 @@ function p_set_metadata($id, $data, $render=false, $persistent=true){
* used on page deletion
*
* @author Michael Klier <chi@chimeric.de>
*
* @param string $id page id
* @return bool success / fail
*/
function p_purge_metadata($id) {
$meta = p_read_metadata($id);
@ -423,6 +445,10 @@ function p_save_metadata($id, $meta) {
* renders the metadata of a page
*
* @author Esther Brunner <esther@kaffeehaus.ch>
*
* @param string $id page id
* @param array $orig the original metadata
* @return array|null array('current'=> array,'persistent'=> array);
*/
function p_render_metadata($id, $orig){
// make sure the correct ID is in global ID
@ -477,6 +503,8 @@ function p_render_metadata($id, $orig){
* returns all available parser syntax modes in correct order
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @return array[] with for each plugin the array('sort' => sortnumber, 'mode' => mode string, 'obj' => plugin object)
*/
function p_get_parsermodes(){
global $conf;
@ -569,6 +597,10 @@ function p_get_parsermodes(){
* Callback function for usort
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param array $a
* @param array $b
* @return int $a is lower/equal/higher than $b
*/
function p_sort_modes($a, $b){
if($a['sort'] == $b['sort']) return 0;
@ -582,6 +614,11 @@ function p_sort_modes($a, $b){
*
* @author Harry Fuecks <hfuecks@gmail.com>
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $mode
* @param array $instructions
* @param array $info returns render info like enabled toc and cache
* @return null|string rendered output
*/
function p_render($mode,$instructions,&$info){
if(is_null($instructions)) return '';
@ -673,8 +710,8 @@ function p_get_renderer($mode) {
* METADATA_RENDER_USING_SIMPLE_CACHE,
* METADATA_RENDER_USING_CACHE,
* METADATA_RENDER_UNLIMITED
*
* @return string|null The first heading
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Michael Hamann <michael@content-space.de>
*/
@ -688,8 +725,8 @@ function p_get_first_heading($id, $render=METADATA_RENDER_USING_SIMPLE_CACHE){
* @param string $code source code to be highlighted
* @param string $language language to provide highlighting
* @param string $wrapper html element to wrap the returned highlighted text
*
* @return string xhtml code
*
* @author Christopher Smith <chris@jalakai.co.uk>
* @author Andreas Gohr <andi@splitbrain.org>
*/

View file

@ -48,14 +48,25 @@ class DokuWiki_Plugin {
// plugin introspection methods
// extract from class name, format = <plugin type>_plugin_<name>[_<component name>]
/**
* @return string plugin type
*/
function getPluginType() {
list($t) = explode('_', get_class($this), 2);
return $t;
}
/**
* @return string plugin name
*/
function getPluginName() {
list($t, $p, $n) = explode('_', get_class($this), 4);
return $n;
}
/**
* @return string component name
*/
function getPluginComponent() {
list($t, $p, $n, $c) = explode('_', get_class($this), 4);
return (isset($c)?$c:'');
@ -91,9 +102,11 @@ class DokuWiki_Plugin {
}
/**
* localFN($id)
* prepends appropriate path for a language dependent filename
* Prepends appropriate path for a language dependent filename
* plugin equivalent of localFN()
*
* @param string $id id of localization file
* @return string wiki text
*/
function localFN($id) {
global $conf;
@ -110,9 +123,8 @@ class DokuWiki_Plugin {
}
/**
* setupLocale()
* reads all the plugins language dependent strings into $this->lang
* this function is automatically called by getLang()
* Reads all the plugins language dependent strings into $this->lang
* this function is automatically called by getLang()
*/
function setupLocale() {
if ($this->localised) return;
@ -196,8 +208,7 @@ class DokuWiki_Plugin {
*
* @param string $name name of plugin to load
* @param bool $msg if a message should be displayed in case the plugin is not available
*
* @return object helper plugin object
* @return DokuWiki_Plugin|null helper plugin object
*/
function loadHelper($name, $msg = true){
$obj = plugin_load('helper',$name);
@ -211,6 +222,12 @@ class DokuWiki_Plugin {
/**
* email
* standardised function to generate an email link according to obfuscation settings
*
* @param string $email
* @param string $name
* @param string $class
* @param string $more
* @return string html
*/
function email($email, $name='', $class='', $more='') {
if (!$email) return $name;
@ -223,6 +240,13 @@ class DokuWiki_Plugin {
/**
* external_link
* standardised function to generate an external link according to conf settings
*
* @param string $link
* @param string $title
* @param string $class
* @param string $target
* @param string $more
* @return string
*/
function external_link($link, $title='', $class='', $target='', $more='') {
global $conf;
@ -247,8 +271,9 @@ class DokuWiki_Plugin {
* Instead use render_text()
*
* @deprecated 2014-01-22
* @param $name
* @param $arguments
*
* @param string $name
* @param array $arguments
* @return null|string
*/
function __call($name, $arguments) {
@ -265,7 +290,7 @@ class DokuWiki_Plugin {
* output text string through the parser, allows dokuwiki markup to be used
* very ineffecient for small pieces of data - try not to use
*
* @param string $text wiki markup to parse
* @param string $text wiki markup to parse
* @param string $format output format
* @return null|string
*/

View file

@ -114,7 +114,7 @@ class Doku_Plugin_Controller {
* Whether plugin is disabled
*
* @param string $plugin name of plugin
* @return bool; true disabled, false enabled
* @return bool true disabled, false enabled
*/
public function isdisabled($plugin) {
return empty($this->tmp_plugins[$plugin]);
@ -124,7 +124,7 @@ class Doku_Plugin_Controller {
* Disable the plugin
*
* @param string $plugin name of plugin
* @return bool; true saving succeed, false saving failed
* @return bool true saving succeed, false saving failed
*/
public function disable($plugin) {
if(array_key_exists($plugin,$this->plugin_cascade['protected'])) return false;
@ -136,7 +136,7 @@ class Doku_Plugin_Controller {
* Enable the plugin
*
* @param string $plugin name of plugin
* @return bool; true saving succeed, false saving failed
* @return bool true saving succeed, false saving failed
*/
public function enable($plugin) {
if(array_key_exists($plugin,$this->plugin_cascade['protected'])) return false;
@ -227,7 +227,7 @@ class Doku_Plugin_Controller {
* @param bool $forceSave;
* false to save only when config changed
* true to always save
* @return bool; true saving succeed, false saving failed
* @return bool true saving succeed, false saving failed
*/
protected function saveList($forceSave = false) {
global $conf;
@ -300,12 +300,9 @@ class Doku_Plugin_Controller {
/**
* Returns a list of available plugin components of given type
*
* @param string $type, plugin_type name;
* the type of plugin to return,
* @param bool $enabled;
* true to return enabled plugins,
* false to return disabled plugins
*
* @param string $type plugin_type name; the type of plugin to return,
* @param bool $enabled true to return enabled plugins,
* false to return disabled plugins
* @return array of plugin components of requested type
*/
protected function _getListByType($type, $enabled) {

View file

@ -60,6 +60,9 @@ class RemoteAPI {
private $dateTransformation;
private $fileTransformation;
/**
* constructor
*/
public function __construct() {
$this->dateTransformation = array($this, 'dummyTransformation');
$this->fileTransformation = array($this, 'dummyTransformation');
@ -75,7 +78,7 @@ class RemoteAPI {
}
/**
* call a method via remote api.
* Call a method via remote api.
*
* @param string $method name of the method to call.
* @param array $args arguments to pass to the given method
@ -95,11 +98,25 @@ class RemoteAPI {
return $this->callCustomCallPlugin($method, $args);
}
/**
* Check existance of core methods
*
* @param string $name name of the method
* @return bool if method exists
*/
private function coreMethodExist($name) {
$coreMethods = $this->getCoreMethods();
return array_key_exists($name, $coreMethods);
}
/**
* Try to call custom methods provided by plugins
*
* @param string $method name of method
* @param array $args
* @return mixed
* @throws RemoteException if method not exists
*/
private function callCustomCallPlugin($method, $args) {
$customCalls = $this->getCustomCallPlugins();
if (!array_key_exists($method, $customCalls)) {
@ -109,6 +126,12 @@ class RemoteAPI {
return $this->callPlugin($customCall[0], $customCall[1], $args);
}
/**
* Returns plugin calls that are registered via RPC_CALL_ADD action
*
* @return array with pairs of custom plugin calls
* @triggers RPC_CALL_ADD
*/
private function getCustomCallPlugins() {
if ($this->pluginCustomCalls === null) {
$data = array();
@ -118,6 +141,15 @@ class RemoteAPI {
return $this->pluginCustomCalls;
}
/**
* Call a plugin method
*
* @param string $pluginName
* @param string $method method name
* @param array $args
* @return mixed return of custom method
* @throws RemoteException
*/
private function callPlugin($pluginName, $method, $args) {
$plugin = plugin_load('remote', $pluginName);
$methods = $this->getPluginMethods();
@ -129,6 +161,14 @@ class RemoteAPI {
return call_user_func_array(array($plugin, $name), $args);
}
/**
* Call a core method
*
* @param string $method name of method
* @param array $args
* @return mixed
* @throws RemoteException if method not exist
*/
private function callCoreMethod($method, $args) {
$coreMethods = $this->getCoreMethods();
$this->checkAccess($coreMethods[$method]);
@ -139,6 +179,11 @@ class RemoteAPI {
return call_user_func_array(array($this->coreMethods, $this->getMethodName($coreMethods, $method)), $args);
}
/**
* Check if access should be checked
*
* @param array $methodMeta data about the method
*/
private function checkAccess($methodMeta) {
if (!isset($methodMeta['public'])) {
$this->forceAccess();
@ -149,12 +194,26 @@ class RemoteAPI {
}
}
private function checkArgumentLength($method, $args) {
if (count($method['args']) < count($args)) {
/**
* Check the number of parameters
*
* @param array $methodMeta data about the method
* @param array $args
* @throws RemoteException if wrong parameter count
*/
private function checkArgumentLength($methodMeta, $args) {
if (count($methodMeta['args']) < count($args)) {
throw new RemoteException('Method does not exist - wrong parameter count.', -32603);
}
}
/**
* Determine the name of the real method
*
* @param array $methodMeta list of data of the methods
* @param string $method name of method
* @return string
*/
private function getMethodName($methodMeta, $method) {
if (isset($methodMeta[$method]['name'])) {
return $methodMeta[$method]['name'];
@ -164,6 +223,8 @@ class RemoteAPI {
}
/**
* Perform access check for current user
*
* @return bool true if the current user has access to remote api.
*/
public function hasAccess() {
@ -186,8 +247,10 @@ class RemoteAPI {
}
/**
* @throws RemoteException On denied access.
* Requests access
*
* @return void
* @throws RemoteException On denied access.
*/
public function forceAccess() {
if (!$this->hasAccess()) {
@ -196,7 +259,10 @@ class RemoteAPI {
}
/**
* Collects all the methods of the enabled Remote Plugins
*
* @return array all plugin methods.
* @throws RemoteException if not implemented
*/
public function getPluginMethods() {
if ($this->pluginMethods === null) {
@ -204,6 +270,7 @@ class RemoteAPI {
$plugins = plugin_list('remote');
foreach ($plugins as $pluginName) {
/** @var DokuWiki_Remote_Plugin $plugin */
$plugin = plugin_load('remote', $pluginName);
if (!is_subclass_of($plugin, 'DokuWiki_Remote_Plugin')) {
throw new RemoteException("Plugin $pluginName does not implement DokuWiki_Remote_Plugin");
@ -219,6 +286,8 @@ class RemoteAPI {
}
/**
* Collects all the core methods
*
* @param RemoteAPICore $apiCore this parameter is used for testing. Here you can pass a non-default RemoteAPICore
* instance. (for mocking)
* @return array all core methods.
@ -234,22 +303,50 @@ class RemoteAPI {
return $this->coreMethods->__getRemoteInfo();
}
/**
* Transform file to xml
*
* @param mixed $data
* @return mixed
*/
public function toFile($data) {
return call_user_func($this->fileTransformation, $data);
}
/**
* Transform date to xml
*
* @param mixed $data
* @return mixed
*/
public function toDate($data) {
return call_user_func($this->dateTransformation, $data);
}
/**
* A simple transformation
*
* @param mixed $data
* @return mixed
*/
public function dummyTransformation($data) {
return $data;
}
/**
* Set the transformer function
*
* @param callback $dateTransformation
*/
public function setDateTransformation($dateTransformation) {
$this->dateTransformation = $dateTransformation;
}
/**
* Set the transformer function
*
* @param callback $fileTransformation
*/
public function setFileTransformation($fileTransformation) {
$this->fileTransformation = $fileTransformation;
}

View file

@ -134,6 +134,11 @@ function search_namespaces(&$data,$base,$file,$type,$lvl,$opts){
/**
* List all mediafiles in a namespace
* $opts['depth'] recursion level, 0 for all
* $opts['showmsg'] shows message if invalid media id is used
* $opts['skipacl'] skip acl checking
* $opts['pattern'] check given pattern
* $opts['hash'] add hashes to result list
*
* @author Andreas Gohr <andi@splitbrain.org>
*/

View file

@ -444,11 +444,11 @@ class Subscription {
* Send the diff for some media change
*
* @fixme this should embed thumbnails of images in HTML version
*
* @param string $subscriber_mail The target mail address
* @param string $template Mail template ('uploadmail', ...)
* @param string $id Media file for which the notification is
* @param int|bool $rev Old revision if any
* @return bool true if successfully sent
*/
public function send_media_diff($subscriber_mail, $template, $id, $rev = false) {
global $conf;
@ -619,6 +619,7 @@ class Subscription {
/**
* Get a valid message id for a certain $id and revision (or the current revision)
*
* @param string $id The id of the page (or media file) the message id should be for
* @param string $rev The revision of the page, set to the current revision of the page $id if not set
* @return string

View file

@ -68,6 +68,7 @@ function tpl_basedir($tpl='') {
* handled by this function. ACL stuff is not done here either.
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @triggers TPL_ACT_RENDER
* @triggers TPL_CONTENT_DISPLAY
* @param bool $prependTOC should the TOC be displayed here?
@ -186,6 +187,7 @@ function tpl_content_core() {
* a false argument
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param bool $return Should the TOC be returned instead to be printed?
* @return string
*/
@ -243,6 +245,8 @@ function tpl_toc($return = false) {
* Handle the admin page contents
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @return bool
*/
function tpl_admin() {
global $INFO;
@ -277,6 +281,7 @@ function tpl_admin() {
* This has to go into the head section of your template.
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @triggers TPL_METAHEADER_OUTPUT
* @param bool $alt Should feeds and alternative format links be added?
* @return bool
@ -426,10 +431,12 @@ function tpl_metaheaders($alt = true) {
* instances. Attributes are given as key value pairs. Values will be HTML
* encoded automatically so they should be provided as is in the $data array.
*
* For tags having a body attribute specify the the body data in the special
* For tags having a body attribute specify the body data in the special
* attribute '_data'. This field will NOT BE ESCAPED automatically.
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param array $data
*/
function _tpl_metaheaders_action($data) {
foreach($data as $tag => $inst) {
@ -456,6 +463,12 @@ function _tpl_metaheaders_action($data) {
* Just builds a link.
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $url
* @param string $name
* @param string $more
* @param bool $return return html
* @return bool|string html or true
*/
function tpl_link($url, $name, $more = '', $return = false) {
$out = '<a href="'.$url.'" ';
@ -472,6 +485,10 @@ function tpl_link($url, $name, $more = '', $return = false) {
* Wrapper around html_wikilink
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $id page id
* @param string|null $name the name of the link
* @return bool
*/
function tpl_pagelink($id, $name = null) {
print '<bdi>'.html_wikilink($id, $name).'</bdi>';
@ -485,6 +502,9 @@ function tpl_pagelink($id, $name = null) {
* returns false if none is available
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $id page id
* @return false|string
*/
function tpl_getparent($id) {
$parent = getNS($id).':';
@ -539,7 +559,7 @@ function tpl_button($type, $return = false) {
* @author Adrian Lang <mail@adrianlang.de>
* @see tpl_get_action
*
* @param string $type
* @param string $type action command
* @param string $pre prefix of link
* @param string $suf suffix of link
* @param string $inner innerHML of link
@ -767,7 +787,8 @@ function tpl_get_action($type) {
* Wrapper around tpl_button() and tpl_actionlink()
*
* @author Anika Henke <anika@selfthinker.org>
* @param
*
* @param string $type action command
* @param bool $link link or form button?
* @param string|bool $wrapper HTML element wrapper
* @param bool $return return or print
@ -801,6 +822,7 @@ function tpl_action($type, $link = false, $wrapper = false, $return = false, $pr
* autocompletion feature (MSIE and Firefox)
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param bool $ajax
* @param bool $autocomplete
* @return bool
@ -829,6 +851,7 @@ function tpl_searchform($ajax = true, $autocomplete = true) {
* Print the breadcrumbs trace
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $sep Separator between entries
* @return bool
*/
@ -870,6 +893,7 @@ function tpl_breadcrumbs($sep = '•') {
* @author Sean Coates <sean@caedmon.net>
* @author <fredrik@averpil.com>
* @todo May behave strangely in RTL languages
*
* @param string $sep Separator between entries
* @return bool
*/
@ -920,6 +944,7 @@ function tpl_youarehere($sep = ' » ') {
* Could be enhanced with a profile link in future?
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @return bool
*/
function tpl_userinfo() {
@ -938,6 +963,7 @@ function tpl_userinfo() {
* Print some info about the current page
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param bool $ret return content instead of printing it
* @return bool|string
*/
@ -1001,6 +1027,7 @@ function tpl_pageinfo($ret = false) {
* the given ID is used.
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $id page id
* @param bool $ret return content instead of printing
* @return bool|string
@ -1038,6 +1065,7 @@ function tpl_pagetitle($id = null, $ret = false) {
* Only allowed in: detail.php
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param array $tags tags to try
* @param string $alt alternative output if no data was found
* @param null|string $src the image src, uses global $SRC if not given
@ -1128,7 +1156,7 @@ function tpl_get_img_meta() {
* @param $maxheight int - maximal height of the image
* @param $link bool - link to the orginal size?
* @param $params array - additional image attributes
* @return mixed Result of TPL_IMG_DISPLAY
* @return bool Result of TPL_IMG_DISPLAY
*/
function tpl_img($maxwidth = 0, $maxheight = 0, $link = true, $params = null) {
global $IMG;
@ -1280,6 +1308,9 @@ function tpl_loadConfig() {
* tpl_getLang($id)
*
* use this function to access template language variables
*
* @param string $id key of language string
* @return string
*/
function tpl_getLang($id) {
static $lang = array();
@ -1311,6 +1342,9 @@ function tpl_locale_xhtml($id) {
/**
* Prepends appropriate path for a language dependent filename
*
* @param string $id id of localized text
* @return string wiki text
*/
function tpl_localeFN($id) {
$path = tpl_incdir().'lang/';
@ -1337,6 +1371,8 @@ function tpl_localeFN($id) {
*
* @triggers MEDIAMANAGER_CONTENT_OUTPUT
* @param bool $fromajax - set true when calling this function via ajax
* @param string $sort
* @author Andreas Gohr <andi@splitbrain.org>
*/
function tpl_mediaContent($fromajax = false, $sort='natural') {
@ -1511,6 +1547,9 @@ function tpl_mediaTree() {
* Note: this will not use any pretty URLs
*
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $empty empty option label
* @param string $button submit button label
*/
function tpl_actiondropdown($empty = '', $button = '&gt;') {
global $ID;
@ -1737,10 +1776,11 @@ function tpl_flush() {
* If a given location starts with a colon it is assumed to be a media
* file, otherwise it is assumed to be relative to the current template
*
* @param array $search locations to look at
* @param bool $abs if to use absolute URL
* @param array &$imginfo filled with getimagesize()
* @param string[] $search locations to look at
* @param bool $abs if to use absolute URL
* @param array &$imginfo filled with getimagesize()
* @return string
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
function tpl_getMediaFile($search, $abs = false, &$imginfo = null) {
@ -1791,6 +1831,8 @@ function tpl_getMediaFile($search, $abs = false, &$imginfo = null) {
*
* @author Anika Henke <anika@selfthinker.org>
* @author Andreas Gohr <andi@splitbrain.org>
*
* @param string $file
*/
function tpl_includeFile($file) {
global $config_cascade;
@ -1816,6 +1858,7 @@ function tpl_includeFile($file) {
* Returns <link> tag for various icon types (favicon|mobile|generic)
*
* @author Anika Henke <anika@selfthinker.org>
*
* @param array $types - list of icon types to display (favicon|mobile|generic)
* @return string
*/
@ -1891,6 +1934,8 @@ function tpl_media() {
* Return useful layout classes
*
* @author Anika Henke <anika@selfthinker.org>
*
* @return string
*/
function tpl_classes() {
global $ACT, $conf, $ID, $INFO;

View file

@ -40,10 +40,18 @@ class dokuwiki_xmlrpc_server extends IXR_Server {
}
}
/**
* @param string|int $data iso date(yyyy[-]mm[-]dd[ hh:mm[:ss]]) or timestamp
* @return IXR_Date
*/
function toDate($data) {
return new IXR_Date($data);
}
/**
* @param string $data
* @return IXR_Base64
*/
function toFile($data) {
return new IXR_Base64($data);
}

View file

@ -1,7 +1,16 @@
<?php
/**
* Class remote_plugin_acl
*/
class remote_plugin_acl extends DokuWiki_Remote_Plugin {
function _getMethods() {
/**
* Returns details about the remote plugin methods
*
* @return array
*/
public function _getMethods() {
return array(
'addAcl' => array(
'args' => array('string','string','int'),
@ -17,13 +26,28 @@ class remote_plugin_acl extends DokuWiki_Remote_Plugin {
);
}
function addAcl($scope, $user, $level){
/**
* Add a new entry to ACL config
*
* @param string $scope
* @param string $user
* @param int $level see also inc/auth.php
* @return bool
*/
public function addAcl($scope, $user, $level){
/** @var admin_plugin_acl $apa */
$apa = plugin_load('admin', 'acl');
return $apa->_acl_add($scope, $user, $level);
}
function delAcl($scope, $user){
/**
* Remove an entry from ACL config
*
* @param string $scope
* @param string $user
* @return bool
*/
public function delAcl($scope, $user){
/** @var admin_plugin_acl $apa */
$apa = plugin_load('admin', 'acl');
return $apa->_acl_del($scope, $user);