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; }
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; }