' . '
' . '

' . __( 'Add a new affiliate', AFFILIATES_PLUGIN_DOMAIN ) . '

' . '
' . '
' . '
' . '
' . '' . '' . '
' . '
' . '' . '' . '' . __( "If a valid Username is specified and no email is given, the user's email address will be used automatically.", AFFILIATES_PLUGIN_DOMAIN ) . '' . '
' . '
' . '' . '' . '
' . '
' . '' . '' . '
' . '
' . '' . '' . '
' . '
' . wp_nonce_field( plugin_basename( __FILE__ ), AFFILIATES_ADMIN_AFFILIATES_NONCE, true, false ) . '' . '' . '' . __( 'Cancel', AFFILIATES_PLUGIN_DOMAIN ) . '' . '
' . '
' . // .affiliate.new '
' . ''; // .manage-affiliates echo $output; affiliates_footer(); } // function affiliates_admin_affiliates_add /** * Handle add affiliate form submission. */ function affiliates_admin_affiliates_add_submit() { global $wpdb; $result = true; if ( !current_user_can( AFFILIATES_ADMINISTER_AFFILIATES ) ) { wp_die( __( 'Access denied.', AFFILIATES_PLUGIN_DOMAIN ) ); } if ( !wp_verify_nonce( $_POST[AFFILIATES_ADMIN_AFFILIATES_NONCE], plugin_basename( __FILE__ ) ) ) { wp_die( __( 'Access denied.', AFFILIATES_PLUGIN_DOMAIN ) ); } $affiliates_table = _affiliates_get_tablename( 'affiliates' ); $affiliates_users_table = _affiliates_get_tablename( 'affiliates_users' ); $name = isset( $_POST['name-field'] ) ? $_POST['name-field'] : null; if ( !empty( $name ) ) { // Note the trickery (*) that has to be used because wpdb::prepare() is not // able to handle null values. // @see http://core.trac.wordpress.org/ticket/11622 // @see http://core.trac.wordpress.org/ticket/12819 $data = array( 'name' => $name ); $formats = array( '%s' ); $email = trim( $_POST['email-field'] ); if ( is_email( $email ) ) { $data['email'] = $email; $formats[] = '%s'; } else { $data['email'] = null; // (*) $formats[] = 'NULL'; // (*) } $from_date = $_POST['from-date-field']; if ( empty( $from_date ) ) { $from_date = date( 'Y-m-d', time() ); } else { $from_date = date( 'Y-m-d', strtotime( $from_date ) ); } $data['from_date'] = $from_date; $formats[] = '%s'; $thru_date = $_POST['thru-date-field']; if ( !empty( $thru_date ) && strtotime( $thru_date ) < strtotime( $from_date ) ) { // thru_date is before from_date => set to null $thru_date = null; } if ( !empty( $thru_date ) ) { $thru_date = date( 'Y-m-d', strtotime( $thru_date ) ); $data['thru_date'] = $thru_date; $formats[] = '%s'; } else { $data['thru_date'] = null; // (*) $formats[] = 'NULL'; // (*) } $data_ = array(); $formats_ = array(); foreach( $data as $key => $value ) { // (*) if ( $value ) { $data_[$key] = $value; } } foreach( $formats as $format ) { // (*) if ( $format != "NULL" ) { $formats_[] = $format; } } if ( $wpdb->insert( $affiliates_table, $data_, $formats_ ) ) { $affiliate_id = $wpdb->get_var( $wpdb->prepare( "SELECT LAST_INSERT_ID()" ) ); } // user association $new_associated_user_login = trim( $_POST['user-field'] ); // new association if ( !empty( $affiliate_id ) && !empty( $new_associated_user_login ) ) { $new_associated_user = get_user_by( 'login', $new_associated_user_login ); if ( !empty( $new_associated_user ) ) { if ( $wpdb->query( $wpdb->prepare( "INSERT INTO $affiliates_users_table SET affiliate_id = %d, user_id = %d", intval( $affiliate_id ), intval( $new_associated_user->ID ) ) ) ) { if ( empty( $email ) && !empty( $new_associated_user->user_email ) ) { $wpdb->query( $wpdb->prepare( "UPDATE $affiliates_table SET email = %s WHERE affiliate_id = %d", $new_associated_user->user_email, $affiliate_id ) ); } } } } } else { $result = false; } return $result; } // function affiliates_admin_affiliates_add_submit ?>