123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- <?php
- elgg_make_sticky_form('profile:edit');
- $guid = get_input('guid');
- $owner = get_entity($guid);
- if (!$owner || !($owner instanceof ElggUser) || !$owner->canEdit()) {
- register_error(elgg_echo('profile:noaccess'));
- forward(REFERER);
- }
- $input = array();
- $accesslevel = get_input('accesslevel');
- if (!is_array($accesslevel)) {
- $accesslevel = array();
- }
- function profile_array_decoder(&$v) {
- $v = _elgg_html_decode($v);
- }
- $profile_fields = elgg_get_config('profile_fields');
- foreach ($profile_fields as $shortname => $valuetype) {
-
-
-
- $value = get_input($shortname);
- if (is_array($value)) {
- array_walk_recursive($value, 'profile_array_decoder');
- } else {
- $value = _elgg_html_decode($value);
- }
-
-
-
- if (!is_array($value) && $valuetype != 'longtext' && elgg_strlen($value) > 250) {
- $error = elgg_echo('profile:field_too_long', array(elgg_echo("profile:{$shortname}")));
- register_error($error);
- forward(REFERER);
- }
- if ($value && $valuetype == 'url' && !preg_match('~^https?\://~i', $value)) {
- $value = "http://$value";
- }
- if ($valuetype == 'tags') {
- $value = string_to_tag_array($value);
- }
- if ($valuetype == 'email' && !empty($value) && !is_email_address($value)) {
- register_error(elgg_echo('profile:invalid_email', array(
- elgg_echo("profile:{$shortname}")
- )));
- forward(REFERER);
- }
-
- $input[$shortname] = $value;
- }
- $name = strip_tags(get_input('name'));
- if ($name) {
- if (elgg_strlen($name) > 50) {
- register_error(elgg_echo('user:name:fail'));
- } elseif ($owner->name != $name) {
- $owner->name = $name;
- $owner->save();
- }
- }
- if (sizeof($input) > 0) {
- foreach ($input as $shortname => $value) {
- $options = array(
- 'guid' => $owner->guid,
- 'metadata_name' => $shortname,
- 'limit' => false
- );
- elgg_delete_metadata($options);
-
- if (!is_null($value) && ($value !== '')) {
-
-
-
- if (isset($accesslevel[$shortname])) {
- $access_id = (int) $accesslevel[$shortname];
- } else {
-
- $access_id = ACCESS_DEFAULT;
- }
- if (is_array($value)) {
- $i = 0;
- foreach ($value as $interval) {
- $i++;
- $multiple = ($i > 1) ? TRUE : FALSE;
- create_metadata($owner->guid, $shortname, $interval, 'text', $owner->guid, $access_id, $multiple);
- }
- } else {
- create_metadata($owner->getGUID(), $shortname, $value, 'text', $owner->getGUID(), $access_id);
- }
- }
- }
- $owner->save();
-
- elgg_trigger_event('profileupdate', $owner->type, $owner);
- elgg_clear_sticky_form('profile:edit');
- system_message(elgg_echo("profile:saved"));
- }
- forward($owner->getUrl());
|