PDA

View Full Version : [RELEASE] Mass Pm


chrispadfield
Tue 13th Feb '01, 10:42pm
Ok my first hack (and very simple)

What it does is lets an admin pm everyone. This is very simple at the moment and could be made more complicated like the email one in later versions. It only pm's people who have set pm to on in their profile.

I have attached the file but this is it:


<?
require("./global.php");

echo "<html><body>";

echo "<h1>Mass PM</h1><br>";
echo "This will send a pm to every user who has set receive pm on.";
echo "<FORM METHOD=\"post\" ACTION=\"$PHP_SELF\">";
echo "Your user number:<br>";
echo "<INPUT type=\"text\" NAME=\"adminuser\" value=\"$adminuser\" SIZE=5></P>";
echo "PM Title:<br>";
echo "<INPUT type=\"text\" NAME=\"title\" SIZE=\"40\"></P>";
echo "Message:<br>";
echo "<textarea name=\"message\" rows=\"8\" cols=\"0\"></textarea><br>";
echo "<INPUT type=\"hidden\" NAME=\"action\" value=\"do\">";
echo "<INPUT type=\"submit\" NAME=\"Submit\">";
echo "<P><P><P>";



if ($action=="do") {

echo "<html><body>";



$forums=$DB_site->query("SELECT userid,username FROM user WHERE receivepm=1 ORDER BY userid");

while ($forum=$DB_site->fetch_array($forums)) {


$sql=$DB_site->query("INSERT INTO privatemessage (privatemessageid, folderid, userid, touserid, fromuserid, title, message, dateline, showsignature, iconid, messageread) VALUES (NULL, '0', '$forum[userid]', '$forum[userid]', '$adminuser', '".addslashes($title)."', '".addslashes($message)."', UNIX_TIMESTAMP(), '1', '1', '0')");

echo "pm sent to $forum[userid] <br>";


}

echo "</body></html>";

}
?>



this is my first mod so i would like comments on what i am doing wrong!

p.s. do i get an award for the first v2.0 mod?

Shak
Wed 14th Feb '01, 4:21am
Edit your thread here if you can and add a 2.0 to the title line, so we know its for 2.0.

chrispadfield
Wed 14th Feb '01, 6:51am
44 views, so is anyone using it ?

pipi
Wed 14th Feb '01, 7:36am
does it work on v1.14? thanks for your nice hack

chrispadfield
Wed 14th Feb '01, 7:41am
i don't know what the table structure is for 1.4, if you post the table structure here for me i can edit it so that it will work.

pipi
Wed 14th Feb '01, 9:48am
i'm new, i dunno where can i get it. sorry~~~ thanks for replied

chrispadfield
Wed 14th Feb '01, 10:12am
you are using v 1.4 are you? (i would recommend upgrading) but if you don't want to.

install phpmyadmin from www.phpwizard.com (i think that is right, otherwise search for it at www.hotscripts.com

Then once installed (it is very useful) click on your database with your forum in it and then you should see all the tables appear. Click on the privatemessage one and copy and paste the next page. It just shows me what the names of the columns are.

pipi
Wed 14th Feb '01, 10:38am
i'm not sure is this you looking for.
msgid mediumint(8) UNSIGNED No auto_increment Change Drop Primary Index Unique
toid smallint(5) UNSIGNED No 0 Change Drop Primary Index Unique
fromid smallint(5) UNSIGNED No 0 Change Drop Primary Index Unique
title varchar(100) No Change Drop Primary Index Unique
text mediumtext No Change Drop Primary Index Unique
datetime datetime No 0000-00-00 00:00:00 Change Drop Primary Index Unique
signature tinyint(4) No 0 Change Drop Primary Index Unique
iconid smallint(5) No 0 Change Drop Primary Index Unique

Thanks a lot for all your helping

Robert Basil
Wed 14th Feb '01, 9:10pm
Chris,

I just used it for a little over 1,500 members and it was FAST!

Thanks for the great add-on!

chrispadfield
Wed 14th Feb '01, 9:33pm
cool, glad someone used it. I have already sent 2 to my members, it is a little difficult to contain oneself ;)

Freddie Bingham
Wed 14th Feb '01, 9:50pm
It would be ever so more resourceful if the hack was to only save the message once into a "systemmessage" table that each user would then receive a message from. You could stick a "lastreadsystemmessagetime" field into the user table to figure out which users have read the message.

Robert Basil
Wed 14th Feb '01, 9:57pm
Originally posted by freddie
It would be ever so more resourceful if the hack was to only save the message once into a "systemmessage" table that each user would then receive a message from. You could stick a "lastreadsystemmessagetime" field into the user table to figure out which users have read the message.

Damn smarty-pants! ;)

chrispadfield
Wed 14th Feb '01, 9:57pm
true and it was something i thought about although slughtly differently. In the end this was a lot quicker and combine with a 30 day expiry date script of pms send by admin (me) which have not been read it will quickly get rid of those ones you don't need there any more.

Also, how under your suggestion would you do it for more than one message? arn't you then going to need more than one column in the user profile field or in the end perhaps an extra table linking user with adminmessage - by the time you have done that you loose most of the gains you started with.

WreckRman2
Thu 15th Feb '01, 3:08am
Worked for me... other then the $adminuser. Thanks!

PS. Maybe you could upgrade the style sheet to match the rest of the admin area. :)

WreckRman2
Thu 15th Feb '01, 5:03am
Heck you did the hard part so I thought I could clean the look of the page up for you/me...

Updated code at http://www.vbulletin.com/forum/showthread.php?threadid=8742

chrispadfield
Thu 15th Feb '01, 6:01am
cool thanks.

next little thing is to let you select usergroups so that you can say send one to all your moderators.. soon i hope.

theprof
Sun 8th Apr '01, 7:14am
Is there one for vb 1.14? If so,c an you please provide the code?:cool:

John Harrison
Sun 8th Apr '01, 8:12am
Originally posted by theprof
Is there one for vb 1.14? If so,c an you please provide the code?:cool:

I dont think there is one.
As this was released for v2.0

But if there was to be one it would be for v1.1.6 most likely.