Version Description
Improved the "Email Confirmation" feature and a few other functions. Added new options for the "Userlisting" feature (available in the Pro version of Profile Buildeer). Added translations: persian (thanks to Ali Mirzaei, info@alimir.ir)
Download this release
Release Info
| Developer | barinagabriel |
| Plugin | |
| Version | 1.1.47 |
| Comparing to | |
| See all releases | |
Code changes from version 1.1.46 to 1.1.47
- assets/css/back.end.css +3 -0
- assets/css/style.css +8 -0
- classes/class.email.confirmation.php +468 -0
- front-end/wppb.edit.profile.php +15 -18
- front-end/wppb.register.php +23 -306
- functions/email.confirmation.php +511 -0
- functions/functions.load.php +10 -46
- functions/general.settings.php +26 -5
- index.php +2 -2
- readme.txt +8 -3
assets/css/back.end.css
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
.users_page_unconfirmed_emails #separatorID, .users_page_unconfirmed_emails .unconfirmedEmailUsers, .users_page_unconfirmed_emails #unconfirmedEmailNo{
|
| 2 |
+
display:none;
|
| 3 |
+
}
|
assets/css/style.css
CHANGED
|
@@ -985,4 +985,12 @@ div.file_wrap {
|
|
| 985 |
position: relative;
|
| 986 |
left: -34px;
|
| 987 |
top:-42px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 988 |
}
|
| 985 |
position: relative;
|
| 986 |
left: -34px;
|
| 987 |
top:-42px;
|
| 988 |
+
}
|
| 989 |
+
|
| 990 |
+
#layoutNotice{
|
| 991 |
+
color:grey;
|
| 992 |
+
}
|
| 993 |
+
#layoutNoticeDiv{
|
| 994 |
+
position: relative;
|
| 995 |
+
bottom: -50px;
|
| 996 |
}
|
classes/class.email.confirmation.php
ADDED
|
@@ -0,0 +1,468 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/*
|
| 3 |
+
Code taken from: Custom List Table Example (plugin)
|
| 4 |
+
Author: Matt Van Andel
|
| 5 |
+
Author URI: http://www.mattvanandel.com
|
| 6 |
+
*/
|
| 7 |
+
|
| 8 |
+
/*************************** LOAD THE BASE CLASS *******************************
|
| 9 |
+
*******************************************************************************
|
| 10 |
+
* The WP_List_Table class isn't automatically available to plugins, so we need
|
| 11 |
+
* to check if it's available and load it if necessary.
|
| 12 |
+
*/
|
| 13 |
+
if(!class_exists('WP_List_Table')){
|
| 14 |
+
require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
|
| 15 |
+
}
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
/************************** CREATE A PACKAGE CLASS *****************************
|
| 21 |
+
*******************************************************************************
|
| 22 |
+
* Create a new list table package that extends the core WP_List_Table class.
|
| 23 |
+
* WP_List_Table contains most of the framework for generating the table, but we
|
| 24 |
+
* need to define and override some methods so that our data can be displayed
|
| 25 |
+
* exactly the way we need it to be.
|
| 26 |
+
*
|
| 27 |
+
* To display this example on a page, you will first need to instantiate the class,
|
| 28 |
+
* then call $yourInstance->prepare_items() to handle any data manipulation, then
|
| 29 |
+
* finally call $yourInstance->display() to render the table to the page.
|
| 30 |
+
*
|
| 31 |
+
*/
|
| 32 |
+
class wpp_list_unfonfirmed_email_table extends WP_List_Table {
|
| 33 |
+
|
| 34 |
+
/** ************************************************************************
|
| 35 |
+
* REQUIRED. Set up a constructor that references the parent constructor. We
|
| 36 |
+
* use the parent reference to set some default configs.
|
| 37 |
+
***************************************************************************/
|
| 38 |
+
function __construct(){
|
| 39 |
+
global $status, $page;
|
| 40 |
+
global $wpdb;
|
| 41 |
+
|
| 42 |
+
//Set parent defaults
|
| 43 |
+
parent::__construct( array(
|
| 44 |
+
'singular' => 'user', //singular name of the listed records
|
| 45 |
+
'plural' => 'users', //plural name of the listed records
|
| 46 |
+
'ajax' => false //does this table support ajax?
|
| 47 |
+
) );
|
| 48 |
+
|
| 49 |
+
}
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
/** ************************************************************************
|
| 53 |
+
* Recommended. This method is called when the parent class can't find a method
|
| 54 |
+
* specifically build for a given column. Generally, it's recommended to include
|
| 55 |
+
* one method for each column you want to render, keeping your package class
|
| 56 |
+
* neat and organized. For example, if the class needs to process a column
|
| 57 |
+
* named 'username', it would first see if a method named $this->column_title()
|
| 58 |
+
* exists - if it does, that method will be used. If it doesn't, this one will
|
| 59 |
+
* be used. Generally, you should try to use custom column methods as much as
|
| 60 |
+
* possible.
|
| 61 |
+
*
|
| 62 |
+
* Since we have defined a column_title() method later on, this method doesn't
|
| 63 |
+
* need to concern itself with any column with a name of 'username'. Instead, it
|
| 64 |
+
* needs to handle everything else.
|
| 65 |
+
*
|
| 66 |
+
* For more detailed insight into how columns are handled, take a look at
|
| 67 |
+
* WP_List_Table::single_row_columns()
|
| 68 |
+
*
|
| 69 |
+
* @param array $item A singular item (one full row's worth of data)
|
| 70 |
+
* @param array $column_name The name/slug of the column to be processed
|
| 71 |
+
* @return string Text or HTML to be placed inside the column <td>
|
| 72 |
+
**************************************************************************/
|
| 73 |
+
function column_default($item, $column_name){
|
| 74 |
+
switch($column_name){
|
| 75 |
+
case 'email':
|
| 76 |
+
case 'registered':
|
| 77 |
+
return $item[$column_name];
|
| 78 |
+
default:
|
| 79 |
+
return print_r($item,true); //Show the whole array for troubleshooting purposes
|
| 80 |
+
}
|
| 81 |
+
}
|
| 82 |
+
|
| 83 |
+
|
| 84 |
+
/** ************************************************************************
|
| 85 |
+
* Recommended. This is a custom column method and is responsible for what
|
| 86 |
+
* is rendered in any column with a name/slug of 'username'. Every time the class
|
| 87 |
+
* needs to render a column, it first looks for a method named
|
| 88 |
+
* column_{$column_title} - if it exists, that method is run. If it doesn't
|
| 89 |
+
* exist, column_default() is called instead.
|
| 90 |
+
*
|
| 91 |
+
* This example also illustrates how to implement rollover actions. Actions
|
| 92 |
+
* should be an associative array formatted as 'slug'=>'link html' - and you
|
| 93 |
+
* will need to generate the URLs yourself. You could even ensure the links
|
| 94 |
+
*
|
| 95 |
+
*
|
| 96 |
+
* @see WP_List_Table::::single_row_columns()
|
| 97 |
+
* @param array $item A singular item (one full row's worth of data)
|
| 98 |
+
* @return string Text to be placed inside the column <td>
|
| 99 |
+
**************************************************************************/
|
| 100 |
+
function column_username($item){
|
| 101 |
+
|
| 102 |
+
$GRavatar = get_avatar( $item['email'], 32, '' );
|
| 103 |
+
|
| 104 |
+
//Build row actions
|
| 105 |
+
$actions = array(
|
| 106 |
+
'delete' => sprintf('<a href="javascript:confirmECAction(\'%s\',\'%s\',\'%s\',\''.__('delete this user from the _signups table?', 'profilebuilder').'\')">'. __('Delete', 'profilebuilder') .'</a>',wppb_curpageurl(),'delete',$item['ID']),
|
| 107 |
+
'confirm' => sprintf('<a href="javascript:confirmECAction(\'%s\',\'%s\',\'%s\',\''.__('confirm this email yourself?', 'profilebuilder').'\')">'. __('Confirm Email', 'profilebuilder') .'</a>',wppb_curpageurl(),'confirm',$item['ID'])/* ,
|
| 108 |
+
'resend' => sprintf('<a href="javascript:confirmECAction(\'%s\',\'%s\',\'%s\',\''.__('resend the activation link?', 'profilebuilder').'\')">'. __('Resend Activation Email', 'profilebuilder') .'</a>',wppb_curpageurl(),'resend',$item['ID']) */
|
| 109 |
+
);
|
| 110 |
+
|
| 111 |
+
//Return the title contents
|
| 112 |
+
return sprintf('%1$s <strong>%2$s</strong> %3$s',
|
| 113 |
+
/*$1%s*/ $GRavatar,
|
| 114 |
+
/*$2%s*/ $item['username'],
|
| 115 |
+
/*$3%s*/ $this->row_actions($actions)
|
| 116 |
+
);
|
| 117 |
+
}
|
| 118 |
+
|
| 119 |
+
/** ************************************************************************
|
| 120 |
+
* REQUIRED if displaying checkboxes or using bulk actions! The 'cb' column
|
| 121 |
+
* is given special treatment when columns are processed. It ALWAYS needs to
|
| 122 |
+
* have it's own method.
|
| 123 |
+
*
|
| 124 |
+
* @see WP_List_Table::::single_row_columns()
|
| 125 |
+
* @param array $item A singular item (one full row's worth of data)
|
| 126 |
+
* @return string Text to be placed inside the column <td>
|
| 127 |
+
**************************************************************************/
|
| 128 |
+
function column_cb($item){
|
| 129 |
+
return sprintf(
|
| 130 |
+
'<input type="checkbox" name="%1$s[]" value="%2$s" />',
|
| 131 |
+
/*$1%s*/ $this->_args['singular'], //Let's simply repurpose the table's singular label
|
| 132 |
+
/*$2%s*/ $item['ID'] //The value of the checkbox should be the record's id
|
| 133 |
+
);
|
| 134 |
+
}
|
| 135 |
+
|
| 136 |
+
|
| 137 |
+
/** ************************************************************************
|
| 138 |
+
* REQUIRED! This method dictates the table's columns and titles. This should
|
| 139 |
+
* return an array where the key is the column slug (and class) and the value
|
| 140 |
+
* is the column's title text. If you need a checkbox for bulk actions, refer
|
| 141 |
+
* to the $columns array below.
|
| 142 |
+
*
|
| 143 |
+
* The 'cb' column is treated differently than the rest. If including a checkbox
|
| 144 |
+
* column in your table you must create a column_cb() method. If you don't need
|
| 145 |
+
* bulk actions or checkboxes, simply leave the 'cb' entry out of your array.
|
| 146 |
+
*
|
| 147 |
+
* @see WP_List_Table::::single_row_columns()
|
| 148 |
+
* @return array An associative array containing column information: 'slugs'=>'Visible Titles'
|
| 149 |
+
**************************************************************************/
|
| 150 |
+
function get_columns(){
|
| 151 |
+
$columns = array(
|
| 152 |
+
'cb' => '<input type="checkbox" />', //Render a checkbox instead of text
|
| 153 |
+
'username' => __('Username', 'profilebuilder'),
|
| 154 |
+
'email' => __('E-mail', 'profilebuilder'),
|
| 155 |
+
'registered' => __('Registered', 'profilebuilder')
|
| 156 |
+
);
|
| 157 |
+
return $columns;
|
| 158 |
+
}
|
| 159 |
+
|
| 160 |
+
/** ************************************************************************
|
| 161 |
+
* Optional. If you want one or more columns to be sortable (ASC/DESC toggle),
|
| 162 |
+
* you will need to register it here. This should return an array where the
|
| 163 |
+
* key is the column that needs to be sortable, and the value is db column to
|
| 164 |
+
* sort by. Often, the key and value will be the same, but this is not always
|
| 165 |
+
* the case (as the value is a column name from the database, not the list table).
|
| 166 |
+
*
|
| 167 |
+
* This method merely defines which columns should be sortable and makes them
|
| 168 |
+
* clickable - it does not handle the actual sorting. You still need to detect
|
| 169 |
+
* the ORDERBY and ORDER querystring variables within prepare_items() and sort
|
| 170 |
+
* your data accordingly (usually by modifying your query).
|
| 171 |
+
*
|
| 172 |
+
* @return array An associative array containing all the columns that should be sortable: 'slugs'=>array('data_values',bool)
|
| 173 |
+
**************************************************************************/
|
| 174 |
+
function get_sortable_columns() {
|
| 175 |
+
$sortable_columns = array(
|
| 176 |
+
'username' => array('username',false), //true means it's already sorted
|
| 177 |
+
'email' => array('email',false),
|
| 178 |
+
'registered' => array('registered',false)
|
| 179 |
+
);
|
| 180 |
+
return $sortable_columns;
|
| 181 |
+
}
|
| 182 |
+
|
| 183 |
+
|
| 184 |
+
/** ************************************************************************
|
| 185 |
+
* Optional. If you need to include bulk actions in your list table, this is
|
| 186 |
+
* the place to define them. Bulk actions are an associative array in the format
|
| 187 |
+
* 'slug'=>'Visible Title'
|
| 188 |
+
*
|
| 189 |
+
* If this method returns an empty value, no bulk action will be rendered. If
|
| 190 |
+
* you specify any bulk actions, the bulk actions box will be rendered with
|
| 191 |
+
* the table automatically on display().
|
| 192 |
+
*
|
| 193 |
+
* Also note that list tables are not automatically wrapped in <form> elements,
|
| 194 |
+
* so you will need to create those manually in order for bulk actions to function.
|
| 195 |
+
*
|
| 196 |
+
* @return array An associative array containing all the bulk actions: 'slugs'=>'Visible Titles'
|
| 197 |
+
**************************************************************************/
|
| 198 |
+
function get_bulk_actions() {
|
| 199 |
+
$actions = array(
|
| 200 |
+
'delete' => __('Delete', 'profilebuilder'),
|
| 201 |
+
'confirm' => __('Confirm Email', 'profilebuilder')
|
| 202 |
+
);
|
| 203 |
+
return $actions;
|
| 204 |
+
}
|
| 205 |
+
|
| 206 |
+
|
| 207 |
+
/** ************************************************************************
|
| 208 |
+
* Optional. You can handle your bulk actions anywhere or anyhow you prefer.
|
| 209 |
+
* For this example package, we will handle it in the class to keep things
|
| 210 |
+
* clean and organized.
|
| 211 |
+
*
|
| 212 |
+
* @see $this->prepare_items()
|
| 213 |
+
**************************************************************************/
|
| 214 |
+
function process_bulk_action() {
|
| 215 |
+
global $current_user;
|
| 216 |
+
global $wpdb;
|
| 217 |
+
|
| 218 |
+
if (current_user_can('delete_users')){
|
| 219 |
+
$iterator = 0;
|
| 220 |
+
$bulkResult = mysql_query("SELECT * FROM ".$wpdb->prefix."signups WHERE active=0");
|
| 221 |
+
|
| 222 |
+
//Detect when a bulk action is being triggered...
|
| 223 |
+
if( 'delete'===$this->current_action() ) {
|
| 224 |
+
while ($bulkRow=mysql_fetch_row($bulkResult)){
|
| 225 |
+
if (in_array((string)$iterator, $_GET['user'])){
|
| 226 |
+
$bulkResult1 = mysql_query("DELETE FROM ".$wpdb->prefix."signups WHERE user_login='".$bulkRow[3]."' AND user_email='".$bulkRow[4]."'");
|
| 227 |
+
if (!$bulkResult1){
|
| 228 |
+
$message = $bulkRow[3] . __("couldn't be deleted.", "profilebuilder");
|
| 229 |
+
?>
|
| 230 |
+
<script type="text/javascript">
|
| 231 |
+
confirmECActionBulk('<?php echo get_bloginfo('url').'/wp-admin/users.php?page=unconfirmed_emails';?>', '<?php echo $message;?>');
|
| 232 |
+
</script>
|
| 233 |
+
<?php
|
| 234 |
+
}
|
| 235 |
+
}
|
| 236 |
+
$iterator++;
|
| 237 |
+
}
|
| 238 |
+
|
| 239 |
+
$message = __("All users have been successfully deleted.", "profilebuilder");
|
| 240 |
+
?>
|
| 241 |
+
<script type="text/javascript">
|
| 242 |
+
confirmECActionBulk('<?php echo get_bloginfo('url').'/wp-admin/users.php?page=unconfirmed_emails';?>', '<?php echo $message;?>');
|
| 243 |
+
</script>
|
| 244 |
+
<?php
|
| 245 |
+
|
| 246 |
+
}elseif( 'confirm'===$this->current_action() ) {
|
| 247 |
+
while ($bulkRow=mysql_fetch_row($bulkResult)){
|
| 248 |
+
if (in_array((string)$iterator, $_GET['user'])){
|
| 249 |
+
$ret = wppb_manual_activate_signup($bulkRow[8]);
|
| 250 |
+
}
|
| 251 |
+
$iterator++;
|
| 252 |
+
}
|
| 253 |
+
|
| 254 |
+
$message = __("The selected users have been activated.", "profilebuilder");
|
| 255 |
+
?>
|
| 256 |
+
<script type="text/javascript">
|
| 257 |
+
confirmECActionBulk('<?php echo get_bloginfo('url').'/wp-admin/users.php?page=unconfirmed_emails';?>', '<?php echo $message;?>');
|
| 258 |
+
</script>
|
| 259 |
+
<?php
|
| 260 |
+
}
|
| 261 |
+
|
| 262 |
+
}else{
|
| 263 |
+
$message = __("Sorry, but you don't have permission to do that!", "profilebuilder");
|
| 264 |
+
?>
|
| 265 |
+
<script type="text/javascript">
|
| 266 |
+
confirmECActionBulk('<?php echo get_bloginfo('url').'/wp-admin/';?>', '<?php echo $message;?>');
|
| 267 |
+
</script>
|
| 268 |
+
<?php
|
| 269 |
+
}
|
| 270 |
+
|
| 271 |
+
}
|
| 272 |
+
|
| 273 |
+
|
| 274 |
+
/** ************************************************************************
|
| 275 |
+
* REQUIRED! This is where you prepare your data for display. This method will
|
| 276 |
+
* usually be used to query the database, sort and filter the data, and generally
|
| 277 |
+
* get it ready to be displayed. At a minimum, we should set $this->items and
|
| 278 |
+
* $this->set_pagination_args(), although the following properties and methods
|
| 279 |
+
* are frequently interacted with here...
|
| 280 |
+
*
|
| 281 |
+
* @global WPDB $wpdb
|
| 282 |
+
* @uses $this->_column_headers
|
| 283 |
+
* @uses $this->items
|
| 284 |
+
* @uses $this->get_columns()
|
| 285 |
+
* @uses $this->get_sortable_columns()
|
| 286 |
+
* @uses $this->get_pagenum()
|
| 287 |
+
* @uses $this->set_pagination_args()
|
| 288 |
+
**************************************************************************/
|
| 289 |
+
function prepare_items() {
|
| 290 |
+
global $wpdb;
|
| 291 |
+
|
| 292 |
+
$this->dataArray = array();
|
| 293 |
+
$iterator = 0;
|
| 294 |
+
|
| 295 |
+
$result = mysql_query("SELECT * FROM ".$wpdb->prefix."signups WHERE active=0");
|
| 296 |
+
while ($row=mysql_fetch_row($result)){
|
| 297 |
+
$tempArray = array('ID' => $iterator, 'username' => $row[3], 'email' => $row[4], 'registered' => $row[5]);
|
| 298 |
+
|
| 299 |
+
array_push($this->dataArray, $tempArray);
|
| 300 |
+
$iterator++;
|
| 301 |
+
}
|
| 302 |
+
|
| 303 |
+
/**
|
| 304 |
+
* First, lets decide how many records per page to show
|
| 305 |
+
*/
|
| 306 |
+
$per_page = 20;
|
| 307 |
+
|
| 308 |
+
|
| 309 |
+
/**
|
| 310 |
+
* REQUIRED. Now we need to define our column headers. This includes a complete
|
| 311 |
+
* array of columns to be displayed (slugs & titles), a list of columns
|
| 312 |
+
* to keep hidden, and a list of columns that are sortable. Each of these
|
| 313 |
+
* can be defined in another method (as we've done here) before being
|
| 314 |
+
* used to build the value for our _column_headers property.
|
| 315 |
+
*/
|
| 316 |
+
$columns = $this->get_columns();
|
| 317 |
+
$hidden = array();
|
| 318 |
+
$sortable = $this->get_sortable_columns();
|
| 319 |
+
|
| 320 |
+
|
| 321 |
+
/**
|
| 322 |
+
* REQUIRED. Finally, we build an array to be used by the class for column
|
| 323 |
+
* headers. The $this->_column_headers property takes an array which contains
|
| 324 |
+
* 3 other arrays. One for all columns, one for hidden columns, and one
|
| 325 |
+
* for sortable columns.
|
| 326 |
+
*/
|
| 327 |
+
$this->_column_headers = array($columns, $hidden, $sortable);
|
| 328 |
+
|
| 329 |
+
|
| 330 |
+
/**
|
| 331 |
+
* Optional. You can handle your bulk actions however you see fit. In this
|
| 332 |
+
* case, we'll handle them within our package just to keep things clean.
|
| 333 |
+
*/
|
| 334 |
+
$this->process_bulk_action();
|
| 335 |
+
|
| 336 |
+
|
| 337 |
+
/**
|
| 338 |
+
* Instead of querying a database, we're going to fetch the example data
|
| 339 |
+
* property we created for use in this plugin. This makes this example
|
| 340 |
+
* package slightly different than one you might build on your own. In
|
| 341 |
+
* this example, we'll be using array manipulation to sort and paginate
|
| 342 |
+
* our data. In a real-world implementation, you will probably want to
|
| 343 |
+
* use sort and pagination data to build a custom query instead, as you'll
|
| 344 |
+
* be able to use your precisely-queried data immediately.
|
| 345 |
+
*/
|
| 346 |
+
$data = $this->dataArray;
|
| 347 |
+
|
| 348 |
+
|
| 349 |
+
/**
|
| 350 |
+
* This checks for sorting input and sorts the data in our array accordingly.
|
| 351 |
+
*
|
| 352 |
+
* In a real-world situation involving a database, you would probably want
|
| 353 |
+
* to handle sorting by passing the 'orderby' and 'order' values directly
|
| 354 |
+
* to a custom query. The returned data will be pre-sorted, and this array
|
| 355 |
+
* sorting technique would be unnecessary.
|
| 356 |
+
*/
|
| 357 |
+
function usort_reorder($a,$b){
|
| 358 |
+
$orderby = (!empty($_REQUEST['orderby'])) ? $_REQUEST['orderby'] : 'username'; //If no sort, default to username
|
| 359 |
+
$order = (!empty($_REQUEST['order'])) ? $_REQUEST['order'] : 'asc'; //If no order, default to asc
|
| 360 |
+
$result = strcmp($a[$orderby], $b[$orderby]); //Determine sort order
|
| 361 |
+
return ($order==='asc') ? $result : -$result; //Send final sort direction to usort
|
| 362 |
+
}
|
| 363 |
+
usort($data, 'usort_reorder');
|
| 364 |
+
|
| 365 |
+
/**
|
| 366 |
+
* REQUIRED for pagination. Let's figure out what page the user is currently
|
| 367 |
+
* looking at. We'll need this later, so you should always include it in
|
| 368 |
+
* your own package classes.
|
| 369 |
+
*/
|
| 370 |
+
$current_page = $this->get_pagenum();
|
| 371 |
+
|
| 372 |
+
/**
|
| 373 |
+
* REQUIRED for pagination. Let's check how many items are in our data array.
|
| 374 |
+
* In real-world use, this would be the total number of items in your database,
|
| 375 |
+
* without filtering. We'll need this later, so you should always include it
|
| 376 |
+
* in your own package classes.
|
| 377 |
+
*/
|
| 378 |
+
$total_items = count($data);
|
| 379 |
+
|
| 380 |
+
|
| 381 |
+
/**
|
| 382 |
+
* The WP_List_Table class does not handle pagination for us, so we need
|
| 383 |
+
* to ensure that the data is trimmed to only the current page. We can use
|
| 384 |
+
* array_slice() to
|
| 385 |
+
*/
|
| 386 |
+
$data = array_slice($data,(($current_page-1)*$per_page),$per_page);
|
| 387 |
+
|
| 388 |
+
|
| 389 |
+
|
| 390 |
+
/**
|
| 391 |
+
* REQUIRED. Now we can add our *sorted* data to the items property, where
|
| 392 |
+
* it can be used by the rest of the class.
|
| 393 |
+
*/
|
| 394 |
+
$this->items = $data;
|
| 395 |
+
|
| 396 |
+
|
| 397 |
+
/**
|
| 398 |
+
* REQUIRED. We also have to register our pagination options & calculations.
|
| 399 |
+
*/
|
| 400 |
+
$this->set_pagination_args( array(
|
| 401 |
+
'total_items' => $total_items, //WE have to calculate the total number of items
|
| 402 |
+
'per_page' => $per_page, //WE have to determine how many items to show on a page
|
| 403 |
+
'total_pages' => ceil($total_items/$per_page) //WE have to calculate the total number of pages
|
| 404 |
+
) );
|
| 405 |
+
}
|
| 406 |
+
|
| 407 |
+
}
|
| 408 |
+
|
| 409 |
+
|
| 410 |
+
|
| 411 |
+
|
| 412 |
+
|
| 413 |
+
/** ************************ REGISTER THE PAGE ****************************
|
| 414 |
+
*******************************************************************************
|
| 415 |
+
* Now we just need to define an admin page.
|
| 416 |
+
*/
|
| 417 |
+
function wppb_add_ec_submenu_page() {
|
| 418 |
+
if (is_multisite()){
|
| 419 |
+
add_submenu_page( 'users.php', 'Unconfirmed Email Address', 'Unconfirmed Email Address', 'manage_options', 'unconfirmed_emails', 'wppb_unconfirmed_email_address_custom_menu_page' );
|
| 420 |
+
remove_submenu_page( 'users.php', 'unconfirmed_emails' ); //hide the page in the admin menu
|
| 421 |
+
|
| 422 |
+
}else{
|
| 423 |
+
$wppb_generalSettings = get_option('wppb_general_settings', 'not_found');
|
| 424 |
+
if($wppb_generalSettings != 'not_found')
|
| 425 |
+
if(!empty($wppb_generalSettings['emailConfirmation']) && ($wppb_generalSettings['emailConfirmation'] == 'yes'))
|
| 426 |
+
add_submenu_page( 'users.php', 'Unconfirmed Email Address', 'Unconfirmed Email Address', 'manage_options', 'unconfirmed_emails', 'wppb_unconfirmed_email_address_custom_menu_page' );
|
| 427 |
+
remove_submenu_page( 'users.php', 'unconfirmed_emails' ); //hide the page in the admin menu
|
| 428 |
+
}
|
| 429 |
+
}
|
| 430 |
+
add_action('admin_menu', 'wppb_add_ec_submenu_page');
|
| 431 |
+
|
| 432 |
+
|
| 433 |
+
|
| 434 |
+
/***************************** RENDER PAGE ********************************
|
| 435 |
+
*******************************************************************************
|
| 436 |
+
* This function renders the admin page. Although it's
|
| 437 |
+
* possible to call prepare_items() and display() from the constructor, there
|
| 438 |
+
* are often times where you may need to include logic here between those steps,
|
| 439 |
+
* so we've instead called those methods explicitly. It keeps things flexible, and
|
| 440 |
+
* it's the way the list tables are used in the WordPress core.
|
| 441 |
+
*/
|
| 442 |
+
function wppb_unconfirmed_email_address_custom_menu_page(){
|
| 443 |
+
|
| 444 |
+
//Create an instance of our package class...
|
| 445 |
+
$listTable = new wpp_list_unfonfirmed_email_table();
|
| 446 |
+
//Fetch, prepare, sort, and filter our data...
|
| 447 |
+
$listTable->prepare_items();
|
| 448 |
+
|
| 449 |
+
?>
|
| 450 |
+
<div class="wrap">
|
| 451 |
+
|
| 452 |
+
<div class="wrap"><div id="icon-users" class="icon32"></div><h2><?php _e('Users with Unconfirmed Email Address', 'profilebuilder');?></h2></div>
|
| 453 |
+
|
| 454 |
+
<ul class="subsubsub">
|
| 455 |
+
<li class="all"><a href="users.php"><?php _e('All Users', 'profilebuilder');?></a></li>
|
| 456 |
+
</ul>
|
| 457 |
+
|
| 458 |
+
<!-- Forms are NOT created automatically, so you need to wrap the table in one to use features like bulk actions -->
|
| 459 |
+
<form id="movies-filter" method="get">
|
| 460 |
+
<!-- For plugins, we also need to ensure that the form posts back to our current page -->
|
| 461 |
+
<input type="hidden" name="page" value="<?php echo $_REQUEST['page'] ?>" />
|
| 462 |
+
<!-- Now we can render the completed list table -->
|
| 463 |
+
<?php $listTable->display() ?>
|
| 464 |
+
</form>
|
| 465 |
+
|
| 466 |
+
</div>
|
| 467 |
+
<?php
|
| 468 |
+
}
|
front-end/wppb.edit.profile.php
CHANGED
|
@@ -15,8 +15,6 @@ function wppb_save_the_password(){
|
|
| 15 |
global $changesSavedNoMatchingPass;
|
| 16 |
global $changesSavedNoPass;
|
| 17 |
|
| 18 |
-
/* Load registration file. */
|
| 19 |
-
require_once(ABSPATH . WPINC . '/registration.php');
|
| 20 |
/* Get user info. */
|
| 21 |
global $current_user;
|
| 22 |
|
|
@@ -61,10 +59,9 @@ function wppb_front_end_profile_info() {
|
|
| 61 |
$uploadExt = array();
|
| 62 |
$uploadSize = array();
|
| 63 |
$editFilterArray = array();
|
|
|
|
| 64 |
|
| 65 |
|
| 66 |
-
/* Load registration file. */
|
| 67 |
-
require_once(ABSPATH . WPINC . '/registration.php');
|
| 68 |
/* Get user info. */
|
| 69 |
global $current_user;
|
| 70 |
|
|
@@ -134,7 +131,7 @@ function wppb_front_end_profile_info() {
|
|
| 134 |
if ($wppb_defaultOptions['firstname'] == 'show'){
|
| 135 |
$_POST['first_name'] = apply_filters('wppb_edit_profile_posted_first_name', $_POST['first_name']);
|
| 136 |
if ($wppb_defaultOptions['firstnameRequired'] == 'yes'){
|
| 137 |
-
if ((
|
| 138 |
wp_update_user( array( 'ID' => $current_user->id, 'first_name' => esc_attr( $_POST['first_name'] )));
|
| 139 |
$changesSaved = 'yes';
|
| 140 |
}
|
|
@@ -147,7 +144,7 @@ function wppb_front_end_profile_info() {
|
|
| 147 |
if ($wppb_defaultOptions['lastname'] == 'show'){
|
| 148 |
$_POST['last_name'] = apply_filters('wppb_edit_profile_posted_last_name', $_POST['last_name']);
|
| 149 |
if ($wppb_defaultOptions['lastnameRequired'] == 'yes'){
|
| 150 |
-
if ((
|
| 151 |
wp_update_user( array( 'ID' => $current_user->id, 'last_name' => esc_attr( $_POST['last_name'] )));
|
| 152 |
$changesSaved = 'yes';
|
| 153 |
}
|
|
@@ -160,7 +157,7 @@ function wppb_front_end_profile_info() {
|
|
| 160 |
if ($wppb_defaultOptions['nickname'] == 'show'){
|
| 161 |
$_POST['nickname'] = apply_filters('wppb_edit_profile_posted_nickname', $_POST['nickname']);
|
| 162 |
if ($wppb_defaultOptions['nicknameRequired'] == 'yes'){
|
| 163 |
-
if ((
|
| 164 |
wp_update_user( array( 'ID' => $current_user->id, 'nickname' => esc_attr( $_POST['nickname'] )));
|
| 165 |
$changesSaved = 'yes';
|
| 166 |
}
|
|
@@ -174,7 +171,7 @@ function wppb_front_end_profile_info() {
|
|
| 174 |
if ($wppb_defaultOptions['dispname'] == 'show'){
|
| 175 |
$_POST['display_name'] = apply_filters('wppb_edit_profile_posted_display_name', $_POST['display_name']);
|
| 176 |
if ($wppb_defaultOptions['dispnameRequired'] == 'yes'){
|
| 177 |
-
if ((
|
| 178 |
wp_update_user( array( 'ID' => $current_user->id, 'display_name' => esc_attr( $_POST['display_name'] )));
|
| 179 |
$changesSaved = 'yes';
|
| 180 |
}
|
|
@@ -187,7 +184,7 @@ function wppb_front_end_profile_info() {
|
|
| 187 |
if ($wppb_defaultOptions['website'] == 'show'){
|
| 188 |
$_POST['website'] = apply_filters('wppb_edit_profile_posted_website', $_POST['website']);
|
| 189 |
if ($wppb_defaultOptions['websiteRequired'] == 'yes'){
|
| 190 |
-
if ((
|
| 191 |
$wppbPos = strpos( (string)$_POST['website'], 'http://' );
|
| 192 |
if($wppbPos !== FALSE){
|
| 193 |
wp_update_user( array( 'ID' => $current_user->id, 'user_url' => esc_attr( $_POST['website'] )));
|
|
@@ -217,7 +214,7 @@ function wppb_front_end_profile_info() {
|
|
| 217 |
if ($wppb_defaultOptions['aim'] == 'show'){
|
| 218 |
$_POST['aim'] = apply_filters('wppb_edit_profile_posted_aim', $_POST['aim']);
|
| 219 |
if ($wppb_defaultOptions['aimRequired'] == 'yes'){
|
| 220 |
-
if ((
|
| 221 |
update_user_meta( $current_user->id, 'aim', esc_attr( $_POST['aim'] ) );
|
| 222 |
$changesSaved = 'yes';
|
| 223 |
}
|
|
@@ -230,7 +227,7 @@ function wppb_front_end_profile_info() {
|
|
| 230 |
if ($wppb_defaultOptions['yahoo'] == 'show'){
|
| 231 |
$_POST['yim'] = apply_filters('wppb_edit_profile_posted_yahoo', $_POST['yim']);
|
| 232 |
if ($wppb_defaultOptions['yahooRequired'] == 'yes'){
|
| 233 |
-
if ((
|
| 234 |
update_user_meta( $current_user->id, 'yim', esc_attr( $_POST['yim'] ) );
|
| 235 |
$changesSaved = 'yes';
|
| 236 |
}
|
|
@@ -243,7 +240,7 @@ function wppb_front_end_profile_info() {
|
|
| 243 |
if ($wppb_defaultOptions['jabber'] == 'show'){
|
| 244 |
$_POST['jabber'] = apply_filters('wppb_edit_profile_posted_jabber', $_POST['jabber']);
|
| 245 |
if ($wppb_defaultOptions['jabberRequired'] == 'yes'){
|
| 246 |
-
if ((
|
| 247 |
update_user_meta( $current_user->id, 'jabber', esc_attr( $_POST['jabber'] ) );
|
| 248 |
$changesSaved = 'yes';
|
| 249 |
}
|
|
@@ -256,7 +253,7 @@ function wppb_front_end_profile_info() {
|
|
| 256 |
if ($wppb_defaultOptions['bio'] == 'show'){
|
| 257 |
$_POST['description'] = apply_filters('wppb_edit_profile_posted_bio', $_POST['description']);
|
| 258 |
if ($wppb_defaultOptions['bioRequired'] == 'yes'){
|
| 259 |
-
if ((
|
| 260 |
update_user_meta( $current_user->id, 'description', esc_attr( $_POST['description'] ) );
|
| 261 |
$changesSaved = 'yes';
|
| 262 |
}
|
|
@@ -815,7 +812,7 @@ function wppb_front_end_profile_info() {
|
|
| 815 |
$errorMark = '';
|
| 816 |
if ($wppb_defaultOptions['websiteRequired'] == 'yes'){
|
| 817 |
$errorMark = '<font color="red" title="'. __('This field is marked as required by the administrator.', 'profilebuilder') .'">*</font>';
|
| 818 |
-
if ((
|
| 819 |
$errorMark = '<img src="'.WPPB_PLUGIN_URL . '/assets/images/pencil_delete.png" title="'. __('This field wasn\'t updated because you entered and empty string (It was marked as required by the administrator.', 'profilebuilder') .'"/>';
|
| 820 |
$errorVar = ' errorHolder';
|
| 821 |
}
|
|
@@ -833,7 +830,7 @@ function wppb_front_end_profile_info() {
|
|
| 833 |
$errorMark = '';
|
| 834 |
if ($wppb_defaultOptions['aimRequired'] == 'yes'){
|
| 835 |
$errorMark = '<font color="red" title="'. __('This field is marked as required by the administrator.', 'profilebuilder') .'">*</font>';
|
| 836 |
-
if ((
|
| 837 |
$errorMark = '<img src="'.WPPB_PLUGIN_URL . '/assets/images/pencil_delete.png" title="'. __('This field wasn\'t updated because you entered and empty string (It was marked as required by the administrator.', 'profilebuilder') .'"/>';
|
| 838 |
$errorVar = ' errorHolder';
|
| 839 |
}
|
|
@@ -851,7 +848,7 @@ function wppb_front_end_profile_info() {
|
|
| 851 |
$errorMark = '';
|
| 852 |
if ($wppb_defaultOptions['yahooRequired'] == 'yes'){
|
| 853 |
$errorMark = '<font color="red" title="'. __('This field is marked as required by the administrator.', 'profilebuilder') .'">*</font>';
|
| 854 |
-
if ((
|
| 855 |
$errorMark = '<img src="'.WPPB_PLUGIN_URL . '/assets/images/pencil_delete.png" title="'. __('This field wasn\'t updated because you entered and empty string (It was marked as required by the administrator.', 'profilebuilder') .'"/>';
|
| 856 |
$errorVar = ' errorHolder';
|
| 857 |
}
|
|
@@ -869,7 +866,7 @@ function wppb_front_end_profile_info() {
|
|
| 869 |
$errorMark = '';
|
| 870 |
if ($wppb_defaultOptions['jabberRequired'] == 'yes'){
|
| 871 |
$errorMark = '<font color="red" title="'. __('This field is marked as required by the administrator.', 'profilebuilder') .'">*</font>';
|
| 872 |
-
if ((
|
| 873 |
$errorMark = '<img src="'.WPPB_PLUGIN_URL . '/assets/images/pencil_delete.png" title="'. __('This field wasn\'t updated because you entered and empty string (It was marked as required by the administrator.', 'profilebuilder') .'"/>';
|
| 874 |
$errorVar = ' errorHolder';
|
| 875 |
}
|
|
@@ -890,7 +887,7 @@ function wppb_front_end_profile_info() {
|
|
| 890 |
$errorMark = '';
|
| 891 |
if ($wppb_defaultOptions['bioRequired'] == 'yes'){
|
| 892 |
$errorMark = '<font color="red" title="'. __('This field is marked as required by the administrator.', 'profilebuilder') .'">*</font>';
|
| 893 |
-
if ((
|
| 894 |
$errorMark = '<img src="'.WPPB_PLUGIN_URL . '/assets/images/pencil_delete.png" title="'. __('This field wasn\'t updated because you entered and empty string (It was marked as required by the administrator.', 'profilebuilder') .'"/>';
|
| 895 |
$errorVar = ' errorHolder';
|
| 896 |
}
|
| 15 |
global $changesSavedNoMatchingPass;
|
| 16 |
global $changesSavedNoPass;
|
| 17 |
|
|
|
|
|
|
|
| 18 |
/* Get user info. */
|
| 19 |
global $current_user;
|
| 20 |
|
| 59 |
$uploadExt = array();
|
| 60 |
$uploadSize = array();
|
| 61 |
$editFilterArray = array();
|
| 62 |
+
$error = null;
|
| 63 |
|
| 64 |
|
|
|
|
|
|
|
| 65 |
/* Get user info. */
|
| 66 |
global $current_user;
|
| 67 |
|
| 131 |
if ($wppb_defaultOptions['firstname'] == 'show'){
|
| 132 |
$_POST['first_name'] = apply_filters('wppb_edit_profile_posted_first_name', $_POST['first_name']);
|
| 133 |
if ($wppb_defaultOptions['firstnameRequired'] == 'yes'){
|
| 134 |
+
if (isset($_POST['first_name']) && (trim($_POST['first_name']) != '')){
|
| 135 |
wp_update_user( array( 'ID' => $current_user->id, 'first_name' => esc_attr( $_POST['first_name'] )));
|
| 136 |
$changesSaved = 'yes';
|
| 137 |
}
|
| 144 |
if ($wppb_defaultOptions['lastname'] == 'show'){
|
| 145 |
$_POST['last_name'] = apply_filters('wppb_edit_profile_posted_last_name', $_POST['last_name']);
|
| 146 |
if ($wppb_defaultOptions['lastnameRequired'] == 'yes'){
|
| 147 |
+
if (isset($_POST['last_name']) && (trim($_POST['last_name']) != '')){
|
| 148 |
wp_update_user( array( 'ID' => $current_user->id, 'last_name' => esc_attr( $_POST['last_name'] )));
|
| 149 |
$changesSaved = 'yes';
|
| 150 |
}
|
| 157 |
if ($wppb_defaultOptions['nickname'] == 'show'){
|
| 158 |
$_POST['nickname'] = apply_filters('wppb_edit_profile_posted_nickname', $_POST['nickname']);
|
| 159 |
if ($wppb_defaultOptions['nicknameRequired'] == 'yes'){
|
| 160 |
+
if (isset($_POST['nickname']) && (trim($_POST['nickname']) != '')){
|
| 161 |
wp_update_user( array( 'ID' => $current_user->id, 'nickname' => esc_attr( $_POST['nickname'] )));
|
| 162 |
$changesSaved = 'yes';
|
| 163 |
}
|
| 171 |
if ($wppb_defaultOptions['dispname'] == 'show'){
|
| 172 |
$_POST['display_name'] = apply_filters('wppb_edit_profile_posted_display_name', $_POST['display_name']);
|
| 173 |
if ($wppb_defaultOptions['dispnameRequired'] == 'yes'){
|
| 174 |
+
if (isset($_POST['display_name']) && (trim($_POST['display_name']) != '')){
|
| 175 |
wp_update_user( array( 'ID' => $current_user->id, 'display_name' => esc_attr( $_POST['display_name'] )));
|
| 176 |
$changesSaved = 'yes';
|
| 177 |
}
|
| 184 |
if ($wppb_defaultOptions['website'] == 'show'){
|
| 185 |
$_POST['website'] = apply_filters('wppb_edit_profile_posted_website', $_POST['website']);
|
| 186 |
if ($wppb_defaultOptions['websiteRequired'] == 'yes'){
|
| 187 |
+
if (isset($_POST['website']) && (trim($_POST['website']) != '')){
|
| 188 |
$wppbPos = strpos( (string)$_POST['website'], 'http://' );
|
| 189 |
if($wppbPos !== FALSE){
|
| 190 |
wp_update_user( array( 'ID' => $current_user->id, 'user_url' => esc_attr( $_POST['website'] )));
|
| 214 |
if ($wppb_defaultOptions['aim'] == 'show'){
|
| 215 |
$_POST['aim'] = apply_filters('wppb_edit_profile_posted_aim', $_POST['aim']);
|
| 216 |
if ($wppb_defaultOptions['aimRequired'] == 'yes'){
|
| 217 |
+
if (isset($_POST['aim']) && (trim($_POST['aim']) != '')){
|
| 218 |
update_user_meta( $current_user->id, 'aim', esc_attr( $_POST['aim'] ) );
|
| 219 |
$changesSaved = 'yes';
|
| 220 |
}
|
| 227 |
if ($wppb_defaultOptions['yahoo'] == 'show'){
|
| 228 |
$_POST['yim'] = apply_filters('wppb_edit_profile_posted_yahoo', $_POST['yim']);
|
| 229 |
if ($wppb_defaultOptions['yahooRequired'] == 'yes'){
|
| 230 |
+
if (isset($_POST['yim']) && (trim($_POST['yim']) != '')){
|
| 231 |
update_user_meta( $current_user->id, 'yim', esc_attr( $_POST['yim'] ) );
|
| 232 |
$changesSaved = 'yes';
|
| 233 |
}
|
| 240 |
if ($wppb_defaultOptions['jabber'] == 'show'){
|
| 241 |
$_POST['jabber'] = apply_filters('wppb_edit_profile_posted_jabber', $_POST['jabber']);
|
| 242 |
if ($wppb_defaultOptions['jabberRequired'] == 'yes'){
|
| 243 |
+
if (isset($_POST['jabber']) && (trim($_POST['jabber']) != '')){
|
| 244 |
update_user_meta( $current_user->id, 'jabber', esc_attr( $_POST['jabber'] ) );
|
| 245 |
$changesSaved = 'yes';
|
| 246 |
}
|
| 253 |
if ($wppb_defaultOptions['bio'] == 'show'){
|
| 254 |
$_POST['description'] = apply_filters('wppb_edit_profile_posted_bio', $_POST['description']);
|
| 255 |
if ($wppb_defaultOptions['bioRequired'] == 'yes'){
|
| 256 |
+
if (isset($_POST['description']) && (trim($_POST['description']) != '')){
|
| 257 |
update_user_meta( $current_user->id, 'description', esc_attr( $_POST['description'] ) );
|
| 258 |
$changesSaved = 'yes';
|
| 259 |
}
|
| 812 |
$errorMark = '';
|
| 813 |
if ($wppb_defaultOptions['websiteRequired'] == 'yes'){
|
| 814 |
$errorMark = '<font color="red" title="'. __('This field is marked as required by the administrator.', 'profilebuilder') .'">*</font>';
|
| 815 |
+
if (isset($_POST['website']) && (trim($_POST['website']) == '')){
|
| 816 |
$errorMark = '<img src="'.WPPB_PLUGIN_URL . '/assets/images/pencil_delete.png" title="'. __('This field wasn\'t updated because you entered and empty string (It was marked as required by the administrator.', 'profilebuilder') .'"/>';
|
| 817 |
$errorVar = ' errorHolder';
|
| 818 |
}
|
| 830 |
$errorMark = '';
|
| 831 |
if ($wppb_defaultOptions['aimRequired'] == 'yes'){
|
| 832 |
$errorMark = '<font color="red" title="'. __('This field is marked as required by the administrator.', 'profilebuilder') .'">*</font>';
|
| 833 |
+
if (isset($_POST['aim']) && (trim($_POST['aim']) == '')){
|
| 834 |
$errorMark = '<img src="'.WPPB_PLUGIN_URL . '/assets/images/pencil_delete.png" title="'. __('This field wasn\'t updated because you entered and empty string (It was marked as required by the administrator.', 'profilebuilder') .'"/>';
|
| 835 |
$errorVar = ' errorHolder';
|
| 836 |
}
|
| 848 |
$errorMark = '';
|
| 849 |
if ($wppb_defaultOptions['yahooRequired'] == 'yes'){
|
| 850 |
$errorMark = '<font color="red" title="'. __('This field is marked as required by the administrator.', 'profilebuilder') .'">*</font>';
|
| 851 |
+
if (isset($_POST['yim']) && (trim($_POST['yim']) == '')){
|
| 852 |
$errorMark = '<img src="'.WPPB_PLUGIN_URL . '/assets/images/pencil_delete.png" title="'. __('This field wasn\'t updated because you entered and empty string (It was marked as required by the administrator.', 'profilebuilder') .'"/>';
|
| 853 |
$errorVar = ' errorHolder';
|
| 854 |
}
|
| 866 |
$errorMark = '';
|
| 867 |
if ($wppb_defaultOptions['jabberRequired'] == 'yes'){
|
| 868 |
$errorMark = '<font color="red" title="'. __('This field is marked as required by the administrator.', 'profilebuilder') .'">*</font>';
|
| 869 |
+
if (isset($_POST['jabber']) && (trim($_POST['jabber']) == '')){
|
| 870 |
$errorMark = '<img src="'.WPPB_PLUGIN_URL . '/assets/images/pencil_delete.png" title="'. __('This field wasn\'t updated because you entered and empty string (It was marked as required by the administrator.', 'profilebuilder') .'"/>';
|
| 871 |
$errorVar = ' errorHolder';
|
| 872 |
}
|
| 887 |
$errorMark = '';
|
| 888 |
if ($wppb_defaultOptions['bioRequired'] == 'yes'){
|
| 889 |
$errorMark = '<font color="red" title="'. __('This field is marked as required by the administrator.', 'profilebuilder') .'">*</font>';
|
| 890 |
+
if (isset($_POST['description']) && (trim($_POST['description']) == '')){
|
| 891 |
$errorMark = '<img src="'.WPPB_PLUGIN_URL . '/assets/images/pencil_delete.png" title="'. __('This field wasn\'t updated because you entered and empty string (It was marked as required by the administrator.', 'profilebuilder') .'"/>';
|
| 892 |
$errorVar = ' errorHolder';
|
| 893 |
}
|
front-end/wppb.register.php
CHANGED
|
@@ -34,151 +34,6 @@ function signup_password_random_password_filter($password) {
|
|
| 34 |
}
|
| 35 |
|
| 36 |
|
| 37 |
-
/* Hook to add AP user meta after signup autentification */
|
| 38 |
-
add_action('wpmu_activate_user','wppb_add_meta_to_user_on_activation',10,3);
|
| 39 |
-
/**
|
| 40 |
-
* Function that adds AP user meta after signup autentification and it is also used when editing the user uprofile
|
| 41 |
-
*/
|
| 42 |
-
function wppb_add_meta_to_user_on_activation($user_id, $password, $meta){
|
| 43 |
-
|
| 44 |
-
//copy the data from the meta field (default fields)
|
| 45 |
-
if( !empty($meta['first_name'] ) )
|
| 46 |
-
update_user_meta( $user_id, 'first_name', $meta['first_name'] );
|
| 47 |
-
if( !empty($meta['last_name'] ) )
|
| 48 |
-
update_user_meta( $user_id, 'last_name', $meta['last_name'] );
|
| 49 |
-
if( !empty($meta['nickname'] ) )
|
| 50 |
-
update_user_meta( $user_id, 'nickname', $meta['nickname'] );
|
| 51 |
-
if( !empty($meta['user_url'] ) )
|
| 52 |
-
update_user_meta( $user_id, 'user_url', $meta['user_url'] );
|
| 53 |
-
if( !empty($meta['aim'] ) )
|
| 54 |
-
update_user_meta( $user_id, 'aim', $meta['aim'] );
|
| 55 |
-
if( !empty($meta['yim'] ) )
|
| 56 |
-
update_user_meta( $user_id, 'yim', $meta['yim'] );
|
| 57 |
-
if( !empty($meta['jabber'] ) )
|
| 58 |
-
update_user_meta( $user_id, 'jabber', $meta['jabber'] );
|
| 59 |
-
if( !empty($meta['description'] ) )
|
| 60 |
-
update_user_meta( $user_id, 'description', $meta['description'] );
|
| 61 |
-
|
| 62 |
-
//update the users role (s)he registered for
|
| 63 |
-
if( !empty($meta['role'] ) ){
|
| 64 |
-
$user = new WP_User($user_id);
|
| 65 |
-
$user->set_role($meta['role']);
|
| 66 |
-
}
|
| 67 |
-
|
| 68 |
-
//copy the data from the meta fields (custom fields)
|
| 69 |
-
$wppb_premium = WPPB_PLUGIN_DIR . '/premium/functions/';
|
| 70 |
-
if (file_exists ( $wppb_premium.'extra.fields.php' )){
|
| 71 |
-
$wppbFetchArray = get_option('wppb_custom_fields');
|
| 72 |
-
foreach ( $wppbFetchArray as $key => $value){
|
| 73 |
-
switch ($value['item_type']) {
|
| 74 |
-
case "input":{
|
| 75 |
-
if( !empty($meta[$value['item_type'].$value['id']] ) )
|
| 76 |
-
update_user_meta( $user_id, $value['item_metaName'], $meta[$value['item_type'].$value['id']] );
|
| 77 |
-
break;
|
| 78 |
-
}
|
| 79 |
-
case "hiddenInput":{
|
| 80 |
-
if( !empty($meta[$value['item_type'].$value['id']] ) )
|
| 81 |
-
update_user_meta( $user_id, $value['item_metaName'], $meta[$value['item_type'].$value['id']] );
|
| 82 |
-
break;
|
| 83 |
-
}
|
| 84 |
-
case "checkbox":{
|
| 85 |
-
if( !empty($meta[$value['item_type'].$value['id']] ) )
|
| 86 |
-
update_user_meta( $user_id, $value['item_metaName'], $meta[$value['item_type'].$value['id']] );
|
| 87 |
-
break;
|
| 88 |
-
}
|
| 89 |
-
case "radio":{
|
| 90 |
-
if( !empty($meta[$value['item_type'].$value['id']] ) )
|
| 91 |
-
update_user_meta( $user_id, $value['item_metaName'], $meta[$value['item_type'].$value['id']] );
|
| 92 |
-
break;
|
| 93 |
-
}
|
| 94 |
-
case "select":{
|
| 95 |
-
if( !empty($meta[$value['item_type'].$value['id']] ) )
|
| 96 |
-
update_user_meta( $user_id, $value['item_metaName'], $meta[$value['item_type'].$value['id']] );
|
| 97 |
-
break;
|
| 98 |
-
}
|
| 99 |
-
case "countrySelect":{
|
| 100 |
-
if( !empty($meta[$value['item_type'].$value['id']] ) )
|
| 101 |
-
update_user_meta( $user_id, $value['item_metaName'], $meta[$value['item_type'].$value['id']] );
|
| 102 |
-
break;
|
| 103 |
-
}
|
| 104 |
-
case "timeZone":{
|
| 105 |
-
if( !empty($meta[$value['item_type'].$value['id']] ) )
|
| 106 |
-
update_user_meta( $user_id, $value['item_metaName'], $meta[$value['item_type'].$value['id']] );
|
| 107 |
-
break;
|
| 108 |
-
}
|
| 109 |
-
case "datepicker":{
|
| 110 |
-
if( !empty($meta[$value['item_type'].$value['id']] ) )
|
| 111 |
-
update_user_meta( $user_id, $value['item_metaName'], $meta[$value['item_type'].$value['id']] );
|
| 112 |
-
break;
|
| 113 |
-
}
|
| 114 |
-
case "textarea":{
|
| 115 |
-
if( !empty($meta[$value['item_type'].$value['id']] ) )
|
| 116 |
-
update_user_meta( $user_id, $value['item_metaName'], $meta[$value['item_type'].$value['id']] );
|
| 117 |
-
break;
|
| 118 |
-
}
|
| 119 |
-
case "upload":{
|
| 120 |
-
if( !empty($meta[$value['item_type'].$value['id']] ) ){
|
| 121 |
-
$filename = $meta[$value['item_type'].$value['id']];
|
| 122 |
-
|
| 123 |
-
$fileNameStartUpload = strpos ( (string)$filename , '_attachment_' );
|
| 124 |
-
$originalUploadFilename = substr($filename, $fileNameStartUpload+12);
|
| 125 |
-
$newFileName = 'userID_'.$user_id.'_attachment_'.$originalUploadFilename;
|
| 126 |
-
|
| 127 |
-
$wpUploadPath = wp_upload_dir(); // Array of key => value pairs
|
| 128 |
-
$target_path_original = $wpUploadPath['baseurl']."/profile_builder/attachments/";
|
| 129 |
-
$fileDir = $wpUploadPath['basedir'].'/profile_builder/attachments/';
|
| 130 |
-
$target_path = $target_path_original . 'userID_'.$user_id.'_attachment_'. $originalUploadFilename;
|
| 131 |
-
|
| 132 |
-
$renamedVar = rename ($fileDir.$meta[$value['item_type'].$value['id']], $fileDir.$newFileName);
|
| 133 |
-
|
| 134 |
-
if ($renamedVar)
|
| 135 |
-
add_user_meta( $user_id, $value['item_metaName'], $target_path );
|
| 136 |
-
}
|
| 137 |
-
break;
|
| 138 |
-
}
|
| 139 |
-
case "avatar":{
|
| 140 |
-
if( !empty($meta[$value['item_type'].$value['id']] ) ){
|
| 141 |
-
$filename = $meta[$value['item_type'].$value['id']];
|
| 142 |
-
|
| 143 |
-
$fileNameStartAvatar = strpos ( (string)$filename , 'originalAvatar_' );
|
| 144 |
-
$originalAvatarFilename = substr($filename, $fileNameStartAvatar+15);
|
| 145 |
-
$newFileName = 'userID_'.$user_id.'_originalAvatar_'.$originalAvatarFilename;
|
| 146 |
-
|
| 147 |
-
$wpUploadPath = wp_upload_dir(); // Array of key => value pairs
|
| 148 |
-
$target_path_original = $wpUploadPath['baseurl']."/profile_builder/avatars/";
|
| 149 |
-
$fileDir = $wpUploadPath['basedir'].'/profile_builder/avatars/';
|
| 150 |
-
$target_path = $target_path_original . 'userID_'.$user_id.'_originalAvatar_'. $originalAvatarFilename;
|
| 151 |
-
|
| 152 |
-
$renamedVar = rename ($fileDir.'wpmuRandomID_'.$meta[$value['item_type'].$value['id'].'_radomUserNumber'].'_originalAvatar_'.$originalAvatarFilename, $fileDir.$newFileName);
|
| 153 |
-
|
| 154 |
-
if ($renamedVar){
|
| 155 |
-
$wp_filetype = wp_check_filetype(basename( $filename ), null );
|
| 156 |
-
$attachment = array('post_mime_type' => $wp_filetype['type'],
|
| 157 |
-
'post_title' => $filename, //preg_replace('/\.[^.]+$/', '', basename($_FILES[$uploadedfile]['name'])),
|
| 158 |
-
'post_content' => '',
|
| 159 |
-
'post_status' => 'inherit'
|
| 160 |
-
);
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
$attach_id = wp_insert_attachment( $attachment, $target_path);
|
| 164 |
-
|
| 165 |
-
$upFile = image_downsize( $attach_id, 'thumbnail' );
|
| 166 |
-
$upFile = $upFile[0];
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
add_user_meta( $user_id, $value['item_metaName'], $upFile );
|
| 171 |
-
wppb_resize_avatar($user_id);
|
| 172 |
-
}
|
| 173 |
-
}
|
| 174 |
-
break;
|
| 175 |
-
}
|
| 176 |
-
}
|
| 177 |
-
}
|
| 178 |
-
}
|
| 179 |
-
}
|
| 180 |
-
|
| 181 |
-
|
| 182 |
function wppb_add_custom_field_values($POST, $meta){
|
| 183 |
/* add the extra profile information */
|
| 184 |
$wppb_premium = WPPB_PLUGIN_DIR . '/premium/functions/';
|
|
@@ -322,79 +177,6 @@ function wppb_add_custom_field_values($POST, $meta){
|
|
| 322 |
|
| 323 |
}
|
| 324 |
|
| 325 |
-
//function to add new variables in the address. Checks whether the new variable has to start with a ? or an &
|
| 326 |
-
function wppb_passed_arguments_check(){
|
| 327 |
-
|
| 328 |
-
$verifyLink = get_permalink();
|
| 329 |
-
$questionMarkPosition = strpos ( (string)$verifyLink , '?' );
|
| 330 |
-
if ($questionMarkPosition !== FALSE ) //we already have 1 "?"
|
| 331 |
-
$passedArgument = '&';
|
| 332 |
-
else $passedArgument = '?';
|
| 333 |
-
|
| 334 |
-
return $passedArgument;
|
| 335 |
-
}
|
| 336 |
-
|
| 337 |
-
|
| 338 |
-
// function to add the new user to the signup table if email confirmation is selected as active or it is a wpmu installation
|
| 339 |
-
function wppb_signup_user($user, $user_email, $meta = '') {
|
| 340 |
-
global $wpdb;
|
| 341 |
-
|
| 342 |
-
// Format data
|
| 343 |
-
$user = preg_replace( '/\s+/', '', sanitize_user( $user, true ) );
|
| 344 |
-
$user_email = sanitize_email( $user_email );
|
| 345 |
-
$key = substr( md5( time() . rand() . $user_email ), 0, 16 );
|
| 346 |
-
$meta = serialize($meta);
|
| 347 |
-
|
| 348 |
-
if ( is_multisite() )
|
| 349 |
-
$wpdb->insert( $wpdb->signups, array('domain' => '', 'path' => '', 'title' => '', 'user_login' => $user, 'user_email' => $user_email, 'registered' => current_time('mysql', true), 'activation_key' => $key, 'meta' => $meta) );
|
| 350 |
-
else
|
| 351 |
-
$wpdb->insert( $wpdb->prefix.'signups', array('domain' => '', 'path' => '', 'title' => '', 'user_login' => $user, 'user_email' => $user_email, 'registered' => current_time('mysql', true), 'activation_key' => $key, 'meta' => $meta) );
|
| 352 |
-
|
| 353 |
-
wppb_signup_user_notification($user, $user_email, $key, $meta);
|
| 354 |
-
}
|
| 355 |
-
|
| 356 |
-
/**
|
| 357 |
-
* Notify user of signup success.
|
| 358 |
-
*
|
| 359 |
-
* Filter 'wppb_signup_user_notification' to bypass this function or
|
| 360 |
-
* replace it with your own notification behavior.
|
| 361 |
-
*
|
| 362 |
-
* Filter 'wppb_signup_user_notification' and
|
| 363 |
-
* 'wppb_signup_user_notification' to change the content
|
| 364 |
-
* and subject line of the email sent to newly registered users.
|
| 365 |
-
*
|
| 366 |
-
* @param string $user The user's login name.
|
| 367 |
-
* @param string $user_email The user's email address.
|
| 368 |
-
* @param array $meta By default, an empty array.
|
| 369 |
-
* @param string $key The activation key created in wppb_signup_user()
|
| 370 |
-
* @return bool
|
| 371 |
-
*/
|
| 372 |
-
function wppb_signup_user_notification($user, $user_email, $key, $meta = '') {
|
| 373 |
-
if ( !apply_filters('wppb_signup_user_notification_filter', $user, $user_email, $key, $meta) )
|
| 374 |
-
return false;
|
| 375 |
-
|
| 376 |
-
// Send email with activation link.
|
| 377 |
-
$admin_email = get_site_option( 'admin_email' );
|
| 378 |
-
if ( $admin_email == '' )
|
| 379 |
-
$admin_email = 'support@' . $_SERVER['SERVER_NAME'];
|
| 380 |
-
|
| 381 |
-
$from_name = get_site_option( 'site_name' ) == '' ? 'WordPress' : esc_html( get_site_option( 'site_name' ) );
|
| 382 |
-
$from_name = apply_filters ('wppb_signup_user_notification_email_from_field', $from_name);
|
| 383 |
-
$message_headers = apply_filters ("wppb_signup_user_notification_from", "From: \"{$from_name}\" <{$admin_email}>\n" . "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"\n");
|
| 384 |
-
|
| 385 |
-
$siteURL = wppb_curpageurl().wppb_passed_arguments_check().'key='.$key;
|
| 386 |
-
|
| 387 |
-
$subject = sprintf(apply_filters( 'wppb_signup_user_notification_subject', __( '[%1$s] Activate %2$s', 'profilebuilder'), $user, $user_email, $key, $meta ), $from_name, $user);
|
| 388 |
-
$message = sprintf(apply_filters( 'wppb_signup_user_notification_email', __( "To activate your user, please click the following link:\n\n%s%s%s\n\nAfter you activate, you will receive *another email* with your login.\n\n", "profilebuilder" ),$user, $user_email, $key, $meta), '<a href="'.$siteURL.'">', $siteURL, '</a>.');
|
| 389 |
-
|
| 390 |
-
wppb_mail( $user_email, $subject, $message, $from_name, '', $user, '', $user_email, 'register_w_email_confirmation', $siteURL, $meta );
|
| 391 |
-
|
| 392 |
-
return true;
|
| 393 |
-
}
|
| 394 |
-
|
| 395 |
-
|
| 396 |
-
|
| 397 |
-
|
| 398 |
/**
|
| 399 |
* Activate a signup.
|
| 400 |
*
|
|
@@ -432,101 +214,38 @@ function wppb_activate_signup($key) {
|
|
| 432 |
|
| 433 |
if ( ! $user_id )
|
| 434 |
return $activateUserErrorMessage4 = apply_filters('wppb_register_activate_user_error_message4', '<p class="error">'. __('Could not create user!', 'profilebuilder') .'</p>');
|
| 435 |
-
|
| 436 |
-
|
| 437 |
-
|
| 438 |
-
if ( is_multisite() )
|
| 439 |
-
$retVal = $wpdb->update( $wpdb->signups, array('active' => 1, 'activated' => $now), array('activation_key' => $key) );
|
| 440 |
-
else
|
| 441 |
-
$retVal = $wpdb->update( $wpdb->prefix.'signups', array('active' => 1, 'activated' => $now), array('activation_key' => $key) );
|
| 442 |
-
|
| 443 |
-
if ( isset( $user_already_exists ) )
|
| 444 |
return $activateUserErrorMessage5 = apply_filters('wppb_register_activate_user_error_message5', '<p class="error">'. __('That username is already activated!', 'profilebuilder') .'</p>');
|
| 445 |
-
|
| 446 |
-
wppb_add_meta_to_user_on_activation($user_id, '', $meta);
|
| 447 |
-
|
| 448 |
-
// if admin approval is activated, then block the user untill he gets approved
|
| 449 |
-
$wppb_generalSettings = get_option('wppb_general_settings');
|
| 450 |
-
if($wppb_generalSettings['adminApproval'] == 'yes'){
|
| 451 |
-
wp_set_object_terms( $user_id, array( 'unapproved' ), 'user_status', false);
|
| 452 |
-
clean_object_term_cache( $user_id, 'user_status' );
|
| 453 |
-
}
|
| 454 |
-
|
| 455 |
-
wppb_notify_user_registration_email($bloginfo, $user_login, $user_email, 'sending', $password, $wppb_generalSettings['adminApproval']);
|
| 456 |
-
|
| 457 |
-
do_action('wppb_activate_user', $user_id, $password, $meta);
|
| 458 |
-
|
| 459 |
-
if ($retVal)
|
| 460 |
-
return $registerFilterArray['successfullUserActivation'] = apply_filters('wppb_register_successfull_user_activation', '<p class="success">'. __('The user was successfully activated.', 'profilebuilder') .'</p><!-- .success -->');
|
| 461 |
-
else
|
| 462 |
-
return $registerFilterArray['successfullUserActivationFail'] = apply_filters('wppb_register_failed_user_activation', '<p class="error">'. __('There was an error while trying to activate the user.', 'profilebuilder') .'</p><!-- .error -->');
|
| 463 |
-
}
|
| 464 |
-
|
| 465 |
-
/**
|
| 466 |
-
* Create a user.
|
| 467 |
-
*
|
| 468 |
-
* @param string $user_name The new user's login name.
|
| 469 |
-
* @param string $password The new user's password.
|
| 470 |
-
* @param string $email The new user's email address.
|
| 471 |
-
* @return mixed Returns false on failure, or int $user_id on success
|
| 472 |
-
*/
|
| 473 |
-
function wppb_create_user( $user_name, $password, $email) {
|
| 474 |
-
$user_name = preg_replace( '/\s+/', '', sanitize_user( $user_name, true ) );
|
| 475 |
-
|
| 476 |
-
$user_id = wp_create_user( $user_name, $password, $email );
|
| 477 |
-
if ( is_wp_error($user_id) )
|
| 478 |
-
return false;
|
| 479 |
-
|
| 480 |
-
// Newly created users have no roles or caps until they are added to a blog.
|
| 481 |
-
delete_user_option( $user_id, 'capabilities' );
|
| 482 |
-
delete_user_option( $user_id, 'user_level' );
|
| 483 |
-
|
| 484 |
-
do_action( 'wppb_new_user', $user_id );
|
| 485 |
-
|
| 486 |
-
return $user_id;
|
| 487 |
-
}
|
| 488 |
-
|
| 489 |
-
|
| 490 |
-
|
| 491 |
-
|
| 492 |
-
|
| 493 |
-
//send an email to the admin regarding each and every new subscriber, and - if selected - to the user himself
|
| 494 |
-
function wppb_notify_user_registration_email($bloginfo, $user_name, $email, $send_credentials_via_email, $passw1, $adminApproval){
|
| 495 |
-
|
| 496 |
-
$registerFilterArray['adminMessageOnRegistration'] = sprintf(__( 'New subscriber on %1$s.<br/><br/>Username:%2$s<br/>E-mail:%3$s<br/>', 'profilebuilder'), $bloginfo, $user_name, $email);
|
| 497 |
-
if ($adminApproval == 'yes')
|
| 498 |
-
$registerFilterArray['adminMessageOnRegistration'] .= '<br/>'. __('The "Admin Approval" feature was activated at the time of registration, so please remember that you need to approve this user before he/she can log in!', 'profilebuilder') ."\r\n";
|
| 499 |
-
$registerFilterArray['adminMessageOnRegistration'] = apply_filters('wppb_register_admin_message_content', $registerFilterArray['adminMessageOnRegistration'], $bloginfo, $user_name, $email);
|
| 500 |
|
| 501 |
-
|
| 502 |
-
|
| 503 |
-
|
| 504 |
-
|
| 505 |
-
|
|
|
|
|
|
|
| 506 |
|
| 507 |
-
|
| 508 |
-
//send an email to the newly registered user, if this option was selected
|
| 509 |
-
if (isset($send_credentials_via_email) && ($send_credentials_via_email == 'sending')){
|
| 510 |
-
//change these variables to modify sent email message, destination and source.
|
| 511 |
|
| 512 |
-
$registerFilterArray['userMessageFrom'] = $bloginfo;
|
| 513 |
-
$registerFilterArray['userMessageFrom'] = apply_filters('wppb_register_from_email_content', $registerFilterArray['userMessageFrom']);
|
| 514 |
|
| 515 |
-
$
|
| 516 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 517 |
|
| 518 |
-
|
| 519 |
-
if ($adminApproval == 'yes')
|
| 520 |
-
$registerFilterArray['userMessageContent'] .= '<br/>'. __('Before you can access your account, an administrator needs to approve it. You will be notified via email.', 'profilebuilder');
|
| 521 |
-
$registerFilterArray['userMessageContent'] = apply_filters('wppb_register_email_content', $registerFilterArray['userMessageContent'], $registerFilterArray['userMessageFrom'], $user_name, $passw1);
|
| 522 |
|
| 523 |
-
|
| 524 |
|
| 525 |
-
if(
|
| 526 |
-
return
|
| 527 |
else
|
| 528 |
-
return
|
| 529 |
-
}
|
| 530 |
}
|
| 531 |
|
| 532 |
|
|
@@ -564,8 +283,6 @@ function wppb_front_end_register($atts){
|
|
| 564 |
/* END variables used to verify if all required fields were submitted*/
|
| 565 |
|
| 566 |
|
| 567 |
-
/* Load registration file. */
|
| 568 |
-
require_once( ABSPATH . WPINC . '/registration.php' );
|
| 569 |
|
| 570 |
/* Check if users can register. */
|
| 571 |
$registration = get_option( 'users_can_register' );
|
| 34 |
}
|
| 35 |
|
| 36 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
function wppb_add_custom_field_values($POST, $meta){
|
| 38 |
/* add the extra profile information */
|
| 39 |
$wppb_premium = WPPB_PLUGIN_DIR . '/premium/functions/';
|
| 177 |
|
| 178 |
}
|
| 179 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 180 |
/**
|
| 181 |
* Activate a signup.
|
| 182 |
*
|
| 214 |
|
| 215 |
if ( ! $user_id )
|
| 216 |
return $activateUserErrorMessage4 = apply_filters('wppb_register_activate_user_error_message4', '<p class="error">'. __('Could not create user!', 'profilebuilder') .'</p>');
|
| 217 |
+
|
| 218 |
+
elseif ( isset( $user_already_exists ) )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 219 |
return $activateUserErrorMessage5 = apply_filters('wppb_register_activate_user_error_message5', '<p class="error">'. __('That username is already activated!', 'profilebuilder') .'</p>');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 220 |
|
| 221 |
+
else{
|
| 222 |
+
$now = current_time('mysql', true);
|
| 223 |
+
|
| 224 |
+
if ( is_multisite() )
|
| 225 |
+
$retVal = $wpdb->update( $wpdb->signups, array('active' => 1, 'activated' => $now), array('activation_key' => $key) );
|
| 226 |
+
else
|
| 227 |
+
$retVal = $wpdb->update( $wpdb->prefix.'signups', array('active' => 1, 'activated' => $now), array('activation_key' => $key) );
|
| 228 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 229 |
|
|
|
|
|
|
|
| 230 |
|
| 231 |
+
wppb_add_meta_to_user_on_activation($user_id, '', $meta);
|
| 232 |
+
|
| 233 |
+
// if admin approval is activated, then block the user untill he gets approved
|
| 234 |
+
$wppb_generalSettings = get_option('wppb_general_settings');
|
| 235 |
+
if($wppb_generalSettings['adminApproval'] == 'yes'){
|
| 236 |
+
wp_set_object_terms( $user_id, array( 'unapproved' ), 'user_status', false);
|
| 237 |
+
clean_object_term_cache( $user_id, 'user_status' );
|
| 238 |
+
}
|
| 239 |
|
| 240 |
+
wppb_notify_user_registration_email($bloginfo, $user_login, $user_email, 'sending', $password, $wppb_generalSettings['adminApproval']);
|
|
|
|
|
|
|
|
|
|
| 241 |
|
| 242 |
+
do_action('wppb_activate_user', $user_id, $password, $meta);
|
| 243 |
|
| 244 |
+
if ($retVal)
|
| 245 |
+
return $registerFilterArray['successfullUserActivation'] = apply_filters('wppb_register_successfull_user_activation', '<p class="success">'. __('The user was successfully activated.', 'profilebuilder') .'</p><!-- .success -->');
|
| 246 |
else
|
| 247 |
+
return $registerFilterArray['successfullUserActivationFail'] = apply_filters('wppb_register_failed_user_activation', '<p class="error">'. __('There was an error while trying to activate the user.', 'profilebuilder') .'</p><!-- .error -->');
|
| 248 |
+
}
|
| 249 |
}
|
| 250 |
|
| 251 |
|
| 283 |
/* END variables used to verify if all required fields were submitted*/
|
| 284 |
|
| 285 |
|
|
|
|
|
|
|
| 286 |
|
| 287 |
/* Check if users can register. */
|
| 288 |
$registration = get_option( 'users_can_register' );
|
functions/email.confirmation.php
ADDED
|
@@ -0,0 +1,511 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
//functions needed for the email-confirmation on single-sites (to create the "_signups" table)
|
| 3 |
+
function wppb_signup_schema($oldVal, $newVal){
|
| 4 |
+
|
| 5 |
+
// Declare these as global in case schema.php is included from a function.
|
| 6 |
+
global $wpdb, $wp_queries, $charset_collate;
|
| 7 |
+
|
| 8 |
+
if ($newVal['emailConfirmation'] == 'yes'){
|
| 9 |
+
|
| 10 |
+
//The database character collate.
|
| 11 |
+
$charset_collate = '';
|
| 12 |
+
|
| 13 |
+
if ( ! empty( $wpdb->charset ) )
|
| 14 |
+
$charset_collate = "DEFAULT CHARACTER SET ".$wpdb->charset;
|
| 15 |
+
if ( ! empty( $wpdb->collate ) )
|
| 16 |
+
$charset_collate .= " COLLATE ".$wpdb->collate;
|
| 17 |
+
$tableName = $wpdb->prefix.'signups';
|
| 18 |
+
|
| 19 |
+
$sql = "
|
| 20 |
+
CREATE TABLE $tableName (
|
| 21 |
+
domain varchar(200) NOT NULL default '',
|
| 22 |
+
path varchar(100) NOT NULL default '',
|
| 23 |
+
title longtext NOT NULL,
|
| 24 |
+
user_login varchar(60) NOT NULL default '',
|
| 25 |
+
user_email varchar(100) NOT NULL default '',
|
| 26 |
+
registered datetime NOT NULL default '0000-00-00 00:00:00',
|
| 27 |
+
activated datetime NOT NULL default '0000-00-00 00:00:00',
|
| 28 |
+
active tinyint(1) NOT NULL default '0',
|
| 29 |
+
activation_key varchar(50) NOT NULL default '',
|
| 30 |
+
meta longtext,
|
| 31 |
+
KEY activation_key (activation_key),
|
| 32 |
+
KEY domain (domain)
|
| 33 |
+
) $charset_collate;";
|
| 34 |
+
|
| 35 |
+
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
| 36 |
+
$res = dbDelta($sql);
|
| 37 |
+
}
|
| 38 |
+
}
|
| 39 |
+
add_action( 'update_option_wppb_general_settings', 'wppb_signup_schema', 10, 2 );
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
//function to add new tab in the default WP userlisting with all the users who didn't confirm their account yet
|
| 43 |
+
function wppb_add_peding_users_header_script(){
|
| 44 |
+
?>
|
| 45 |
+
<script type="text/javascript">
|
| 46 |
+
jQuery(document).ready(function() {
|
| 47 |
+
jQuery.post( ajaxurl , { action:"wppb_get_unconfirmed_email_number"}, function(response) {
|
| 48 |
+
jQuery('.wrap ul.subsubsub').append('<span id="separatorID">|</span> <li class="listUsersWithUncofirmedEmail"><a class="unconfirmedEmailUsers" href="?page=unconfirmed_emails"><?php _e('Users with Unconfirmed Email Address', 'profilebuilder');?></a> <font id="unconfirmedEmailNo" color="grey">('+response.number+')</font></li>');
|
| 49 |
+
});
|
| 50 |
+
});
|
| 51 |
+
|
| 52 |
+
function confirmECActionBulk(URL, message) {
|
| 53 |
+
if (confirm(message)) {
|
| 54 |
+
window.location=URL;
|
| 55 |
+
}
|
| 56 |
+
}
|
| 57 |
+
|
| 58 |
+
// script to create a confirmation box for the user upon approving/unapproving a user
|
| 59 |
+
function confirmECAction(URL, todo, userID, actionText) {
|
| 60 |
+
actionText = '<?php _e('Do you want to', 'profilebuilder');?>'+' '+actionText;
|
| 61 |
+
|
| 62 |
+
if (confirm(actionText)) {
|
| 63 |
+
jQuery.post( ajaxurl , { action:"wppb_handle_email_confirmation_cases", URL:URL, todo:todo, userID:userID}, function(response) {
|
| 64 |
+
if (response == 'ok'){
|
| 65 |
+
window.location=URL;
|
| 66 |
+
}else{
|
| 67 |
+
alert(response);
|
| 68 |
+
}
|
| 69 |
+
});
|
| 70 |
+
}
|
| 71 |
+
}
|
| 72 |
+
</script>
|
| 73 |
+
<?php
|
| 74 |
+
}
|
| 75 |
+
|
| 76 |
+
function wppb_get_unconfirmed_email_number(){
|
| 77 |
+
global $wpdb;
|
| 78 |
+
|
| 79 |
+
$result = mysql_query("SELECT * FROM ".$wpdb->prefix."signups AS t1 WHERE t1.active = 0");
|
| 80 |
+
if ($result === false)
|
| 81 |
+
$retVal = 0;
|
| 82 |
+
else
|
| 83 |
+
$retVal = mysql_num_rows($result);
|
| 84 |
+
|
| 85 |
+
header( 'Content-type: application/json' );
|
| 86 |
+
die( json_encode( array( 'number' => $retVal ) ) );
|
| 87 |
+
}
|
| 88 |
+
|
| 89 |
+
|
| 90 |
+
function wppb_handle_email_confirmation_cases() {
|
| 91 |
+
global $current_user;
|
| 92 |
+
global $wpdb;
|
| 93 |
+
|
| 94 |
+
//die($current_user);
|
| 95 |
+
$url = trim($_POST['URL']);
|
| 96 |
+
$todo = trim($_POST['todo']);
|
| 97 |
+
$userID = trim($_POST['userID']);
|
| 98 |
+
|
| 99 |
+
if (current_user_can('delete_users'))
|
| 100 |
+
if (($todo != '') && ($userID != '')){
|
| 101 |
+
|
| 102 |
+
$iterator = 0;
|
| 103 |
+
$result = mysql_query("SELECT * FROM ".$wpdb->prefix."signups WHERE active=0");
|
| 104 |
+
|
| 105 |
+
if ($todo == 'delete'){
|
| 106 |
+
while ($row=mysql_fetch_row($result)){
|
| 107 |
+
if ((string)$iterator === $userID){
|
| 108 |
+
$result2 = mysql_query("DELETE FROM ".$wpdb->prefix."signups WHERE user_login='".$row[3]."' AND user_email='".$row[4]."'");
|
| 109 |
+
if ($result2)
|
| 110 |
+
die('ok');
|
| 111 |
+
else{
|
| 112 |
+
$failed = __("The selected user couldn't be deleted.", "profilebuilder");
|
| 113 |
+
die($failed);
|
| 114 |
+
}
|
| 115 |
+
}
|
| 116 |
+
$iterator++;
|
| 117 |
+
}
|
| 118 |
+
}elseif ($todo == 'confirm'){
|
| 119 |
+
while ($row=mysql_fetch_row($result)){
|
| 120 |
+
if ((string)$iterator === $userID){
|
| 121 |
+
$ret = wppb_manual_activate_signup($row[8]);
|
| 122 |
+
die($ret);
|
| 123 |
+
}
|
| 124 |
+
$iterator++;
|
| 125 |
+
}
|
| 126 |
+
}
|
| 127 |
+
}
|
| 128 |
+
|
| 129 |
+
$failed = __("You either don't have permission for that action or there was an error!", "profilebuilder");
|
| 130 |
+
die($failed);
|
| 131 |
+
}
|
| 132 |
+
|
| 133 |
+
|
| 134 |
+
|
| 135 |
+
// FUNCTIONS USED BOTH ON THE REGISTRATION PAGE AND THE EMAIL CONFIRMATION TABLE
|
| 136 |
+
|
| 137 |
+
//function to add new variables in the address. Checks whether the new variable has to start with a ? or an &
|
| 138 |
+
function wppb_passed_arguments_check(){
|
| 139 |
+
|
| 140 |
+
$verifyLink = get_permalink();
|
| 141 |
+
$questionMarkPosition = strpos ( (string)$verifyLink , '?' );
|
| 142 |
+
if ($questionMarkPosition !== FALSE ) //we already have 1 "?"
|
| 143 |
+
$passedArgument = '&';
|
| 144 |
+
else $passedArgument = '?';
|
| 145 |
+
|
| 146 |
+
return $passedArgument;
|
| 147 |
+
}
|
| 148 |
+
|
| 149 |
+
// Hook to add AP user meta after signup autentification
|
| 150 |
+
add_action('wpmu_activate_user','wppb_add_meta_to_user_on_activation',10,3);
|
| 151 |
+
|
| 152 |
+
//function that adds AP user meta after signup autentification and it is also used when editing the user uprofile
|
| 153 |
+
function wppb_add_meta_to_user_on_activation($user_id, $password, $meta){
|
| 154 |
+
|
| 155 |
+
//copy the data from the meta field (default fields)
|
| 156 |
+
if( !empty($meta['first_name'] ) )
|
| 157 |
+
update_user_meta( $user_id, 'first_name', $meta['first_name'] );
|
| 158 |
+
if( !empty($meta['last_name'] ) )
|
| 159 |
+
update_user_meta( $user_id, 'last_name', $meta['last_name'] );
|
| 160 |
+
if( !empty($meta['nickname'] ) )
|
| 161 |
+
update_user_meta( $user_id, 'nickname', $meta['nickname'] );
|
| 162 |
+
if( !empty($meta['user_url'] ) )
|
| 163 |
+
update_user_meta( $user_id, 'user_url', $meta['user_url'] );
|
| 164 |
+
if( !empty($meta['aim'] ) )
|
| 165 |
+
update_user_meta( $user_id, 'aim', $meta['aim'] );
|
| 166 |
+
if( !empty($meta['yim'] ) )
|
| 167 |
+
update_user_meta( $user_id, 'yim', $meta['yim'] );
|
| 168 |
+
if( !empty($meta['jabber'] ) )
|
| 169 |
+
update_user_meta( $user_id, 'jabber', $meta['jabber'] );
|
| 170 |
+
if( !empty($meta['description'] ) )
|
| 171 |
+
update_user_meta( $user_id, 'description', $meta['description'] );
|
| 172 |
+
|
| 173 |
+
//update the users role (s)he registered for
|
| 174 |
+
if( !empty($meta['role'] ) ){
|
| 175 |
+
$user = new WP_User($user_id);
|
| 176 |
+
$user->set_role($meta['role']);
|
| 177 |
+
}
|
| 178 |
+
|
| 179 |
+
//copy the data from the meta fields (custom fields)
|
| 180 |
+
$wppb_premium = WPPB_PLUGIN_DIR . '/premium/functions/';
|
| 181 |
+
if (file_exists ( $wppb_premium.'extra.fields.php' )){
|
| 182 |
+
$wppbFetchArray = get_option('wppb_custom_fields');
|
| 183 |
+
foreach ( $wppbFetchArray as $key => $value){
|
| 184 |
+
switch ($value['item_type']) {
|
| 185 |
+
case "input":{
|
| 186 |
+
if( !empty($meta[$value['item_type'].$value['id']] ) )
|
| 187 |
+
update_user_meta( $user_id, $value['item_metaName'], $meta[$value['item_type'].$value['id']] );
|
| 188 |
+
break;
|
| 189 |
+
}
|
| 190 |
+
case "hiddenInput":{
|
| 191 |
+
if( !empty($meta[$value['item_type'].$value['id']] ) )
|
| 192 |
+
update_user_meta( $user_id, $value['item_metaName'], $meta[$value['item_type'].$value['id']] );
|
| 193 |
+
break;
|
| 194 |
+
}
|
| 195 |
+
case "checkbox":{
|
| 196 |
+
if( !empty($meta[$value['item_type'].$value['id']] ) )
|
| 197 |
+
update_user_meta( $user_id, $value['item_metaName'], $meta[$value['item_type'].$value['id']] );
|
| 198 |
+
break;
|
| 199 |
+
}
|
| 200 |
+
case "radio":{
|
| 201 |
+
if( !empty($meta[$value['item_type'].$value['id']] ) )
|
| 202 |
+
update_user_meta( $user_id, $value['item_metaName'], $meta[$value['item_type'].$value['id']] );
|
| 203 |
+
break;
|
| 204 |
+
}
|
| 205 |
+
case "select":{
|
| 206 |
+
if( !empty($meta[$value['item_type'].$value['id']] ) )
|
| 207 |
+
update_user_meta( $user_id, $value['item_metaName'], $meta[$value['item_type'].$value['id']] );
|
| 208 |
+
break;
|
| 209 |
+
}
|
| 210 |
+
case "countrySelect":{
|
| 211 |
+
if( !empty($meta[$value['item_type'].$value['id']] ) )
|
| 212 |
+
update_user_meta( $user_id, $value['item_metaName'], $meta[$value['item_type'].$value['id']] );
|
| 213 |
+
break;
|
| 214 |
+
}
|
| 215 |
+
case "timeZone":{
|
| 216 |
+
if( !empty($meta[$value['item_type'].$value['id']] ) )
|
| 217 |
+
update_user_meta( $user_id, $value['item_metaName'], $meta[$value['item_type'].$value['id']] );
|
| 218 |
+
break;
|
| 219 |
+
}
|
| 220 |
+
case "datepicker":{
|
| 221 |
+
if( !empty($meta[$value['item_type'].$value['id']] ) )
|
| 222 |
+
update_user_meta( $user_id, $value['item_metaName'], $meta[$value['item_type'].$value['id']] );
|
| 223 |
+
break;
|
| 224 |
+
}
|
| 225 |
+
case "textarea":{
|
| 226 |
+
if( !empty($meta[$value['item_type'].$value['id']] ) )
|
| 227 |
+
update_user_meta( $user_id, $value['item_metaName'], $meta[$value['item_type'].$value['id']] );
|
| 228 |
+
break;
|
| 229 |
+
}
|
| 230 |
+
case "upload":{
|
| 231 |
+
if( !empty($meta[$value['item_type'].$value['id']] ) ){
|
| 232 |
+
$filename = $meta[$value['item_type'].$value['id']];
|
| 233 |
+
|
| 234 |
+
$fileNameStartUpload = strpos ( (string)$filename , '_attachment_' );
|
| 235 |
+
$originalUploadFilename = substr($filename, $fileNameStartUpload+12);
|
| 236 |
+
$newFileName = 'userID_'.$user_id.'_attachment_'.$originalUploadFilename;
|
| 237 |
+
|
| 238 |
+
$wpUploadPath = wp_upload_dir(); // Array of key => value pairs
|
| 239 |
+
$target_path_original = $wpUploadPath['baseurl']."/profile_builder/attachments/";
|
| 240 |
+
$fileDir = $wpUploadPath['basedir'].'/profile_builder/attachments/';
|
| 241 |
+
$target_path = $target_path_original . 'userID_'.$user_id.'_attachment_'. $originalUploadFilename;
|
| 242 |
+
|
| 243 |
+
$renamedVar = rename ($fileDir.$meta[$value['item_type'].$value['id']], $fileDir.$newFileName);
|
| 244 |
+
|
| 245 |
+
if ($renamedVar)
|
| 246 |
+
add_user_meta( $user_id, $value['item_metaName'], $target_path );
|
| 247 |
+
}
|
| 248 |
+
break;
|
| 249 |
+
}
|
| 250 |
+
case "avatar":{
|
| 251 |
+
if( !empty($meta[$value['item_type'].$value['id']] ) ){
|
| 252 |
+
$filename = $meta[$value['item_type'].$value['id']];
|
| 253 |
+
|
| 254 |
+
$fileNameStartAvatar = strpos ( (string)$filename , 'originalAvatar_' );
|
| 255 |
+
$originalAvatarFilename = substr($filename, $fileNameStartAvatar+15);
|
| 256 |
+
$newFileName = 'userID_'.$user_id.'_originalAvatar_'.$originalAvatarFilename;
|
| 257 |
+
|
| 258 |
+
$wpUploadPath = wp_upload_dir(); // Array of key => value pairs
|
| 259 |
+
$target_path_original = $wpUploadPath['baseurl']."/profile_builder/avatars/";
|
| 260 |
+
$fileDir = $wpUploadPath['basedir'].'/profile_builder/avatars/';
|
| 261 |
+
$target_path = $target_path_original . 'userID_'.$user_id.'_originalAvatar_'. $originalAvatarFilename;
|
| 262 |
+
|
| 263 |
+
$renamedVar = rename ($fileDir.'wpmuRandomID_'.$meta[$value['item_type'].$value['id'].'_radomUserNumber'].'_originalAvatar_'.$originalAvatarFilename, $fileDir.$newFileName);
|
| 264 |
+
|
| 265 |
+
if ($renamedVar){
|
| 266 |
+
$wp_filetype = wp_check_filetype(basename( $filename ), null );
|
| 267 |
+
$attachment = array('post_mime_type' => $wp_filetype['type'],
|
| 268 |
+
'post_title' => $filename, //preg_replace('/\.[^.]+$/', '', basename($_FILES[$uploadedfile]['name'])),
|
| 269 |
+
'post_content' => '',
|
| 270 |
+
'post_status' => 'inherit'
|
| 271 |
+
);
|
| 272 |
+
|
| 273 |
+
|
| 274 |
+
$attach_id = wp_insert_attachment( $attachment, $target_path);
|
| 275 |
+
|
| 276 |
+
$upFile = image_downsize( $attach_id, 'thumbnail' );
|
| 277 |
+
$upFile = $upFile[0];
|
| 278 |
+
|
| 279 |
+
|
| 280 |
+
|
| 281 |
+
add_user_meta( $user_id, $value['item_metaName'], $upFile );
|
| 282 |
+
wppb_resize_avatar($user_id);
|
| 283 |
+
}
|
| 284 |
+
}
|
| 285 |
+
break;
|
| 286 |
+
}
|
| 287 |
+
}
|
| 288 |
+
}
|
| 289 |
+
}
|
| 290 |
+
}
|
| 291 |
+
|
| 292 |
+
|
| 293 |
+
// function to add the new user to the signup table if email confirmation is selected as active or it is a wpmu installation
|
| 294 |
+
function wppb_signup_user($user, $user_email, $meta = '') {
|
| 295 |
+
global $wpdb;
|
| 296 |
+
|
| 297 |
+
// Format data
|
| 298 |
+
$user = preg_replace( '/\s+/', '', sanitize_user( $user, true ) );
|
| 299 |
+
$user_email = sanitize_email( $user_email );
|
| 300 |
+
$key = substr( md5( time() . rand() . $user_email ), 0, 16 );
|
| 301 |
+
$meta = serialize($meta);
|
| 302 |
+
|
| 303 |
+
if ( is_multisite() )
|
| 304 |
+
$wpdb->insert( $wpdb->signups, array('domain' => '', 'path' => '', 'title' => '', 'user_login' => $user, 'user_email' => $user_email, 'registered' => current_time('mysql', true), 'activation_key' => $key, 'meta' => $meta) );
|
| 305 |
+
else
|
| 306 |
+
$wpdb->insert( $wpdb->prefix.'signups', array('domain' => '', 'path' => '', 'title' => '', 'user_login' => $user, 'user_email' => $user_email, 'registered' => current_time('mysql', true), 'activation_key' => $key, 'meta' => $meta) );
|
| 307 |
+
|
| 308 |
+
wppb_signup_user_notification($user, $user_email, $key, $meta);
|
| 309 |
+
}
|
| 310 |
+
|
| 311 |
+
/**
|
| 312 |
+
* Notify user of signup success.
|
| 313 |
+
*
|
| 314 |
+
* Filter 'wppb_signup_user_notification' to bypass this function or
|
| 315 |
+
* replace it with your own notification behavior.
|
| 316 |
+
*
|
| 317 |
+
* Filter 'wppb_signup_user_notification' and
|
| 318 |
+
* 'wppb_signup_user_notification' to change the content
|
| 319 |
+
* and subject line of the email sent to newly registered users.
|
| 320 |
+
*
|
| 321 |
+
* @param string $user The user's login name.
|
| 322 |
+
* @param string $user_email The user's email address.
|
| 323 |
+
* @param array $meta By default, an empty array.
|
| 324 |
+
* @param string $key The activation key created in wppb_signup_user()
|
| 325 |
+
* @return bool
|
| 326 |
+
*/
|
| 327 |
+
function wppb_signup_user_notification($user, $user_email, $key, $meta = '') {
|
| 328 |
+
if ( !apply_filters('wppb_signup_user_notification_filter', $user, $user_email, $key, $meta) )
|
| 329 |
+
return false;
|
| 330 |
+
|
| 331 |
+
// Send email with activation link.
|
| 332 |
+
$admin_email = get_site_option( 'admin_email' );
|
| 333 |
+
if ( $admin_email == '' )
|
| 334 |
+
$admin_email = 'support@' . $_SERVER['SERVER_NAME'];
|
| 335 |
+
|
| 336 |
+
$from_name = get_site_option( 'site_name' ) == '' ? 'WordPress' : esc_html( get_site_option( 'site_name' ) );
|
| 337 |
+
$from_name = apply_filters ('wppb_signup_user_notification_email_from_field', $from_name);
|
| 338 |
+
$message_headers = apply_filters ("wppb_signup_user_notification_from", "From: \"{$from_name}\" <{$admin_email}>\n" . "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"\n");
|
| 339 |
+
|
| 340 |
+
$siteURL = wppb_curpageurl().wppb_passed_arguments_check().'key='.$key;
|
| 341 |
+
|
| 342 |
+
$subject = sprintf(apply_filters( 'wppb_signup_user_notification_subject', __( '[%1$s] Activate %2$s', 'profilebuilder'), $user, $user_email, $key, $meta ), $from_name, $user);
|
| 343 |
+
$message = sprintf(apply_filters( 'wppb_signup_user_notification_email', __( "To activate your user, please click the following link:\n\n%s%s%s\n\nAfter you activate, you will receive *another email* with your login.\n\n", "profilebuilder" ),$user, $user_email, $key, $meta), '<a href="'.$siteURL.'">', $siteURL, '</a>.');
|
| 344 |
+
|
| 345 |
+
wppb_mail( $user_email, $subject, $message, $from_name, '', $user, '', $user_email, 'register_w_email_confirmation', $siteURL, $meta );
|
| 346 |
+
|
| 347 |
+
return true;
|
| 348 |
+
}
|
| 349 |
+
|
| 350 |
+
|
| 351 |
+
/**
|
| 352 |
+
* Activate a signup.
|
| 353 |
+
*
|
| 354 |
+
*
|
| 355 |
+
* @param string $key The activation key provided to the user.
|
| 356 |
+
* @return array An array containing information about the activated user and/or blog
|
| 357 |
+
*/
|
| 358 |
+
function wppb_manual_activate_signup($key) {
|
| 359 |
+
global $wpdb;
|
| 360 |
+
$bloginfo = get_bloginfo( 'name' );
|
| 361 |
+
|
| 362 |
+
if ( is_multisite() )
|
| 363 |
+
$signup = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->signups WHERE activation_key = %s", $key) );
|
| 364 |
+
else
|
| 365 |
+
$signup = $wpdb->get_row( $wpdb->prepare("SELECT * FROM ".$wpdb->prefix."signups WHERE activation_key = %s", $key) );
|
| 366 |
+
|
| 367 |
+
if ( !empty( $signup ) && !$signup->active ){
|
| 368 |
+
$meta = unserialize($signup->meta);
|
| 369 |
+
$user_login = $wpdb->escape($signup->user_login);
|
| 370 |
+
$user_email = $wpdb->escape($signup->user_email);
|
| 371 |
+
$password = base64_decode($meta['user_pass']);
|
| 372 |
+
|
| 373 |
+
$user_id = username_exists($user_login);
|
| 374 |
+
|
| 375 |
+
if ( ! $user_id )
|
| 376 |
+
$user_id = wppb_create_user($user_login, $password, $user_email);
|
| 377 |
+
else
|
| 378 |
+
$user_already_exists = true;
|
| 379 |
+
|
| 380 |
+
if ( ! $user_id )
|
| 381 |
+
return __('Could not create user!', 'profilebuilder');
|
| 382 |
+
|
| 383 |
+
elseif ( isset( $user_already_exists ) )
|
| 384 |
+
return __('That username is already activated!', 'profilebuilder');
|
| 385 |
+
|
| 386 |
+
else{
|
| 387 |
+
$now = current_time('mysql', true);
|
| 388 |
+
|
| 389 |
+
if ( is_multisite() )
|
| 390 |
+
$retVal = $wpdb->update( $wpdb->signups, array('active' => 1, 'activated' => $now), array('activation_key' => $key) );
|
| 391 |
+
else
|
| 392 |
+
$retVal = $wpdb->update( $wpdb->prefix.'signups', array('active' => 1, 'activated' => $now), array('activation_key' => $key) );
|
| 393 |
+
|
| 394 |
+
wppb_add_meta_to_user_on_activation($user_id, '', $meta);
|
| 395 |
+
|
| 396 |
+
// if admin approval is activated, then block the user untill he gets approved
|
| 397 |
+
$wppb_generalSettings = get_option('wppb_general_settings');
|
| 398 |
+
if($wppb_generalSettings['adminApproval'] == 'yes'){
|
| 399 |
+
wp_set_object_terms( $user_id, array( 'unapproved' ), 'user_status', false);
|
| 400 |
+
clean_object_term_cache( $user_id, 'user_status' );
|
| 401 |
+
}
|
| 402 |
+
|
| 403 |
+
wppb_notify_user_registration_email($bloginfo, $user_login, $user_email, 'sending', $password, $wppb_generalSettings['adminApproval']);
|
| 404 |
+
|
| 405 |
+
do_action('wppb_activate_user', $user_id, $password, $meta);
|
| 406 |
+
|
| 407 |
+
if ($retVal)
|
| 408 |
+
return 'ok';
|
| 409 |
+
else
|
| 410 |
+
return __('There was an error while trying to activate the user.', 'profilebuilder');
|
| 411 |
+
|
| 412 |
+
}
|
| 413 |
+
}
|
| 414 |
+
}
|
| 415 |
+
|
| 416 |
+
/**
|
| 417 |
+
* Create a user.
|
| 418 |
+
*
|
| 419 |
+
* @param string $user_name The new user's login name.
|
| 420 |
+
* @param string $password The new user's password.
|
| 421 |
+
* @param string $email The new user's email address.
|
| 422 |
+
* @return mixed Returns false on failure, or int $user_id on success
|
| 423 |
+
*/
|
| 424 |
+
function wppb_create_user( $user_name, $password, $email) {
|
| 425 |
+
$user_name = preg_replace( '/\s+/', '', sanitize_user( $user_name, true ) );
|
| 426 |
+
|
| 427 |
+
$user_id = wp_create_user( $user_name, $password, $email );
|
| 428 |
+
if ( is_wp_error($user_id) )
|
| 429 |
+
return false;
|
| 430 |
+
|
| 431 |
+
// Newly created users have no roles or caps until they are added to a blog.
|
| 432 |
+
delete_user_option( $user_id, 'capabilities' );
|
| 433 |
+
delete_user_option( $user_id, 'user_level' );
|
| 434 |
+
|
| 435 |
+
do_action( 'wppb_new_user', $user_id );
|
| 436 |
+
|
| 437 |
+
return $user_id;
|
| 438 |
+
}
|
| 439 |
+
|
| 440 |
+
//send an email to the admin regarding each and every new subscriber, and - if selected - to the user himself
|
| 441 |
+
function wppb_notify_user_registration_email($bloginfo, $user_name, $email, $send_credentials_via_email, $passw1, $adminApproval){
|
| 442 |
+
|
| 443 |
+
$registerFilterArray['adminMessageOnRegistration'] = sprintf(__( 'New subscriber on %1$s.<br/><br/>Username:%2$s<br/>E-mail:%3$s<br/>', 'profilebuilder'), $bloginfo, $user_name, $email);
|
| 444 |
+
if ($adminApproval == 'yes')
|
| 445 |
+
$registerFilterArray['adminMessageOnRegistration'] .= '<br/>'. __('The "Admin Approval" feature was activated at the time of registration, so please remember that you need to approve this user before he/she can log in!', 'profilebuilder') ."\r\n";
|
| 446 |
+
$registerFilterArray['adminMessageOnRegistration'] = apply_filters('wppb_register_admin_message_content', $registerFilterArray['adminMessageOnRegistration'], $bloginfo, $user_name, $email);
|
| 447 |
+
|
| 448 |
+
$registerFilterArray['adminMessageOnRegistrationSubject'] = '['. $bloginfo .'] '. __('A new subscriber has (been) registered!', 'profilebuilder');
|
| 449 |
+
$registerFilterArray['adminMessageOnRegistrationSubject'] = apply_filters ('wppb_register_admin_message_title', $registerFilterArray['adminMessageOnRegistrationSubject']);
|
| 450 |
+
|
| 451 |
+
if (trim($registerFilterArray['adminMessageOnRegistration']) != '')
|
| 452 |
+
wppb_mail(get_option('admin_email'), $registerFilterArray['adminMessageOnRegistrationSubject'], $registerFilterArray['adminMessageOnRegistration'], $blogInfo, '', $user_name, $passw1, $email, 'register_w_o_admin_approval_admin_email', $adminApproval, '' );
|
| 453 |
+
|
| 454 |
+
|
| 455 |
+
//send an email to the newly registered user, if this option was selected
|
| 456 |
+
if (isset($send_credentials_via_email) && ($send_credentials_via_email == 'sending')){
|
| 457 |
+
//change these variables to modify sent email message, destination and source.
|
| 458 |
+
|
| 459 |
+
$registerFilterArray['userMessageFrom'] = $bloginfo;
|
| 460 |
+
$registerFilterArray['userMessageFrom'] = apply_filters('wppb_register_from_email_content', $registerFilterArray['userMessageFrom']);
|
| 461 |
+
|
| 462 |
+
$registerFilterArray['userMessageSubject'] = __('A new account has been created for you.', 'profilebuilder');
|
| 463 |
+
$registerFilterArray['userMessageSubject'] = apply_filters('wppb_register_subject_email_content', $registerFilterArray['userMessageSubject']);
|
| 464 |
+
|
| 465 |
+
$registerFilterArray['userMessageContent'] = sprintf(__( 'Welcome to %1$s!<br/><br/> Your username is:%2$s and password:%3$s', 'profilebuilder'), $registerFilterArray['userMessageFrom'], $user_name, $passw1);
|
| 466 |
+
if ($adminApproval == 'yes')
|
| 467 |
+
$registerFilterArray['userMessageContent'] .= '<br/>'. __('Before you can access your account, an administrator needs to approve it. You will be notified via email.', 'profilebuilder');
|
| 468 |
+
$registerFilterArray['userMessageContent'] = apply_filters('wppb_register_email_content', $registerFilterArray['userMessageContent'], $registerFilterArray['userMessageFrom'], $user_name, $passw1);
|
| 469 |
+
|
| 470 |
+
$messageSent = wppb_mail( $email, $registerFilterArray['userMessageSubject'], $registerFilterArray['userMessageContent'], $registerFilterArray['userMessageFrom'], '', $user_name, $passw1, $email, 'register_w_o_admin_approval', $adminApproval, '' );
|
| 471 |
+
|
| 472 |
+
if( $messageSent == TRUE)
|
| 473 |
+
return 2;
|
| 474 |
+
else
|
| 475 |
+
return 1;
|
| 476 |
+
}
|
| 477 |
+
}
|
| 478 |
+
|
| 479 |
+
// END FUNCTIONS USED BOTH ON THE REGISTRATION PAGE AND THE EMAIL CONFIRMATION TABLE
|
| 480 |
+
|
| 481 |
+
|
| 482 |
+
|
| 483 |
+
|
| 484 |
+
|
| 485 |
+
// Set up the AJAX hooks
|
| 486 |
+
add_action( 'wp_ajax_wppb_get_unconfirmed_email_number', 'wppb_get_unconfirmed_email_number' );
|
| 487 |
+
add_action( 'wp_ajax_wppb_handle_email_confirmation_cases', 'wppb_handle_email_confirmation_cases' );
|
| 488 |
+
|
| 489 |
+
if (is_multisite()){
|
| 490 |
+
|
| 491 |
+
if (strpos($_SERVER['SCRIPT_NAME'], 'users.php')){ //global $pagenow doesn't seem to work
|
| 492 |
+
add_action( 'admin_head', 'wppb_add_peding_users_header_script' );
|
| 493 |
+
|
| 494 |
+
}
|
| 495 |
+
add_action( 'user_register', 'wppb_update_user_status_on_admin_registration' );
|
| 496 |
+
|
| 497 |
+
}else{
|
| 498 |
+
$wppb_generalSettings = get_option('wppb_general_settings', 'not_found');
|
| 499 |
+
if($wppb_generalSettings != 'not_found')
|
| 500 |
+
if(!empty($wppb_generalSettings['emailConfirmation']) && ($wppb_generalSettings['emailConfirmation'] == 'yes')){
|
| 501 |
+
global $pagenow;
|
| 502 |
+
|
| 503 |
+
if ($pagenow == 'users.php'){
|
| 504 |
+
add_action( 'admin_head', 'wppb_add_peding_users_header_script' );
|
| 505 |
+
|
| 506 |
+
}
|
| 507 |
+
add_action( 'user_register', 'wppb_update_user_status_on_admin_registration' );
|
| 508 |
+
}
|
| 509 |
+
}
|
| 510 |
+
|
| 511 |
+
|
functions/functions.load.php
CHANGED
|
@@ -71,6 +71,8 @@ if (file_exists ( $wppb_premiumAdmin.'register.version.php' ))
|
|
| 71 |
require_once(WPPB_PLUGIN_DIR.'/functions/basic.info.php');
|
| 72 |
require_once(WPPB_PLUGIN_DIR.'/functions/general.settings.php');
|
| 73 |
require_once(WPPB_PLUGIN_DIR.'/functions/admin.bar.php');
|
|
|
|
|
|
|
| 74 |
require_once(WPPB_PLUGIN_DIR.'/functions/default.settings.php');
|
| 75 |
|
| 76 |
|
|
@@ -141,48 +143,12 @@ if(!function_exists('wppb_curpageurl')){
|
|
| 141 |
}
|
| 142 |
|
| 143 |
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
global $wpdb, $wp_queries, $charset_collate;
|
| 149 |
-
|
| 150 |
-
if ($newVal['emailConfirmation'] == 'yes'){
|
| 151 |
-
|
| 152 |
-
//The database character collate.
|
| 153 |
-
$charset_collate = '';
|
| 154 |
-
|
| 155 |
-
if ( ! empty( $wpdb->charset ) )
|
| 156 |
-
$charset_collate = "DEFAULT CHARACTER SET ".$wpdb->charset;
|
| 157 |
-
if ( ! empty( $wpdb->collate ) )
|
| 158 |
-
$charset_collate .= " COLLATE ".$wpdb->collate;
|
| 159 |
-
$tableName = $wpdb->prefix.'signups';
|
| 160 |
-
|
| 161 |
-
$sql = "
|
| 162 |
-
CREATE TABLE $tableName (
|
| 163 |
-
domain varchar(200) NOT NULL default '',
|
| 164 |
-
path varchar(100) NOT NULL default '',
|
| 165 |
-
title longtext NOT NULL,
|
| 166 |
-
user_login varchar(60) NOT NULL default '',
|
| 167 |
-
user_email varchar(100) NOT NULL default '',
|
| 168 |
-
registered datetime NOT NULL default '0000-00-00 00:00:00',
|
| 169 |
-
activated datetime NOT NULL default '0000-00-00 00:00:00',
|
| 170 |
-
active tinyint(1) NOT NULL default '0',
|
| 171 |
-
activation_key varchar(50) NOT NULL default '',
|
| 172 |
-
meta longtext,
|
| 173 |
-
KEY activation_key (activation_key),
|
| 174 |
-
KEY domain (domain)
|
| 175 |
-
) $charset_collate;";
|
| 176 |
-
|
| 177 |
-
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
| 178 |
-
$res = dbDelta($sql);
|
| 179 |
}
|
| 180 |
-
}
|
| 181 |
-
add_action( 'update_option_wppb_general_settings', 'wppb_signup_schema', 10, 2 );
|
| 182 |
-
|
| 183 |
-
|
| 184 |
|
| 185 |
-
if ( is_admin() ){
|
| 186 |
// include the css for the datepicker
|
| 187 |
$wppb_premiumDatepicker = WPPB_PLUGIN_DIR . '/premium/assets/css/';
|
| 188 |
if (file_exists ( $wppb_premiumDatepicker.'datepicker.style.css' )){
|
|
@@ -212,22 +178,20 @@ if ( is_admin() ){
|
|
| 212 |
// include the stylesheet
|
| 213 |
add_action('wp_print_styles', 'wppb_add_plugin_stylesheet');
|
| 214 |
|
| 215 |
-
$wppb_plugin = WPPB_PLUGIN_DIR . '/';
|
| 216 |
-
|
| 217 |
// include the menu file for the profile informations
|
| 218 |
-
include_once(
|
| 219 |
add_shortcode('wppb-edit-profile', 'wppb_front_end_profile_info');
|
| 220 |
|
| 221 |
// include the menu file for the login screen
|
| 222 |
-
include_once(
|
| 223 |
add_shortcode('wppb-login', 'wppb_front_end_login');
|
| 224 |
|
| 225 |
// include the menu file for the register screen
|
| 226 |
-
include_once(
|
| 227 |
add_shortcode('wppb-register', 'wppb_front_end_register_handler');
|
| 228 |
|
| 229 |
// include the menu file for the recover password screen
|
| 230 |
-
include_once(
|
| 231 |
add_shortcode('wppb-recover-password', 'wppb_front_end_password_recovery');
|
| 232 |
|
| 233 |
// set the front-end admin bar to show/hide
|
| 71 |
require_once(WPPB_PLUGIN_DIR.'/functions/basic.info.php');
|
| 72 |
require_once(WPPB_PLUGIN_DIR.'/functions/general.settings.php');
|
| 73 |
require_once(WPPB_PLUGIN_DIR.'/functions/admin.bar.php');
|
| 74 |
+
require_once(WPPB_PLUGIN_DIR.'/classes/class.email.confirmation.php');
|
| 75 |
+
require_once(WPPB_PLUGIN_DIR.'/functions/email.confirmation.php');
|
| 76 |
require_once(WPPB_PLUGIN_DIR.'/functions/default.settings.php');
|
| 77 |
|
| 78 |
|
| 143 |
}
|
| 144 |
|
| 145 |
|
| 146 |
+
if ( is_admin() ){
|
| 147 |
+
add_action('admin_enqueue_scripts', 'wppb_add_backend_style');
|
| 148 |
+
function wppb_add_backend_style(){
|
| 149 |
+
wp_enqueue_style( 'profile-builder-back-end-style', WPPB_PLUGIN_URL.'/assets/css/back.end.css', false, PROFILE_BUILDER_VERSION);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 150 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 151 |
|
|
|
|
| 152 |
// include the css for the datepicker
|
| 153 |
$wppb_premiumDatepicker = WPPB_PLUGIN_DIR . '/premium/assets/css/';
|
| 154 |
if (file_exists ( $wppb_premiumDatepicker.'datepicker.style.css' )){
|
| 178 |
// include the stylesheet
|
| 179 |
add_action('wp_print_styles', 'wppb_add_plugin_stylesheet');
|
| 180 |
|
|
|
|
|
|
|
| 181 |
// include the menu file for the profile informations
|
| 182 |
+
include_once(WPPB_PLUGIN_DIR.'/front-end/wppb.edit.profile.php');
|
| 183 |
add_shortcode('wppb-edit-profile', 'wppb_front_end_profile_info');
|
| 184 |
|
| 185 |
// include the menu file for the login screen
|
| 186 |
+
include_once(WPPB_PLUGIN_DIR.'/front-end/wppb.login.php');
|
| 187 |
add_shortcode('wppb-login', 'wppb_front_end_login');
|
| 188 |
|
| 189 |
// include the menu file for the register screen
|
| 190 |
+
include_once(WPPB_PLUGIN_DIR.'/front-end/wppb.register.php');
|
| 191 |
add_shortcode('wppb-register', 'wppb_front_end_register_handler');
|
| 192 |
|
| 193 |
// include the menu file for the recover password screen
|
| 194 |
+
include_once(WPPB_PLUGIN_DIR.'/front-end/wppb.recover.password.php');
|
| 195 |
add_shortcode('wppb-recover-password', 'wppb_front_end_password_recovery');
|
| 196 |
|
| 197 |
// set the front-end admin bar to show/hide
|
functions/general.settings.php
CHANGED
|
@@ -42,15 +42,36 @@ function wppb_general_settings(){
|
|
| 42 |
<option value="no" <?php if ($wppb_generalSettings['adminApproval'] == 'no') echo 'selected';?>><?php _e('No', 'profilebuilder');?></option>
|
| 43 |
</select>
|
| 44 |
<?php
|
| 45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
<font size="1" id="layoutNotice">
|
| 47 |
<b>'. __('NOTE:', 'profilebuilder') .'</b><br/>
|
| 48 |
-
→ '. __('
|
| 49 |
-
→ '. __('The
|
| 50 |
-
|
| 51 |
-
|
|
|
|
|
|
|
| 52 |
</div>';
|
| 53 |
}
|
|
|
|
|
|
|
| 54 |
?>
|
| 55 |
<div align="right">
|
| 56 |
<input type="hidden" name="action" value="update" />
|
| 42 |
<option value="no" <?php if ($wppb_generalSettings['adminApproval'] == 'no') echo 'selected';?>><?php _e('No', 'profilebuilder');?></option>
|
| 43 |
</select>
|
| 44 |
<?php
|
| 45 |
+
$generalInfoNotes =
|
| 46 |
+
'<div id="layoutNoticeDiv">
|
| 47 |
+
<font size="1" id="layoutNotice">
|
| 48 |
+
<b>'. __('NOTE:', 'profilebuilder') .'</b><br/>
|
| 49 |
+
→ '. __('The black stylesheet is intended for sites/blogs with a dark background.', 'profilebuilder') .'<br/>
|
| 50 |
+
→ '. __('The white stylesheet is intended for a sites/blogs with a light background color.', 'profilebuilder') .'<br/>
|
| 51 |
+
→ '. __('On single-site installations the "Email Confirmation" feature only works in the front-end, so make sure you also use the "Custom Redirects" feature.', 'profilebuilder') .'<br/>
|
| 52 |
+
→ '. __('The "Email Confirmation" feature is active (by default) on WPMU installations.', 'profilebuilder');
|
| 53 |
+
if (is_multisite() || ($wppb_generalSettings['emailConfirmation'] == 'yes'))
|
| 54 |
+
$generalInfoNotes .= '<br/>→ '.sprintf(__( 'You can find a list of unconfirmed email addresses %1$shere%2$s.', 'profilebuilder'), '<a href="'.get_bloginfo('url').'/wp-admin/users.php?page=unconfirmed_emails">', '</a>');
|
| 55 |
+
$generalInfoNotes .=
|
| 56 |
+
'</font>
|
| 57 |
+
</div>';
|
| 58 |
+
|
| 59 |
+
|
| 60 |
+
}else{
|
| 61 |
+
$generalInfoNotes =
|
| 62 |
+
'<div id="layoutNoticeDiv">
|
| 63 |
<font size="1" id="layoutNotice">
|
| 64 |
<b>'. __('NOTE:', 'profilebuilder') .'</b><br/>
|
| 65 |
+
→ '. __('On single-site installations the "Email Confirmation" feature only works in the front-end.', 'profilebuilder') .'<br/>
|
| 66 |
+
→ '. __('The "Email Confirmation" feature is active (by default) on WPMU installations.', 'profilebuilder');
|
| 67 |
+
if (is_multisite() || ($wppb_generalSettings['emailConfirmation'] == 'yes'))
|
| 68 |
+
$generalInfoNotes .= '<br/>→ '.sprintf(__( 'You can find a list of unconfirmed email addresses %1$shere%2$s.', 'profilebuilder'), '<a href="'.get_bloginfo('url').'/wp-admin/users.php?page=unconfirmed_emails">', '</a>');
|
| 69 |
+
$generalInfoNotes .=
|
| 70 |
+
'</font>
|
| 71 |
</div>';
|
| 72 |
}
|
| 73 |
+
|
| 74 |
+
echo $generalInfoNotes;
|
| 75 |
?>
|
| 76 |
<div align="right">
|
| 77 |
<input type="hidden" name="action" value="update" />
|
index.php
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
Plugin Name: Profile Builder
|
| 4 |
Plugin URI: http://www.cozmoslabs.com/2011/04/12/wordpress-profile-builder-a-front-end-user-registration-login-and-edit-profile-plugin/
|
| 5 |
Description: Login, registration and edit profile shortcodes for the front-end. Also you can chose what fields should be displayed or add new (custom) ones both in the front-end and in the dashboard.
|
| 6 |
-
Version: 1.1.
|
| 7 |
Author: Reflection Media, Barina Gabriel
|
| 8 |
Author URI: http://www.reflectionmedia.ro
|
| 9 |
License: GPL2
|
|
@@ -54,7 +54,7 @@ function wppb_return_bytes($val) {
|
|
| 54 |
}
|
| 55 |
|
| 56 |
|
| 57 |
-
define( 'PROFILE_BUILDER_VERSION', '1.1.
|
| 58 |
define( 'WPPB_PLUGIN_DIR', WP_PLUGIN_DIR . '/' . dirname( plugin_basename( __FILE__ ) ) );
|
| 59 |
|
| 60 |
if (file_exists ( WPPB_PLUGIN_DIR . '/premium/addons/addon.php' ))
|
| 3 |
Plugin Name: Profile Builder
|
| 4 |
Plugin URI: http://www.cozmoslabs.com/2011/04/12/wordpress-profile-builder-a-front-end-user-registration-login-and-edit-profile-plugin/
|
| 5 |
Description: Login, registration and edit profile shortcodes for the front-end. Also you can chose what fields should be displayed or add new (custom) ones both in the front-end and in the dashboard.
|
| 6 |
+
Version: 1.1.47
|
| 7 |
Author: Reflection Media, Barina Gabriel
|
| 8 |
Author URI: http://www.reflectionmedia.ro
|
| 9 |
License: GPL2
|
| 54 |
}
|
| 55 |
|
| 56 |
|
| 57 |
+
define( 'PROFILE_BUILDER_VERSION', '1.1.47' );
|
| 58 |
define( 'WPPB_PLUGIN_DIR', WP_PLUGIN_DIR . '/' . dirname( plugin_basename( __FILE__ ) ) );
|
| 59 |
|
| 60 |
if (file_exists ( WPPB_PLUGIN_DIR . '/premium/addons/addon.php' ))
|
readme.txt
CHANGED
|
@@ -7,7 +7,7 @@ custom registration, custom registration form, custom registration page, extra u
|
|
| 7 |
front-end register, front-end registration, frontend edit profile, edit profile
|
| 8 |
Requires at least: 3.1
|
| 9 |
Tested up to: 3.5
|
| 10 |
-
Stable tag: 1.1.
|
| 11 |
|
| 12 |
Simple to use profile plugin allowing front-end login, registration and edit profile by using shortcodes.
|
| 13 |
|
|
@@ -89,10 +89,15 @@ This plugin only adds/removes fields in the front-end. The default information-f
|
|
| 89 |
1. General Settings
|
| 90 |
2. Show/Hide Admin Bar
|
| 91 |
3. Select Default User Fields
|
| 92 |
-
4.
|
| 93 |
-
5.
|
| 94 |
|
| 95 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 96 |
= 1.1.46 =
|
| 97 |
Improved a few existing functions.
|
| 98 |
|
| 7 |
front-end register, front-end registration, frontend edit profile, edit profile
|
| 8 |
Requires at least: 3.1
|
| 9 |
Tested up to: 3.5
|
| 10 |
+
Stable tag: 1.1.47
|
| 11 |
|
| 12 |
Simple to use profile plugin allowing front-end login, registration and edit profile by using shortcodes.
|
| 13 |
|
| 89 |
1. General Settings
|
| 90 |
2. Show/Hide Admin Bar
|
| 91 |
3. Select Default User Fields
|
| 92 |
+
4. Register Page
|
| 93 |
+
5. Logged in Page
|
| 94 |
|
| 95 |
== Changelog ==
|
| 96 |
+
= 1.1.47 =
|
| 97 |
+
Improved the "Email Confirmation" feature and a few other functions.
|
| 98 |
+
Added new options for the "Userlisting" feature (available in the Pro version of Profile Buildeer).
|
| 99 |
+
Added translations: persian (thanks to Ali Mirzaei, info@alimir.ir)
|
| 100 |
+
|
| 101 |
= 1.1.46 =
|
| 102 |
Improved a few existing functions.
|
| 103 |
|
