Skip to content
Snippets Groups Projects
Select Git revision
  • beea41ffaf04ed141ed3afe5828dee098e0f22e0
  • main default protected
  • studip-rector
  • ci-opt
  • course-members-export-as-word
  • data-vue-app
  • pipeline-improvements
  • webpack-optimizations
  • rector
  • icon-renewal
  • http-client-and-factories
  • jsonapi-atomic-operations
  • vueify-messages
  • tic-2341
  • 135-translatable-study-areas
  • extensible-sorm-action-parameters
  • sorm-configuration-trait
  • jsonapi-mvv-routes
  • docblocks-for-magic-methods
19 results

wiki.inc.php

Blame
  • Forked from Stud.IP / Stud.IP
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    wiki.inc.php 69.43 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) {