*/ $profile_icon = elgg_get_plugin_setting("profile_icon_on_register", "profile_manager"); $profile_type_selection = elgg_get_plugin_setting("profile_type_selection", "profile_manager"); $tabbed = false; if (elgg_get_plugin_setting("edit_profile_mode", "profile_manager") == "tabbed") { $tabbed = true; } echo "<fieldset>"; // mandatory profile icon if ($profile_icon == "yes") { echo elgg_view("input/profile_icon"); } $categorized_fields = profile_manager_get_categorized_fields(null, true, true); $fields = $categorized_fields['fields']; $cats = $categorized_fields['categories']; $main_fields_configuration = subsite_manager_get_main_profile_fields_configuration(true); if (elgg_is_sticky_form('profile_manager_register')) { extract(elgg_get_sticky_values('profile_manager_register')); elgg_clear_sticky_form('profile_manager_register'); } if ($profile_type_selection != "admin") { $types_options = array("type" => "object", "subtype" => CUSTOM_PROFILE_FIELDS_PROFILE_TYPE_SUBTYPE, "limit" => 0, "owner_guid" => $vars["config"]->site_guid); if ($types = elgg_get_entities($types_options)) { $types_options_values = array(); if (elgg_get_plugin_setting("hide_profile_type_default", "profile_manager") !== "yes") { $types_options_values[""] = elgg_echo("profile_manager:profile:edit:custom_profile_type:default"); } foreach ($types as $type) { $types_options_values[$type->guid] = $type->getTitle(); // preparing descriptions of profile types $description = $type->getDescription();
<?php $main_site_guid = elgg_get_site_entity()->getOwnerGUID(); $noyes_options = array("no" => elgg_echo("option:no"), "yes" => elgg_echo("option:yes")); $options = array("type" => "object", "subtype" => "custom_profile_field", "limit" => false, "site_guids" => array($main_site_guid)); $current_configuration = subsite_manager_get_main_profile_fields_configuration(); $field_entities = elgg_get_entities($options); if ($field_entities) { $title = elgg_echo("subsite_manager:profile_fields:global:title"); $body = elgg_echo("subsite_manager:profile_fields:global:description") . "<br /><br />"; $form_body = "<table class='elgg-table mbm'>"; $form_body .= "<tr><th>" . elgg_echo('profile_manager:admin:metadata_label') . "</th><th>" . elgg_echo('profile_manager:admin:show_on_register') . "</th><th>" . elgg_echo('profile_manager:admin:mandatory') . "</th></tr>"; foreach ($field_entities as $field) { if ($field->user_editable !== "no") { $name = $field->metadata_name; $show_on_register = ""; $mandatory = ""; if (!empty($current_configuration) && array_key_exists($name, $current_configuration)) { $show_on_register = $current_configuration[$name]["show_on_register"]; $mandatory = $current_configuration[$name]["mandatory"]; } $form_body .= "<tr>"; $form_body .= "<td>" . $field->getTitle() . "</td>"; $form_body .= "<td>" . elgg_view("input/dropdown", array("name" => "params[" . $name . "][show_on_register]", "value" => $show_on_register, "options_values" => $noyes_options)) . "</td>"; $form_body .= "<td>" . elgg_view("input/dropdown", array("name" => "params[" . $name . "][mandatory]", "value" => $mandatory, "options_values" => $noyes_options)) . "</td>"; $form_body .= "</tr>"; } } $form_body .= "</table>"; $form_body .= elgg_view("input/submit", array("value" => elgg_echo("save"))); $body .= elgg_view("input/form", array("action" => "action/subsite_manager/main_profile_fields", "body" => $form_body));
/** * function to check if custom fields on register have been filled (if required) * * @param $hook_name * @param $entity_type * @param $return_value * @param $parameters * @return unknown_type */ function subsite_manager_action_register_hook($hook_name, $entity_type, $return_value, $parameters) { elgg_make_sticky_form('register'); elgg_make_sticky_form('profile_manager_register'); $required_fields = array(); // new if ($fields = subsite_manager_get_main_profile_fields_configuration(true)) { foreach ($fields as $field_name => $field_config) { if ($field_config["mandatory"] == "yes") { $required_fields[] = $field_name; } } } if ($required_fields) { $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 $field_name) { $passed_value = $custom_profile_fields[$field_name]; if (empty($passed_value)) { register_error(elgg_echo("profile_manager:register_pre_check:missing", array(elgg_echo("profile:" . $field_name)))); forward(REFERER); } } } }