Add CSV support to the recent-changes action

This commit is contained in:
Starbeamrainbowlabs 2019-01-24 18:18:20 +00:00
parent 6aa55c74bf
commit e715c2049f
Signed by: sbrl
GPG Key ID: 1BE5172E637709C2
4 changed files with 37 additions and 5 deletions

View File

@ -7,7 +7,7 @@ This file holds the changelog for Pepperminty Wiki. This is the master list of t
- Added inter-wiki link support via the new `feature-interwiki-links` module
- Added `interwiki_index_location` setting to control the location of the interwiki index (which is a CSV file that is documented in the main _Pepperminty Wiki_ documentation), which has to be specified in order for it to activate
- Provides new module api functions: `interwiki_pagename_parse`, `interwiki_pagename_resolve`, `interwiki_get_pagename_url`, and `is_interwiki_link`
-
- Added CSV support to the `recent-changes` action.
### Changed
- Completely reworked the README to refactor out the documentation to its [own static site](https://starbeamrainbowlabs.com/labs/peppermint/_docpress/)

View File

@ -409,7 +409,7 @@ if($settings->sessionprefix == "auto")
/////////////////////////////////////////////////////////////////////////////
/** The version of Pepperminty Wiki currently running. */
$version = "v0.18-dev";
$commit = "e350d1cc8efeab734f9347ec9fc6f1d1e20bed45";
$commit = "6aa55c74bfe5a6dfffc96d3c7d8c041d4a707abd";
/// Environment ///
/** Holds information about the current request environment. */
$env = new stdClass();
@ -3706,7 +3706,7 @@ register_module([
* @apiGroup Stats
* @apiPermission Anonymous
*
* @apiParam {string} format The format to return the recent changes in. Values: html, json. Default: html.
* @apiParam {string} format The format to return the recent changes in. Valid values: html, json, csv. Default: html.
*/
/*
* ██████ ███████ ██████ ███████ ███ ██ ████████
@ -3745,6 +3745,22 @@ register_module([
header("content-length: " . strlen($result));
exit($result);
break;
case "csv":
if(empty($recent_changes)) {
http_response_code(404);
header("content-type: text/plain");
exit("No changes made been recorded yet. Make some changes and then come back later!");
}
$result = fopen('php://temp/maxmemory:'. (5*1024*1024), 'r+');
fputcsv($result, array_keys(get_object_vars($recent_changes[0])));
foreach($recent_changes as $recent_change)
fputcsv($result, array_values(get_object_vars($recent_change)));
rewind($result);
header("content-type: text/csv");
header("content-length: " . fstat($result)["size"]);
echo(stream_get_contents($result));
}

View File

@ -95,7 +95,7 @@
"author": "Starbeamrainbowlabs",
"description": "Adds recent changes. Access through the 'recent-changes' action.",
"id": "feature-recent-changes",
"lastupdate": 1530617266,
"lastupdate": 1548353858,
"optional": false
},
{

View File

@ -20,7 +20,7 @@ register_module([
* @apiGroup Stats
* @apiPermission Anonymous
*
* @apiParam {string} format The format to return the recent changes in. Values: html, json. Default: html.
* @apiParam {string} format The format to return the recent changes in. Valid values: html, json, csv. Default: html.
*/
/*
* ██████ ███████ ██████ ███████ ███ ██ ████████
@ -59,6 +59,22 @@ register_module([
header("content-length: " . strlen($result));
exit($result);
break;
case "csv":
if(empty($recent_changes)) {
http_response_code(404);
header("content-type: text/plain");
exit("No changes made been recorded yet. Make some changes and then come back later!");
}
$result = fopen('php://temp/maxmemory:'. (5*1024*1024), 'r+');
fputcsv($result, array_keys(get_object_vars($recent_changes[0])));
foreach($recent_changes as $recent_change)
fputcsv($result, array_values(get_object_vars($recent_change)));
rewind($result);
header("content-type: text/csv");
header("content-length: " . fstat($result)["size"]);
echo(stream_get_contents($result));
}