added invitation module

This commit is contained in:
Mike Macgirvin 2010-07-28 16:28:39 -07:00
parent eaf713bd15
commit 7feed93a56
3 changed files with 107 additions and 6 deletions

24
INSTALL
View file

@ -1,26 +1,38 @@
Installation guide Installation guide
The following notes apply to pre-alpha releases. Some manual installation is required at this time. The following notes apply to alpha/beta releases. Some manual installation is
required at this time.
1. Requirements 1. Requirements
- Apache with mod-rewrite enabled and "Options All" so you can use a local .htaccess file - Apache with mod-rewrite enabled and "Options All" so you can use a
- PHP > 5.1. The later the better. You'll need 5.3 for full openssl encryption support local .htaccess file
- PHP command line access with register_argc_argv set to true in the php.ini file - PHP > 5.1. The later the better. You'll need 5.3 for full openssl
encryption support
- PHP *command line* access with register_argc_argv set to true in the
php.ini file
- Mysql 5.x - Mysql 5.x
- cron
[Dreamhost.com offers all of the necessary hosting features at a
reasonable price. If your hosting provider doesn't allow Unix shell access,
you might have trouble getting everything to work.]
2. Edit htconfig.php and change system settings. Rename to .htconfig.php 2. Edit htconfig.php and change system settings. Rename to .htconfig.php
3. Import database.sql into your database with mysql command line or via phpmyadmin 3. Import database.sql into your database with mysql command line or via phpmyadmin
4. Import updates.sql to catch any late-breaking devel changes 4. Import updates.sql (if it exists) to catch any late-breaking devel changes
5. Put this directory into the root of your web server document area. 5. Put this directory into the root of your web server document area.
- To use a subdir of your main site, set the - To use a subdir of your main site, set the
config variable $a->path to the relative subdir config variable $a->path to the relative subdir
For example to use http://example.com/test - in .htconfig.php - for example to use http://example.com/test -
set $a->path to 'test'. set $a->path to 'test'.
- Everything will work much better if you can dedicate a domain
or subdomain so that you don't require an extra server path.
6. Navigate to your site with a web browser and register an account. 6. Navigate to your site with a web browser and register an account.
7. Set up a cron task to run "php include/poller.php http://my.domain.name" once every 5-10 minutes.

63
mod/invite.php Normal file
View file

@ -0,0 +1,63 @@
<?php
function invite_post(&$a) {
if(! local_user()) {
notice( t('Permission denied.') . EOL);
return;
}
$recips = explode("\n",$_POST['recipients']);
$message = $_POST['message'];
$total = 0;
foreach($recips as $recip) {
$recip = trim($recip);
if(!eregi('[A-Za-z0-9._%-]+@[A-Za-z0-9._%-]+\.[A-Za-z]{2,6}', $recip)) {
notice( $recip . t(' : ') . t('Not a valid email address.') . EOL);
continue;
}
$res = mail($recip, t('Please join my network on ') . $a->config['sitename'], $message, "From: " . $a->user['email']);
if($res) {
$total ++;
}
else {
notice( $recip . t(' : ') . t('Message delivery failed.') . EOL);
}
}
notice( $total . t(' messages sent.') . EOL);
}
function invite_content(&$a) {
if(! local_user()) {
notice( t('Permission denied.') . EOL);
return;
}
$tpl = file_get_contents('view/invite.tpl');
$o = replace_macros($tpl, array(
'$invite' => t('Send invitations'),
'$addr_text' => t('Enter email addresses, one per line:'),
'$msg_text' => t('Your message:'),
'$default_message' => t('Please join my social network on ') . $a->config['sitename'] . t("\r\n") . t("\r\n")
. t('To accept this invitation, please visit:') . t("\r\n") . t("\r\n") . $a->get_baseurl()
. t("\r\n") . t("\r\n") . t('Once you have registered, please make an introduction via my profile page at:')
. t("\r\n") . t("\r\n") . $a->get_baseurl() . '/profile/' . $a->user['nickname'] ,
'$submit' => t('Submit')
));
return $o;
}

26
view/invite.tpl Normal file
View file

@ -0,0 +1,26 @@
<form action="invite" method="post" id="invite-form" >
<div id="invite-wrapper">
<h3>$invite</h3>
<div id="invite-recipient-text">
$addr_text
</div>
<div id="invite-recipient-textarea">
<textarea id="invite-recipients" name="recipients" rows="8" cols="32" ></textarea>
</div>
<div id="invite-message-text">
$msg_text
</div>
<div id="invite-message-textarea">
<textarea id="invite-message" name="message" rows="10" cols="72" >$default_message</textarea>
</div>
<div id="invite-submit-wrapper">
<input type="submit" name="submit" value="$submit" />
</div>
</form>