diff options
| author | donncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36> | 2005-09-12 16:06:34 +0000 |
|---|---|---|
| committer | donncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36> | 2005-09-12 16:06:34 +0000 |
| commit | 79fa7d7d8fd50d50e95675f2fd66ee255e90c196 (patch) | |
| tree | b713e3630986ccd4e1cb84bc39fbb5e9b741ecb4 | |
| parent | b9c5f5c91bad50c9dc4c89053d981b67f2724c8a (diff) | |
| download | wordpress-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.php | 25 | ||||
| -rw-r--r-- | wp-inst/wp-content/mu-plugins/invites.php | 59 |
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; |
