Archiv verlassen und diese Seite im Standarddesign anzeigen : PM an alle Member ( Deutsch )
So, der Orginal Hack stammt von vb.org (http://www.vbulletin.org/forum/showthread.php?t=64629&highlight=pm+members).
Der Orginale Hack sendet zwar eine PM an alle member, aber schickt keine Infomail an die Member, das sie eine PM haben.
Der Coder hat diese Option zum senden einer infomail zwar gepostet im Beitrag, wie man ihn noch einbauen kann, aber möchte den orginal hack nicht ändern ( kann ja jeder selber machen ).
Hier habe ich dann dessen hack genommen und seine Option für emailbestätigung noch eingebaut und das eingedeutscht.
Also für alle die nicht wissen was dieser hack macht ...
Mit diesem Hack kann man dann über das AdminCP ( mail an User ) statt eine Massen email eine Massen PM an alle Mitglieder senden.
Jeder User bekommt dann von Euch eine PM und eine eMail mit der Nachricht, das er eine neue Private Nachricht hat.
bye
Smoker
Mastermaik
05.05.2004, 11:16
Gedankt Smoker !
LG
Maik
Thomas P
05.05.2004, 15:30
Prima Sache, Danke Smoker
Gandalf2003
05.05.2004, 17:38
Irgendwie tut sich bei mir nix, wenn ich PM auswähle.
Pming
Zeige Benutzer 1 bis 135 von insgesamt 135
148 - Name des letzten Users wird hier angezeigt ....
und dann bekomm ich nen Datenbankfehler:)
Es trat ein Problem mit der GamersCommunity Datenbank auf.
Stelle mal die anzahl der geleichzeitig zu versendenden PM´s runter.
Habe es eben mal in mein Testboard eingebaut und ebi mir funzt das 1a.
bye
Smoker
Gandalf2003
05.05.2004, 20:24
hi smokerlein:)
hatte ich gemacht, aber ich hab dennoch die fehlermeldung bekommen:(
Gandalf2003
06.05.2004, 11:20
ich hab mal bei vb.org nen passenden beitrag dazu geschrieben für alle fälle. hoffe man kann mir da helfen. ich hab ja keine hacks etc. eingebaut, und am style sollte es nicht liegen:)
http://www.vbulletin.org/forum/showthread.php?p=509433#post509433
Hi,
danke für deine Mühen !
Läuft das auf allen Versionen?
Ok, wir sind im VB3 Forum, wollte aber trotzdem mal gefragt haben. :)
Hmmm ich habe es auf der 3.0.0 getestet.
bye
Smoker
Danke läuft auch auf 3.0.1
Klasse Hack! Danke Smoker...
Klasse Hack! Danke Smoker...
Naja, er ist ja NICHT von mir !!!!
ich habe ihn nur aus 2 Teilen zu einem gemacht und eingedeutscht.
bye
Smoker
Metro Man
23.10.2004, 20:53
gefällt mir echt gut danke
Läuft der auch in der Version 3.0.7 ?
redlabour
02.03.2005, 20:16
Einbauen, ausprobieren und dann bitte posten ! ;)
Habe ich nicht getestet, aber sollte eigentlich.
bye
Smoker
redlabour
03.03.2005, 18:20
Funzt auch in 3.0.7 einwandfrei ! ;)
Aber warum habe ich im AdminCP ein zusätzliches "<" ??
E-Mail-Versand nur testen?(Es wird keine E-Mail verschickt)<
Im Code kann ich dies nicht entdecken.
Da haste wohl in der Datei ein < zu viel gemacht.
bye
Smoker
redlabour
03.03.2005, 23:56
Nee...hab den Code exakt so übernommen :
<?php
if ($_REQUEST['do'] == 'start')
{
print_form_header('email', 'dosendmail');
print_table_header($vbphrase['email_manager']);
print_yes_no_row($vbphrase['test_email_only'], 'test', 0);
print_yes_no_row('PM statt eMail ?<br>Wähle Ja um eine PM statt eMail zu senden.', 'pm', 0);
print_input_row($vbphrase['email_to_send_at_once'], 'perpage', 500);
print_input_row($vbphrase['from'], 'from', $vboptions['webmasteremail']);
print_input_row($vbphrase['subject'], 'subject');
print_textarea_row($vbphrase['message_email'], 'message', '', 10, 50);
$text = $vbphrase['send'];
Und dennoch s. Screenshot !
Das ist bei mir auch, aber ohne Hack. Müßtest mal im Bug-Forum posten.
von7thal
04.03.2005, 11:23
bei mir kommt beim aufrufen bloss ne weisse seite. hab den hack 2 probiert einzubauen. habe aber einige andere hacks eingebaut.
EDIT: die englische geht auch nicht
redlabour
04.03.2005, 17:46
@Boothby - Ahh... ich war 3 Zwischenversionen lang nicht mehr da. Thx ....http://www.vbulletin-germany.com/forum/showthread.php?p=99729
@von7thal - gehts auch ein bisserl genauer und ausführlicher ? Ggf. Screenshot ?
von7thal
04.03.2005, 22:26
mh
is hald einfach weiss, die seite im admincp. also das leftframe ist da. aber da wo die email.php kommen sollte ist nach aufruf einfach weiss.
Schau ml in den Quelltext der Page und poste das.
redlabour
04.03.2005, 23:19
Ich würd ja fast sagen Du hast die Datei beim Upload zerschossen. ;)
von7thal
05.03.2005, 11:57
folgender quelltext ist die email.php beim aufrufen nach eibau des hacks:
<html><body></body></html>
hier die gehackte email.php:
<?php
/*======================================================================*\
|| #################################################################### ||
|| # vBulletin 3.0.4 - Licence Number xxxxxxxx
|| # ---------------------------------------------------------------- # ||
|| # Copyright ©2000–2005 Jelsoft Enterprises Ltd. All Rights Reserved. ||
|| # This file may not be redistributed in whole or significant part. # ||
|| # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # ||
|| # http://www.vbulletin.com | http://www.vbulletin.com/license.html # ||
|| #################################################################### ||
\*======================================================================*/
// ######################## SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);
// ##################### DEFINE IMPORTANT CONSTANTS #######################
define('CVS_REVISION', '$RCSfile: email.php,v $ - $Revision: 1.47 $');
define('NO_REGISTER_GLOBALS', 1);
// #################### PRE-CACHE TEMPLATES AND DATA ######################
$phrasegroups = array('user', 'cpuser', 'messaging');
$specialtemplates = array();
// ########################## REQUIRE BACK-END ############################
require_once('./global.php');
require_once('./includes/adminfunctions_profilefield.php');
require_once('./includes/adminfunctions_user.php');
// ######################## CHECK ADMIN PERMISSIONS #######################
if (!can_administer('canadminusers'))
{
print_cp_no_permission();
}
// ############################# LOG ACTION ###############################
log_admin_action();
// ########################################################################
// ######################### START MAIN SCRIPT ############################
// ########################################################################
print_cp_header($vbphrase['email_manager']);
if (empty($_REQUEST['do']))
{
$_REQUEST['do'] = 'start';
}
// *************************** Send a page of emails **********************
if ($_POST['do'] == 'dosendmail' OR $_POST['do'] == 'makelist')
{
if (isset($_POST['serializeduser']))
{
$_POST['user'] = @unserialize($_POST['serializeduser']);
$_POST['profile'] = @unserialize($_POST['serializedprofile']);
}
$condition = fetch_user_search_sql($_POST['user'], $_POST['profile']);
if ($_POST['do'] == 'makelist')
{
$users = $DB_site->query("
SELECT email
FROM " . TABLE_PREFIX . "user AS user
LEFT JOIN " . TABLE_PREFIX . "userfield AS userfield ON (userfield.userid = user.userid)
LEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield ON (usertextfield.userid = user.userid)
WHERE $condition
" . iif(!$_POST['user']['adminemail'], " AND (options & $_USEROPTIONS[adminemail])") . "
");
if ($DB_site->num_rows($users) > 0)
{
while ($user = $DB_site->fetch_array($users))
{
echo $user['email'] . $_POST['septext'];
flush();
}
}
else
{
print_stop_message('no_users_matched_your_query');
}
}
else
{
$perpage = intval($_POST['perpage']);
if (empty($perpage))
{
$perpage = 500;
}
$startat = intval($_POST['startat']);
$counter = $DB_site->query_first("
SELECT COUNT(*) AS total
FROM " . TABLE_PREFIX . "user AS user
LEFT JOIN " . TABLE_PREFIX . "userfield AS userfield ON (userfield.userid = user.userid)
LEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield ON (usertextfield.userid = user.userid)
WHERE $condition
" . iif(!$_POST['user']['adminemail'], " AND (options & $_USEROPTIONS[adminemail])") . "
");
if ($counter['total'] == 0)
{
print_stop_message('no_users_matched_your_query');
}
else
{
$users = $DB_site->query("
SELECT user.userid,usergroupid,username,email,joindate
FROM " . TABLE_PREFIX . "user AS user
LEFT JOIN " . TABLE_PREFIX . "userfield AS userfield ON (userfield.userid = user.userid)
LEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield ON (usertextfield.userid = user.userid)
WHERE $condition
" . iif(!$_POST['user']['adminemail'], " AND (options & $_USEROPTIONS[adminemail])") . "
ORDER BY userid DESC
LIMIT $startat, $perpage
");
if ($DB_site->num_rows($users))
{
$page = $startat / $perpage + 1;
$totalpages = ceil($counter['total'] / $perpage);
if (strpos($_POST['message'], '$activateid') OR strpos($_POST['message'], '$activatelink'))
{
$hasactivateid = 1;
}
else
{
$hasactivateid = 0;
}
if($_POST[pm]==1){
echo '<p><b>Pming<br />' . construct_phrase($vbphrase['showing_users_x_to_y_of_z'], vb_number_format($startat + 1), iif ($startat+$perpage > $counter['total'], vb_number_format($counter['total']), vb_number_format($startat + $perpage)), vb_number_format($counter['total'])) . '</b></p>';
}else{
echo '<p><b>' . $vbphrase['emailing'] . '<br />' . construct_phrase($vbphrase['showing_users_x_to_y_of_z'], vb_number_format($startat + 1), iif ($startat+$perpage > $counter['total'], vb_number_format($counter['total']), vb_number_format($startat + $perpage)), vb_number_format($counter['total'])) . '</b></p>';
}
while ($user = $DB_site->fetch_array($users))
{
echo "$user[userid] - $user[username] .... \n";
flush();
$userid = $user['userid'];
$sendmessage = $_POST['message'];
$sendmessage = str_replace(
array('$email', '$username', '$userid'),
array($user['email'], $user['username'], $user['userid']),
$_POST['message']
);
if ($hasactivateid)
{
if ($user['usergroupid'] == 3)
{ // if in correct usergroup
if (empty($user['activationid']))
{ //none exists so create one
$activate['activationid'] = vbrand(0, 100000000);
$DB_site->query("
INSERT INTO " . TABLE_PREFIX . "useractivation
(userid, dateline, activationid, type, usergroupid)
VALUES
($user[userid], " . TIMENOW . ", $activate[activationid], 0, 2)
");
}
else
{
$activate['activationid'] = vbrand(0, 100000000);
$DB_site->query("
UPDATE " . TABLE_PREFIX . "useractivation
SET dateline = " . TIMENOW . ",
activationid = $activate[activationid]
WHERE userid = $user[userid] AND
type = 0
");
}
$activate['link'] = $vboptions['bburl'] . "/register.php?a=act&u=$userid&i=$activate[activationid]";
}
else
{
$activate = array();
}
$sendmessage = str_replace(
array('$activateid', '$activatelink'),
array($activate['activationid'], $activate['link']),
$sendmessage
);
}
$sendmessage = str_replace(
array('$bburl', '$bbtitle'),
array($vboptions['bburl'], $vboptions['bbtitle']),
$sendmessage
);
if (!$_POST['test'])
{
if ($_POST['pm']==1){// Lets PM All Instead
$DB_site->query("INSERT INTO pmtext (fromuserid, fromusername, title, message, touserarray, iconid, dateline, showsignature, allowsmilie)
VALUES ($bbuserinfo[userid], '" . addslashes($bbuserinfo[username]) . "', '$_POST[subject]', '" . addslashes($sendmessage) . "', '" . serialize(array($user[userid] => addslashes($user['username']))) . "', 0, " . TIMENOW . ", 0, 0)");
$pmid = $DB_site->insert_id();
$DB_site->query("UPDATE user SET pmtotal=pmtotal+1, pmunread=pmunread+1, pmpopup=2 WHERE userid=$user[userid]");
$DB_site->query("INSERT INTO pm (pmtextid, userid, folderid, messageread) VALUES ('$pmid', '$user[userid]', '0', '0')");
$touserinfo= array();
$touserinfo=$user;
eval(fetch_email_phrases('pmreceived', $user['langageid'], '', 'email'));
vbmail($user['email'], $emailsubject, $emailmessage);
}else{
echo $vbphrase['emailing']." \n";
vbmail($user['email'], $_POST['subject'], $sendmessage, true, $_POST['from']);
}
}
else
{
echo $vbphrase['test'] . " ... \n";
}
echo $vbphrase['okay'] . "<br />\n";
flush();
}
$_REQUEST['do'] = 'donext';
}
else
{
define('CP_REDIRECT', 'email.php?$session[sessionurl]');
print_stop_message('emails_sent_successfully');
}
}
}
}
// *************************** Link to next page of emails to send **********************
if ($_REQUEST['do'] == 'donext')
{
//if ($page++ == $totalpages)
//{
//
// define('CP_REDIRECT', 'email.php?$session[sessionurl]');
// print_stop_message('emails_sent_successfully');
//}
//else
//{
$startat += $perpage;
print_form_header('email', 'dosendmail');
construct_hidden_code('test', $_POST['test']);
construct_hidden_code('pm', $_POST['pm']);
Done :)
construct_hidden_code('serializeduser', serialize($_POST['user']));
construct_hidden_code('from', $_POST['from']);
construct_hidden_code('subject', $_POST['subject']);
construct_hidden_code('message', $_POST['message']);
construct_hidden_code('startat', $startat);
construct_hidden_code('perpage', $perpage);
$profilefields = $DB_site->query("SELECT profilefieldid, title, type FROM " . TABLE_PREFIX . "profilefield");
while ($profilefield = $DB_site->fetch_array($profilefields))
{
$varname = 'field' . $profilefield['profilefieldid'];
if ($profilefield['type'] == 'checkbox' OR $profilefield['type'] == 'select_multiple')
{
if (is_array($_POST[$varname]))
{
foreach ($_POST[$varname] AS $value)
{
construct_hidden_code("${varname}[]", $value);
}
}
}
else
{
construct_hidden_code($varname, $_POST[$varname]);
}
}
print_submit_row($vbphrase['next_page'], 0);
//}
}
// *************************** Main email form **********************
if ($_REQUEST['do'] == 'start' OR $_REQUEST['do'] == 'genlist')
{
?>
<script type="text/javascript">
function check_all_usergroups(formobj, toggle_status)
{
for (var i = 0; i < formobj.elements.length; i++)
{
var elm = formobj.elements[i];
if (elm.type == "checkbox" && elm.name == 'user[usergroupid][]')
{
elm.checked = toggle_status;
}
}
}
</script>
<?php
if ($_REQUEST['do'] == 'start')
{
print_form_header('email', 'dosendmail');
print_table_header($vbphrase['email_manager']);
print_yes_no_row($vbphrase['test_email_only'], 'test', 0);
print_yes_no_row('PM statt eMail ?<br>Wähle Ja um eine PM statt eMail zu senden.', 'pm', 0);
print_input_row($vbphrase['email_to_send_at_once'], 'perpage', 500);
print_input_row($vbphrase['from'], 'from', $vboptions['webmasteremail']);
print_input_row($vbphrase['subject'], 'subject');
print_textarea_row($vbphrase['message_email'], 'message', '', 10, 50);
$text = $vbphrase['send'];
}
else
{
print_form_header('email', 'makelist');
print_table_header($vbphrase['generate_mailing_list']);
print_textarea_row($vbphrase['text_to_separate_addresses_by'], 'septext', ' ');
$text = $vbphrase['go'];
}
print_table_break();
print_table_header($vbphrase['search_criteria']);
print_user_search_rows(true);
print_table_break();
print_submit_row($text);
}
print_cp_footer();
/*======================================================================*\
|| ####################################################################
|| # Downloaded: 11:21, Tue Jan 4th 2005
|| # CVS: $RCSfile: email.php,v $ - $Revision: 1.47 $
|| ####################################################################
\*======================================================================*/
?>
hab ich irgendwas falsch gemacht?
hab ich irgendwas falsch gemacht?Suche und lösche aus deiner Datei:Done :)
von7thal
05.03.2005, 18:18
danke
funktioniert jetzt ganz doll. aber wieso funtzt es bei den anderen mit dem "Done"?
von7thal
05.03.2005, 18:23
kann ich auch 2 benutzer gleichzeitig eine PM schicken?
danke
funktioniert jetzt ganz doll. aber wieso funtzt es bei den anderen mit dem "Done"?Weil das sonst keiner mitkopiert hat ;)
Damit wollte der Autor nur sagen, dass der Hack nun fertig eingebaut ist. Das gehört nicht mehr mit in die Datei. Hätte er ein wenig besser abgrenzen können.kann ich auch 2 benutzer gleichzeitig eine PM schicken?Wenn die beiden in der selben Benutzergruppe sind....aber für zwei Leute brauchst du diesen Hack nicht....nutze einfach die normale PN-Funktion mit Empfänger1; Empfänger2.
von7thal
05.03.2005, 19:46
danke
EDIT: das mit dem ";" funtzt ned
danke
EDIT: das mit dem ";" funtzt nedNatürlich funktioniert das im normalen PN-System:
http://www.vbulletin-germany.com/forum/private.php?do=newpmMehrere Benutzernamen mit ';' trennen
von7thal
05.03.2005, 20:11
ups. habs nicht so genau gelesen
Hallo!
Ich habe einen Fehler:
Warning: Missing argument 2 for print_yes_no_row() in /includes/adminfunctions.php on line 655
Kommt, wenn ich im AdminCP den Button "Email verschicken" klicke..
cu Deta
hat sich erledigt.. habs gefunden..
cu Deta
Hallo,
ich bekomme einen Fehler, wenn ich die PM verschicken will:
Datenbankfehler in vBulletin 3.0.7:
Ungueltige SQL-Abfrage: INSERT INTO pmtext (fromuserid, fromusername, title, message, touserarray, iconid, dateline, showsignature, allowsmilie)
VALUES (5, 'Redaktion', 'Testnachricht', '9,
mysql error: Table 'forenrat_forum.pmtext' doesn't exist
mysql error number: 1146
redlabour
09.04.2005, 07:57
Wie lautet Dein Tabellenpräfix ?
... dann änder den Hack so:
Suche
$DB_site->query("INSERT INTO pmtext (fromuserid, fromus....
und ersetze es mit:
$DB_site->query("INSERT INTO VB3_pmtext (fromuserid, fromus
Der Präfix ist CaSeSenSitiVe und sollte genauso lauten, wie dein tatsächlicher Präfix au is ^^ ;)
vBulletin® v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.