function um_remove_special_users_from_list($query_args, $args) { global $ultimatemember; extract($args); if (!um_user_can('can_edit_everyone')) { $query_args['meta_query'][] = array('key' => 'account_status', 'value' => 'approved', 'compare' => '='); } $query_args['meta_query'][] = array('key' => 'hide_in_members', 'value' => '', 'compare' => 'NOT EXISTS'); return $query_args; }
function new_user_upload($user_id, $source, $key) { // if he does not have uploads dir yet $this->new_user($user_id); if (is_user_logged_in() && get_current_user_id() != $user_id && !um_user_can('can_edit_everyone')) { wp_die(__('Unauthorized to do this attempt.', 'ultimatemember')); } if (!is_user_logged_in() && ($key == 'profile_photo' || $key == 'cover_photo')) { wp_die(__('Unauthorized to do this attempt.', 'ultimatemember')); } // name and extension stuff $source_name = basename($source); if ($key == 'profile_photo') { $source_name = 'profile_photo.jpg'; } if ($key == 'cover_photo') { $source_name = 'cover_photo.jpg'; } $ext = '.' . pathinfo($source_name, PATHINFO_EXTENSION); $name = str_replace($ext, '', $source_name); $filename = $name . $ext; // copy & overwrite file if (file_exists($this->upload_basedir . $user_id . '/' . $filename)) { unlink($this->upload_basedir . $user_id . '/' . $filename); } copy($source, $this->upload_basedir . $user_id . '/' . $filename); // thumbs if ($key == 'profile_photo') { list($w, $h) = @getimagesize($source); $sizes = um_get_option('photo_thumb_sizes'); foreach ($sizes as $size) { if (file_exists($this->upload_basedir . $user_id . '/' . $name . '-' . $size . $ext)) { unlink($this->upload_basedir . $user_id . '/' . $name . '-' . $size . $ext); } if ($size < $w) { $thumb_s = imagecreatefromjpeg($source); $thumb = imagecreatetruecolor($size, $size); imagecopyresampled($thumb, $thumb_s, 0, 0, 0, 0, $size, $size, $w, $h); imagejpeg($thumb, $this->upload_basedir . $user_id . '/' . $name . '-' . $size . $ext, 100); } } // removes a synced profile photo delete_user_meta($user_id, 'synced_profile_photo'); } if ($key == 'cover_photo') { list($w, $h) = @getimagesize($source); $sizes = um_get_option('cover_thumb_sizes'); foreach ($sizes as $size) { $ratio = round($w / $h, 2); $height = round($size / $ratio, 2); if (file_exists($this->upload_basedir . $user_id . '/' . $name . '-' . $size . $ext)) { unlink($this->upload_basedir . $user_id . '/' . $name . '-' . $size . $ext); } if ($size < $w) { $thumb_s = imagecreatefromjpeg($source); $thumb = imagecreatetruecolor($size, $height); imagecopyresampled($thumb, $thumb_s, 0, 0, 0, 0, $size, $height, $w, $h); imagejpeg($thumb, $this->upload_basedir . $user_id . '/' . $name . '-' . $size . $ext, 100); } } } // clean up temp $dir = dirname($source); unlink($source); rmdir($dir); // update user's meta do_action('um_before_upload_db_meta', $user_id, $key); do_action("um_before_upload_db_meta_{$key}", $user_id); update_user_meta($user_id, $key, $filename); do_action('um_after_upload_db_meta', $user_id, $key); do_action("um_after_upload_db_meta_{$key}", $user_id); // the url of upload return $this->upload_baseurl . $user_id . '/' . $filename; }
function um_can_edit_field($data) { global $ultimatemember; if (isset($ultimatemember->fields->editing) && $ultimatemember->fields->editing == true && isset($ultimatemember->fields->set_mode) && $ultimatemember->fields->set_mode == 'profile') { if (is_user_logged_in() && isset($data['editable']) && $data['editable'] == 0) { if (um_is_user_himself() && !um_user('can_edit_everyone')) { return false; } if (!um_is_user_himself() && !um_user_can('can_edit_everyone')) { return false; } } } return true; }
function um_user_edit_profile($args) { global $ultimatemember; $to_update = null; $files = null; if (isset($args['user_id'])) { if (um_current_user_can('edit', $args['user_id'])) { $ultimatemember->user->set($args['user_id']); } else { wp_die(__('You are not allowed to edit this user.', 'ultimatemember')); } } else { if (isset($args['_user_id'])) { $ultimatemember->user->set($args['_user_id']); } } $userinfo = $ultimatemember->user->profile; $fields = unserialize($args['custom_fields']); do_action('um_user_before_updating_profile', $userinfo); // loop through fields if (isset($fields) && is_array($fields)) { foreach ($fields as $key => $array) { if (!um_user_can('can_edit_everyone') && isset($fields[$key]['editable']) && !$fields[$key]['editable']) { continue; } if ($fields[$key]['type'] == 'multiselect' || $fields[$key]['type'] == 'checkbox' && !isset($args['submitted'][$key])) { delete_user_meta(um_user('ID'), $key); } if (isset($args['submitted'][$key])) { if (isset($fields[$key]['type']) && in_array($fields[$key]['type'], array('image', 'file')) && um_is_temp_upload($args['submitted'][$key])) { $files[$key] = $args['submitted'][$key]; } else { if (isset($userinfo[$key]) && $args['submitted'][$key] != $userinfo[$key]) { $to_update[$key] = $args['submitted'][$key]; } else { if ($args['submitted'][$key]) { $to_update[$key] = $args['submitted'][$key]; } } } } } } if (isset($args['submitted']['description'])) { $to_update['description'] = $args['submitted']['description']; } if (isset($args['submitted']['role']) && !empty($args['submitted']['role'])) { $to_update['role'] = $args['submitted']['role']; } do_action('um_user_pre_updating_profile', $to_update); $to_update = apply_filters('um_user_pre_updating_profile_array', $to_update); if (is_array($to_update)) { $ultimatemember->user->update_profile($to_update); } if (is_array($files)) { $ultimatemember->user->update_files($files); } do_action('um_after_user_updated', um_user('ID')); do_action('um_after_user_upload', um_user('ID')); do_action('um_user_after_updating_profile', $to_update); if (!isset($args['is_signup'])) { $url = $ultimatemember->permalinks->profile_url(); exit(wp_redirect(um_edit_my_profile_cancel_uri($url))); } }