/**
* @file mod/profiles.php
*/
+
use Friendica\App;
use Friendica\Content\ContactSelector;
use Friendica\Content\Feature;
use Friendica\Core\PConfig;
use Friendica\Core\System;
use Friendica\Core\Worker;
-use Friendica\Database\DBM;
+use Friendica\Database\DBA;
+use Friendica\Model\Contact;
use Friendica\Model\GContact;
use Friendica\Model\Profile;
use Friendica\Network\Probe;
+use Friendica\Util\DateTimeFormat;
+use Friendica\Util\Temporal;
function profiles_init(App $a) {
intval($a->argv[2]),
intval(local_user())
);
- if (! DBM::is_result($r)) {
+ if (! DBA::isResult($r)) {
notice(L10n::t('Profile not found.') . EOL);
goaway('profiles');
return; // NOTREACHED
intval($a->argv[2]),
intval(local_user())
);
- if (DBM::is_result($r)) {
+ if (DBA::isResult($r)) {
info(L10n::t('Profile deleted.').EOL);
}
$r0 = q("SELECT `id` FROM `profile` WHERE `uid` = %d",
intval(local_user()));
- $num_profiles = (DBM::is_result($r0) ? count($r0) : 0);
+ $num_profiles = (DBA::isResult($r0) ? count($r0) : 0);
$name = L10n::t('Profile-') . ($num_profiles + 1);
$r2 = q("INSERT INTO `profile` (`uid` , `profile-name` , `name`, `photo`, `thumb`)
VALUES ( %d, '%s', '%s', '%s', '%s' )",
intval(local_user()),
- dbesc($name),
- dbesc($r1[0]['name']),
- dbesc($r1[0]['photo']),
- dbesc($r1[0]['thumb'])
+ DBA::escape($name),
+ DBA::escape($r1[0]['name']),
+ DBA::escape($r1[0]['photo']),
+ DBA::escape($r1[0]['thumb'])
);
$r3 = q("SELECT `id` FROM `profile` WHERE `uid` = %d AND `profile-name` = '%s' LIMIT 1",
intval(local_user()),
- dbesc($name)
+ DBA::escape($name)
);
info(L10n::t('New profile created.') . EOL);
- if (DBM::is_result($r3) && count($r3) == 1) {
+ if (DBA::isResult($r3) && count($r3) == 1) {
goaway('profiles/' . $r3[0]['id']);
}
$r0 = q("SELECT `id` FROM `profile` WHERE `uid` = %d",
intval(local_user()));
- $num_profiles = (DBM::is_result($r0) ? count($r0) : 0);
+ $num_profiles = (DBA::isResult($r0) ? count($r0) : 0);
$name = L10n::t('Profile-') . ($num_profiles + 1);
$r1 = q("SELECT * FROM `profile` WHERE `uid` = %d AND `id` = %d LIMIT 1",
intval(local_user()),
intval($a->argv[2])
);
- if(! DBM::is_result($r1)) {
+ if(! DBA::isResult($r1)) {
notice(L10n::t('Profile unavailable to clone.') . EOL);
killme();
return;
$r1[0]['is-default'] = 0;
$r1[0]['publish'] = 0;
$r1[0]['net-publish'] = 0;
- $r1[0]['profile-name'] = dbesc($name);
+ $r1[0]['profile-name'] = DBA::escape($name);
- dba::insert('profile', $r1[0]);
+ DBA::insert('profile', $r1[0]);
$r3 = q("SELECT `id` FROM `profile` WHERE `uid` = %d AND `profile-name` = '%s' LIMIT 1",
intval(local_user()),
- dbesc($name)
+ DBA::escape($name)
);
info(L10n::t('New profile created.') . EOL);
- if ((DBM::is_result($r3)) && (count($r3) == 1)) {
+ if ((DBA::isResult($r3)) && (count($r3) == 1)) {
goaway('profiles/'.$r3[0]['id']);
}
intval($a->argv[1]),
intval(local_user())
);
- if (! DBM::is_result($r)) {
+ if (! DBA::isResult($r)) {
notice(L10n::t('Profile not found.') . EOL);
killme();
return;
Profile::load($a, $a->user['nickname'], $r[0]['id']);
}
-
-
-
}
-function profile_clean_keywords($keywords) {
+function profile_clean_keywords($keywords)
+{
$keywords = str_replace(",", " ", $keywords);
$keywords = explode(" ", $keywords);
intval($a->argv[1]),
intval(local_user())
);
- if (! DBM::is_result($orig)) {
+ if (! DBA::isResult($orig)) {
notice(L10n::t('Profile not found.') . EOL);
return;
}
$ignore_year = true;
$dob = substr($dob, 5);
}
- $dob = datetime_convert('UTC', 'UTC', (($ignore_year) ? '1900-' . $dob : $dob), (($ignore_year) ? 'm-d' : 'Y-m-d'));
if ($ignore_year) {
- $dob = '0000-' . $dob;
+ $dob = '0000-' . DateTimeFormat::utc('1900-' . $dob, 'm-d');
+ } else {
+ $dob = DateTimeFormat::utc($dob, 'Y-m-d');
}
}
if (! strlen($howlong)) {
$howlong = NULL_DATE;
} else {
- $howlong = datetime_convert(date_default_timezone_get(), 'UTC', $howlong);
+ $howlong = DateTimeFormat::convert($howlong, 'UTC', date_default_timezone_get());
}
// linkify the relationship target if applicable
$newname = $lookup;
$r = q("SELECT * FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1",
- dbesc($newname),
+ DBA::escape($newname),
intval(local_user())
);
- if (! DBM::is_result($r)) {
+ if (! DBA::isResult($r)) {
$r = q("SELECT * FROM `contact` WHERE `nick` = '%s' AND `uid` = %d LIMIT 1",
- dbesc($lookup),
+ DBA::escape($lookup),
intval(local_user())
);
}
- if (DBM::is_result($r)) {
+ if (DBA::isResult($r)) {
$prf = $r[0]['url'];
$newname = $r[0]['name'];
}
$comma2 = (($region && $country_name) ? ', ' : '');
$value = $locality . $comma1 . $region . $comma2 . $country_name;
}
-
- profile_activity($changes,$value);
-
}
$r = q("UPDATE `profile`
`education` = '%s',
`hide-friends` = %d
WHERE `id` = %d AND `uid` = %d",
- dbesc($profile_name),
- dbesc($name),
- dbesc($pdesc),
- dbesc($gender),
- dbesc($dob),
- dbesc($address),
- dbesc($locality),
- dbesc($region),
- dbesc($postal_code),
- dbesc($country_name),
- dbesc($marital),
- dbesc($with),
- dbesc($howlong),
- dbesc($sexual),
- dbesc($xmpp),
- dbesc($homepage),
- dbesc($hometown),
- dbesc($politic),
- dbesc($religion),
- dbesc($pub_keywords),
- dbesc($prv_keywords),
- dbesc($likes),
- dbesc($dislikes),
- dbesc($about),
- dbesc($interest),
- dbesc($contact),
- dbesc($music),
- dbesc($book),
- dbesc($tv),
- dbesc($film),
- dbesc($romance),
- dbesc($work),
- dbesc($education),
+ DBA::escape($profile_name),
+ DBA::escape($name),
+ DBA::escape($pdesc),
+ DBA::escape($gender),
+ DBA::escape($dob),
+ DBA::escape($address),
+ DBA::escape($locality),
+ DBA::escape($region),
+ DBA::escape($postal_code),
+ DBA::escape($country_name),
+ DBA::escape($marital),
+ DBA::escape($with),
+ DBA::escape($howlong),
+ DBA::escape($sexual),
+ DBA::escape($xmpp),
+ DBA::escape($homepage),
+ DBA::escape($hometown),
+ DBA::escape($politic),
+ DBA::escape($religion),
+ DBA::escape($pub_keywords),
+ DBA::escape($prv_keywords),
+ DBA::escape($likes),
+ DBA::escape($dislikes),
+ DBA::escape($about),
+ DBA::escape($interest),
+ DBA::escape($contact),
+ DBA::escape($music),
+ DBA::escape($book),
+ DBA::escape($tv),
+ DBA::escape($film),
+ DBA::escape($romance),
+ DBA::escape($work),
+ DBA::escape($education),
intval($hide_friends),
intval($a->argv[1]),
intval(local_user())
);
+ /// @TODO decide to use DBA::isResult() here and check $r
if ($r) {
info(L10n::t('Profile updated.') . EOL);
}
-
- if ($namechanged && $is_default) {
- $r = q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s' WHERE `self` = 1 AND `uid` = %d",
- dbesc($name),
- dbesc(datetime_convert()),
- intval(local_user())
- );
- $r = q("UPDATE `user` set `username` = '%s' where `uid` = %d",
- dbesc($name),
- intval(local_user())
- );
- }
-
if ($is_default) {
- $location = Profile::formatLocation(["locality" => $locality, "region" => $region, "country-name" => $country_name]);
-
- q("UPDATE `contact` SET `about` = '%s', `location` = '%s', `keywords` = '%s', `gender` = '%s' WHERE `self` AND `uid` = %d",
- dbesc($about),
- dbesc($location),
- dbesc($pub_keywords),
- dbesc($gender),
- intval(local_user())
- );
+ if ($namechanged) {
+ $r = q("UPDATE `user` set `username` = '%s' where `uid` = %d",
+ DBA::escape($name),
+ intval(local_user())
+ );
+ }
+
+ Contact::updateSelfFromUserID(local_user());
// Update global directory in background
$url = $_SESSION['my_url'];
}
}
-
-function profile_activity($changed, $value) {
- $a = get_app();
-
- if (! local_user() || ! is_array($changed) || ! count($changed)) {
- return;
- }
-
- if ($a->user['hidewall'] || Config::get('system', 'block_public')) {
- return;
- }
-
- if (! PConfig::get(local_user(), 'system', 'post_profilechange')) {
- return;
- }
-
- require_once 'include/items.php';
-
- $self = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
- intval(local_user())
- );
-
- if (! DBM::is_result($self)) {
- return;
- }
-
- $arr = [];
-
- $arr['guid'] = get_guid(32);
- $arr['uri'] = $arr['parent-uri'] = item_new_uri($a->get_hostname(), local_user());
- $arr['uid'] = local_user();
- $arr['contact-id'] = $self[0]['id'];
- $arr['wall'] = 1;
- $arr['type'] = 'wall';
- $arr['gravity'] = 0;
- $arr['origin'] = 1;
- $arr['author-name'] = $arr['owner-name'] = $self[0]['name'];
- $arr['author-link'] = $arr['owner-link'] = $self[0]['url'];
- $arr['author-avatar'] = $arr['owner-avatar'] = $self[0]['thumb'];
- $arr['verb'] = ACTIVITY_UPDATE;
- $arr['object-type'] = ACTIVITY_OBJ_PROFILE;
-
- $A = '[url=' . $self[0]['url'] . ']' . $self[0]['name'] . '[/url]';
-
-
- $changes = '';
- $t = count($changed);
- $z = 0;
- foreach ($changed as $ch) {
- if (strlen($changes)) {
- if ($z == ($t - 1)) {
- $changes .= L10n::t(' and ');
- } else {
- $changes .= ', ';
- }
- }
- $z ++;
- $changes .= $ch;
- }
-
- $prof = '[url=' . $self[0]['url'] . '?tab=profile' . ']' . L10n::t('public profile') . '[/url]';
-
- if ($t == 1 && strlen($value)) {
- $message = L10n::t('%1$s changed %2$s to “%3$s”', $A, $changes, $value);
- $message .= "\n\n" . L10n::t(' - Visit %1$s\'s %2$s', $A, $prof);
- } else {
- $message = L10n::t('%1$s has an updated %2$s, changing %3$s.', $A, $prof, $changes);
- }
-
-
- $arr['body'] = $message;
-
- $arr['object'] = '<object><type>' . ACTIVITY_OBJ_PROFILE . '</type><title>' . $self[0]['name'] . '</title>'
- . '<id>' . $self[0]['url'] . '/' . $self[0]['name'] . '</id>';
- $arr['object'] .= '<link>' . xmlify('<link rel="alternate" type="text/html" href="' . $self[0]['url'] . '?tab=profile' . '" />' . "\n");
- $arr['object'] .= xmlify('<link rel="photo" type="image/jpeg" href="' . $self[0]['thumb'] . '" />' . "\n");
- $arr['object'] .= '</link></object>' . "\n";
-
- $arr['allow_cid'] = $a->user['allow_cid'];
- $arr['allow_gid'] = $a->user['allow_gid'];
- $arr['deny_cid'] = $a->user['deny_cid'];
- $arr['deny_gid'] = $a->user['deny_gid'];
-
- $i = item_store($arr);
- if ($i) {
- Worker::add(PRIORITY_HIGH, "Notifier", "activity", $i);
- }
-}
-
-
function profiles_content(App $a) {
if (! local_user()) {
intval($a->argv[1]),
intval(local_user())
);
- if (! DBM::is_result($r)) {
+ if (! DBA::isResult($r)) {
notice(L10n::t('Profile not found.') . EOL);
return;
}
]);
$personal_account = !(in_array($a->user["page-flags"],
- [PAGE_COMMUNITY, PAGE_PRVGROUP]));
+ [Contact::PAGE_COMMUNITY, Contact::PAGE_PRVGROUP]));
$detailled_profile = (PConfig::get(local_user(), 'system', 'detailled_profile') AND $personal_account);
'$banner' => L10n::t('Edit Profile Details'),
'$submit' => L10n::t('Submit'),
'$profpic' => L10n::t('Change Profile Photo'),
+ '$profpiclink' => '/photos/' . $a->user['nickname'],
'$viewprof' => L10n::t('View this profile'),
+ '$viewallprof' => L10n::t('View all profiles'),
'$editvis' => L10n::t('Edit visibility'),
'$cr_prof' => L10n::t('Create a new profile using these settings'),
'$cl_prof' => L10n::t('Clone this profile'),
'$default' => (($is_default) ? '<p id="profile-edit-default-desc">' . L10n::t('This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet.') . '</p>' : ""),
'$name' => ['name', L10n::t('Your Full Name:'), $r[0]['name']],
'$pdesc' => ['pdesc', L10n::t('Title/Description:'), $r[0]['pdesc']],
- '$dob' => dob($r[0]['dob']),
+ '$dob' => Temporal::getDateofBirthField($r[0]['dob']),
'$hide_friends' => $hide_friends,
'$address' => ['address', L10n::t('Street Address:'), $r[0]['address']],
'$locality' => ['locality', L10n::t('Locality/City:'), $r[0]['locality']],
'$region' => ['region', L10n::t('Region/State:'), $r[0]['region']],
'$postal_code' => ['postal_code', L10n::t('Postal/Zip Code:'), $r[0]['postal-code']],
'$country_name' => ['country_name', L10n::t('Country:'), $r[0]['country-name']],
- '$age' => ((intval($r[0]['dob'])) ? '(' . L10n::t('Age: ') . age($r[0]['dob'],$a->user['timezone'],$a->user['timezone']) . ')' : ''),
+ '$age' => ((intval($r[0]['dob'])) ? '(' . L10n::t('Age: ') . Temporal::getAgeByTimezone($r[0]['dob'],$a->user['timezone'],$a->user['timezone']) . ')' : ''),
'$gender' => ContactSelector::gender($r[0]['gender']),
'$marital' => ContactSelector::maritalStatus($r[0]['marital']),
'$with' => ['with', L10n::t("Who: \x28if applicable\x29"), strip_tags($r[0]['with']), L10n::t('Examples: cathy123, Cathy Williams, cathy@example.com')],
- '$howlong' => ['howlong', L10n::t('Since [date]:'), ($r[0]['howlong'] <= NULL_DATE ? '' : datetime_convert('UTC',date_default_timezone_get(),$r[0]['howlong']))],
+ '$howlong' => ['howlong', L10n::t('Since [date]:'), ($r[0]['howlong'] <= NULL_DATE ? '' : DateTimeFormat::local($r[0]['howlong']))],
'$sexual' => ContactSelector::sexualPreference($r[0]['sexual']),
'$about' => ['about', L10n::t('Tell us about yourself...'), $r[0]['about']],
- '$xmpp' => ['xmpp', L10n::t('XMPP (Jabber) address:'), $r[0]['xmpp'], L10n::t("The XMPP address will be propagated to your contacts so that they can follow you.")],
+ '$xmpp' => ['xmpp', L10n::t("XMPP \x28Jabber\x29 address:"), $r[0]['xmpp'], L10n::t("The XMPP address will be propagated to your contacts so that they can follow you.")],
'$homepage' => ['homepage', L10n::t('Homepage URL:'), $r[0]['homepage']],
'$hometown' => ['hometown', L10n::t('Hometown:'), $r[0]['hometown']],
'$politic' => ['politic', L10n::t('Political Views:'), $r[0]['politic']],
$r = q("SELECT * FROM `profile` WHERE `uid` = %d AND `is-default`=1",
local_user()
);
- if (DBM::is_result($r)) {
+ if (DBA::isResult($r)) {
//Go to the default profile.
goaway('profiles/' . $r[0]['id']);
}
$r = q("SELECT * FROM `profile` WHERE `uid` = %d",
local_user());
- if (DBM::is_result($r)) {
+ if (DBA::isResult($r)) {
$tpl = get_markup_template('profile_entry.tpl');