summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordonncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36>2005-09-12 16:06:34 +0000
committerdonncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36>2005-09-12 16:06:34 +0000
commit79fa7d7d8fd50d50e95675f2fd66ee255e90c196 (patch)
treeb713e3630986ccd4e1cb84bc39fbb5e9b741ecb4
parentb9c5f5c91bad50c9dc4c89053d981b67f2724c8a (diff)
downloadwordpress-mu-79fa7d7d8fd50d50e95675f2fd66ee255e90c196.tar.gz
wordpress-mu-79fa7d7d8fd50d50e95675f2fd66ee255e90c196.tar.xz
wordpress-mu-79fa7d7d8fd50d50e95675f2fd66ee255e90c196.zip
Added invite timeout and delete links
git-svn-id: http://svn.automattic.com/wordpress-mu/trunk@317 7be80a69-a1ef-0310-a953-fb0f7c49ff36
-rw-r--r--wp-inst/wp-admin/invites.php25
-rw-r--r--wp-inst/wp-content/mu-plugins/invites.php59
2 files changed, 74 insertions, 10 deletions
diff --git a/wp-inst/wp-admin/invites.php b/wp-inst/wp-admin/invites.php
index ffa230d..0c33c21 100644
--- a/wp-inst/wp-admin/invites.php
+++ b/wp-inst/wp-admin/invites.php
@@ -46,6 +46,7 @@ if( $_POST[ 'action' ] == 'send' ) {
$wpdb->query( "INSERT INTO ".$wpdb->usermeta." ( `umeta_id` , `user_id` , `meta_key` , `meta_value` ) VALUES ( NULL, '0', '".md5( strtolower( $email ) )."_invited_by' , '$user_ID')" );
$wpdb->query( "INSERT INTO ".$wpdb->usermeta." ( `umeta_id` , `user_id` , `meta_key` , `meta_value` ) VALUES ( NULL, '0', '".md5( strtolower( $email ) )."_to_email' , '{$_POST[ 'email' ]}')" );
$wpdb->query( "INSERT INTO ".$wpdb->usermeta." ( `umeta_id` , `user_id` , `meta_key` , `meta_value` ) VALUES ( NULL, '0', '".md5( strtolower( $email ) )."_to_name' , '{$_POST[ 'fname' ]}')" );
+ $wpdb->query( "INSERT INTO ".$wpdb->usermeta." ( `umeta_id` , `user_id` , `meta_key` , `meta_value` ) VALUES ( NULL, '0', '".md5( strtolower( $email ) )."_invite_timestamp' , UNIX_TIMESTAMP())" );
if( $_POST[ 'add_blog_to_blogroll' ] == '1' ) {
$t = array( "blogid" => $wpdb->blogid, "userid" => get_current_user_id() );
$wpdb->query( "INSERT INTO ".$wpdb->usermeta." ( `umeta_id` , `user_id` , `meta_key` , `meta_value` ) VALUES ( NULL, '0', '".md5( strtolower( $email ) )."_add_to_blogroll' , '" . serialize( $t ) . "')" );
@@ -66,7 +67,13 @@ if( $_POST[ 'action' ] == 'send' ) {
header( "Location: ".get_settings( "siteurl" )."/wp-admin/invites.php?result=completeform" );
exit;
}
-} elseif( $_POST[ 'personalmessage' ] == '' ) {
+} elseif( $_GET[ 'action' ] == 'deleteinvite' ) {
+ delete_invite( md5( $_GET[ 'inviteemail' ] ) );
+ header( "Location: ".get_settings( "siteurl" )."/wp-admin/invites.php?result=deletedinvite" );
+ exit;
+}
+
+if( $_POST[ 'personalmessage' ] == '' ) {
if( $current_site->site_name != '' ) {
$site_name = $current_site;
} else {
@@ -90,6 +97,8 @@ $wpdb->escape( $_GET[ 'to' ] ) ) ?></strong></p></div><?php
$wpdb->escape( $_GET[ 'to' ] ) ) ?></strong></p></div><?php
} elseif (isset($_GET['result'] ) && $_GET['result'] == 'completeform' ) {
?><div id="sent" class="updated fade"><p><strong><?php _e("Please complete the form.") ?></strong></p></div><?php
+} elseif (isset($_GET['result'] ) && $_GET['result'] == 'deletedinvite' ) {
+ ?><div id="sent" class="updated fade"><p><strong><?php _e("Invite Deleted.") ?></strong></p></div><?php
}
if( $invites_left != false || is_site_admin() == true ) {
?>
@@ -164,7 +173,19 @@ if( $invites_list != '' )
if( $invited_user_blog != '' ) {
print "<tr><td>$val</td><td>$invited_user_login</td><td><a href='http://{$invited_user_blog}'>http://$invited_user_blog</a></td></tr>";
} else {
- print "<tr><td>$val</td><td>$invited_user_login</td><td><em>Invite Not Used Yet</em></td></tr>";
+ $invited_time = $wpdb->get_var( "SELECT meta_value FROM $wpdb->usermeta WHERE meta_key = '" . md5( $val ) . "_invite_timestamp'" );
+ if( $invited_time ) {
+ $days_left = 7 - intval( ( time() - $invited_time ) / 86400 );
+ print "<tr><td>$val</td><td>$invited_user_login</td><td><em>Invite Not Used Yet</em> ($days_left days left)";
+ if ( function_exists('delete_invite') )
+ print " (<a href='?action=deleteinvite&inviteemail=" . urlencode( $val ) . "'>Delete</a>)";
+ print "</td></tr>";
+ } else {
+ print "<tr><td>$val</td><td>$invited_user_login</td><td><em>Invite Not Used Yet</em>";
+ if ( function_exists('delete_invite') )
+ print " (<a href='?action=deleteinvite&inviteemail=" . urlencode( $val ) . "'>Delete</a>)";
+ print "</td></tr>";
+ }
}
}
}
diff --git a/wp-inst/wp-content/mu-plugins/invites.php b/wp-inst/wp-content/mu-plugins/invites.php
index 4f15c04..1687a87 100644
--- a/wp-inst/wp-content/mu-plugins/invites.php
+++ b/wp-inst/wp-content/mu-plugins/invites.php
@@ -127,10 +127,7 @@ add_action('newblogform', 'invites_add_field');
function invites_cleanup_db( $val ) {
global $wpdb, $wpmuBaseTablePrefix, $url, $weblog_title;
if( isset( $_POST[ 'u' ] ) ) {
- $query = "DELETE FROM ".$wpdb->usermeta."
- WHERE meta_key = 'invite'
- AND meta_value = '".$_POST[ 'u' ]."'";
- $wpdb->query( $query );
+ $wpdb->query( "DELETE FROM ".$wpdb->usermeta." WHERE meta_key = 'invite' AND meta_value = '".$_POST[ 'u' ]."'" );
$wpdb->query( "DELETE FROM ".$wpdb->usermeta." WHERE meta_key = '{$_POST[ 'u' ]}_to_email'" );
$wpdb->query( "DELETE FROM ".$wpdb->usermeta." WHERE meta_key = '{$_POST[ 'u' ]}_to_name'" );
@@ -159,11 +156,11 @@ add_action('newblogfinished', 'invites_cleanup_db');
*/
if( is_site_admin() ) {
- add_action('admin_menu', 'admin_menu');
- add_action('admin_footer', 'admin_footer');
+ add_action('admin_menu', 'invites_admin_menu');
+ add_action('admin_footer', 'invites_admin_footer');
}
-function admin_menu() {
+function invites_admin_menu() {
$pfile = basename(dirname(__FILE__)) . '/' . basename(__FILE__);
/*
$invites_left = get_option( "invites_left" );
@@ -177,7 +174,7 @@ function admin_menu() {
add_submenu_page('wpmu-admin.php', 'Invites', 'Invites', 0, $pfile, 'invites_admin_content');
}
-function admin_footer() {
+function invites_admin_footer() {
}
add_action('admin_footer', 'timed_invites');
@@ -201,6 +198,52 @@ function timed_invites() {
}
}
+add_action('admin_footer', 'expire_old_invites');
+
+function expire_old_invites() {
+ global $wpdb;
+
+ $chance = mt_rand( 0, 10 );
+ if( $chance == '5' ) {
+ $invites = $wpdb->get_results( "SELECT * FROM {$wpdb->usermeta} WHERE meta_key like '%_invite_timestamp' AND ( TO_DAYS( NOW() ) - TO_DAYS( FROM_UNIXTIME( meta_value ) ) ) >= " . intval( get_site_option( 'invite_time_limit', 7 ) ) );
+ if( is_array( $invites ) ) {
+ while( list( $key, $val ) = each( $invites ) ) {
+ $email_md5 = substr( $val->meta_key, 0, strpos( $val->meta_key, "_invite_timestamp" ) );
+ delete_invite( $email_md5 );
+ $uid = $wpdb->get_var( "SELECT meta_value FROM {$wpdb->usermeta} WHERE meta_key = '{$email_md5}_invited_by'" );
+ if( $uid ) {
+ $invites_left = get_usermeta( $uid, "invites_left" );
+ if( $invites_left < get_site_option( "invites_per_user" ) )
+ update_usermeta( $uid, "invites_left", $invites_left++ );
+ }
+ }
+ }
+ }
+
+}
+
+function delete_invite( $uid ) {
+ global $wpdb;
+
+ $email = $wpdb->get_var( "SELECT meta_value FROM ".$wpdb->usermeta." WHERE meta_key = '{$uid}_to_email'" );
+ if( $email ) {
+ $invited_by = $wpdb->get_var( "SELECT meta_value FROM ".$wpdb->usermeta." WHERE meta_key = '{$uid}_invited_by'" );
+ if( $invited_by ) {
+ $invites_list = get_usermeta( $invited_by, "invites_list" );
+ if( $invites_list ) {
+ $invites_list = str_replace( $email . " ", "", $invites_list );
+ update_usermeta( $invited_by, "invites_list", $invites_list );
+ }
+ }
+ }
+ $wpdb->query( "DELETE FROM ".$wpdb->usermeta." WHERE meta_key = 'invite' AND meta_value = '$uid'" );
+ $wpdb->query( "DELETE FROM ".$wpdb->usermeta." WHERE meta_key = '{$uid}_to_email'" );
+ $wpdb->query( "DELETE FROM ".$wpdb->usermeta." WHERE meta_key = '{$uid}_to_name'" );
+ $wpdb->query( "DELETE FROM ".$wpdb->usermeta." WHERE meta_key = '{$uid}_add_to_blogroll'" );
+ $wpdb->query( "DELETE FROM ".$wpdb->usermeta." WHERE meta_key = '{$uid}_invited_by'" );
+ $wpdb->query( "DELETE FROM ".$wpdb->usermeta." WHERE meta_key = '{$uid}_invite_timestamp'" );
+}
+
function invites_admin_content() {
global $wpdb;