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); } }
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; } }
function normWikiName(&$session, &$name) { $name2 = normalizeWikiName($session, $name); if ($name2 == $name) { return false; } else { $name = $name2; return true; } }