Example #1
0
function admAnswerRename(&$session)
{
    global $rename_oldname, $rename_newname, $rename_rename, $rename_backlinks;
    $session->trace(TC_Gui1, 'admAnswerRename');
    $message = null;
    $origin = isset($rename_newname) ? $rename_newname : null;
    if (!isset($rename_oldname)) {
        $message = '+++ kein bisheriger Name angegeben!';
    } elseif (($page_id = dbPageId($session, $rename_oldname)) <= 0) {
        $message = '+++ Seite ' . $rename_oldname . ' existiert nicht';
    } elseif (isset($rename_rename) && !isset($rename_newname)) {
        $message = '+++ kein neuer Name angegeben!';
    } elseif (isset($rename_rename) && ($rename_newname = normalizeWikiName($session, $rename_newname)) != $origin) {
        $message = '+++ Unzulässiger neuer Name (' . $origin . ') wurde korrigiert';
    } elseif (isset($rename_rename) && dbPageId($session, $rename_newname) > 0) {
        $message = '+++ Seite ' . $rename_newname . ' existiert schon!';
    } elseif (isset($rename_rename)) {
        dbUpdate($session, T_Page, $page_id, 'name=' . dbSQLString($session, $rename_newname) . ',');
        $message = 'Seite ' . $rename_oldname . ' wurde in ' . $rename_newname . ' umbenannt.';
        $pages = 0;
        $hits = 0;
        if ($rename_backlinks == C_CHECKBOX_TRUE) {
            $row = dbFirstRecord($session, 'select id,text from ' . dbTable($session, T_Text) . ' where replacedby is null and text like ' . dbSqlString($session, "%{$rename_oldname}%"));
            $pattern1 = '/([^' . CL_WikiName . '])' . $rename_oldname . '([^' . CL_WikiName . '])/';
            $pattern2 = '/^' . $rename_oldname . '([^' . CL_WikiName . '])/';
            $pattern3 = '/([^' . CL_WikiName . '])' . $rename_oldname . '$/';
            $replacement1 = '\\1' . $rename_newname . '\\2';
            $replacement2 = $rename_newname . '\\1';
            $replacement3 = '\\1' . $rename_newname;
            while ($row) {
                $text = $row[1];
                $count1 = preg_match_all($pattern1, $row[1], $dummy);
                if ($count1 > 0) {
                    $text = preg_replace($pattern1, $replacement1, $text);
                }
                $count2 = preg_match($pattern2, $row[1]);
                if ($count2 > 0) {
                    $text = preg_replace($pattern2, $replacement2, $text);
                }
                $count3 = preg_match($pattern3, $text);
                if ($count3 > 0) {
                    $text = preg_replace($pattern3, $replacement3, $text);
                }
                if ($count1 + $count2 + $count3 > 0) {
                    dbUpdate($session, T_Text, $row[0], 'text=' . dbSQLString($session, $text) . ',');
                    $pages++;
                    $hits += $count1 + $count2 + $count3;
                }
                $row = dbNextRecord($session);
            }
            if ($pages > 0) {
                $message .= '<br>Es wurde' . ($hits == 1 ? ' ' : 'n ') . $hits . ($hits == 1 ? ' Verweis auf ' : ' Verweise auf ') . $pages . ($pages == 1 ? ' Seite umbenannt.' : ' Seiten umbenannt.');
            }
        }
        addSystemMessage($session, $rename_oldname . ' >> ' . $rename_newname . ': ' . (0 + $hits));
        $rename_oldname = '';
        $rename_newname = '';
    }
    admRename($session, $message);
}
function baseEditPageAnswerSave(&$session)
{
    $session->trace(TC_Gui1, 'baseEditPageAnswerSave');
    $message2 = null;
    $message = null;
    $content = $_POST['edit_content'];
    $len = strlen($content);
    $content = textAreaToWiki($session, $content);
    $session->trace(TC_Gui1, 'baseEditPageAnswerSave: ' . $content);
    if (!isset($_POST['edit_pageid']) || $_POST['edit_pageid'] <= 0) {
        $session->trace(TC_Gui1, 'baseEditPageAnswerSave-2: ' . $_POST['edit_pagename']);
        $_POST['edit_pagename'] = normalizeWikiName($session, $_POST['edit_pagename']);
        $content = extractHtmlBody($content);
        if (empty($_POST['edit_pagename'])) {
            $message = '+++ kein Seitenname angegeben';
        } elseif (dbSingleValue($session, 'select count(*) from ' . dbTable($session, T_Page) . ' where name=' . dbSqlString($session, $_POST['edit_pagename'])) > 0) {
            $message = '+++ Seite existiert schon: ' . $_POST['edit_pagename'];
        } else {
            $read_group = 0;
            $write_group = 0;
            if (empty($_POST['edit_mimetype'])) {
                $_POST['edit_mimetype'] = M_Wiki;
            }
            $page = dbInsert($session, T_Page, 'name,type,createdat,changedat,readgroup,writegroup', dbSqlString($session, $_POST['edit_pagename']) . ',' . dbSqlString($session, $_POST['edit_mimetype']) . ',now(),now(),' . $read_group . ',' . $write_group);
            $_POST['edit_pageid'] = $page;
            $_POST['edit_textid'] = dbInsert($session, T_Text, 'page,type,text,createdby,createdat,changedat', $page + 0 . "," . dbSqlString($session, mimeToTextType($_POST['edit_mimetype'])) . ',' . dbSqlString($session, $content) . ',' . dbSqlString($session, $session->fUserName) . ',now(),now()');
            $session->trace(TC_Gui1, 'baseEditPageAnswerSave-3: ' . $page . '/' . $_POST['edit_textid']);
        }
        $message2 = $len == strlen($content) ? '' : 'Es wurde der Rumpf (body) extrahiert.';
    } else {
        $pageid = $_POST['edit_pageid'];
        $new_textid = dbGetLastText($session, $pageid);
        if ($new_textid > $_POST['edit_textidpred'] && (!isset($_POST['edit_textid']) || $new_textid > $_POST['edit_textid'])) {
            $message = "+++ Warnung: Seite wurde inzwischen geändert! " . "Bitte Differenz ermitteln und erneut eintragen! " . $new_textid . " /  " . $_POST['edit_textidpred'];
        }
        $date = dbSqlDateTime($session, time());
        if (empty($_POST['edit_textid'])) {
            $_POST['edit_textid'] = dbInsert($session, T_Text, 'page,type,createdat,changedat,createdby,text', $_POST['edit_pageid'] . ',' . dbSqlString($session, mimeToTextType($_POST['edit_mimetype'])) . ",{$date},{$date}," . dbSqlString($session, $session->fUserName) . ',' . dbSqlString($session, $content));
            dbUpdate($session, T_Text, $new_textid, 'replacedby=' . $_POST['edit_textid'] . ',');
        } else {
            dbUpdate($session, T_Text, $_POST['edit_textid'], "text=" . dbSqlString($session, $content) . ",");
        }
    }
    if (isset($_POST['edit_save']) && $message == null) {
        guiShowPageById($session, $_POST['edit_pageid'], 0);
    } else {
        baseEditPage($session, C_Auto, $message, $message2);
    }
}
Example #3
0
function guiBacklinks(&$session, $page_name)
{
    $session->trace(TC_Gui1, 'pluginBacklinks');
    $name = $page_name;
    $condition = '(text like ' . dbSqlString($session, '%' . $name . '%');
    if (normalizeWikiName($session, $name)) {
        $condition .= ' or text like ' . dbSqlString($session, '%' . $name . '%');
    }
    $condition .= ') and replacedby is NULL';
    if (!($ids = dbColumnList($session, T_Text, 'distinct page', $condition))) {
        guiParagraph($session, 'keine Verweise auf ' . $page_name . ' gefunden', false);
    } else {
        echo TAG_PARAGRAPH;
        echo 'Es gibt folgende Verweise auf ';
        guiInternLink($session, encodeWikiName($session, $name), $page_name);
        echo TAG_PARAGRAPH_END;
        echo TAG_ULIST;
        foreach ($ids as $ii => $id) {
            $page = dbGetRecordById($session, T_Page, $id, 'name');
            echo TAG_LISTITEM;
            guiInternLink($session, encodeWikiName($session, $page[0]), $page[0]);
            echo TAG_LISTITEM_END;
        }
        echo TAG_ULIST_END;
    }
}
Example #4
0
function normWikiName(&$session, &$name)
{
    $name2 = normalizeWikiName($session, $name);
    if ($name2 == $name) {
        return false;
    } else {
        $name = $name2;
        return true;
    }
}