Example #1
0
 function prepare_items()
 {
     global $wpdb, $current_site;
     $usermeta_fields = $this->usermeta_columns;
     $this->process_bulk_action();
     $per_page = !isset($_REQUEST['per_page']) || empty($_REQUEST['per_page']) ? 10 : $_REQUEST['per_page'];
     $columns = $this->get_columns();
     $hidden = array();
     $sortable = $this->get_sortable_columns();
     $this->_column_headers = array($columns, $hidden, $sortable);
     $orderby = !isset($_REQUEST['orderby']) || empty($_REQUEST['orderby']) ? 'ID' : $_REQUEST['orderby'];
     $order = !isset($_REQUEST['order']) || empty($_REQUEST['order']) ? 'ASC' : $_REQUEST['order'];
     $search = !isset($_REQUEST['s']) || empty($_REQUEST['s']) ? false : $_REQUEST['s'];
     $search_mode = !isset($_REQUEST['umm_search_mode']) || empty($_REQUEST['umm_search_mode']) ? 'ID' : $_REQUEST['umm_search_mode'];
     define("UMM_ORDERBY", $orderby);
     define("UMM_ORDER", $order);
     $data = umm_get_users();
     $x = 0;
     if (count($this->usermeta_columns) > 0) {
         foreach ($data as $d) {
             foreach ($this->usermeta_columns as $k => $v) {
                 $f_data = get_user_meta($d->ID, $k, true);
                 $fdata = maybe_unserialize($f_data);
                 if (is_array($fdata)) {
                     $new_fdata = '';
                     foreach ($fdata as $field_data) {
                         if ($field_data != '') {
                             $new_fdata .= $field_data . ', ';
                         }
                     }
                     $fdata = rtrim($new_fdata, ', ');
                 }
                 $data[$x]->{$k} = $fdata;
             }
             $x++;
         }
     }
     uasort($data, "umm_sort");
     if ($search) {
         $search_results = array();
         foreach ($data as $d) {
             $checkit = stristr($d->{$search_mode}, $search);
             if ($d->{$search_mode} == trim($search) || !empty($checkit)) {
                 array_push($search_results, $d);
             }
         }
         $data = $search_results;
     }
     $current_page = $this->get_pagenum();
     $total_items = count($data);
     $data = array_slice($data, ($current_page - 1) * $per_page, $per_page);
     $this->items = $data;
     $this->set_pagination_args(array('total_items' => $total_items, 'per_page' => $per_page, 'total_pages' => ceil($total_items / $per_page)));
     return $per_page;
 }
Example #2
0
function umm_update_user_meta()
{
    global $wpdb;
    $mode = $_POST['mode'];
    $all_users = isset($_POST['all_users']) && !empty($_POST['all_users']) ? true : false;
    $field_type = isset($_POST['umm_profile_field_type']) && !empty($_POST['umm_profile_field_type']) ? $_POST['umm_profile_field_type'] : false;
    $u = isset($_REQUEST['umm_user']) && !empty($_REQUEST['umm_user']) ? $_REQUEST['umm_user'] : '******';
    $meta_value = !empty($_POST['umm_meta_value']) ? $_POST['umm_meta_value'] : array();
    $meta_key = !empty($_POST['umm_meta_key']) ? $_POST['umm_meta_key'] : array();
    $meta_key_exists = false;
    $output = "";
    $umm_settings = umm_get_option('settings');
    $duplicate_override = !isset($umm_settings['duplicate_check_override']) || empty($umm_settings['duplicate_check_override']) ? 'no' : $umm_settings['duplicate_check_override'];
    $umm_data = umm_get_option('custom_meta');
    // Array of custom meta data for all users
    $umm_singles_data = umm_get_option('singles_data');
    // Array of custom key names for single users
    $umm_singles_data = empty($umm_singles_data) || !is_array($umm_singles_data) ? array() : $umm_singles_data;
    // Backwards compatibility
    $random_string_length = isset($_POST['umm_random_string_length']) && $_POST['umm_random_string_length'] > 0 ? $_POST['umm_random_string_length'] : 10;
    $random_string_type = isset($_POST['umm_random_string_type']) && $_POST['umm_random_string_type'] != '' ? $_POST['umm_random_string_type'] : 'mixed';
    if ($random_string_type == 'numbers') {
        $random_string_type = 1;
    } elseif ($random_string_type == 'letters') {
        $random_string_type = 2;
    } elseif ($random_string_type == 'all') {
        $random_string_type = 4;
    } else {
        $random_string_type = 3;
    }
    $sort_order = umm_get_option('sort_order');
    if (!is_array($sort_order)) {
        $sort_order = array();
    }
    // Backwards compatibility
    if (empty($sort_order) || count($sort_order) < count($umm_data)) {
        foreach ($umm_data as $k => $v) {
            array_push($sort_order, $k);
        }
    }
    switch ($mode) {
        case "add":
            if (!empty($meta_key)) {
                foreach ($meta_key as $key) {
                    // Check if key already exists
                    $data = umm_usermeta_data('WHERE meta_key="' . $key . '"');
                    if (count($data) > 0) {
                        $meta_key_exists = true;
                    }
                }
                if ($_REQUEST['mode'] == 'add') {
                    if ($meta_key_exists && $duplicate_override == 'no') {
                        // Key already exists
                        $output = '<span class="umm-error-message">' . __('Error: Meta key already existed. Choose a different name.', UMM_SLUG) . '</span>';
                    } else {
                        // Key doesn't exist
                        switch ($u) {
                            case "all":
                                $val = $all_users ? maybe_serialize(trim($meta_value[0])) : '';
                                // Insert new key for all users and add new profile field if needed
                                $data = umm_get_users();
                                foreach ($data as $user) {
                                    // Don't overwrite any existing meta data if $duplicate_override is on.
                                    $exists = get_user_meta($user->ID, $meta_key[0], true);
                                    if (!$exists) {
                                        if (umm_is_pro() && $field_type == 'random_string') {
                                            $val = umm_random_str($random_string_length, $random_string_type);
                                        }
                                        update_user_meta($user->ID, $meta_key[0], $val, false);
                                    }
                                }
                                // Add new meta data to custom meta array
                                $umm_data[$meta_key[0]] = $meta_value[0];
                                umm_update_option('custom_meta', $umm_data);
                                // Update profile field settings if needed
                                umm_update_profile_fields_settings($meta_key[0], $meta_value[0]);
                                // Update sort order
                                array_push($sort_order, $meta_key[0]);
                                umm_update_option('sort_order', $sort_order);
                                break;
                            default:
                                // Don't overwrite any existing meta data if $duplicate_override is on.
                                $exists = get_user_meta($u, $meta_key[0], true);
                                if (!$exists) {
                                    // Insert key for single user - no profile field settings here
                                    update_user_meta($u, $meta_key[0], maybe_unserialize(trim(stripslashes($meta_value[0]))), false);
                                }
                                // Add key to singles array
                                if (!in_array($meta_key[0], $umm_singles_data)) {
                                    array_push($umm_singles_data, $meta_key[0]);
                                }
                                break;
                        }
                        $output = __('Meta data successfully added.', UMM_SLUG);
                    }
                    // !Key exists
                }
                // $_REQUEST['mode'] == 'add'
            } else {
                // No meta key sent
                $output = '<span class="umm-error-message">' . __('Error: No meta key entered.', UMM_SLUG) . '</span>';
            }
            break;
        case "edit":
            if (!empty($meta_key)) {
                switch ($u) {
                    case "all":
                        // Update custom meta
                        $profile_fields = umm_get_option('profile_fields');
                        $field_settings = $profile_fields[$meta_key[0]];
                        if ($field_settings['unique'] == 'yes' && $all_users || $field_settings['unique'] == 'yes' && umm_is_duplicate($meta_key[0], $meta_value[0])) {
                            $output = '<span class="umm-error-message">' . __('Error: This field is set as unique. Change the field settings first or enter a different value.', UMM_SLUG) . '</span>';
                        } else {
                            if ($all_users) {
                                // Update value for all users
                                $data = umm_get_users();
                                foreach ($data as $user) {
                                    update_user_meta($user->ID, $meta_key[0], maybe_unserialize(trim(stripslashes($meta_value[0]))), false);
                                }
                            }
                            // Update existing value
                            $umm_data[$meta_key[0]] = $meta_value[0];
                            umm_update_option('custom_meta', $umm_data);
                            // Update profile field settings if needed
                            umm_update_profile_fields_settings($meta_key[0], $meta_value[0]);
                            $output = __('Meta data successfully updated.', UMM_SLUG);
                        }
                        break;
                    default:
                        // Update meta for single user
                        $profile_fields = umm_get_option('profile_fields');
                        $error = false;
                        $x = 0;
                        foreach ($_POST['umm_meta_key'] as $meta_key) {
                            if (isset($profile_fields[$meta_key]['unique']) && $profile_fields[$meta_key]['unique'] == 'yes' && (isset($meta_value[$x]) && umm_is_duplicate($meta_key, $meta_value[$x], $u))) {
                                $error = true;
                            }
                            $x++;
                        }
                        if ($error) {
                            $output = '<span class="umm-error-message">' . sprintf(__('Error: %s is set as unique. The value you entered is already in use. Change the field settings or change the value.', UMM_SLUG), $meta_key) . '</span>';
                        } else {
                            $x = 0;
                            foreach ($_POST['umm_meta_key'] as $meta_key) {
                                if (empty($umm_singles_data)) {
                                    $umm_singles_data = array($meta_key);
                                } else {
                                    if (!in_array($meta_key, $umm_singles_data)) {
                                        array_push($umm_singles_data, $meta_key);
                                    }
                                }
                                umm_update_option('singles_data', $umm_singles_data);
                                update_user_meta($u, $meta_key, maybe_unserialize(trim(stripslashes($meta_value[$x]))), false);
                                $x++;
                            }
                            $output = __('Meta data successfully updated.', UMM_SLUG);
                        }
                        break;
                }
            } else {
                // No meta key sent
                $output = '<span class="umm-error-message">' . __('Error: No meta key selected.', UMM_SLUG) . '</span>';
            }
            break;
        case "delete":
            if ($_POST['umm_edit_key']) {
                $meta_key = $_POST['umm_edit_key'];
                $saved_profile_fields = umm_get_option('profile_fields');
                if ($all_users) {
                    $data = umm_get_users();
                    foreach ($data as $user) {
                        delete_user_meta($user->ID, $meta_key);
                    }
                    unset($umm_data[$meta_key]);
                    umm_update_option('custom_meta', $umm_data);
                    if (array_key_exists($meta_key, $saved_profile_fields)) {
                        // remove field
                        unset($saved_profile_fields[$meta_key]);
                        umm_update_option('profile_fields', $saved_profile_fields);
                        // remove custom column
                        $users_columns = !umm_get_option("users_columns") ? array('ID' => __('ID', UMM_SLUG), 'user_login' => __('User Login', UMM_SLUG), 'user_registered' => __('Date Registered', UMM_SLUG)) : umm_get_option("users_columns");
                        $usermeta_columns = !umm_get_option("usermeta_columns") ? array() : umm_get_option("usermeta_columns");
                        if (array_key_exists($meta_key, $users_columns)) {
                            unset($users_columns[$meta_key]);
                            umm_update_option("users_columns", $users_columns);
                        } elseif (array_key_exists($meta_key, $usermeta_columns)) {
                            unset($usermeta_columns[$meta_key]);
                            umm_update_option("usermeta_columns", $usermeta_columns);
                        }
                        // array_key_exists
                    }
                    // array_key_exists
                } else {
                    // all_users
                    delete_user_meta($_POST['umm_user'], $_POST['umm_edit_key']);
                }
                $output = __('Meta data successfully deleted.', UMM_SLUG);
            } else {
                $output = __('Meta Key is required!', UMM_SLUG);
            }
            break;
    }
    print $output;
    exit;
}