Due to a lack of time, I can no longer offer any real support for this plugin. Hopefully once we get moved and settled in our country house that will change, but for right now if you download the plugin you’re on your own. Most people who use the plugin have no problems with it, but some installations give errors. If you read the comments at the end of this post, you may find a solution. The beta version 1.1 of the plugin is less likely to give you errors than the 1.0 production installation — Fred
The Private Notes plugin for WordPress provides registered users on a site with the ability to send messages to one another.
Features of Private Notes
- Users can send and receive notes.
- When sending, user can save a copy of the sent note to a ‘Sent notes’ folder.
- Notes can be forwarded, saved, replied to, and deleted.
- Users can create their own folders for saving notes, and move notes between folders.
- User folders can be renamed and deleted.
- Configuration-limited HTML can be used in notes.
- Note admins can see user folders and their contents (including note subjects), but cannot read notes.
- Note admins can delete notes and folders of users with notes.
- Plugin will automatically delete notes after an admin-determined length of time.
Configurable parameters by note admins
- Max # of save folders per user.
- Max # saved notes per user.
- Max notes that can be kept in a user’s inbox.
- Max # of days a note can be saved.
- User level for sending and receiving notes.
- User level for administering the notes plugin. This option is only changeable by the site admin.
- Starting and ending HTML tags for system and error messages, to customize their appearance.
- HTML allowed tags in notes.
Screenshots - click picture for large version

Sending a note to a user

User’s view of a folder

User’s view of a note. Someone forgot to close a <b> tag.

Admin main screen

Admin view of a user’s folders / contents
Notes:
- If you’d like to test sending and receiving notes before you download and install the plugin on your site, you can do so by registering as a user on my test site. I will not share, sell, or otherwise let anyone know your email address.
- This software is now production version 1.0, and if you’d like to install it on your own WordPress (it was written under version 1.5.2), you can download it from here. Untar the file and move the private_notes folder to your plugins area. Activate the plugin, then go to “Manage–>Private notes” on your admin panel to create the mySQL tables and config options. The software works for me, and it should work for you, but no one’s perfect. Even though it’s stable for me, please let me know if you have any problems with it. Chances are good I can help you get them resolved.
- If you install the software, there are a couple of functions for you to know about:
- To make the “X unread notes (go)” that you see (if you’re registered) in the left sidebar on the test site (it shows how many unread notes you have, and gives a link to your folders page), use the pn_private_notes() function. The syntax is pn_private_notes(message,tag);, where message is the string you want displayed for the number of unread messages, and tag is the text you want to use as the text for the link to take a user to their notes page. You can use a ‘#’ in the message field in the place you want the number of unread notes to show, and a ‘@’ where you want the link (and the tag) to display. As an example, I have this in my sidebar template on the test site:
<?php pn_private_notes(’# unread notes (@)’,'go’); ?>
- To make the ‘(send note)’ tag you see after registered users’ names in the comments on the test site, use the pn_send_note_url() function in your comments template. The syntax is pn_send_note_url(message,comment_id);, and the function returns an HTML anchor string. message is the string you want to display with the link to sent a note, and comment_id is the ID of the current comment (so the function can get the ID of the user who posted it). My usage in my comments template (in the loop to show comments) is:
<?php echo pn_send_note_url(’(send note)’,$comment->comment_ID); ?>
- Note: do NOT copy and paste the code above into your template. Doing so gives you funky HTML quote marks instead of normal single quotes, and even though they look right, the code won’t work. For the plugin to work properly, you need to type the code you want.
- I’m a new WordPress user, and don’t yet know all the terminology for its parts. Please overlook any gross misnames I did.
- This plugin is my first real attempt at playing with PHP and mySQL. I write C and Oracle code daily for a living, so the transition wasn’t too tough. However, it’s entirely likely that I did something stupid in the code, or made something harder than it needed to be, just out of a lack of PHP / mySQL knowledge.
[…] vituperation.com Offers an intriguing new plugin, which, if you have multiple authors/users, basically gives a PM (personal message) capability to WP. Could be useful for collaberative posts, I would think. Interesting. Curious if the new permissions I read about for 1.6 would play nice with such a plugin. […]
I’ve installed your plugin and all works as you said as far as the admin area. Everything is there, except it gives a database error, which, it looks like is there because there are no private notes to anyone.
However, I’m unable to place the code to show unread messages and the one to send the messages. I keep getting a parse error a couple of lines below where I place it. I’m not as knowledgeable with php as I’d like to be and usually manage to get errors figured out. I simply can’t figure this out. Can you help me?
New visitors: Deb found a couple of bugs in the plugin, which have been fixed. If you downloaded the plugin before the timestamp on this comment, you may want to re-download to make sure you have the latest release.
I just wanted to say, it was a pleasure working with you to get this fixed and the bugs ironed out, Fred. I love this plugin! It’s absolutely great!
Thanks so much for the great support!
[…] Heb je een blog waarop meerdere auteurs artikels kunnen posten, dan is de Private Notes plugin van Vituperation iets voor jou. Deze plugin zorgt ervoor dat geregistreerde gebruikers berichten naar elkaar kunnen sturen. […]
UPDATE
I found a bug in the way dates were computed on the purge of old notes, which led to saved notes getting purged faster than they should be (a lot faster, actually).
I’ve patched the code, so if you downloaded the plugin before the timestamp on this comment, you probably want to re-download it.
UPDATE
Private Notes plugin is now officially version 1.0.
No more beta.
I installed your plugin and got this error whengoing to “Manage–>Private notes” page. I am using php 5.
Fatal error: Cannot redeclare pn_admin_url() (previously declared in F:\php-web\wordpress\wp-content\plugins\private_notes\pn_admin.php:11) in F:\php-web\wordpress\wp-content\plugins\private_notes\pn_admin.php on line 14
Shen,
I’m not sure what could be causing it. I tried re-downloading and installing the plugin on my test site, and it did it with no problems. I’m running PHP 4.3.2, but I don’t know if that makes any difference.
What version of WordPress are you running?
I am running WordPress 1.5.2. I did some research and found out it is related to PHP 5. But I don’t know how to fix it.
Thanks a lot for your response.
Shen
Yeah, so I’m getting a similar error with just a vanilla install:
Fatal error: Cannot redeclare pn_script() (previously declared in /home/rmfoblog/public_html/daniel/wp-content/plugins/private_notes/private_notes.php:19) in /home/rmfoblog/public_html/daniel/wp-content/plugins/private_notes/private_notes.php on line 17
dan (any ideas?)
I just wanted to say thank you for writing this plugin. It’s exactly what I was looking for, and works wonderfully! Great job!
Wow. This was the simpliest to install plugin with no errors. It works great, thanks!
Fred could you help us out which code to use in the sidebar template please?
When I use this in my template: pn_private_notes(’# unread notes (@)’,’go’);
Just that text shows up, and when I use this:
I get a Parse error: parse error, unexpected ‘;’
Any help will be appreciated.
Cheers
/Aaron
Im getting the same problems as Aaaron. Im not very good (at all really) with PHP, so Im sure its an error on my part, but Im not sure what to do to fix it. Please help
Hi!
Your Private Notes 1.0 is working after i make an uppgrade to Wordpress 2.0 on my homepage!
cheers!
:-))
Yeah, same problem as Twig and Aaron. Bummer.
Note for anyone who’s read all the comments. All the problems listed above with errors and things not showing up were the result of copying and pasting the code listed in the post. If you copy and paste, you get weird HTML quotes instead of plain ones, and PHP doesn’t like that. I’ve updated the post to reflect this.
Great plugin, but I miss two things to make it perfect:
- when using the special functions pn_private_notes and pn_send_note_url they can only work properly when the user has a high enough user level to be allowed to send/receive notes. Otherwise the options (send and # of unread notes) are displayed, even if the user can’t use the function and gets an error when trying
- It would be great to have an email notification
[…] I’ve add two new plugins I hope you like them. One it the poll plugin. You can have a poll on your blog and people can vote on stuff.. The other one is a Private Notes which is like PM’s on a Forum [link] […]
Twig and Aaron, you need to use this text:
That should work. Fred, you need to put the PHP tags on the examples under the installation notes.
Thanks, and wonderful plugin!!!
Hmm, it wont let me put the PHP tag in.
Basically, you need to use this, but with the starting character the other way round, so as to create a full PHP tag.
>?PHP pn_private_notes(’# unread notes (@)’,’go’); ?>
Hello, I’m using WordPress 2.0.2 and I downloaded the tar.gz file from this site and have not edited anything. I have installed/activated the plugin and done the manage thing. I am getting this type of “Cannot redeclare” error all over the place.
Fatal error: Cannot redeclare pn_script() (previously declared in d:\websites\wordpress\wp-content\plugins\private_notes\private_notes.php:19) in d:\websites\wordpress\wp-content\plugins\private_notes\private_notes.php on line 17
Can you please help.
Thanks,
=-)
Update: My problem was a cross platform issue.
Solution;
I replaced the line
$plugin_dir = “private_notes/”;
with
$plugin_dir = “private_notes”.DIRECTORY_SEPARATOR;
Hope this helps anyone else with the same problem.
=-)
Tom Beynon, i included that code in my template, but it does not work…
error…
Parse error: parse error, unexpected ‘;’ in
anyone have any ideas?
When i switch pages, the Send Messages link has dissappered…
Does anyone know why this is happening??
Josh’s problems are resolved.
Thanks for a very nice plugin! Private notes works great on my newly installed windows system after using the .DIRECTORY_SEPARATOR-trick mentioned above and changing the “User level for sending/receiving notes” to zero.
I have two suggestions for next version:
If a user sends a note to a nonexisting username the message is lost. Hitting “Back” works, but for people that are less familiar with computers…
It would be great if the senders copy of the mail could be marked as read when the recipient opens the note.
I am new to php and Wordpress. If I knew a little more I would make a drop down-box with the last 15 users online, to choose from as recipients for new notes…
I agree it is a very nice plugin, but for some reason it didn’t automatically create the database tables. I created them manually by copying the sql from pn_db.php. I’d like to see the option of having a look up user feature when creating a new note. Thanks for the great plug in!
hi, seems to be a cool plugin - but is there a download-link?
Klaus:
A few paragraphs under the screen shots, there’s a link.
thanks fred! found it actually!
i guess the errors like “Fatal error: Cannot redeclare pn_script() (previously declared in d:\websites\wordpress\wp-content\plugins\private_notes\private_notes.php:19) in d:\websites\wordpress\wp-content\plugins\private_notes\private_notes.php on line 17″ are resulting from the global declared var “$plugin_dir”. a lot of people have set “register_globals=off” in php (disabled per default since 4.22 anyway), so maybe it’s better to choose public or an extra function like get_plugin_dir(). what u think ?
Hi Fred.
I was using your plugin on a customers site. I didn’t personally see much need since I was using XDTalk messenger plugin,, UNTIL… a light came on in my head while working on a Help Desk solution.. PN already has the framework for an excellent HelpDesk. Now bare with me this all just came to me.. Out of the box the main thing that would need to be changed is the Global Settings. They should be global for everyone BUT Admins. Admins should not have limits since they will have to have many folders and allow many messages. Purging messages should be optional. Even if I set it to lets say a year what if the customer is with me longer?
Then we need to set a tracking number, easy enough, and email notification to responses and one more table, status. Priority isn’t really needed since everyone thinks there problem is high.
Like I said this all just hit me so if I sound like a rambling man, I am one with too much wine on a Saturday night. But I think if I play with creating the right tables for now I can begin a framework from what you have already started.
But my first thing is to change the Send Message “To” field on the compose page to a dropdown. But then again it would have to be hidden for everyone else or a second set of choices ie.. Sales, Support.. Lot of work to do but it can be done..
thanks for reading my rambling.
Everything working fine with Wordpress 2.04 with me, but just one thing my register are not able to
create a folder getting error message of Error: Cannot create folder named ‘’
I’ve got the coding for the sidebar working properly but I keep getting an error for the send message link code.
WordPress database error: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘>comment_ID’ at line 3]
SELECT user_id FROM wp_comments WHERE comment_ID = $comment->comment_ID
I am having the same proble as Joe.
WordPress database error: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘>comment_ID’ at line 3]
SELECT user_id FROM wp_comments WHERE comment_ID = $comment->comment_ID
Vincent,
I’m not really working on the plugin now, I’m renovating an old house which eats up all my spare time. This was more or less designed to be a simple plugin so I could get some practice in PHP.
That said, back in January one of the users of the plugin modified it to make the “send to” a list box that you can pick a person from, instead of having to type in their user name. I’ve pulled his changes into the plugin and put them up on the site as version 1.1.
You can download that from here:
http://www.vituperation.com/pnotes/pnotes_1.1.tar.gz
Note: version 1.1 should be considered BETA software and isn’t supported by me. It works for me, but that doesn’t mean it’ll work for anyone else. Hopefully once I have some free time I can update the plugin and add some more niceties.
Hi,
I installed the Private Notes plugin (version 1.1) onto my blog and I think everything is working right! I tested it and it works wonderfully! The only thing that doesn’t work is the functinality described in Fred’s post right above mine, in which he talks about version 1.1. I don’t see a “send to” box available. This seems like a great idea. Am I doing something wrong? Is there anything I need to configure it to work?
Thanks for your help!
Brad
Can anyone give me ideas , i might get free time in the future and want to give it for wordpress …
any idea ?
i want idea from simple thing to mid … 1-2 hours –> 8-10 hours .
post your ideas…
Does anyone know the name of the wordpress plugin that creates a list of your posts in a category instead of just displaying them one after the other? I want it so that when someone clicks on a category they just get a list of posts from that category.
I'm sure Ive seen one…and sifting through the WP site is a nightmare
@Melvin: ??? (what does that have to do with this plugin?)
@Joe: ??? (what does that have to do with this plugin?)
@Plugin Author - Fred:
Thanks a lot for the Plugin! My first test-installation worked like a charm. I spent a few hours making it translateable through WordPress’s integrated gettext-functionality. For the moment i have your original English Version and my translated German Version. Unfortunately, i didn’t see your comment (#39) so i did the translation for v1.0 Maybe i also do some theme’ing now. So feel free to contact me via Mail or Skype (iRoybot), and i send you the revisited Version of your Plugin - and maybe you could assist with some coding. Much appreciated, Erik
@Anyone else: If anyone would like to translate the Plugin into their own language (other than english or german) i would send you the master.po so you can do the translation with PoEdit in about 5 minutes of work.
I am getting the same error as Joe and Ahmed when trying to add a ’send note’ link.
Also, when installing the new 1.1 version with the list of users, I am only given the option to send mail to Authors, not contributors? Am I missing a setting somewhere?
Re: my second point above. The user level for sending/receiving was 1. Changed it to 0 and the list works.
I still have the MySQL error though.
What I want to do on my blog, is every few hours take the oldest post and move it to the
front of the queue, all automatically. Anyone know if there is a plugin that can do this or
a simple way to set up another plugin to do this (use my own feed perhaps)?
Thanks.
[…] More than a year ago, Fred of vituperation wrote a plugin to use private notes under wordpress. After installing this plugin on ochblog, pretty soon some users complained about errors they where getting. Funny thing was, not all users head this problem. Now, usually on ochblog, someone else installs the the plugins, and if there are any problems with it, he tries to solve these by himself. If he can’t get a grab on it, he calls me, after wich I dig into it. This usually results into some very onorthodox hacking of source codes. […]
Here’s a translated (made ready for PoEdit and load_plugin_textdomain) Version of the Plugin 1.0
http://contactsheet.de/postings/private_notes_multilingual.zip Feel free to send me your localizations in whatever language. Appreciated.
very nice plugin, thanks for the work.
One thing though, I did notice that with WordpressMU, the user settings page is not “profile.php” but instead it’s “users.php”, so installing this plugin on wordpressMU will cause all similar links to break.
A simple fix:
In private_notes.php, function pn_script(), where it says
return get_option(’siteurl’) . “/wp-admin/profile.php?page=$plugin_dir” .
basename(__FILE__);
Change the “profile.php” part to “users.php”, so it looks like
return get_option(’siteurl’) . “/wp-admin/users.php?page=$plugin_dir” .
basename(__FILE__);
Then it should work perfectly under WordpressMU
Just thought you’d like to know (if you didn’t already
).
[…] More than a year ago, Fred of vituperation wrote a plugin to use private notes under wordpress. After installing this plugin on ochblog, pretty soon some users complained about errors they where getting. The funny thing was that not all users had this problem, most of them where fine. Now, usually on ochblog, someone else installs the the plugins, and if there are any problems with it, he tries to solve these by himself. If he can’t get a grab on it, he calls me, after wich I dig into it. This usually results into some very onorthodox hacking of source codes. […]
[…] Private Notes plugin for WordPress provides registered users on a site with the ability to send messages to one another. […]
[…] Private Notes Plugin for WordPress provides registered users on a site with the ability to send messages to one another. This Plugin is released by Vituperation and you can view the details of this plugin here Organize Series Plugin […]
[…] I know you guys want to connect with each other, but don’t want to bother with spam and all that good stuff, so I installed a new “Private Messaging” plugin which you can use to send quick notes to each other if you wish. And if you are logged in, you can quickly see how many messages are waiting for you; look at the sidebar below the “Meta” block and you will see something like this: […]
I have the “fatal error” mentioned some comments before, I have global variables off, what could I do to solve the problem?
I’m using WP 2.1 and have it installed locally on my Mac while I do the dev work. I installed this plugin and added the template tags, but when I click the send note link next to the person’s name, it takes me to the dashboard page and displays the following error:
*
Fatal error: Cannot redeclare pn_script() (previously declared in /Library/WebServer/Documents/OPA/wp-content/plugins/private_notes/private_notes.php:19) in /Library/WebServer/Documents/OPA/wp-content/plugins/private_notes/private_notes.php on line 17