Select Git revision
wiki.inc.php
Forked from
Stud.IP / Stud.IP
Source project has a limited visibility.
-
Thomas Hackl authored
Closes #2037, #1759, and #2097 Merge request studip/studip!1326
Thomas Hackl authoredCloses #2037, #1759, and #2097 Merge request studip/studip!1326
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
wiki.inc.php 69.61 KiB
<?php
# Lifter002: TODO
# Lifter007: TODO
use Studip\Button, Studip\LinkButton;
/**
* Retrieve a WikiPage version from current seminar's WikiWikiWeb.
*
* Returns raw text data from database if requested version is
* available. If not, an
*
* @param string WikiWiki keyword to be retrieved
* @param int Version number. If empty, latest version is returned.
*
**/
function getWikiPage($keyword, $version = null)
{
$page = null;
if ($version) {
$page = WikiPage::find([Context::getId(), $keyword, $version]);
}
if ($page === null) {
$page = WikiPage::findLatestPage(Context::getId(), $keyword);
}
if ($page) {
return $page;
}
if ($keyword === 'WikiWikiWeb') {
return WikiPage::getStartPage(Context::getId());
}
$page = new WikiPage();
$page->range_id = Context::getId();
$page->keyword = $keyword;
return $page;
}
/**
* Write a new/edited wiki page to database
*
* @param string keyword WikiPage name
* @param string version WikiPage version
* @param string body WikiPage text
* @param string user_id Internal user id of editor
* @param string range_id Internal id of seminar/einrichtung
*
**/
function submitWikiPage($keyword, $version, $body, $user_id, $range_id, $ancestor) {
global $perm;
releasePageLocks($keyword, $user_id); // kill lock that was set when starting to edit
// write changes to db, show new page
$latestVersion = getWikiPage($keyword, false);
if ($latestVersion) {
$date = time();
$lastchange = $date - $latestVersion['chdate'];
}
StudipTransformFormat::addStudipMarkup('wiki-comments', '(\[comment\])', null, function(){return sprintf('[comment=%s]', get_fullname());});
//TODO: Die $message Texte klingen fürchterlich. Halbsätze, Denglisch usw...
if ($latestVersion && ($latestVersion['body'] == $body)) {
$message = MessageBox::info(_('Keine Änderung vorgenommen.'));
PageLayout::postMessage($message);
} else if ($latestVersion && ($version !== null) && ($lastchange < 30*60) && ($user_id == $latestVersion['user_id'])) {
// if same author changes again within 30 minutes, no new verison is created
$wp = WikiPage::find([$range_id, $keyword, $version]);
if ($wp) {