pragmaMx Support Forum

Archive => veraltete bzw. unsupportete Systeme und Module => Alt Archive => PHPNuke 5.2-6.0 & VKP 5.5 => Thema gestartet von: Seth in 21 Juni 2002, 08:23:23

Titel: Anzahl der PMs begrenzen?
Beitrag von: Seth in 21 Juni 2002, 08:23:23
Hi,

ich hab mich mal gestern mit phpmyAdmin etwas durch die DB gewühlt und dabei festgestellt, dass einige User auf meiner Seite teilweise 50 PMs und mehr gespeichert haben! Gibt es eine Möglichkeit, die maximale Anzahl an PMs zu begrenzern?  :quest
Titel: Re: Anzahl der PMs begrenzen?
Beitrag von: Joschau in 21 Juni 2002, 12:36:35
Hi Seth!

Eine einfache Lösung gibt es dafür nicht. Das würde größeren Programmieraufwand bedeuten. Aber eine Anregung ist das auf jeden Fall.
Titel: Re: Anzahl der PMs begrenzen?
Beitrag von: FrankySZ in 21 Juni 2002, 12:57:34
Hi Seth,
der Möglichkeit nachzugehen, haben wir uns auch schon vorgenommen, allerdings waere das ein etwas groesser im Aufwand, wie Joschau schon geschrieben hat ...
Daher haben wir uns entschlossen sporadisch, wenn es zu viele werden, eine Adminmessage fuer 3 tage auf die site zu setzten, in dem ein loeschen der PM - Datenbank angekuendigt wird.
Diejenigen die ihre PM-Inhalte nicht verlieren moechten haben dann genuegend zeit zum sichern... und falls mal jemand im Urlaub ist auch kein Prob wir sichern jeden Tag die komplette Datenbank ...
Titel: Re: Anzahl der PMs begrenzen?
Beitrag von: in 21 Juni 2002, 16:05:31
OK, ich hab grad gesehen ich hab zwei Member deren PMs gehen schon auf die 100 zu!  :exclam:
Aber gibt es eein Script, das automatisch alle PMs löscht, die vor einem bestimmten Datum erstellt wurden? Sonst müsste ich mich durch hunderte von PMs wühlen...
Titel: Re: Anzahl der PMs begrenzen?
Beitrag von: Seth in 21 Juni 2002, 16:06:39
Ups, Sorry hab vergessen mich anzumelden.  :puzz
Titel: Re: Anzahl der PMs begrenzen?
Beitrag von: Joschau in 21 Juni 2002, 22:02:55
Speicher mal die folgende Datei als admindelete.php in das Verzeichnis /modules/Private_Messages/

Dann rufst Du es in der Adresszeile Deines Browsers mit

http://www.deinedomain.de/modules.php?mop=modload&name=Private_Messages&file=admindelete

auf und gibst das Datum ein, vor dem alle Messages gelöscht werden sollen...aber Vorsicht: Die datei tut das, was Du von Ihr erwartest, ohne Rückfrage! ;P

(An die Puristen unter Euch  :P : Ich weiß auch, dass die Datei in Aufbau und Platzierung nicht den Nuke-Standards entspricht, aber war ja auch nur ein Quickie :D )


<?

/************************************************************************/
/* PHP-NUKE: Web Portal System                                          */
/* ===========================                                          */
/*                                                                      */
/* Copyright (c) 2002 by Francisco Burzi (fbc@mandrakesoft.com)         */
/* http://phpnuke.org                                                   */
/*                                                                      */
/* With this file it´s possible, to delete older pm´s from the database */
/* Copyright: (c) 2002 Jochem Schausten                                 */
/* http://www.phpnuke-module.de                                         */
/*                                                                      */
/* This program is free software. You can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 2 of the License.       */
/************************************************************************/

if (!eregi("modules.php", $PHP_SELF)) {
    die ("You can't access this file directly...");
}

$index = 1;
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
//get_lang($module_name);

define ("_PMDELETEDATE", "Datum, vor dem gelöscht werden soll:Format: YYYY-MM-DD");



function PMGetDeleteDate() {

   global $module_name;

   if (is_admin($admin)) :

      include ("header.php");
      OpenTable();
      echo "<form method=\"post\" action=\"modules.php?mop=modload&name=$module_name&file=admindelete\">\n"
         ."<b>"._PMDELETEDATE."</b> <input type=\"text\" size=4 maxlength=4 name=\"deletedate[0]\">$nbsp;<input type=\"text\" size=2 maxlength=2 name=\"deletedate[1]\"> <input type=\"text\" size=2 maxlength=2 name=\"deletedate[2]\">\n"
         ."<input type=\"hidden\" name=\"action\" value=\"pmdelete\">\n"
         ."<input type=\"submit\" value=\""._SUBMIT."\"></form>\n";

      CloseTable()
      include ("footer.php");


   else :

      die ("YOU can't access this file...");

   endif;

}


function PMDelete ($HTTP_POST_VARS) {

   global $prefix, $dbi, $admin;

   if (is_admin($admin)) :
      while (list($key, $val) = each($HTTP_POST_VARS)) $$key = $val;
      $deletetime = $deletedate[0]."-".$deletedate[1]."-".$deletedate[2];
      include ("header.php");
      OpenTable();

      if (!sql_query ("DELETE FROM ".$prefix."_priv_msgs WHERE msg_time < $deletetime", $dbi) {

         echo mysql_error();

      } else {

         $rows = mysql_affected_rows();
         echo $rows." messages deleted";

      }
      CloseTable()
      include ("footer.php");

   else :

      die ("YOU can't access this file...");

   endif;

}

switch ($action) {

   case "pmdelete":
   PMDelete($HHTP_POST_VARS);
   break;
   
   default:
   PMGetDeleteDate();
   break;
   
}


?>

[Editiert am 6/21/2002 von Joschau]
Titel: Re: Anzahl der PMs begrenzen?
Beitrag von: Havard in 21 Juni 2002, 22:39:06
ehrlich gesagt funzt dein quickie auch gar nicht!!!

kannst du es nochmal neu schicken??
Titel: Re: Anzahl der PMs begrenzen?
Beitrag von: Joschau in 22 Juni 2002, 00:13:26
Tja, man sollte eben nie erst kopieren und dann testen ... ähem  :redhead:

Jetzt aber, zumindest bei mir mit dem VKP von hier, hat es funktioniert...


<?

/************************************************************************/
/* PHP-NUKE: Web Portal System                                          */
/* ===========================                                          */
/*                                                                      */
/* Copyright (c) 2002 by Francisco Burzi (fbc@mandrakesoft.com)         */
/* http://phpnuke.org                                                   */
/*                                                                      */
/* With this file it´s possible, to delete older pm´s from the database */
/* Copyright: (c) 2002 Jochem Schausten                                 */
/* http://www.phpnuke-module.de                                         */
/*                                                                      */
/* This program is free software. You can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 2 of the License.       */
/************************************************************************/

if (!eregi("modules.php", $PHP_SELF)) {
    die ("You can't access this file directly...");
}

$index = 1;
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
//get_lang($module_name);

define ('_PMDELETEDATE', 'Datum, vor dem gelöscht werden soll:<br>Format: YYYY-MM-DD');



function PMGetDeleteDate() {

   global $module_name, $admin;

   if (is_admin($admin)) :

      include ("header.php");
      OpenTable();
      echo "<form method=\"post\" action=\"modules.php?mop=modload&name=$module_name&file=admindelete\">\n"
         ."<b>"._PMDELETEDATE."</b> <input type=\"text\" size=4 maxlength=4 name=\"deleteyear\"> <input type=\"text\" size=2 maxlength=2 name=\"deletemonth\"> <input type=\"text\" size=2 maxlength=2 name=\"deleteday\">\n"
         ."<input type=\"hidden\" name=\"action\" value=\"pmdelete\">\n"
         ."<input type=\"submit\" value=\""._SUBMIT."\"></form>\n";

      CloseTable();
      include ("footer.php");


   else :

      die ("YOU can't access this file...");

   endif;

}


function PMDelete ($HTTP_POST_VARS) {

   global $prefix, $dbi, $admin;

   if (is_admin($admin)) :
      while (list($key, $val) = each($HTTP_POST_VARS)) $$key = $val;
      $deletetime = "'$deleteyear-$deletemonth-$deleteday 00:00'";
      include ("header.php");
      OpenTable();

      if (!sql_query ("DELETE FROM ".$prefix."_priv_msgs WHERE msg_time < $deletetime", $dbi)) {

         echo mysql_error();

      } else {

         $rows = mysql_affected_rows();
         echo $rows." messages deleted<br>";

      }
      CloseTable();
      include ("footer.php");

   else :

      die ("YOU can't access this file...");

   endif;

}

switch ($action) {

   case "pmdelete":
   PMDelete($HTTP_POST_VARS);
   break;

   default:
   PMGetDeleteDate();
   break;

}


?>
Titel: Re: Anzahl der PMs begrenzen?
Beitrag von: DarkBoy in 22 Juni 2002, 04:04:19
HI
 schnell antwort :)
  es geht  aber wie gott es will hat es in meiner  testumgebeung  auch einiges mehr gelöscht :))
 
 Also  Joschau lass  uns  noch mal  testen  vor dem nächsten  code  :)  ich kann den genauen Fehler net nachvollziehen auf der schnelle ,     dein Ziel wird jedenfaslls   sauber  erfüllt :)  nur leider mit nicht  nachvollizioehbaren folgen :D
  OK   morgen mehr :)
Titel: Re: Anzahl der PMs begrenzen?
Beitrag von: Joschau in 22 Juni 2002, 16:38:19
Von ausgetestet war auch nie die Rede :D

aber mal im Ernst:

Bei mir löscht er auf die Minute genau alle PM vor dem Löschdatum, alle danach läßt er in Ruhe (auch die PM, die eventuell an dem Löschdatum um 00:00 Uhr gepostet wurde.

Ich hab allerdings nicht getestet, was er mit inkorrekten Daten macht, kann mir aber eigentlich nicht vorstellen, dass dies zu unvorhersehbaren Problemen führt. Beschreib doch bitte mal annähernd, was er bei Dir mehr gelöscht hat.

Greetz

Jochem
Titel: Re: Anzahl der PMs begrenzen?
Beitrag von: DarkBoy in 22 Juni 2002, 21:38:14
Hi
 wenn ich da mal so genau wüsste :)  aber nach einem  KLickversuch und wieder einspielen  passierte nichts :) also nehme ich an das  es an einem  Fehler in meinem Modul war :)   den jetzt geht es  anscheinend ohne  probleme :)
ich nehme das einfach momentan  als   NUKE das unbekannte wesen hin :)  da ich keinen Ansatz habe  warum ddas passiert ist
Titel: Re: Anzahl der PMs begrenzen?
Beitrag von: Seth in 23 Juni 2002, 11:56:34
Hi, also erstmal Danke!  :thumbup:
Aber sobald ich auf den Submit-Button klicke, erscheint "Sorry, such file doesn't exist..."!
Titel: Re: Anzahl der PMs begrenzen?
Beitrag von: Joschau in 23 Juni 2002, 19:36:11
Hast Du es auch in das Verzeichnis von den Private_Messages kopiert?
Titel: Re: Anzahl der PMs begrenzen?
Beitrag von: Seth in 23 Juni 2002, 22:02:23
Puh, Sorry!
Ja ich hab sie in das richtige Verzeichnis kopiert, hab sie jetzt nochmal auf den Server geladen und jetzt geht's!
Danke nochmal!  :thumbup:
Titel: Re: Anzahl der PMs begrenzen?
Beitrag von: Havard in 23 Juni 2002, 22:34:35
yo, optimal!!!

ES FUNZT.

Danke

[Editiert am 23/6/2002 von Havard]
Titel: Re: Anzahl der PMs begrenzen?
Beitrag von: LordNoire in 27 Juni 2002, 10:11:55
Wäre es nicht möglich dieses Script zu automatisieren?
So dass es (z.B bei AdminLogIn) automatisch ALLE PM's löscht die älter sind als 30 Tage???

Wär das nicht ein Ansatz, der nicht so aufwendig ist?
Titel: Re: Anzahl der PMs begrenzen?
Beitrag von: Joschau in 27 Juni 2002, 17:57:34
@ Lord:

Das sollte wohl kein problem sein...wenn ich den Admin-bereich für das PM einrichte, werde ich Deine Anmerkung berücksichtigen.