anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Do 12 Jun, 2025 14:23

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa 17 Nov, 2007 13:58 
Offline
Profi
Profi

Registriert: Mi 16 Mai, 2007 11:50
Beiträge: 110
Wohnort: Kaufungen
Geschlecht: Männlich
Skype: Skywalker310867
Ich möchte gern die function viewcommentary dahingehend umbauen,
dass es nur ein Ausgabebereich von Systemposts ist. Also es soll keine Möglichkeit geben, dass User einen Post eingeben können.

Einträge in diese "commentary" sollen über

$this->bbcode_second_pass_code('', '$sql = "INSERT INTO')

gemacht werden, also ohne den "hinzufügen"-Button stattfinden.
Es bedarf also weder einem Eingabefeld, noch dem "hinzufügen"-Button.
Die Lösch-/Editfunktion einzelner Post soll erhalten bleiben. die Steahlt-funktion brauch nicht drinbleiben, kann aber.

Was auch von Vorteil wäre, wär, wenn ausser der Uhrzeit auch das Realdatum mit ausgegeben werden würde.

Evtl. könnte man das auch in einer eigenen Tabelle arbeiten lassen,
so das es mit den anderen commentarys nicht durcheinander gerät.

Diese function soll später den namen function syscommentary bekommen

Hier meine function viewcommentary (wie sie im moment ist)

[php]function viewcommentary($section,$message="Kommentar hinzufügen?",$limit=10,$talkline="sagt") {
global $_POST,$session,$REQUEST_URI,$_GET, $doublepost,$appoencode_str;
$nobios = array("motd.php"=>true);
if ($nobios[basename($_SERVER['SCRIPT_NAME'])]) $linkbios=false; else $linkbios=true;
//output("`b".basename($_SERVER['SCRIPT_NAME'])."`b`n");
if ($doublepost) output("`\$`bDoppelpost?`b`0`n");
$message = translate($message);

$com=(int)$_GET[comscroll];
$sql = "SELECT commentary.*,
accounts.name,
accounts.login,
accounts.loggedin,
accounts.location,
accounts.laston,
accounts.memberid,
accounts.acctid,
gilden.gildenprefix,
gilden.gildenid,
gilden.leaderid

FROM commentary
INNER JOIN accounts
ON accounts.acctid = commentary.author
LEFT JOIN gilden
ON gilden.leaderid = accounts.acctid OR gilden.gildenid =accounts.memberid

WHERE section = '$section'
AND accounts.locked=0
ORDER BY commentid DESC
LIMIT ".($com*$limit).",$limit";
$result = db_query($sql) or die(db_error(LINK));
$counttoday=0;
for ($i=0;$i < db_num_rows($result);$i++){
$row = db_fetch_assoc($result);
//$row[comment]=preg_replace("'[`][^123456789!@#$%&QqRr*~^?VvGgTtAa]'","",$row[comment]);
$row[comment]=preg_replace("'[`][^".$appoencode_str."`]'","",$row[comment]);
$commentids[$i] = $row[commentid];
/* limit posts
if (date("Y-m-d",strtotime($row[postdate]))==date("Y-m-d")){
// if ($row[name]==$session[user][name] && substr($section,0,5)!="house") $counttoday++;
}
*/

// /X-Posts an allen Orten hack by Linus in 2007
if($talkline!="sagt")
{
if(strpos($row[comment],"/X ")==strlen($talkline)+10)
{
$row[comment]=str_replace("&amp;","&",HTMLSpecialChars(substr($row[comment],'8'+strlen($talkline))));
$row[comment]=substr($row[comment],'0',strlen($row[comment])-8);
}
}

$x=0;
$ft="";
//Uhrzeit vor Post
$timest="";
if ($session['user']['prefs']['timestamps']) $timest="`0[".date("H:i",strtotime($row['postdate']))."] ";
//Uhrzeit vor Post
for ($x=0;strlen($ft)<3 && $x<strlen($row[comment]);$x++){
if (substr($row[comment],$x,1)=="`" && strlen($ft)==0) {
$x++;
}else{
$ft.=substr($row[comment],$x,1);
}
}
$link = "bio.php?char=".rawurlencode($row[login]) . "&ret=".URLEncode($_SERVER['REQUEST_URI']);
$link2 = "`7[`0<a href='showdetail.php?id=".$row['gildenid']."' target='window_popup' onClick=\"".popup("showdetail.php?id=".$row['gildenid'])."; return false;\">".stripslashes($row[gildenprefix])."</a>`7] `0";
if (substr($ft,0,2)=="::") $ft = substr($ft,0,2);
else
if (substr($ft,0,2)=="/X") $ft = substr($ft,0,2);
else
if (substr($ft,0,1)==":") $ft = substr($ft,0,1);
/*
Landschafts-Emote by Eliwood
*/
if ($ft=="/X")
{
//Stealthwatcher by Wraith
if ($session[user][superuser]>=2){
if ($session['user']['prefs']["xmote"]==1){
$SW_sql = "SELECT name FROM accounts WHERE acctid='".$row[author]."'";
$SW_result = db_query($SW_sql) or die(db_error(LINK));
$SW_c=0;
for ($SW_c=0;$SW_c < db_num_rows($SW_result);$SW_c++){
//$op[$i].=" `7[`&".$row[name]."`7] ";
$op[$i].=" `7[`&".$row[name]."`7] ";
}
}
}
//end Stealthwatcher
$x = strpos($row[comment],$ft);
if ($x!==false)
{
//if ($linkbios)
// $op[$i] = str_replace("&amp;","&",HTMLEntities(substr($row[comment],0,$x)))
// ."`0\n`& "
// .str_replace("&amp;","&",HTMLEntities(substr($row[comment],$x+strlen($ft))))
// ."`0`n";
//else
$op[$i] .= str_replace("&amp;","&",HTMLEntities(substr($row[comment],0,$x)))
."`0\n`& "
.str_replace("&amp;","&",HTMLEntities(substr($row[comment],$x+strlen($ft))))
."`0 ".$timest."`n";
}
}
/*Landschaft-Emote Ende*/
elseif ($ft=="::" || $ft=="/me" || $ft==":"){
$x = strpos($row[comment],$ft);
if ($x!==false){
if ($linkbios)
$op[$i] = $timest.str_replace("&amp;","&",HTMLEntities(substr($row['comment'],0,$x)))
//$op[$i] = str_replace("&amp;","&",HTMLEntities(substr($row[comment],0,$x)))
//."`0<a href='$link' style='text-decoration: none'>\n`&$row[name]`0</a>\n`& "
.$link2
."`0<a href='$link' style='text-decoration: none' onmouseover=\"this.T_WIDTH=225;this.T_TEXTALIGN='center';this.T_BGCOLOR='#000000';this.T_FONTCOLOR='#999999';this.T_BORDERWIDTH=1;this.T_BORDERCOLOR='#999999'; return escape('".MyPostDate($row['postdate'])."')\">\n`&$row[name]`0</a>\n`& "
.str_replace("&amp;","&",HTMLEntities(substr($row[comment],$x+strlen($ft))))
."`0`n";
else
$op[$i] = $timest.str_replace("&amp;","&",HTMLEntities(substr($row['comment'],0,$x)))
//$op[$i] = str_replace("&amp;","&",HTMLEntities(substr($row[comment],0,$x)))
.$link2
."`0\n`&$row[name]`0\n`& "
.str_replace("&amp;","&",HTMLEntities(substr($row[comment],$x+strlen($ft))))
."`0`n";
}
}
if ($op[$i]=="")
if ($linkbios)
//$op[$i] = "`0<a href='$link' style='text-decoration: none'>`&$row[name]`0</a>`3 sagt: \"`#"
$op[$i] = $timest.$link2."`0<a href='$link' style='text-decoration: none' onmouseover=\"this.T_WIDTH=225;this.T_TEXTALIGN='center';this.T_BGCOLOR='#000000';this.T_FONTCOLOR='#999999';this.T_BORDERWIDTH=1;this.T_BORDERCOLOR='#999999'; return escape('".MyPostDate($row['postdate'])."')\">`&$row[name]`0</a>`3 sagt: \"`#"
.str_replace("&amp;","&",HTMLEntities($row[comment]))."`3\"`0`n";
else
$op[$i] = $timest.$link2."`0`&$row[name]`0`3 sagt: \"`#"
.str_replace("&amp;","&",HTMLEntities($row[comment]))."`3\"`0`n";
if ($message=="X") $op[$i]="`0($row[section]) ".$op[$i];
$loggedin=(date("U") - strtotime($row[laston]) < getsetting("LOGINTIMEOUT",900) && $row[loggedin] && $row[location]==0);
//if ($row['postdate']>=$session['user']['recentcomments']) $op[$i]=($loggedin?"<img src='images/new-online.gif' alt='&gt;' width='3' height='5' align='absmiddle'> ":"<img src='images/new.gif' alt='&gt;' width='3' height='5' align='absmiddle'> ").$op[$i];
if ($row['postdate']>=$session['user']['recentcomments']) $op[$i]=($loggedin?"<img src='images/new-online.gif' alt='&gt;' width='4' height='6' align='absmiddle'> ":"<img src='images/new.gif' alt='&gt;' width='4' height='6' align='absmiddle'> ").$op[$i];
addnav("",$link);
}
$i--;
$outputcomments=array();
$sect="x";
for (;$i>=0;$i--){
$out="";
//Post einzeln löschen
if ($session[user][superuser]>=3 && $message=="X" || $session[user][superuser]>=1 ){ //Superuser can delete messages in chatareas, Hadriel
$out.="`0[<a href='superuser.php?op=commentdelete&commentid=$commentids[$i]&return=".URLEncode($_SERVER['REQUEST_URI'])."'>X</a>]&nbsp;";
addnav("","superuser.php?op=commentdelete&commentid=$commentids[$i]&return=".URLEncode($_SERVER['REQUEST_URI']));
if ($session[user][superuser]>=3 && $message=="X"){
$matches=array();
preg_match("/[(][^)]*[)]/",$op[$i],$matches);
$sect=$matches[0];
}
}
//Post einzeln löschen
if ($session[user][superuser]>=3 && $message=="X"){
$out.="`0[ <a href='superuser.php?op=commentdelete&commentid=$commentids[$i]&return=".URLEncode($_SERVER['REQUEST_URI'])."'>Löschen</a> ]&nbsp;";
addnav("","superuser.php?op=commentdelete&commentid=$commentids[$i]&return=".URLEncode($_SERVER['REQUEST_URI']));
$matches=array();
preg_match("/[(][^)]*[)]/",$op[$i],$matches);
$sect=$matches[0];
}
//output($op[$i],true);
$out.=$op[$i];
if (!is_array($outputcomments[$sect])) $outputcomments[$sect]=array();
array_push($outputcomments[$sect],$out);
}
ksort($outputcomments);
reset($outputcomments);
while (list($sec,$v)=each($outputcomments)){
if ($sec!="x") output("`n`b$sec`b`n");
output(implode('',$v),true);
}

if ($session[user][loggedin]) {
//if ($counttoday<($limit/2) || $session['user']['superuser']>=2){
if ($message!="X"){
// chat preview mod by Chaosmaker
output("<p><form action=\"$REQUEST_URI\" method='POST'>`@$message`n<textarea cols='40' rows='3' class='input' name='insertcommentary[$section]' maxlength='".(750-$tll)."' onkeyup=\"document.getElementById('chatpreview').innerHTML = appoencode(this.value);\" style='width: 500px;'></textarea></p><input type='hidden' name='talkline' value='$talkline'><input type='hidden' name='section' value='$section'><br /><input type='submit' class='button' value='Hinzufügen'><span id='chatpreview'></span>`n".(round($limit/2,0)-$counttoday<3?"`)(Du hast noch ".(round($limit/2,0)-$counttoday)." Beiträge für heute übrig)":"")."`0`n</form>",true);

addnav("",$REQUEST_URI);
}
// }else{
// output("`@$message`nSorry, du hast deine Beiträge in dieser Region für heute aufgebraucht.`0`n");
// }
}
if (db_num_rows($result)>=$limit){
$req = preg_replace("'[&]?c(omscroll)?=([[:digit:]-])*'","",$REQUEST_URI)."&comscroll=".($com+1);
//$req = substr($REQUEST_URI,0,strpos($REQUEST_URI,"c="))."&c=$_GET[c]"."&comscroll=".($com+1);
$req = str_replace("?&","?",$req);
if (!strpos($req,"?")) $req = str_replace("&","?",$req);
output("<a href=\"$req\"><font color=\"yellow\">[&lt;&lt; Vorherige]</font></a>",true);
addnav("",$req);
}
$req = preg_replace("'[&]?c(omscroll)?=([[:digit:]]|-)*'","",$REQUEST_URI)."&comscroll=0";
//$req = substr($REQUEST_URI,0,strpos($REQUEST_URI,"c="))."&c=$_GET[c]"."&comscroll=".($com-1);
$req = str_replace("?&","?",$req);
if (!strpos($req,"?")) $req = str_replace("&","?",$req);
output("&nbsp;<a href=\"$req\">`4`b[Aktualisieren]`b</a>&nbsp;",true);
addnav("",$req);
if ($com>0){
$req = preg_replace("'[&]?c(omscroll)?=([[:digit:]]|-)*'","",$REQUEST_URI)."&comscroll=".($com-1);
//$req = substr($REQUEST_URI,0,strpos($REQUEST_URI,"c="))."&c=$_GET[c]"."&comscroll=".($com-1);
$req = str_replace("?&","?",$req);
if (!strpos($req,"?")) $req = str_replace("&","?",$req);
output(" <a href=\"$req\"><font color=\"yellow\">[Nächste &gt;&gt;]</font></a>",true);
addnav("",$req);
}

//Delete/Edit Funktion Anfang
if($section!='ooc')
{
output('`7 | `2Letzten Post <a href="chatdelete.php?op=delete&section='.$section.'&restore='.$REQUEST_URI.'" onClick="return confirm(\'Willst du diesen Eintrag wirklich löschen?\');">[Löschen]`0</a>',true);
addnav("","chatdelete.php?op=delete&section=".$section."&restore=$REQUEST_URI");
output(" oder <a href=\"chatdelete.php?op=edit&section=".$section."&restore=$REQUEST_URI\">`\$[Editieren]`0</a>",true);
addnav("","chatdelete.php?op=edit&section=".$section."&restore=$REQUEST_URI");

//Delete/Edit Funktion Ende
}

//$dellink="chat_delete.php?return=".$REQUEST_URI."&section=".$section;
// output(" <a href=\"$dellink\" style=\"color: red;\">Letzten Post löschen</a>",true);
//addnav("",$dellink);

db_free_result($result);
}[/php]

wer kann mir dazu auskunft geben oder mir helfen das umzubasteln?

_________________
so long
Stefan

---------

Source im Profil


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa 17 Nov, 2007 15:29 
Offline
Held
Held
Benutzeravatar

Registriert: Mo 05 Mär, 2007 22:17
Beiträge: 270
Hm, bevor du die gesamte viewcommentary anfängst umzubauen, eben zum Verständnis:
Du willst also eigentlich nur bestimmte Posts aufgelistet haben? User sollen sie nur lesen können mehr nicht?
Eingabemaske soll nicht vorhanden sein, da du die Sachen scheinbar direkt in der Datenbank eingeben willst?

Meine (einfach) Lösung: Füge die Posts einfach in die Tabelle commentary ein, gib ihnen als section system (z.B.) und lese sie dann über eine einfache Datenbankabfrage aus...

Für mich ist es nämlich nicht ersichtlich, warum eine Editier-/Löschfunktion vorhanden sein sollte... wenn das eh über die Datenbank eingefügt wird... oO
Zu dem Datum... ich glaube (bin mir aber nicht sicher), dass das gesamte Datum gespeichert wird (Tag,Monat,Jahr, Stunde,Minute, Sekunde?), müsste also auch nur ein wenig was an der Ausgabe geändert werden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa 17 Nov, 2007 15:31 
Offline
Profi
Profi

Registriert: Mi 16 Mai, 2007 11:50
Beiträge: 110
Wohnort: Kaufungen
Geschlecht: Männlich
Skype: Skywalker310867
Mh, so hab ich das noch gar nicht gesehen.
Ist aber eigentlich logisch, nur wie müsste dann
der Ausgabebereich (bislang: viewcommentary)
definiert werden, damit kein Eingabefeld und kein
Button ausgegeben wird?

_________________
so long
Stefan

---------

Source im Profil


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa 17 Nov, 2007 15:52 
Offline
Held
Held
Benutzeravatar

Registriert: Mo 05 Mär, 2007 22:17
Beiträge: 270
Naja... du würdest dann keine Funktion mehr aufrufen (wobei sich das auch in eine Funktion packen ließe), sondern du liest die Einträge aus der Datenbank 'per Hand' aus:

Bsp:

[php]$result=db_query("SELECT `comment`,`postdate` FROM `commentary` WHERE section='system' ORDER BY id ASC");
$max=$db_num_rows($result);
for($i=0;$i<0;$i++){
$row=db_fetch_assoc($result);
$zeit = date("d.n.Y H:i",strtotime($row['postdate']));
output($zeit $row['comment']."`n");
}
[/php]

so in etwa... ich bin mir jetzt nicht ganz sicher mit dem Datum und mit der Ausgabe... musst das mal testen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 18 Nov, 2007 02:48 
Offline
Profi
Profi

Registriert: Mi 16 Mai, 2007 11:50
Beiträge: 110
Wohnort: Kaufungen
Geschlecht: Männlich
Skype: Skywalker310867
Also ich hab das nun so gelöst:

in der houses.php suche nach

$this->bbcode_second_pass_code('', 'output("`n`\$Die Stadtwache hat dich besiegt und geschnappt. Du kommst jetzt für 2 Tage in Haft wegen versuchtem Einbruch!");
$session[user][hitpoints]=1;
$session[user][prison]=1;
$session[user][prisondays]=2;
$session[user][badguy]="";')

danach einfügen:

$this->bbcode_second_pass_code('', '$getname = "SELECT housename FROM houses WHERE houseid=".$session['user']['specialmisc']['houseid']."";
$res = db_query($getname);
$hname = db_fetch_assoc($res);

$hname['housename'];
addnews("`%".$session[user][name]."`3 wurde von der Stadtwache bei einem Einbruch geschnappt und ins Gefängnis gesteckt.");
$sql = "INSERT INTO syscommentary (postdate,section,author,comment) VALUES (now(),\"einbruch\",'".$session[user][acctid]."',\"".$session[user][name]." `\$wurde von der Stadtwache bei einem Einbruch in Hausnr. (".$session['user']['specialmisc']['houseid']."), ".$hname['housename']." geschnappt und ins Gefängnis gesteckt.\")";
db_query($sql);')

Dann suche in superuser.php nach

$this->bbcode_second_pass_code('', 'viewcommentary("grotte","Mit anderen Admins unterhalten:",25,"sagt");')

danach einfügen:

$this->bbcode_second_pass_code('', 'output("`n`n");

output("Einbruchsmeldungen:`n`n");

$result=db_query("SELECT `comment`,`postdate` FROM `syscommentary` WHERE section='einbruch' ORDER BY commentid ASC");
$max=db_num_rows($result);
for($i=0;$i<$max;$i++){
$row=db_fetch_assoc($result);
$zeit = date("d.n.Y H:i",strtotime($row['postdate']));
output($zeit." ".$row['comment']."`n");
}
output("`n");')

Zu letzt muss noch eine neue Tabelle angelegt werden:

$this->bbcode_second_pass_code('', 'CREATE TABLE `syscommentary` (
`commentid` int(11) unsigned NOT NULL auto_increment,
`section` varchar(20) default NULL,
`author` int(11) unsigned NOT NULL default '0',
`comment` text NOT NULL,
`postdate` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`commentid`),
KEY `section` (`section`),
KEY `postdate` (`postdate`)
) ENGINE=MyISAM ;')

Vielleicht möchte es ja noch jemand verwenden...

(support dafür kann ich jedoch nicht geben)

_________________
so long
Stefan

---------

Source im Profil


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 19 Nov, 2007 12:06 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Leen hatte auch mal eine eigene Variante dazu irgendwo hier veröffentlicht (Arbeitet soweit ich weiss über $message != Y (Nur wenn der Parameter $message nicht Y ist, wird das Einabeformular angezeigt))


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 22 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum