} } elseif ($field_location_setting == 'beside') { // below or default return true; } $tabbed = false; if (elgg_get_plugin_setting('edit_profile_mode', 'profiles_go') == 'tabbed') { $tabbed = true; } $result = ''; // profile icon $profile_icon = elgg_get_plugin_setting('profile_icon_on_register', 'profiles_go'); if ($profile_icon == 'yes' || $profile_icon == 'optional') { $result .= elgg_view('input/profile_icon'); } $categorized_fields = profiles_go_get_categorized_fields(null, true, true); $fields = $categorized_fields['fields']; $cats = $categorized_fields['categories']; if (elgg_is_sticky_form('profiles_go_register')) { $sticky_values = elgg_get_sticky_values('profiles_go_register'); extract($sticky_values); elgg_clear_sticky_form('profiles_go_register'); } if (empty($custom_profile_fields_custom_profile_type)) { $custom_profile_fields_custom_profile_type = elgg_get_plugin_setting('default_profile_type', 'profiles_go'); } if (elgg_get_plugin_setting('profile_type_selection', 'profiles_go') !== 'admin') { $result .= elgg_view('profiles_go/register/profile_type_selection', ['value' => $custom_profile_fields_custom_profile_type]); } else { $result .= elgg_view('input/hidden', ['name' => 'custom_profile_fields_custom_profile_type', 'value' => $custom_profile_fields_custom_profile_type]); }
* Licence: CC-ByNCSA * Reference: Microproyecto CEI BioTIC Ref. 11-2015 * Project coordinator: @rosanamontes * Website: http://lsi.ugr.es/rosana * Project colaborator: Antonio Moles * * Project Derivative: * TFG: Desarrollo de un sistema de gestión de paquetería para Teranga Go * Advisor: Rosana Montes * Student: Ricardo Luzón Fernández * */ elgg_require_js("profiles_go/profile_edit"); echo elgg_view("profile/edit/name", $vars); // Build fields $categorized_fields = profiles_go_get_categorized_fields($vars['entity'], true); $cats = $categorized_fields['categories']; $fields = $categorized_fields['fields']; $edit_profile_mode = elgg_get_plugin_setting("edit_profile_mode", "profiles_go"); $simple_access_control = elgg_get_plugin_setting("simple_access_control", "profiles_go"); $access_id = get_default_access($vars["entity"]); if (!empty($cats)) { // Profile type selector $setting = elgg_get_plugin_setting("profile_type_selection", "profiles_go"); if (empty($setting)) { // default value $setting = "user"; } $profile_type = $vars['entity']->custom_profile_type; // can user edit? or just admins if ($setting == "user" || elgg_is_admin_logged_in()) {
/** * Function to check if custom fields on register have been filled (if required) * Also generates a username if needed * * @param string $hook_name name of the hook * @param string $entity_type type of the hook * @param unknown $return_value return value * @param unknown $parameters hook parameters * * @return void */ function profiles_go_action_register_hook($hook_name, $entity_type, $return_value, $parameters) { elgg_make_sticky_form('register'); elgg_make_sticky_form('profiles_go_register'); // validate mandatory profile fields $profile_icon = elgg_get_plugin_setting("profile_icon_on_register", "profiles_go"); // general terms $terms = elgg_get_plugin_setting("registration_terms", "profiles_go"); // new $profile_type_guid = get_input("custom_profile_fields_custom_profile_type", false); $fields = profiles_go_get_categorized_fields(null, true, true, true, $profile_type_guid); $required_fields = array(); if (!empty($fields["categories"])) { foreach ($fields["categories"] as $cat_guid => $cat) { $cat_fields = $fields["fields"][$cat_guid]; foreach ($cat_fields as $field) { if ($field->show_on_register == "yes" && $field->mandatory == "yes") { $required_fields[] = $field; } } } } if ($terms || $required_fields || $profile_icon == "yes") { $custom_profile_fields = array(); foreach ($_POST as $key => $value) { if (strpos($key, "custom_profile_fields_") == 0) { $key = substr($key, 22); $custom_profile_fields[$key] = $value; } } foreach ($required_fields as $entity) { $passed_value = $custom_profile_fields[$entity->metadata_name]; if (is_array($passed_value)) { if (!count($passed_value)) { register_error(elgg_echo("profiles_go:register_pre_check:missing", array($entity->getTitle()))); forward(REFERER); } } else { $passed_value = trim($passed_value); if (strlen($passed_value) < 1) { register_error(elgg_echo("profiles_go:register_pre_check:missing", array($entity->getTitle()))); forward(REFERER); } } } if ($profile_icon == "yes") { $profile_icon = $_FILES["profile_icon"]; $error = false; if (empty($profile_icon["name"])) { register_error(elgg_echo("profiles_go:register_pre_check:missing", array("profile_icon"))); $error = true; } elseif ($profile_icon["error"] != 0) { register_error(elgg_echo("profiles_go:register_pre_check:profile_icon:error")); $error = true; } else { // test if we can handle the image $image = get_resized_image_from_uploaded_file('profile_icon', '10', '10', true, false); if (!$image) { register_error(elgg_echo("profiles_go:register_pre_check:profile_icon:nosupportedimage")); $error = true; } } if ($error) { forward(REFERER); } } if ($terms) { $terms_accepted = get_input("accept_terms"); if ($terms_accepted !== "yes") { register_error(elgg_echo("profiles_go:register_pre_check:terms")); forward(REFERER); } } } // generate username $username = get_input('username'); $email = get_input('email'); if (empty($username) && !empty($email) && elgg_get_plugin_setting("generate_username_from_email", "profiles_go") == "yes") { $email_parts = explode('@', $email); $base_username = $email_parts[0]; $tmp_username = $base_username; $i = 1; while (get_user_by_username($tmp_username)) { $tmp_username = $base_username . $i; $i++; } set_input('username', $tmp_username); } }
* Project coordinator: @rosanamontes * Website: http://lsi.ugr.es/rosana * Project colaborator: Antonio Moles * * Project Derivative: * TFG: Desarrollo de un sistema de gestión de paquetería para Teranga Go * Advisor: Rosana Montes * Student: Ricardo Luzón Fernández * */ $user = elgg_get_page_owner_entity(); echo '<div id="profile-details" class="elgg-body pll">'; echo "<h2>{$user->name}</h2>"; echo elgg_view("profile/status", array("entity" => $user)); $show_profile_type_on_profile = elgg_get_plugin_setting("show_profile_type_on_profile", "profiles_go"); $categorized_fields = profiles_go_get_categorized_fields($user); $cats = $categorized_fields['categories']; $fields = $categorized_fields['fields']; $details_result = ""; if ($show_profile_type_on_profile != "no") { if ($profile_type_guid = $user->custom_profile_type) { if (($profile_type = get_entity($profile_type_guid)) && $profile_type instanceof ProfileManagerCustomProfileType) { $details_result .= "<div class='even'><b>" . elgg_echo("profiles_go:user_details:profile_type") . "</b>: " . $profile_type->getTitle() . " </div>"; } } } if (count($cats) > 0) { // only show category headers if more than 1 category available if (count($cats) > 1) { $show_header = true; } else {
/** * Returns an array with percentage completeness and required / missing fields * * @param ElggUser $user User to count completeness for * * @return boolean|array */ function profiles_go_profile_completeness($user = null) { $result = false; if (empty($user)) { $user = elgg_get_logged_in_user_entity(); } if (!empty($user) && $user instanceof ElggUser) { $required_fields = array(); $missing_fields = array(); $percentage_completeness = 100; $fields = profiles_go_get_categorized_fields($user, true, false, true); //echo('teranga fields: <pre>'); print_r($fields); echo('</pre><br>'); if (!empty($fields["categories"])) { foreach ($fields["categories"] as $cat_guid => $cat) { $cat_fields = $fields["fields"][$cat_guid]; foreach ($cat_fields as $field) { if ($field->count_for_completeness == "yes") { $required_fields[] = $field; $metaname = $field->metadata_name; if (empty($user->{$metaname}) && $user->{$metaname} !== 0) { $missing_fields[] = $field; } } } } } if (count($required_fields) > 0) { $percentage_completeness = 100 - round(count($missing_fields) / count($required_fields) * 100); } $result = array("required_fields" => $required_fields, "missing_fields" => $missing_fields, "percentage_completeness" => $percentage_completeness); } return $result; }
/** * Function to add custom profile fields to user on register * * @param string $event Event name * @param string $object_type Event type * @param ElggUser $object User being created * * @return array */ function profiles_go_create_user_event($event, $object_type, $object) { $custom_profile_fields = array(); // retrieve all field that were on the register page foreach ($_POST as $key => $value) { if (strpos($key, "custom_profile_fields_") === 0) { $key = substr($key, 22); $custom_profile_fields[$key] = get_input("custom_profile_fields_" . $key); } } if (count($custom_profile_fields) > 0) { $categorized_fields = profiles_go_get_categorized_fields(null, true, true); $configured_fields = $categorized_fields['fields']; // set ignore access $ia = elgg_get_ignore_access(); elgg_set_ignore_access(true); foreach ($custom_profile_fields as $shortname => $value) { // determine if $value should be an array if (!is_array($value) && !empty($configured_fields)) { // only do something if it not is already an array foreach ($configured_fields as $configured_field) { if ($configured_field->metadata_name == $shortname) { if ($configured_field->metadata_type == "tags" || $configured_field->output_as_tags == "yes") { $value = string_to_tag_array($value); // no need to continue this foreach break; } } } } // use create_metadata to listen to default access if (is_array($value)) { $i = 0; foreach ($value as $interval) { $i++; if ($i == 1) { $multiple = false; } else { $multiple = true; } create_metadata($object->guid, $shortname, $interval, 'text', $object->guid, get_default_access($object), $multiple); } } else { create_metadata($object->guid, $shortname, $value, 'text', $object->guid, get_default_access($object)); } } // restore ignore access elgg_set_ignore_access($ia); } if (isset($_FILES["profile_icon"])) { if (!profiles_go_add_profile_icon($object)) { // return false to delete the user return false; } } $terms = elgg_get_plugin_setting("registration_terms", "profiles_go"); if ($terms) { $object->setPrivateSetting("general_terms_accepted", time()); } elgg_clear_sticky_form('profiles_go_register'); }