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 dbGetAndStoreMacroPattern(&$session) { $session->trace(TC_Db2, 'dbGetAndStoreMacroPattern:'); $theme = $session->fUserTheme; $pattern = dbGetParam($session, $theme, Th_MacroPattern); if (empty($pattern)) { $row = dbFirstRecord($session, 'select name from ' . dbTable($session, T_Macro) . ' where theme=' . Theme_All . ' or theme=' . ($theme + 0) . ' order by name'); $last_var = null; $open_parenthesis = false; while ($row) { $pos = strpos($row[0], ':'); if ($pos <= 0) { $val = $row[0]; $var = null; } else { $var = substr($row[0], 0, $pos + 1); $val = substr($row[0], $pos + 1); } $session->trace(TC_Db3, 'dbGetAndStoreMacroPattern-2: ' . $pos . ' ' . $var . ' / ' . $val); if ($var != $last_var) { $session->trace(TC_Db2, 'dbGetAndStoreMacroPattern-3: '); if ($open_parenthesis) { $session->trace(TC_Db2, 'dbGetAndStoreMacroPattern-4: '); $pattern .= ')'; $open_parenthesis = false; } $last_var = $var; if (!empty($var)) { $session->trace(TC_Db2, 'dbGetAndStoreMacroPattern-5: ' . $pattern); $val = $var . '(' . $val; $open_parenthesis = true; } } $new = '|' . $val; if (getPos($pattern, $new . '|') < 0) { $pattern .= $new; } $row = dbNextRecord($session); } if ($open_parenthesis) { $pattern .= ')'; } $id = dbSingleValue($session, 'select id from ' . dbTable($session, T_Param) . ' where theme=' . (0 + $theme) . ' and pos=' . Th_MacroPattern); if ($id > 0) { dbUpdateRaw($session, T_Param, $id, 'text=' . dbSqlString($session, $pattern)); $session->trace(TC_Db1, "dbGetAndStoreMacroPattern: Id: {$id} Th: {$theme} P: {$pattern}"); } } return $pattern; }
function instImportPages(&$session, $import_file, $import_replace) { $message = null; if (!file_exists($import_file)) { $message = "Datei nicht gefunden: " . $import_file; } elseif (checkDB($session, $message) == DB_EXISTS) { $file = fopen($import_file, "r"); $count_inserts = 0; $count_updates = 0; $count_lines = 0; while ($line = fgets($file)) { if (preg_match('/^#name=(\\S+)\\tlines=(\\d+)\\ttype=(\\w+)\\t/', $line, $param)) { $name = $param[1]; $lines = $param[2]; $type = $param[3]; $session->trace(TC_Gui1, 'instImportPagesAnswer-2: ' . $line); if (($page = dbPageId($session, $name)) > 0) { $count_updates++; if ($import_replace) { dbDeleteByClause($session, T_Text, 'page=' . $page); } } else { $page = dbInsert($session, T_Page, 'name,type', dbSqlString($session, $name) . ',' . dbSqlString($session, $type)); $count_inserts++; } $text = ""; $session->trace(TC_Gui1, 'instImportPagesAnswer-3: ' . $lines); $count_lines += $lines; for ($ii = 0; $ii < $lines; $ii++) { $text .= fgets($file); } if ($import_replace) { $old_id = dbSingleValue($session, 'select max(id) from ' . dbTable($session, T_Text) . ' where page=' . (0 + $page)); } $text_id = dbInsert($session, T_Text, 'page,type,text', $page . ',' . dbSqlString($session, $type) . ',' . dbSqlString($session, $text)); if ($import_replace && $old_id > 0) { dbUpdate($session, T_Text, $old_id, 'replacedby=' . $text_id); } } } fclose($file); $message = 'Datei ' . $import_file . ' wurde eingelesen. Neu: ' . (0 + $count_inserts) . ' Geändert: ' . (0 + $count_updates) . ' Zeilen: ' . (0 + $count_lines); } return $message; }
function guiLoginAnswer(&$session, &$message) { $session->trace(TC_Gui1, 'guiLoginAnswer; login_user: '******'login_user']); $login_again = true; $message = null; $again = false; $user = $_POST['login_user']; $email = $_POST['login_email']; $code = $_POST['login_code']; if (isset($_POST['but_forget'])) { if (empty($user)) { $message = "+kein Benutzername angegeben"; } elseif (empty($email)) { $message = "+keine EMail-Adresse angegeben"; } else { $row = dbSingleRecord($session, 'select id,email from ' . dbTable($session, T_User) . ' where name=' . dbSqlString($session, $user)); if (!$row) { $message = "+unbekannter Benutzer"; } elseif (empty($row[1])) { $message = "+keine EMail-Adresse eingetragen"; } elseif (strcasecmp($row[1], $email) != 0) { $message = "+EMail-Adresse ist nicht bekannt"; } else { sendPassword($session, $row[0], $user, $email); $message = 'Das Passwort wurde an ' . $email . ' verschickt'; } } $again = true; } else { $message = dbCheckUser($session, $user, $code); if (!empty($message)) { $again = true; } else { setLoginCookie($session, $user, $code); $session->setPageName(P_Home); $session->setSessionNo(1); } } return $again; }
function baseLastChanges(&$session) { $headline = 'Übersicht über die letzten Änderungen'; guiStandardHeader($session, $headline, Th_StandardHeader, Th_StandardBodyStart); if (!isset($_POST['last_days']) || $_POST['last_days'] < 1) { $_POST['last_days'] = 7; } guiStartForm($session); outParagraph($session); echo 'Zeitraum: die letzten '; outTextField($session, 'last_days', $_POST['last_days'], 3, 4); echo ' Tage '; outButton($session, 'last_refresh', 'Aktualisieren'); outParagraphEnd($session); outTable(); for ($day = 0; $day <= $_POST['last_days']; $day++) { $date = localtime(time() - $day * 86400); $time_0 = strftime('%Y.%m.%d', time() - $day * 86400); $time_2 = mktime(0, 0, 0, $date[4] + 1, $date[3], $date[5]); $time_1 = dbSqlDateTime($session, $time_2); $condition = 't.createdat>=' . $time_1 . ' and t.createdat<=' . str_replace('00:00:00', '23:59:59', $time_1); $rec = dbFirstRecord($session, 'select t.id,p.name,t.createdby,t.createdat,t.replacedby,p.id from ' . dbTable($session, T_Text) . ' t, ' . dbTable($session, T_Page) . ' p where p.id=t.page and ' . $condition . ' order by createdat desc'); if ($rec) { outTableRecord(); outTableCellStrong($time_0); outTableRecordEnd(); do { $text_id = $rec[0] + 0; $page_id = $rec[5] + 0; $page_name = $rec[1]; $page_link = encodeWikiName($session, $page_name); outTableRecord(); outTableCell(dbSingleValue($session, 'select min(id) from ' . dbTable($session, T_Text) . ' where page=' . $page_id) == $text_id ? 'Neu' : 'Änderung'); outTableInternLink($session, null, $page_link . '?action=' . A_ShowText . '&page_id=' . $page_id . '&text_id=' . $text_id, $text_id); outTableInternLink($session, null, $page_link, $page_name); outTableAuthorLink($session, $rec[2]); outTableCell(dbSqlDateToText($session, $rec[3])); $pred_rec = dbSingleValue($session, 'select max(id) from ' . dbTable($session, T_Text) . ' where page=' . $page_id . ' and createdat<' . dbSqlDateTime($session, $time_2)); if ($pred_rec > 0) { outTableInternLink($session, null, $page_link . '?action=' . A_Diff . '&text_id=' . $text_id . '&text_id2=' . $pred_rec, 'Unterschied zum Vortag (' . $pred_rec . ')'); } outTableRecordEnd(); } while (($rec = dbNextRecord($session)) != null); } } outTableEnd(); guiStandardBodyEnd($session, Th_StandardBodyEnd); }
function guiShowPageById(&$session, $page, $text_id) { $session->trace(TC_Gui1, 'guiShowPageById: ' . $page . '/' . $text_id); list($name, $type, $readgroup) = dbGetRecordById($session, T_Page, $page, 'name,type,readgroup'); if (!empty($text_id) && $text_id > 0) { $count_newer = dbSingleValue($session, 'select count(id) from ' . dbTable($session, T_Text) . ' where page=' . $page . ' and id>' . $text_id); } else { $count_newer = 0; list($text_id) = dbGetRecordByClause($session, T_Text, 'max(id)', 'page=' . $page); } $session->trace(TC_Gui1, 'guiShowPageById-2: ' . $count_newer); list($content, $created_at, $created_by) = dbGetRecordById($session, T_Text, $text_id, 'text,createdat,createdby'); $has_changed = $name != $session->fPageName; $session->SetPageData($name, $created_at, $created_by); if ($has_changed) { $session->SetLocation($name); } $header = $count_newer == 0 ? $session->fPageName : $session->fPageName . ' (Version ' . $text_id . ')'; if ($type == TT_Wiki) { guiStandardHeader($session, $header, Th_HeaderWiki, Th_BodyStartWiki); } else { guiStandardHeader($session, $header, Th_HeaderHTML, Th_BodyStartHTML); } if ($count_newer > 0) { guiParagraph($session, 'Achtung: es existier' . ($count_newer == 1 ? 't eine neuere Version' : 'en ' . $count_newer . ' neuere Versionen'), false); } guiFormatPage($session, $type, $content); guiStandardBodyEnd($session, $type == TT_Wiki ? Th_BodyEndWiki : Th_BodyEndHTML); }
function baseThread(&$session) { global $thread_id, $posting_id, $page_no; $session->trace(TC_Gui1, 'baseThread'); if (empty($thread_id)) { if (empty($posting_id)) { $thread_id = 1; } else { $thread_id = dbSingleValue($session, 'select top from ' . dbTable($session, T_Posting) . " where id={$posting_id}"); if (empty($thread_id)) { $thread_id = $posting_id; } } } if (!isset($page_no)) { $page_no = isset($posting_id) ? dbPageOfPosting($session, $thread_id, $posting_id) : 1; } $id_list = dbIdListOfThreadPage($session, $thread_id, $page_no); $thread = dbGetRecordById($session, T_Posting, $thread_id, 'author,subject,text,createdat,changedby,changedat,calls,forum'); dbThreadInfo($session, $thread_id, $answers, $pages, $last); $thread_date = dbSqlDateToText($session, $thread[3]); $forum = dbGetRecordById($session, T_Forum, $thread[7], 'name'); guiStandardHeader($session, 'Thema: ' . $thread[1], Th_ThreadHeader, Th_ThreadBodyStart); guiParagraph($session, $thread[0] . ', ' . $thread_date . ', ' . (0 + $answers) . ' Antwort' . ($answers == 1 ? ', ' : 'en, ') . $pages . ' Seite' . ($pages == 1 ? '' : 'n'), true); echo '<table width="100%" border="0"><tr><td>'; echo 'Forum: '; guiInternLink($session, P_Forum . '?forum_id=' . $thread[7], $forum[0]); if ($pages > 1) { echo '</td><td style="text-align: right">'; guiPageLinks($session, P_Thread . '?action=' . A_ShowThread . '&thread_id=' . $thread_id, $page_no, $pages); } echo "</td></tr></table>\n"; dbUpdateRaw($session, T_Posting, $thread_id, 'calls=calls+1'); echo '<table width="100%" border="0">' . "\n"; // Autor Thema-Text foreach ($id_list as $ii => $id) { # echo "alle Postings: $ii / $id<br>"; if ($id == $thread_id) { $posting = $thread; } else { $posting = dbGetRecordById($session, T_Posting, $id, 'author,subject,text,createdat,changedby,changedat'); } dbGetAuthorInfo($session, $posting[0], $author_link, $postings, $avatar, $ranking); echo '<tr><td style="vertical-align:top">'; guiLine(1); echo $thread[0] . '<br/>' . ($postings + 0) . ' Beiträge<br/>' . $ranking; if (!empty($avatar)) { echo '<br/>' . $avatar; } echo '</td><td>'; guiLine(1); if ($id == $thread_id) { guiHeadline($session, 3, 'Thema: ' . $posting[1]); } else { guiHeadline($session, 3, 'Antwort ' . ($ii + $session->fUserPostingsPerPage * ($page_no - 1)) . ': ' . $posting[1]); } echo 'Geschrieben am ' . dbSqlDateToText($session, $posting[3]); if (strcmp($posting[5], $posting[3]) != 0) { echo ' Letzte Änderung: ' . dbSqlDateToText($session, $posting[5]); if (!empty($posting[4]) && strcmp($posting[4], $posting[0]) != 0) { echo ' von ' . $posting[5]; } } echo '<br/>'; wikiToHTML($session, $posting[2]); echo '<p>'; guiInternLink($session, P_Thread . '?action=' . A_Answer . "&thread_id={$thread_id}&reference_id={$id}", 'Antworten'); if (strcmp($posting[0], $session->fUserName) == 0) { echo ' '; guiInternLink($session, P_Thread . '?action=' . A_ChangeThread . "&thread_id={$thread_id}&posting_id={$id}", 'Ändern'); echo "</p>\n"; } echo "</td><tr>\n"; } echo "</table>\n"; guiStandardBodyEnd($session, Th_ThreadBodyEnd); }
function getMacro($name) { $this->trace(TC_Session3, 'getMacro'); if (isset($this->fMacros[$name])) { $value = $this->fMacros[$name]; } else { $value = ''; switch ($name) { case TM_CurrentUser: $value = htmlentities($this->fUserName); break; case TM_CurrentDate: $value = strftime('%Y.%m.%d'); break; case TM_CurrentDateTime: $value = strftime('%Y.%m.%d %H:%M'); break; case TM_PageTitle: $value = getMacro(TM_BasarName); break; case TM_Newline: $value = tagNewline; break; case TM_RuntimeSecMilli: case TM_RuntimeSecMicro: $value = $this->getRuntimeSec($name == TM_RuntimeSecMilli); break; default: # $this->trace (TC_X, "getMacro: $name"); $value = dbSingleValue($this, 'select value from ' . dbTable($this, T_Macro) . ' where name=' . dbSqlString($this, $name) . ' and ' . '(theme=' . ($this->fUserTheme + 0) . ' or theme=' . Theme_All . ') order by theme desc'); # $this->trace (TC_X, "getMacro: $name: $value"); break; } $this->trace(TC_Session2, 'getMacro-2: ' . $name . '=' . $value); if ($name != TM_RuntimeSecMicro && $name != TM_RuntimeSecMicro) { $this->fMacros[$name] = $value; } } $this->trace(TC_Session3, 'getMacro-3: ' . $name . '=' . $value); return $value; }
function addressShowCards(&$session, $message = null) { $session->trace(TC_Gui1, 'addressShowBook:'); guiStandardHeader($session, 'Anzeigen von Adressen', Th_AddressHeader, Th_AddressBodyStart); if ($message != null) { guiParagraph($session, $message, false); } guiStartForm($session); guiHeadline($session, 2, 'Suchkriterien:'); $books = dbColumnList($session, Tab_Book, 'name', '1'); if (!isset($_POST['show_book'])) { $_POST['show_book'] = $books[0]; } echo 'Adressbuch: '; guiComboBox('show_book', $books, null, null); $fields = array('Name', 'Vorname', 'Spitzname', 'EMail', 'PLZ', 'Ort', 'Funktion', 'Notiz'); echo ' Auswahlkriterium: '; guiComboBox('show_choice', $fields, null, null); echo ' Suchmuster: '; outTextField($session, 'show_pattern', null, 16); echo ' '; outButton($session, 'show_search', 'Suchen'); guiHeadline($session, 2, 'Ausgabefelder:'); outCheckBox($session, 'show_withname', 'Name'); echo ' '; outCheckBox($session, 'show_withprivate', 'Privat'); echo ' '; outCheckBox($session, 'show_withoffice', 'Geschäftlich'); echo ' '; outCheckBox($session, 'show_withphone', 'Telefon'); echo ' '; outCheckBox($session, 'show_withemail', 'EMail'); echo ' '; outCheckBox($session, 'show_withaddress', 'Postadresse'); echo ' '; outCheckBox($session, 'show_withfunction', 'Funktion'); echo ' '; outCheckBox($session, 'show_withnote', 'Notiz'); echo ' '; outCheckBox($session, 'show_withdate', 'Datum'); guiFinishForm($session, $session); if (isset($_POST['show_pattern'])) { $pattern = $_POST['show_pattern']; if (empty($pattern)) { $condidtion = '1'; } else { $pattern = '%' . $pattern . '%'; switch ($_POST['show_choice']) { case 'Name': $condition = 'lastname like ' . dbSqlString($session, $pattern); break; case 'Vorname': $condition = 'firstname like ' . dbSqlString($session, $pattern); break; case 'Spitzname': $condition = 'nickname like ' . dbSqlString($session, $pattern); break; case 'EMail': $condition = 'emailprivate like ' . dbSqlString($session, $pattern) . ' or emailprivate2 like ' . dbSqlString($session, $pattern) . ' or emailoffice like ' . dbSqlString($session, $pattern) . ' or emailoffice2 like ' . dbSqlString($session, $pattern); break; case 'PLZ': $condition = 'zip like ' . dbSqlString($session, $pattern); break; case 'Ort': $condition = 'city like ' . dbSqlString($session, $pattern); break; case 'Funktion': $condition = 'function like ' . dbSqlString($session, $pattern); break; case 'Notiz': $condition = 'note like ' . dbSqlString($session, $pattern); break; default: $condition = '1'; break; } $what = 'lastname,firstname,country,zip,city,street,' . 'emailprivate,emailprivate2,phoneprivate,phoneprivate2,mobileprivate,faxprivate,' . 'emailoffice,emailoffice2,phoneoffice,phoneoffice2,mobileoffice,faxoffice,' . 'functions,notes,nickname,id,changedat,createdat'; addressPrintTable($session, "select {$what} from " . dbTable($session, Tab_Card) . " where {$condition}", 30); } } guiStandardBodyEnd($session, Th_AddressBodyEnd); }
function admShowUsers(&$session, $message) { $session->trace(TC_Gui1, 'admShowUsers'); admStandardHeader($session, 'Alle Benutzer'); if (!empty($message)) { guiParagraph($session, $message, false); } guiStartForm($session); dbPrintTable($session, 'Select id,name,email,theme,startpage from ' . dbTable($session, T_User) . ' where 1', array("Id", "Name", "EMail", "Design", "Startseite"), 0); guiFinishForm($session); admFinishBody($session); }
function admBackupAnswer(&$session) { global $backup_table, $backup_compressed, $backup_save; $session->trace(TC_Gui1, 'admBackupAnswer'); $message = null; guiHeader($session, 'Datenbank-Backup'); if (isset($backup_save)) { if (empty($backup_table)) { guiParagraph($session, '+++ keine Tabelle angegeben!', false); } else { guiHeadline($session, 1, 'Backup der Tabelle ' . $backup_table); $filename = $backup_table == '*' ? 'db_infobasar' : 'table_' . $backup_table; $filename = 'backup/' . $filename; if ($backup_compressed) { $filename .= '.gz'; } $open_name = $backup_compressed ? 'compress.zlib://' . $session->fFileSystemBase . '/' . $filename : $session->fFileSystemBase . '/' . $filename; $file = fopen($open_name, $backup_compressed ? 'wb9' : 'wb'); fwrite($file, '# InfoBasar: SQL Dump / Version: ' . PHP_Version . " \n# gesichert am " . strftime('%Y.%m.%d %H:%M:%S', time()) . "\n"); echo '<table border="0">'; if ($backup_table != '*') { $bytes = admSaveTable($session, $backup_table, false, $file); } else { $bytes = admWriteOneTable($session, dbTable($session, T_Param), $file); $bytes += admWriteOneTable($session, dbTable($session, T_Macro), $file); $bytes += admWriteOneTable($session, dbTable($session, T_User), $file); $bytes += admWriteOneTable($session, dbTable($session, T_Group), $file); $bytes += admWriteOneTable($session, dbTable($session, T_Forum), $file); $bytes += admWriteOneTable($session, dbTable($session, T_Posting), $file); $bytes += admWriteOneTable($session, dbTable($session, T_Text), $file); } fclose($file); $size = !$backup_compressed ? $bytes : filesize($session->fFileSystemBase . '/' . $filename); echo '<tr><td>Summe:</td><td>' . (0 + $bytes) . ' (' . (0 + $size) . ')</td></tr></table>' . "\n"; echo '<br/>'; guiStaticDataLink($session, '', $filename, 'Datei ' . $filename); } } admBackup($session, false, $message); }
function dbGetThemes(&$session, &$names, &$numbers) { $names = array(); $numbers = array(); if ($row = dbFirstRecord($session, 'select theme,text from ' . dbTable($session, T_Param) . ' where pos=' . Th_ThemeName . ' and theme>=' . Theme_Standard . ' order by theme')) { do { array_push($names, $row[1]); array_push($numbers, $row[0]); } while ($row = dbNextRecord($session)); } }
function baseLastChanges(&$session) { global $last_days; $headline = 'Übersicht über die letzten Änderungen'; guiStandardHeader($session, $headline, Th_StandardHeader, Th_StandardBodyStart); if (!isset($last_days) || $last_days < 1) { $last_days = 7; } guiStartForm($session); echo '<p>Zeitraum: die letzten '; guiTextField('last_days', $last_days, 3, 4); echo ' Tage '; guiButton('last_refresh', 'Aktualisieren'); echo '</p>' . "\n"; echo '<table border="0">' . "\n"; for ($day = 0; $day <= $last_days; $day++) { $date = localtime(time() - $day * 86400); $time_0 = strftime('%Y.%m.%d', time() - $day * 86400); $time_2 = mktime(0, 0, 0, $date[4] + 1, $date[3], $date[5]); $time_1 = dbSqlDateTime($session, $time_2); $condition = 't.createdat>=' . $time_1 . ' and t.createdat<=' . str_replace('00:00:00', '23:59:59', $time_1); $rec = dbFirstRecord($session, 'select t.id,p.name,t.createdby,t.createdat,t.replacedby,p.id from ' . dbTable($session, T_Text) . ' t, ' . dbTable($session, T_Page) . ' p where p.id=t.page and ' . $condition . ' order by createdat desc'); if ($rec) { echo '<tr><td><b>'; echo $time_0; echo '</b></td></tr>' . "\n"; do { echo '<tr><td>'; echo dbSingleValue($session, 'select min(id) from ' . dbTable($session, T_Text) . ' where page=' . $rec[5]) == $rec[0] ? 'Neu' : 'Änderung'; echo '</td><td>'; echo $rec[0]; echo '</td><td>'; echo guiInternLink($session, $rec[1], $rec[1]); echo '</td><td>'; guiAuthorLink($session, $rec[2]); echo '</td><td>'; echo dbSqlDateToText($session, $rec[3]); $pred_rec = dbSingleValue($session, 'select max(id) from ' . dbTable($session, T_Text) . ' where page=' . $rec[5] . ' and createdat<' . dbSqlDateTime($session, $time_2)); if ($pred_rec > 0) { echo '</td><td>'; guiInternLink($session, $rec[5] . '?action=' . A_Diff . '&text_id=' . $rec[0] . '&text_id2=' . $pred_rec, 'Unterschied zum Vortag (' . $pred_rec . ')'); } echo '</td></tr>' . "\n"; } while (($rec = dbNextRecord($session)) != null); } /* if (false){ $ids = dbIdList2 ($session, T_Text, 'distinct page', $condition); if ($ids) { echo '<tr><td><b>'; echo $time_0; echo'</b></td></tr>' . "\n"; foreach ($ids as $ii => $pageid) { $page = dbGetRecordById ($session, T_Page, $pageid, 'name'); $text = dbFirstRecord ($session, 'select id,createdby,createdat,replacedby from ' . dbTable ($session, T_Text) . ' where page=' . (0 + $pageid) . ' and ' . $condition . ' order by id desc'); $count = 0; while ($text) { $pred_text = dbSingleValue ($session, 'select max(id) from ' . dbTable ($session, T_Text) . ' where page=' . $pageid . ' and createdat<' . dbSqlDateTime ($session, $time_2)); echo '<tr><td>'; echo dbSingleValue ($session, 'select min(id) from ' . dbTable ($session, T_Text) . ' where page=' . $pageid) == $text [0] ? 'Neu' : 'Änderung'; echo '</td><td>'; echo $text [0]; echo '</td><td>'; echo $count++ > 0 ? htmlentities ($page [0]) : guiInternLink ($session, $page [0], $page [0]); echo '</td><td>'; guiAuthorLink ($session, $text [1]); echo '</td><td>'; echo dbSqlDateToText ($session, $text [2]); if ($pred_text > 0) { echo '</td><td>'; guiInternLink ($session, $page [0] . '?action=' . A_Diff . '&text_id=' . $pred_text . '&text_id2=' . $text [0], 'Unterschied zum Vortag (' . $pred_text . ')'); } echo '</td></tr>' . "\n"; $text = dbNextRecord ($session); } } } } */ } echo '</table>'; guiStandardBodyEnd($session, Th_StandardBodyEnd); }