function profile_manager_profileupdate_user_event($event, $object_type, $user) { if (!empty($user) && $user instanceof ElggUser) { // upload a file to your profile $accesslevel = get_input('accesslevel'); if (!is_array($accesslevel)) { $accesslevel = array(); } $options = array("type" => "object", "subtype" => CUSTOM_PROFILE_FIELDS_PROFILE_SUBTYPE, "limit" => false, "metadata_name_value_pairs" => array("name" => "metadata_type", "value" => "pm_file")); if ($configured_fields = elgg_get_entities_from_metadata($options)) { foreach ($configured_fields as $field) { // check for uploaded files $metadata_name = $field->metadata_name; $current_file_guid = $user->{$metadata_name}; if (isset($accesslevel[$metadata_name])) { $access_id = (int) $accesslevel[$metadata_name]; } else { // this should never be executed since the access level should always be set $access_id = ACCESS_PRIVATE; } if (isset($_FILES[$metadata_name]) && $_FILES[$metadata_name]['error'] == 0) { // uploaded file exists so, save it to an ElggFile object // use current_file_guid to overwrite previously uploaded files $filehandler = new ElggFile($current_file_guid); $filehandler->owner_guid = $user->getGUID(); $filehandler->container_guid = $user->getGUID(); $filehandler->subtype = "file"; $filehandler->access_id = $access_id; $filehandler->title = $field->getTitle(); $filehandler->setFilename("profile_manager/" . $_FILES[$metadata_name]["name"]); $filehandler->setMimeType($_FILES[$metadata_name]["type"]); $filehandler->open("write"); $filehandler->write(get_uploaded_file($metadata_name)); $filehandler->close(); if ($filehandler->save()) { $filehandler->profile_manager_metadata_name = $metadata_name; // used to retrieve user file when deleting $filehandler->originalfilename = $_FILES[$metadata_name]["name"]; create_metadata($user->guid, $metadata_name, $filehandler->getGUID(), 'text', $user->guid, $access_id); } } else { // if file not uploaded should it be deleted??? if (empty($current_file_guid)) { // find the previously uploaded file and if exists... delete it $options = array("type" => "object", "subtype" => "file", "owner_guid" => $user->getGUID(), "limit" => 1, "metadata_name_value_pairs" => array("name" => "profile_manager_metadata_name", "value" => $metadata_name)); if ($files = elgg_get_entities_from_metadata($options)) { $file = $files[0]; $file->delete(); } } else { if ($file = get_entity($current_file_guid)) { // maybe we need to update the access id $file->access_id = $access_id; $file->save(); } } } } } // update profile completeness profile_manager_profile_completeness($user); } }
<?php $owner = $vars['entity']->getOwnerEntity(); $tips = ''; if ($owner->getGUID() === elgg_get_logged_in_user_guid()) { $completeness = profile_manager_profile_completeness($owner); $percentage_complete = $completeness['percentage_completeness']; // save the percentage $owner->profile_completeness_percentage = $percentage_complete; $missing_fields = $completeness['missing_fields']; if (count($missing_fields) > 0) { $rand_key = array_rand($missing_fields); $field = $missing_fields[$rand_key]; $tips = elgg_echo('widgets:profile_completeness:view:tips', ['<b>' . $field->getTitle() . '</b>']); } else { $tips = elgg_echo('widgets:profile_completeness:view:complete'); } } else { if ($owner->profile_completeness_percentage) { $percentage_complete = $owner->profile_completeness_percentage; } else { $completeness = profile_manager_profile_completeness($owner); $percentage_complete = $completeness["percentage_completeness"]; } } $progress = elgg_format_element('div', ['id' => 'widget_profile_completeness_progress'], "{$percentage_complete}%"); $progress .= elgg_format_element('div', ['id' => 'widget_profile_completeness_progress_bar', 'style' => "width: {$percentage_complete}%;"]); echo elgg_format_element('div', ['id' => 'widget_profile_completeness_container'], $progress); echo $tips;
register_error(elgg_echo("profile:notfound")); forward(); } $result = profile_manager_get_categorized_fields($targetUser, true); $outputFields = array(); foreach ($result['fields'] as $category_guid => $fields) { foreach ($fields as $field) { $metadata_name = $field->metadata_name; $metadata = elgg_get_metadata(array('guid' => $targetUser->guid, 'metadata_name' => $metadata_name, 'limit' => false)); if ($metadata) { $metadata = $metadata[0]; $value = $targetUser->{$metadata_name}; } else { $value = ''; } $outputFields[] = array('name' => $field->metadata_name, 'value' => $value, 'type' => $field->metadata_type, 'label' => $field->metadata_label, 'category' => $category_guid ? $result['categories'][$category_guid] : null); } } $options = array('type' => 'object', 'owner_guid' => $targetUser->guid, 'count' => true); $number_questions = elgg_get_entities(array_merge($options, array('subtype' => 'question'))); $number_answers = elgg_get_entities(array_merge($options, array('subtype' => 'answer'))); $options = array('annotation_name' => 'vote', 'annotation_owner_guid' => $targetUser->guid, 'count' => true); $number_upvotes = elgg_get_annotations(array_merge($options, array('annotation_value' => 1))); $number_downvotes = elgg_get_annotations(array_merge($options, array('annotation_value' => -1))); $completeness = profile_manager_profile_completeness($targetUser); $completeness = round($completeness['percentage_completeness'] / 100 * 3 + 1); $body = elgg_view('profile/header', array('name' => $targetUser->name, 'username' => $targetUser->username, 'selected' => 'Profiel')); $body = $body . elgg_view('profile/index', array('fields' => $outputFields, 'username' => $targetUser->username, 'number_questions' => $number_questions, 'number_answers' => $number_answers, 'number_upvotes' => $number_upvotes, 'number_downvotes' => $number_downvotes, 'completeness' => $completeness)); //elgg_set_context('profile_edit'); $title = $targetUser->name; echo elgg_view_page($title, $body, 'default', array('body_class' => 'background-grey'));