2010-07-28 23:28:39 +00:00
< ? php
2010-12-10 12:04:35 +00:00
/**
* module : invite . php
*
* send email invitations to join social network
*
*/
2010-07-28 23:28:39 +00:00
function invite_post ( & $a ) {
2010-12-10 12:04:35 +00:00
2010-07-28 23:28:39 +00:00
if ( ! local_user ()) {
notice ( t ( 'Permission denied.' ) . EOL );
return ;
}
2013-01-25 21:55:42 +00:00
check_form_security_token_redirectOnErr ( '/' , 'send_invite' );
$max_invites = intval ( get_config ( 'system' , 'max_invites' ));
if ( ! $max_invites )
$max_invites = 50 ;
$current_invites = intval ( get_pconfig ( local_user (), 'system' , 'sent_invites' ));
if ( $current_invites > $max_invites ) {
notice ( t ( 'Total invitation limit exceeded.' ) . EOL );
return ;
};
2010-07-28 23:28:39 +00:00
2010-12-10 12:04:35 +00:00
$recips = (( x ( $_POST , 'recipients' )) ? explode ( " \n " , $_POST [ 'recipients' ]) : array ());
$message = (( x ( $_POST , 'message' )) ? notags ( trim ( $_POST [ 'message' ])) : '' );
2010-07-28 23:28:39 +00:00
$total = 0 ;
2011-07-18 04:12:31 +00:00
if ( get_config ( 'system' , 'invitation_only' )) {
2011-07-17 23:08:47 +00:00
$invonly = true ;
$x = get_pconfig ( local_user (), 'system' , 'invites_remaining' );
if (( ! $x ) && ( ! is_site_admin ()))
return ;
}
2010-07-28 23:28:39 +00:00
foreach ( $recips as $recip ) {
$recip = trim ( $recip );
2013-12-26 01:08:32 +00:00
if ( ! $recip )
continue ;
2010-07-28 23:28:39 +00:00
2010-11-14 08:32:31 +00:00
if ( ! valid_email ( $recip )) {
2011-03-10 23:22:21 +00:00
notice ( sprintf ( t ( '%s : Not a valid email address.' ), $recip ) . EOL );
2010-07-28 23:28:39 +00:00
continue ;
}
2011-07-17 23:08:47 +00:00
if ( $invonly && ( $x || is_site_admin ())) {
$code = autoname ( 8 ) . srand ( 1000 , 9999 );
$nmessage = str_replace ( '$invite_code' , $code , $message );
2011-07-18 04:12:31 +00:00
$r = q ( " INSERT INTO `register` (`hash`,`created`) VALUES ('%s', '%s') " ,
dbesc ( $code ),
dbesc ( datetime_convert ())
);
2011-07-17 23:08:47 +00:00
if ( ! is_site_admin ()) {
$x -- ;
if ( $x >= 0 )
2011-07-18 04:12:31 +00:00
set_pconfig ( local_user (), 'system' , 'invites_remaining' , $x );
2011-07-17 23:08:47 +00:00
else
return ;
}
}
else
$nmessage = $message ;
2010-07-28 23:28:39 +00:00
2013-08-02 10:45:40 +00:00
$account = $a -> get_account ();
2013-04-15 05:44:11 +00:00
$res = mail ( $recip , sprintf ( t ( 'Please join us on Red' ), $a -> config [ 'sitename' ]),
2011-07-17 23:08:47 +00:00
$nmessage ,
2013-08-02 10:45:40 +00:00
" From: " . $account [ 'account_email' ] . " \n "
2011-04-15 00:13:13 +00:00
. 'Content-type: text/plain; charset=UTF-8' . " \n "
. 'Content-transfer-encoding: 8bit' );
2010-07-28 23:28:39 +00:00
if ( $res ) {
$total ++ ;
2013-01-25 21:55:42 +00:00
$current_invites ++ ;
set_pconfig ( local_user (), 'system' , 'sent_invites' , $current_invites );
if ( $current_invites > $max_invites ) {
notice ( t ( 'Invitation limit exceeded. Please contact your site administrator.' ) . EOL );
return ;
}
2010-07-28 23:28:39 +00:00
}
else {
2011-03-10 23:22:21 +00:00
notice ( sprintf ( t ( '%s : Message delivery failed.' ), $recip ) . EOL );
2010-07-28 23:28:39 +00:00
}
}
2011-03-13 12:50:44 +00:00
notice ( sprintf ( tt ( " %d message sent. " , " %d messages sent. " , $total ) , $total ) . EOL );
2010-09-09 03:14:17 +00:00
return ;
2010-07-28 23:28:39 +00:00
}
function invite_content ( & $a ) {
2010-12-10 12:04:35 +00:00
2010-07-28 23:28:39 +00:00
if ( ! local_user ()) {
notice ( t ( 'Permission denied.' ) . EOL );
return ;
}
2011-05-11 11:37:13 +00:00
$tpl = get_markup_template ( 'invite.tpl' );
2011-07-17 23:08:47 +00:00
$invonly = false ;
2011-07-18 04:12:31 +00:00
if ( get_config ( 'system' , 'invitation_only' )) {
2011-07-17 23:08:47 +00:00
$invonly = true ;
$x = get_pconfig ( local_user (), 'system' , 'invites_remaining' );
if (( ! $x ) && ( ! is_site_admin ())) {
notice ( t ( 'You have no more invitations available' ) . EOL );
return '' ;
}
}
2013-08-02 10:45:40 +00:00
// $dirloc = get_config('system','directory_submit_url');
// if(strlen($dirloc)) {
// if($a->config['system']['register_policy'] == REGISTER_CLOSED)
// $linktxt = sprintf( t('Visit %s for a list of public sites that you can join. Friendica members on other sites can all connect with each other, as well as with members of many other social networks.'), dirname($dirloc) . '/siteinfo');
// elseif($a->config['system']['register_policy'] != REGISTER_CLOSED)
// $linktxt = sprintf( t('To accept this invitation, please visit and register at %s or any other public Friendica website.'), $a->get_baseurl())
// . "\r\n" . "\r\n" . sprintf( t('Friendica sites all inter-connect to create a huge privacy-enhanced social web that is owned and controlled by its members. They can also connect with many traditional social networks. See %s for a list of alternate Friendica sites you can join.'),dirname($dirloc) . '/siteinfo');
// }
// else {
// $o = t('Our apologies. This system is not currently configured to connect with other public sites or invite members.');
// return $o;
// }
$ob = $a -> get_observer ();
if ( ! $ob )
2012-03-25 06:04:18 +00:00
return $o ;
2013-08-02 10:45:40 +00:00
$channel = $a -> get_channel ();
2011-07-17 23:08:47 +00:00
2010-07-28 23:28:39 +00:00
$o = replace_macros ( $tpl , array (
2013-01-25 21:55:42 +00:00
'$form_security_token' => get_form_security_token ( " send_invite " ),
2010-07-28 23:28:39 +00:00
'$invite' => t ( 'Send invitations' ),
'$addr_text' => t ( 'Enter email addresses, one per line:' ),
'$msg_text' => t ( 'Your message:' ),
2013-11-02 22:45:38 +00:00
'$default_message' => t ( 'You are cordially invited to join me and some other close friends on the Red Matrix - a revolutionary new decentralised communication and information tool.' ) . " \r \n " . " \r \n "
2012-03-25 06:04:18 +00:00
. $linktxt
2013-08-02 10:45:40 +00:00
. (( $invonly ) ? " \r \n " . " \r \n " . t ( 'You will need to supply this invitation code: $invite_code' ) . " \r \n " . " \r \n " : '' )
. t ( 'Please visit my channel at' )
. " \r \n " . " \r \n "
. z_root () . " /channel/ " . $channel [ 'channel_address' ]
. " \r \n " . " \r \n "
2013-11-02 22:45:38 +00:00
. t ( 'Once you have registered (on ANY Red Matrix site - they are all inter-connected), please connect with my Red Matrix channel address:' )
2013-08-02 10:45:40 +00:00
. " \r \n " . " \r \n " . $ob [ 'xchan_addr' ]
2013-11-15 02:08:05 +00:00
. " \r \n " . " \r \n " . t ( 'Click the [Register] link on the following page to join.' ) . " \r \n " . " \r \n " . z_root ()
2013-08-02 10:45:40 +00:00
. " \r \n " . " \r \n " . t ( 'For more information about the Red Matrix Project and why it has the potential to change the internet as we know it, please visit http://getzot.com' ) . " \r \n " . " \r \n " ,
2010-07-28 23:28:39 +00:00
'$submit' => t ( 'Submit' )
));
return $o ;
}