Improve HTTP accepts handling & update docs

This commit is contained in:
Starbeamrainbowlabs 2018-03-27 16:59:11 +01:00
parent f6057b14b9
commit 5af29c133f
Signed by: sbrl
GPG Key ID: 1BE5172E637709C2
62 changed files with 282 additions and 246 deletions

View File

@ -18,6 +18,7 @@ This file holds the changelog for Pepperminty Wiki. This is the master list of t
- Fixed that age-old warning in the search results if you have pages with special characters! I learnt a _lot_ about utf8 whilst fixing this one.... (#114) - Fixed that age-old warning in the search results if you have pages with special characters! I learnt a _lot_ about utf8 whilst fixing this one.... (#114)
- You'll need to rebuild your search index for this fix to fully take effect (call the `invindex-rebuild` action as a mod or better) - You'll need to rebuild your search index for this fix to fully take effect (call the `invindex-rebuild` action as a mod or better)
- Normalise utf8 text to avoid duplicate ids and missing search results. - Normalise utf8 text to avoid duplicate ids and missing search results.
- Improved handling of mime types in some places in the API.
### Changed ### Changed
- Disallow uploads if editing is disabled. Previously files could still be uploaded even if editing was disabled - unless `upload_enabled` was set to `false`. - Disallow uploads if editing is disabled. Previously files could still be uploaded even if editing was disabled - unless `upload_enabled` was set to `false`.

View File

@ -946,9 +946,14 @@ function system_extension_mime_type($ext) {
*/ */
function accept_contains_mime($accept_header, $mime_type) function accept_contains_mime($accept_header, $mime_type)
{ {
$target_mime = explode("/", $mime_type);
$accepted_mimes = explode(",", $accept_header); $accepted_mimes = explode(",", $accept_header);
foreach($accepted_mimes as $accepted_mime) { foreach($accepted_mimes as $accepted_mime) {
if(explode(";", $accepted_mime)[0] == $mime_type) $next_mime = explode("/", explode(";", $accepted_mime)[0]);
if($next_mime == $mime_type || ($next_mime[0] == "*" && $next_mime[1] == "*"))
return true;
if($next_mime[1] == "*" && $next_mime[0] == $mime_type[0])
return true; return true;
} }
return false; return false;
@ -2363,12 +2368,11 @@ register_module([
"code" => function() { "code" => function() {
global $settings; global $settings;
/** /**
* @api {get} ?action=raw&page={pageName} Get the raw source code of a page * @api {get} ?action=status Get the json-formatted status of this wiki
* @apiName RawSource * @apiName Status
* @apiGroup Page * @apiGroup Stats
* @apiPermission Anonymous * @apiPermission Anonymous
* *
* @apiParam {string} page The page to return the source of.
*/ */

View File

@ -569,9 +569,14 @@ function system_extension_mime_type($ext) {
*/ */
function accept_contains_mime($accept_header, $mime_type) function accept_contains_mime($accept_header, $mime_type)
{ {
$target_mime = explode("/", $mime_type);
$accepted_mimes = explode(",", $accept_header); $accepted_mimes = explode(",", $accept_header);
foreach($accepted_mimes as $accepted_mime) { foreach($accepted_mimes as $accepted_mime) {
if(explode(";", $accepted_mime)[0] == $mime_type) $next_mime = explode("/", explode(";", $accepted_mime)[0]);
if($next_mime == $mime_type || ($next_mime[0] == "*" && $next_mime[1] == "*"))
return true;
if($next_mime[1] == "*" && $next_mime[0] == $mime_type[0])
return true; return true;
} }
return false; return false;

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1107965876"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-425711529"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1107965876" class="accordion-body collapse in"> <div id="namespace-425711529" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -365,7 +365,7 @@ with a URL encoded version of the page name.</em></p>
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1672493508"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1186031156"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1672493508" class="accordion-body collapse in"> <div id="namespace-1186031156" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -414,7 +414,7 @@ Added image support</p>
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1802082726"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-540145657"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1802082726" class="accordion-body collapse in"> <div id="namespace-540145657" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -368,7 +368,7 @@ that the destination name doesn't already exist.</p>
<tr> <tr>
<td>string</td> <td>string</td>
<td>$newpagename </td> <td>$newpagename </td>
<td><p>The new pagee name to move the old page name to.</p></td> <td><p>The new page name to move the old page name to.</p></td>
</tr> </tr>
</table> </table>
@ -525,7 +525,7 @@ index.</p>
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1859412471"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1518551345"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1859412471" class="accordion-body collapse in"> <div id="namespace-1518551345" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -943,7 +943,7 @@ navigation bar.</p></td>
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1845438421"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1584606938"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1845438421" class="accordion-body collapse in"> <div id="namespace-1584606938" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -919,7 +919,7 @@ in a list of search results.</em></p>
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-244214847"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1501432742"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-244214847" class="accordion-body collapse in"> <div id="namespace-1501432742" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -2487,7 +2487,7 @@ an edit is saved.</em></p>
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -125,8 +125,11 @@ if($env->is_logged_in)
// APIDoc strings // // APIDoc strings //
//////////////////// ////////////////////
/** /**
* @apiDefine Moderator Only users loggged with a moderator account may use this call. * @apiDefine Admin Only the wiki administrator may use this call.
*/ */
/**
* @apiDefine Moderator Only users loggged with a moderator account may use this call.
*/
/** /**
* @apiDefine User Only users loggged in may use this call. * @apiDefine User Only users loggged in may use this call.
*/ */
@ -566,9 +569,14 @@ function system_extension_mime_type($ext) {
*/ */
function accept_contains_mime($accept_header, $mime_type) function accept_contains_mime($accept_header, $mime_type)
{ {
$target_mime = explode("/", $mime_type);
$accepted_mimes = explode(",", $accept_header); $accepted_mimes = explode(",", $accept_header);
foreach($accepted_mimes as $accepted_mime) { foreach($accepted_mimes as $accepted_mime) {
if(explode(";", $accepted_mime)[0] == $mime_type) $next_mime = explode("/", explode(";", $accepted_mime)[0]);
if($next_mime == $mime_type || ($next_mime[0] == "*" && $next_mime[1] == "*"))
return true;
if($next_mime[1] == "*" && $next_mime[0] == $mime_type[0])
return true; return true;
} }
return false; return false;
@ -810,19 +818,19 @@ if(!file_exists($paths->pageindex))
// Create a new entry // Create a new entry
$newentry = new stdClass(); $newentry = new stdClass();
$newentry->filename = utf8_encode(substr( // Store the filename, whilst trimming the storage prefix $newentry->filename = substr( // Store the filename, whilst trimming the storage prefix
$pagefilename, $pagefilename,
strlen(preg_replace("/^\.\//i", "", $env->storage_prefix)) // glob_recursive trim the ./ from returned filenames , so we need to as well mb_strlen(preg_replace("/^\.\//iu", "", $env->storage_prefix)) // glob_recursive trim the ./ from returned filenames , so we need to as well
)); );
// Remove the `./` from the beginning if it's still hanging around // Remove the `./` from the beginning if it's still hanging around
if(substr($newentry->filename, 0, 2) == "./") if(substr($newentry->filename, 0, 2) == "./")
$newentry->filename = substr($newentry->filename, 2); $newentry->filename = substr($newentry->filename, 2);
$newentry->size = filesize($pagefilename); // Store the page size $newentry->size = filesize($pagefilename); // Store the page size
$newentry->lastmodified = filemtime($pagefilename); // Store the date last modified $newentry->lastmodified = filemtime($pagefilename); // Store the date last modified
// Todo find a way to keep the last editor independent of the page index // Todo find a way to keep the last editor independent of the page index
$newentry->lasteditor = utf8_encode("unknown"); // Set the editor to "unknown" $newentry->lasteditor = "unknown"; // Set the editor to "unknown"
// Extract the name of the (sub)page without the ".md" // Extract the name of the (sub)page without the ".md"
$pagekey = utf8_encode(substr($newentry->filename, 0, -3)); $pagekey = mb_substr($newentry->filename, 0, -3);
if(file_exists($env->storage_prefix . $pagekey) && // If it exists... if(file_exists($env->storage_prefix . $pagekey) && // If it exists...
!is_dir($env->storage_prefix . $pagekey)) // ...and isn't a directory !is_dir($env->storage_prefix . $pagekey)) // ...and isn't a directory
@ -907,7 +915,7 @@ class ids
foreach ($idindex as $id => $entry) foreach ($idindex as $id => $entry)
{ {
if($entry == $pagename) if(Normalizer::normalize($entry, Normalizer::FORM_C) == Normalizer::normalize($pagename, Normalizer::FORM_C))
return $id; return $id;
} }
@ -939,14 +947,14 @@ class ids
* that the destination name doesn't already exist. * that the destination name doesn't already exist.
* @package core * @package core
* @param string $oldpagename The old page name to move. * @param string $oldpagename The old page name to move.
* @param string $newpagename The new pagee name to move the old page name to. * @param string $newpagename The new page name to move the old page name to.
*/ */
public static function movepagename($oldpagename, $newpagename) public static function movepagename($oldpagename, $newpagename)
{ {
global $idindex, $paths; global $idindex, $paths;
$pageid = self::getid($oldpagename); $pageid = self::getid(Normalizer::normalize($oldpagename, Normalizer::FORM_C));
$idindex->$pageid = $newpagename; $idindex->$pageid = Normalizer::normalize($newpagename, Normalizer::FORM_C);
file_put_contents($paths->idindex, json_encode($idindex)); file_put_contents($paths->idindex, json_encode($idindex));
} }
@ -1000,6 +1008,8 @@ class ids
protected static function assign($pagename) protected static function assign($pagename)
{ {
global $idindex, $paths; global $idindex, $paths;
$pagename = Normalizer::normalize($pagename, Normalizer::FORM_C);
$nextid = count(array_keys(get_object_vars($idindex))); $nextid = count(array_keys(get_object_vars($idindex)));
// Increment the generated id until it's unique // Increment the generated id until it's unique
@ -1007,7 +1017,7 @@ class ids
$nextid++; $nextid++;
// Update the id index // Update the id index
$idindex->$nextid = utf8_encode($pagename); $idindex->$nextid = $pagename;
// Save the id index // Save the id index
file_put_contents($paths->idindex, json_encode($idindex)); file_put_contents($paths->idindex, json_encode($idindex));

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1846985423"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-615219511"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1846985423" class="accordion-body collapse in"> <div id="namespace-615219511" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1568925422"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1937681687"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1568925422" class="accordion-body collapse in"> <div id="namespace-1937681687" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1075669396"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-826570683"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1075669396" class="accordion-body collapse in"> <div id="namespace-826570683" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1028100166"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1107660964"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1028100166" class="accordion-body collapse in"> <div id="namespace-1107660964" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-570644175"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-2076669498"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-570644175" class="accordion-body collapse in"> <div id="namespace-2076669498" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-438654213"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-875762809"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-438654213" class="accordion-body collapse in"> <div id="namespace-875762809" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-297484429"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-2022587188"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-297484429" class="accordion-body collapse in"> <div id="namespace-2022587188" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -298,7 +298,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1649409454"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-977356070"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1649409454" class="accordion-body collapse in"> <div id="namespace-977356070" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -544,7 +544,7 @@ at which the comments are being rendered.</p></td>
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1086690381"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1313301697"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1086690381" class="accordion-body collapse in"> <div id="namespace-1313301697" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1517549479"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1929473902"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1517549479" class="accordion-body collapse in"> <div id="namespace-1929473902" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -304,7 +304,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1214730968"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-131874565"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1214730968" class="accordion-body collapse in"> <div id="namespace-131874565" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -384,7 +384,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-461751090"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-775827532"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-461751090" class="accordion-body collapse in"> <div id="namespace-775827532" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1960358223"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1918430307"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1960358223" class="accordion-body collapse in"> <div id="namespace-1918430307" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -246,7 +246,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1934782792"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-251834310"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1934782792" class="accordion-body collapse in"> <div id="namespace-251834310" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -381,7 +381,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1594508827"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-417747000"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1594508827" class="accordion-body collapse in"> <div id="namespace-417747000" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -503,7 +503,7 @@ the image.</p></td>
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-124847631"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1707546201"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-124847631" class="accordion-body collapse in"> <div id="namespace-1707546201" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1806874526"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-25228693"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1806874526" class="accordion-body collapse in"> <div id="namespace-25228693" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1225415547"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-638372598"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1225415547" class="accordion-body collapse in"> <div id="namespace-638372598" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1051402007"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-373741980"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1051402007" class="accordion-body collapse in"> <div id="namespace-373741980" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1600661756"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-119593812"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1600661756" class="accordion-body collapse in"> <div id="namespace-119593812" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1814085800"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1306164280"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1814085800" class="accordion-body collapse in"> <div id="namespace-1306164280" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-630243056"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-423912745"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-630243056" class="accordion-body collapse in"> <div id="namespace-423912745" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1785272022"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1367647496"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1785272022" class="accordion-body collapse in"> <div id="namespace-1367647496" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -340,7 +340,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1205710674"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-453139013"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1205710674" class="accordion-body collapse in"> <div id="namespace-453139013" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -295,7 +295,7 @@ enabled, or sha256 otherwise.</p>
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1867778079"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1278657214"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1867778079" class="accordion-body collapse in"> <div id="namespace-1278657214" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-61663576"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-2027577659"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-61663576" class="accordion-body collapse in"> <div id="namespace-2027577659" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1968917468"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-857635256"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1968917468" class="accordion-body collapse in"> <div id="namespace-857635256" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-721554424"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1889324532"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-721554424" class="accordion-body collapse in"> <div id="namespace-1889324532" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-2076603952"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1486509053"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-2076603952" class="accordion-body collapse in"> <div id="namespace-1486509053" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-965621944"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1288297845"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-965621944" class="accordion-body collapse in"> <div id="namespace-1288297845" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -246,7 +246,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1079981442"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1876411094"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1079981442" class="accordion-body collapse in"> <div id="namespace-1876411094" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -246,7 +246,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -8,15 +8,19 @@ register_module([
"code" => function() { "code" => function() {
global $settings; global $settings;
/** /**
* @api {get} ?action=random Redirects to a random page. * @api {get} ?action=random[&mode={modeName}] Redirects to a random page
* @apiName RawSource * @apiName Random
* @apiGroup Page * @apiGroup Page
* @apiPermission Anonymous * @apiPermission Anonymous
*
* @apiParam {string} mode The view mode to redirect to. This parameter is basically just passed through to the direct. It works in the same way as the mode parameter on the view action does.
*/ */
add_action("random", function() { add_action("random", function() {
global $pageindex; global $pageindex;
$mode = preg_replace("/[^a-z-_]/i", "", $_GET["mode"] ?? "");
$pageNames = array_keys(get_object_vars($pageindex)); $pageNames = array_keys(get_object_vars($pageindex));
// Filter out pages we shouldn't send the user to // Filter out pages we shouldn't send the user to
@ -28,7 +32,9 @@ register_module([
$randomPageName = $pageNames[array_rand($pageNames)]; $randomPageName = $pageNames[array_rand($pageNames)];
http_response_code(307); http_response_code(307);
header("location: ?page=" . rawurlencode($randomPageName)); $redirect_url = "?page=" . rawurlencode($randomPageName);
if(!empty($mode)) $redirect_url .= "&mode=$mode";
header("location: $redirect_url");
}); });
add_help_section("26-random-redirect", "Jumping to a random page", "<p>$settings->sitename has a function that can send you to a random page. To use it, click <a href='?action=random'>here</a>. $settings->admindetails_name ($settings->sitename's adminstrator) may have added it to one of the menus.</p>"); add_help_section("26-random-redirect", "Jumping to a random page", "<p>$settings->sitename has a function that can send you to a random page. To use it, click <a href='?action=random'>here</a>. $settings->admindetails_name ($settings->sitename's adminstrator) may have added it to one of the menus.</p>");

View File

@ -8,12 +8,11 @@ register_module([
"code" => function() { "code" => function() {
global $settings; global $settings;
/** /**
* @api {get} ?action=raw&page={pageName} Get the raw source code of a page * @api {get} ?action=status Get the json-formatted status of this wiki
* @apiName RawSource * @apiName Status
* @apiGroup Page * @apiGroup Stats
* @apiPermission Anonymous * @apiPermission Anonymous
* *
* @apiParam {string} page The page to return the source of.
*/ */

View File

@ -244,12 +244,17 @@ function render_recent_change($rchange)
$result .= "<a href='?page=" . rawurlencode($rchange->page) . ($revisionId !== false ? "&revision=$revisionId" : "") . "'>$pageDisplayHtml</a> $editorDisplayHtml $timeDisplayHtml <span class='$size_display_class' title='$size_title_display'>($size_display)</span>"; $result .= "<a href='?page=" . rawurlencode($rchange->page) . ($revisionId !== false ? "&revision=$revisionId" : "") . "'>$pageDisplayHtml</a> $editorDisplayHtml $timeDisplayHtml <span class='$size_display_class' title='$size_title_display'>($size_display)</span>";
break; break;
case "deletion": case "deletion":
$resultClasses[] = "deletion"; $resultClasses[] = "deletion";
$result .= "$pageDisplayHtml $editorDisplayHtml $timeDisplayHtml"; $result .= "$pageDisplayHtml $editorDisplayHtml $timeDisplayHtml";
break; break;
case "move":
$resultClasses[] = "move";
$result .= "$rchange->oldpage &#11106; <a href='?page=" . rawurlencode($rchange->page) . "'>$pageDisplayHtml</a> $editorDisplayHtml $timeDisplayHtml";
break;
case "upload": case "upload":
$resultClasses[] = "upload"; $resultClasses[] = "upload";
$result .= "<a href='?page=$rchange->page'>$pageDisplayHtml</a> $editorDisplayHtml $timeDisplayHtml (" . human_filesize($rchange->filesize) . ")"; $result .= "<a href='?page=$rchange->page'>$pageDisplayHtml</a> $editorDisplayHtml $timeDisplayHtml (" . human_filesize($rchange->filesize) . ")";

View File

@ -1,7 +1,7 @@
<?php <?php
register_module([ register_module([
"name" => "Search", "name" => "Search",
"version" => "0.6.1", "version" => "0.6.2",
"author" => "Starbeamrainbowlabs", "author" => "Starbeamrainbowlabs",
"description" => "Adds proper search functionality to Pepperminty Wiki using an inverted index to provide a full text search engine. If pages don't show up, then you might have hit a stop word. If not, try requesting the `invindex-rebuild` action to rebuild the inverted index from scratch.", "description" => "Adds proper search functionality to Pepperminty Wiki using an inverted index to provide a full text search engine. If pages don't show up, then you might have hit a stop word. If not, try requesting the `invindex-rebuild` action to rebuild the inverted index from scratch.",
"id" => "feature-search", "id" => "feature-search",
@ -13,6 +13,7 @@ register_module([
* @apiName SearchIndex * @apiName SearchIndex
* @apiGroup Search * @apiGroup Search
* @apiPermission Anonymous * @apiPermission Anonymous
* @apiDescription For debugging purposes. Be warned - the format could change at any time!
* *
* @apiParam {string} page The page to generate a word index page. * @apiParam {string} page The page to generate a word index page.
*/ */
@ -83,7 +84,7 @@ register_module([
/** /**
* @api {get} ?action=idindex-show Show the id index * @api {get} ?action=idindex-show Show the id index
* @apiDescription Outputs the id index. Useful if you need to verify that it's working as expected. * @apiDescription Outputs the id index. Useful if you need to verify that it's working as expected. Output is a json object.
* @apiName SearchShowIdIndex * @apiName SearchShowIdIndex
* @apiGroup Search * @apiGroup Search
* @apiPermission Anonymous * @apiPermission Anonymous
@ -95,12 +96,13 @@ register_module([
}); });
/** /**
* @api {get} ?action=search&query={text} Search the wiki for a given query string * @api {get} ?action=search&query={text}[&format={format}] Search the wiki for a given query string
* @apiName Search * @apiName Search
* @apiGroup Search * @apiGroup Search
* @apiPermission Anonymous * @apiPermission Anonymous
* *
* @apiParam {string} query The query string to search for. * @apiParam {string} query The query string to search for.
* @apiParam {string} format Optional. Valid values: html, json. In json mode an object is returned with page names as keys, values as search result information - sorted in ranking order.
*/ */
/* /*
@ -126,6 +128,20 @@ register_module([
$invindex = search::load_invindex($paths->searchindex); $invindex = search::load_invindex($paths->searchindex);
$results = search::query_invindex($_GET["query"], $invindex); $results = search::query_invindex($_GET["query"], $invindex);
$resultCount = count($results); $resultCount = count($results);
foreach($results as &$result) {
$result["context"] = search::extract_context(
$_GET["query"],
file_get_contents($env->storage_prefix . $result["pagename"] . ".md")
);
}
if(!empty($_GET["format"]) && $_GET["format"] == "json") {
header("content-type: application/json");
$json_results = new stdClass();
foreach($results as $result) $json_results->{$result["pagename"]} = $result;
exit(json_encode($json_results));
}
$env->perfdata->search_time = round((microtime(true) - $search_start)*1000, 3); $env->perfdata->search_time = round((microtime(true) - $search_start)*1000, 3);
@ -193,11 +209,14 @@ register_module([
$pagesource = file_get_contents($env->storage_prefix . $result["pagename"] . ".md"); $pagesource = file_get_contents($env->storage_prefix . $result["pagename"] . ".md");
//echo("Extracting context for result " . $result["pagename"] . ".\n"); //echo("Extracting context for result " . $result["pagename"] . ".\n");
$context = search::extract_context($_GET["query"], $pagesource); $context = $result["context"];
if(strlen($context) === 0) if(mb_strlen($context) === 0)
$context = substr($pagesource, 0, $settings->search_characters_context * 2); $context = mb_substr($pagesource, 0, $settings->search_characters_context * 2);
//echo("'Generated search context for " . $result["pagename"] . ": $context'\n"); //echo("'Generated search context for " . $result["pagename"] . ": $context'\n");
$context = search::highlight_context($_GET["query"], htmlentities($context)); $context = search::highlight_context(
$_GET["query"],
preg_replace('/</u', '&lt;', $context)
);
/*if(strlen($context) == 0) /*if(strlen($context) == 0)
{ {
$context = search::strip_markup(file_get_contents("$env->page.md", null, null, null, $settings->search_characters_context * 2)); $context = search::strip_markup(file_get_contents("$env->page.md", null, null, null, $settings->search_characters_context * 2));
@ -319,7 +338,7 @@ register_module([
/** /**
* @api {get} ?action=suggest-pages[&type={type}] Get search suggestions for a query * @api {get} ?action=suggest-pages[&type={type}] Get page name suggestions for a query
* @apiName OpenSearchDescription * @apiName OpenSearchDescription
* @apiGroup Search * @apiGroup Search
* @apiPermission Anonymous * @apiPermission Anonymous
@ -493,7 +512,7 @@ class search
public static function index($source) public static function index($source)
{ {
$source = html_entity_decode($source, ENT_QUOTES); $source = html_entity_decode($source, ENT_QUOTES);
$source_length = strlen($source); $source_length = mb_strlen($source);
$index = []; $index = [];
@ -527,8 +546,8 @@ class search
*/ */
public static function tokenize($source) public static function tokenize($source)
{ {
$source = strtolower($source); $source = Normalizer::normalize(strtolower($source), Normalizer::FORM_C);
$source = str_replace([ '[', ']', '|', '{', '}', '/' ], " ", $source); $source = preg_replace('/[\[\]\|\{\}\/]/u', " ", $source);
return preg_split("/((^\p{P}+)|(\p{P}*\s+\p{P}*)|(\p{P}+$))|\|/u", $source, -1, PREG_SPLIT_NO_EMPTY); return preg_split("/((^\p{P}+)|(\p{P}*\s+\p{P}*)|(\p{P}+$))|\|/u", $source, -1, PREG_SPLIT_NO_EMPTY);
} }
@ -540,7 +559,7 @@ class search
*/ */
public static function strip_markup($source) public static function strip_markup($source)
{ {
return str_replace([ "[", "]", "\"", "*", "_", " - ", "`" ], "", $source); return preg_replace('/([\"*_\[\]]| - |`)/u', "", $source);
} }
/** /**
@ -567,12 +586,12 @@ class search
{ {
$page_filename = $env->storage_prefix . $pagedetails->filename; $page_filename = $env->storage_prefix . $pagedetails->filename;
if(!file_exists($page_filename)) { if(!file_exists($page_filename)) {
echo("data: [" . ($i + 1) . " / $max] Error: Can't find $page_filename"); echo("data: [" . ($i + 1) . " / $max] Error: Can't find $page_filename\n");
flush(); flush();
$missing_files++; $missing_files++;
continue; continue;
} }
$pagesource = utf8_encode(file_get_contents($page_filename)); $pagesource = Normalizer::normalize(file_get_contents($page_filename), Normalizer::FORM_C);
$index = self::index($pagesource); $index = self::index($pagesource);
$pageid = ids::getid($pagename); $pageid = ids::getid($pagename);
@ -883,7 +902,7 @@ class search
return ($a[1] > $b[1]) ? +1 : -1; return ($a[1] > $b[1]) ? +1 : -1;
}); });
$sourceLength = strlen($source); $sourceLength = mb_strlen($source);
$contexts = []; $contexts = [];
$basepos = 0; $basepos = 0;
@ -955,7 +974,8 @@ class search
if(in_array($qterm, static::$stop_words)) if(in_array($qterm, static::$stop_words))
continue; continue;
// From http://stackoverflow.com/a/2483859/1460422 // From http://stackoverflow.com/a/2483859/1460422
$context = preg_replace("/" . str_replace("/", "\/", preg_quote($qterm)) . "/i", "<strong class='search-term-highlight'>$0</strong>", $context);
$context = preg_replace("/" . preg_replace('/\\//u', "\/", preg_quote($qterm)) . "/iu", "<strong class='search-term-highlight'>$0</strong>", $context);
} }
return $context; return $context;

View File

@ -424,9 +424,9 @@ DIFFSCRIPT;
$pageindex->{$env->page}->size = strlen($_POST["content"]); $pageindex->{$env->page}->size = strlen($_POST["content"]);
$pageindex->{$env->page}->lastmodified = time(); $pageindex->{$env->page}->lastmodified = time();
if($env->is_logged_in) if($env->is_logged_in)
$pageindex->{$env->page}->lasteditor = utf8_encode($env->user); $pageindex->{$env->page}->lasteditor = $env->user;
else // TODO: Add an option to record the user's IP here instead else // TODO: Add an option to record the user's IP here instead
$pageindex->{$env->page}->lasteditor = utf8_encode("anonymous"); $pageindex->{$env->page}->lasteditor = "anonymous";
$pageindex->{$env->page}->tags = $page_tags; $pageindex->{$env->page}->tags = $page_tags;
// A hack to resave the pagedata if the preprocessors have // A hack to resave the pagedata if the preprocessors have

View File

@ -127,6 +127,19 @@ register_module([
); );
} }
// Add a recent change announcing the move if the recent changes
// module is installed
if(module_exists("feature-recent-changes"))
{
add_recent_change([
"type" => "move",
"timestamp" => time(),
"oldpage" => $page,
"page" => $new_name,
"user" => $env->user
]);
}
// Exit with a nice message // Exit with a nice message
exit(page_renderer::render_main("Moving " . htmlentities($env->page), "<p><a href='index.php?page=" . rawurlencode($env->page) . "'>" . htmlentities($env->page) . "</a> has been moved to <a href='index.php?page=" . rawurlencode($new_name) . "'>" . htmlentities($new_name) . "</a> successfully.</p>")); exit(page_renderer::render_main("Moving " . htmlentities($env->page), "<p><a href='index.php?page=" . rawurlencode($env->page) . "'>" . htmlentities($env->page) . "</a> has been moved to <a href='index.php?page=" . rawurlencode($new_name) . "'>" . htmlentities($new_name) . "</a> successfully.</p>"));
}); });

View File

@ -7,14 +7,14 @@ register_module([
"id" => "page-view", "id" => "page-view",
"code" => function() { "code" => function() {
/** /**
* @api {get} ?action=view[&page={pageName}][&revision=rid][&printable=yes] View a page * @api {get} ?action=view[&page={pageName}][&revision=rid][&printable=yes][&mode={mode}] View a page
* @apiName View * @apiName View
* @apiGroup Page * @apiGroup Page
* @apiPermission Anonymous * @apiPermission Anonymous
* *
* @apiUse PageParameter * @apiUse PageParameter
* @apiParam {number} revision The revision number to display. * @apiParam {number} revision The revision number to display.
* @apiParam {string} mode Optional. The display mode to use. Can hld the following values: 'normal' - The default. Sends a normal page. 'printable' - Sends a printable version of the page. 'contentonly' - Sends only the content of the page, not the extra stuff around it. 'parsedsourceonly' - Sends only the raw rendered source of the page, as it appears just after it has come out of the page parser. Useful for writing external tools (see also the `raw` action). * @apiParam {string} mode Optional. The display mode to use. Can hold the following values: 'normal' - The default. Sends a normal page. 'printable' - Sends a printable version of the page. 'contentonly' - Sends only the content of the page, not the extra stuff around it. 'parsedsourceonly' - Sends only the raw rendered source of the page, as it appears just after it has come out of the page parser. Useful for writing external tools (see also the `raw` action).
* *
* @apiError NonExistentPageError The page doesn't exist and editing is disabled in the wiki's settings. If editing isn't disabled, you will be redirected to the edit page instead. * @apiError NonExistentPageError The page doesn't exist and editing is disabled in the wiki's settings. If editing isn't disabled, you will be redirected to the edit page instead.
* @apiError NonExistentRevisionError The specified revision was not found. * @apiError NonExistentRevisionError The specified revision was not found.

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1979943815"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1037350861"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1979943815" class="accordion-body collapse in"> <div id="namespace-1037350861" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -136,10 +136,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-470325388"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1317610252"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-470325388" class="accordion-body collapse in"> <div id="namespace-1317610252" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -239,7 +239,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -152,7 +152,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -88,10 +88,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-427073806"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1616927494"></a>
<a href="namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-427073806" class="accordion-body collapse in"> <div id="namespace-1616927494" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -3515,7 +3515,7 @@ listed to be cacnonical.</em></p>
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -88,10 +88,10 @@
<div class="accordion" style="margin-bottom: 0"> <div class="accordion" style="margin-bottom: 0">
<div class="accordion-group"> <div class="accordion-group">
<div class="accordion-heading"> <div class="accordion-heading">
<a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1657348484"></a> <a class="accordion-toggle " data-toggle="collapse" data-target="#namespace-1392434946"></a>
<a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a> <a href="../namespaces/default.html" style="margin-left: 30px; padding-left: 0">\</a>
</div> </div>
<div id="namespace-1657348484" class="accordion-body collapse in"> <div id="namespace-1392434946" class="accordion-body collapse in">
<div class="accordion-inner"> <div class="accordion-inner">
@ -3515,7 +3515,7 @@ listed to be cacnonical.</em></p>
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -142,7 +142,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -1086,7 +1086,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -121,12 +121,12 @@
</tr> </tr>
<tr> <tr>
<td>TODO</td> <td>TODO</td>
<td>373</td> <td>376</td>
<td>Make this moree clevererer :D</td> <td>Make this moree clevererer :D</td>
</tr> </tr>
<tr> <tr>
<td>TODO</td> <td>TODO</td>
<td>644</td> <td>652</td>
<td>Identify which platforms don&#039;t have it and whether we still need this</td> <td>Identify which platforms don&#039;t have it and whether we still need this</td>
</tr> </tr>
</table> </table>
@ -214,7 +214,7 @@
</tr> </tr>
<tr> <tr>
<td>TODO</td> <td>TODO</td>
<td>636</td> <td>655</td>
<td>Remove this function and make everything streamable</td> <td>Remove this function and make everything streamable</td>
</tr> </tr>
</table> </table>
@ -260,7 +260,7 @@
<section class="span10 offset1"> <section class="span10 offset1">
<hr /> <hr />
Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor </a> and authored
on February 14th, 2018 at 22:17. on March 27th, 2018 at 15:57.
</section> </section>
</section> </section>
</section> </section>

View File

@ -644,36 +644,6 @@ define({ "api": [
"filename": "./modules/action-raw.php", "filename": "./modules/action-raw.php",
"groupTitle": "Page" "groupTitle": "Page"
}, },
{
"type": "get",
"url": "?action=raw&page={pageName}",
"title": "Get the raw source code of a page",
"name": "RawSource",
"group": "Page",
"permission": [
{
"name": "Anonymous",
"title": "Anybody may use this call.",
"description": ""
}
],
"parameter": {
"fields": {
"Parameter": [
{
"group": "Parameter",
"type": "string",
"optional": false,
"field": "page",
"description": "<p>The page to return the source of.</p>"
}
]
}
},
"version": "0.0.0",
"filename": "./modules/api-status.php",
"groupTitle": "Page"
},
{ {
"type": "get", "type": "get",
"url": "?action=view[&page={pageName}][&revision=rid][&printable=yes][&mode={mode}]", "url": "?action=view[&page={pageName}][&revision=rid][&printable=yes][&mode={mode}]",
@ -923,7 +893,7 @@ define({ "api": [
"type": "get", "type": "get",
"url": "?action=idindex-show", "url": "?action=idindex-show",
"title": "Show the id index", "title": "Show the id index",
"description": "<p>Outputs the id index. Useful if you need to verify that it's working as expected.</p>", "description": "<p>Outputs the id index. Useful if you need to verify that it's working as expected. Output is a json object.</p>",
"name": "SearchShowIdIndex", "name": "SearchShowIdIndex",
"group": "Search", "group": "Search",
"permission": [ "permission": [
@ -1044,6 +1014,23 @@ define({ "api": [
"filename": "./modules/feature-recent-changes.php", "filename": "./modules/feature-recent-changes.php",
"groupTitle": "Stats" "groupTitle": "Stats"
}, },
{
"type": "get",
"url": "?action=status",
"title": "Get the json-formatted status of this wiki",
"name": "Status",
"group": "Stats",
"permission": [
{
"name": "Anonymous",
"title": "Anybody may use this call.",
"description": ""
}
],
"version": "0.0.0",
"filename": "./modules/api-status.php",
"groupTitle": "Stats"
},
{ {
"type": "get", "type": "get",
"url": "?action=avatar&user={username}[&size={size}]", "url": "?action=avatar&user={username}[&size={size}]",

View File

@ -644,36 +644,6 @@
"filename": "./modules/action-raw.php", "filename": "./modules/action-raw.php",
"groupTitle": "Page" "groupTitle": "Page"
}, },
{
"type": "get",
"url": "?action=raw&page={pageName}",
"title": "Get the raw source code of a page",
"name": "RawSource",
"group": "Page",
"permission": [
{
"name": "Anonymous",
"title": "Anybody may use this call.",
"description": ""
}
],
"parameter": {
"fields": {
"Parameter": [
{
"group": "Parameter",
"type": "string",
"optional": false,
"field": "page",
"description": "<p>The page to return the source of.</p>"
}
]
}
},
"version": "0.0.0",
"filename": "./modules/api-status.php",
"groupTitle": "Page"
},
{ {
"type": "get", "type": "get",
"url": "?action=view[&page={pageName}][&revision=rid][&printable=yes][&mode={mode}]", "url": "?action=view[&page={pageName}][&revision=rid][&printable=yes][&mode={mode}]",
@ -923,7 +893,7 @@
"type": "get", "type": "get",
"url": "?action=idindex-show", "url": "?action=idindex-show",
"title": "Show the id index", "title": "Show the id index",
"description": "<p>Outputs the id index. Useful if you need to verify that it's working as expected.</p>", "description": "<p>Outputs the id index. Useful if you need to verify that it's working as expected. Output is a json object.</p>",
"name": "SearchShowIdIndex", "name": "SearchShowIdIndex",
"group": "Search", "group": "Search",
"permission": [ "permission": [
@ -1044,6 +1014,23 @@
"filename": "./modules/feature-recent-changes.php", "filename": "./modules/feature-recent-changes.php",
"groupTitle": "Stats" "groupTitle": "Stats"
}, },
{
"type": "get",
"url": "?action=status",
"title": "Get the json-formatted status of this wiki",
"name": "Status",
"group": "Stats",
"permission": [
{
"name": "Anonymous",
"title": "Anybody may use this call.",
"description": ""
}
],
"version": "0.0.0",
"filename": "./modules/api-status.php",
"groupTitle": "Stats"
},
{ {
"type": "get", "type": "get",
"url": "?action=avatar&user={username}[&size={size}]", "url": "?action=avatar&user={username}[&size={size}]",

View File

@ -8,7 +8,7 @@ define({
"apidoc": "0.3.0", "apidoc": "0.3.0",
"generator": { "generator": {
"name": "apidoc", "name": "apidoc",
"time": "2018-02-14T23:07:15.949Z", "time": "2018-03-27T15:57:49.013Z",
"url": "http://apidocjs.com", "url": "http://apidocjs.com",
"version": "0.17.6" "version": "0.17.6"
} }

View File

@ -8,7 +8,7 @@
"apidoc": "0.3.0", "apidoc": "0.3.0",
"generator": { "generator": {
"name": "apidoc", "name": "apidoc",
"time": "2018-02-14T23:07:15.949Z", "time": "2018-03-27T15:57:49.013Z",
"url": "http://apidocjs.com", "url": "http://apidocjs.com",
"version": "0.17.6" "version": "0.17.6"
} }

View File

@ -41,7 +41,7 @@
"author": "Starbeamrainbowlabs", "author": "Starbeamrainbowlabs",
"description": "Provides a basic JSON status action that provices a few useful bits of information for API consumption.", "description": "Provides a basic JSON status action that provices a few useful bits of information for API consumption.",
"id": "api-status", "id": "api-status",
"lastupdate": 1498472652, "lastupdate": 1522166256,
"optional": false "optional": false
}, },
{ {

View File

@ -8,12 +8,11 @@ register_module([
"code" => function() { "code" => function() {
global $settings; global $settings;
/** /**
* @api {get} ?action=raw&page={pageName} Get the raw source code of a page * @api {get} ?action=status Get the json-formatted status of this wiki
* @apiName RawSource * @apiName Status
* @apiGroup Page * @apiGroup Stats
* @apiPermission Anonymous * @apiPermission Anonymous
* *
* @apiParam {string} page The page to return the source of.
*/ */