Exemplo n.º 1
0
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);
    }
}
Exemplo n.º 2
0
<?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;
Exemplo n.º 3
0
    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'));