diff --git a/boot.php b/boot.php index c979dde769..ea14428fd0 100644 --- a/boot.php +++ b/boot.php @@ -38,7 +38,7 @@ define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_CODENAME', 'Asparagus'); define ( 'FRIENDICA_VERSION', '3.5.1-dev' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); -define ( 'DB_UPDATE_VERSION', 1202 ); +define ( 'DB_UPDATE_VERSION', 1203 ); /** * @brief Constant with a HTML line break. @@ -181,6 +181,28 @@ define ( 'PAGE_BLOG', 4 ); define ( 'PAGE_PRVGROUP', 5 ); /** @}*/ +/** + * @name account types + * + * ACCOUNT_TYPE_PERSON - the account belongs to a person + * Associated page types: PAGE_NORMAL, PAGE_SOAPBOX, PAGE_FREELOVE + * + * ACCOUNT_TYPE_ORGANISATION - the account belongs to an organisation + * Associated page type: PAGE_SOAPBOX + * + * ACCOUNT_TYPE_NEWS - the account is a news reflector + * Associated page type: PAGE_SOAPBOX + * + * ACCOUNT_TYPE_COMMUNITY - the account is community forum + * Associated page types: PAGE_COMMUNITY, PAGE_PRVGROUP + * @{ + */ +define ( 'ACCOUNT_TYPE_PERSON', 0 ); +define ( 'ACCOUNT_TYPE_ORGANISATION',1 ); +define ( 'ACCOUNT_TYPE_NEWS', 2 ); +define ( 'ACCOUNT_TYPE_COMMUNITY', 3 ); +/** @}*/ + /** * @name CP * diff --git a/database.sql b/database.sql index 03ebc5fe4a..ecd2be1529 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ --- Friendica 3.5-dev (Asparagus) --- DB_UPDATE_VERSION 1200 +-- Friendica 3.5.1-dev (Asparagus) +-- DB_UPDATE_VERSION 1203 -- ------------------------------------------ @@ -118,6 +118,7 @@ CREATE TABLE IF NOT EXISTS `contact` ( `about` text, `keywords` text, `gender` varchar(32) NOT NULL DEFAULT '', + `xmpp` varchar(255) NOT NULL DEFAULT '', `attag` varchar(255) NOT NULL DEFAULT '', `avatar` varchar(255) NOT NULL DEFAULT '', `photo` text, @@ -157,6 +158,7 @@ CREATE TABLE IF NOT EXISTS `contact` ( `writable` tinyint(1) NOT NULL DEFAULT 0, `forum` tinyint(1) NOT NULL DEFAULT 0, `prv` tinyint(1) NOT NULL DEFAULT 0, + `contact-type` int(11) unsigned NOT NULL DEFAULT 0, `hidden` tinyint(1) NOT NULL DEFAULT 0, `archive` tinyint(1) NOT NULL DEFAULT 0, `pending` tinyint(1) NOT NULL DEFAULT 1, @@ -771,6 +773,17 @@ CREATE TABLE IF NOT EXISTS `poll_result` ( INDEX `choice` (`choice`) ) DEFAULT CHARSET=utf8mb4; +-- +-- TABLE process +-- +CREATE TABLE IF NOT EXISTS `process` ( + `pid` int(10) unsigned NOT NULL, + `command` varchar(32) NOT NULL DEFAULT '', + `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + PRIMARY KEY(`pid`), + INDEX `command` (`command`) +) DEFAULT CHARSET=utf8mb4; + -- -- TABLE profile -- @@ -812,6 +825,7 @@ CREATE TABLE IF NOT EXISTS `profile` ( `education` text, `contact` text, `homepage` varchar(255) NOT NULL DEFAULT '', + `xmpp` varchar(255) NOT NULL DEFAULT '', `photo` varchar(255) NOT NULL DEFAULT '', `thumb` varchar(255) NOT NULL DEFAULT '', `publish` tinyint(1) NOT NULL DEFAULT 0, @@ -1048,6 +1062,7 @@ CREATE TABLE IF NOT EXISTS `user` ( `cntunkmail` int(11) NOT NULL DEFAULT 10, `notify-flags` int(11) unsigned NOT NULL DEFAULT 65535, `page-flags` int(11) unsigned NOT NULL DEFAULT 0, + `account-type` int(11) unsigned NOT NULL DEFAULT 0, `prvnets` tinyint(1) NOT NULL DEFAULT 0, `pwdreset` varchar(255) NOT NULL DEFAULT '', `maxreq` int(11) NOT NULL DEFAULT 10, diff --git a/include/Contact.php b/include/Contact.php index 1dbf21c737..004d3aa287 100644 --- a/include/Contact.php +++ b/include/Contact.php @@ -209,21 +209,21 @@ function get_contact_details_by_url($url, $uid = -1, $default = array()) { // Fetch contact data from the contact table for the given user $r = q("SELECT `id`, `id` AS `cid`, 0 AS `gid`, 0 AS `zid`, `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, - `keywords`, `gender`, `photo`, `thumb`, `micro`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `bd` AS `birthday`, `self` + `xmpp`, `keywords`, `gender`, `photo`, `thumb`, `micro`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `bd` AS `birthday`, `self` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d", dbesc(normalise_link($url)), intval($uid)); // Fetch the data from the contact table with "uid=0" (which is filled automatically) if (!$r) $r = q("SELECT `id`, 0 AS `cid`, `id` AS `zid`, 0 AS `gid`, `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, - `keywords`, `gender`, `photo`, `thumb`, `micro`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `bd` AS `birthday`, 0 AS `self` + `xmpp`, `keywords`, `gender`, `photo`, `thumb`, `micro`, `forum`, `prv`, (`forum` | `prv`) AS `community`, `bd` AS `birthday`, 0 AS `self` FROM `contact` WHERE `nurl` = '%s' AND `uid` = 0", dbesc(normalise_link($url))); // Fetch the data from the gcontact table if (!$r) $r = q("SELECT 0 AS `id`, 0 AS `cid`, `id` AS `gid`, 0 AS `zid`, 0 AS `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, - `keywords`, `gender`, `photo`, `photo` AS `thumb`, `photo` AS `micro`, `community` AS `forum`, 0 AS `prv`, `community`, `birthday`, 0 AS `self` + '' AS `xmpp`, `keywords`, `gender`, `photo`, `photo` AS `thumb`, `photo` AS `micro`, `community` AS `forum`, 0 AS `prv`, `community`, `birthday`, 0 AS `self` FROM `gcontact` WHERE `nurl` = '%s'", dbesc(normalise_link($url))); diff --git a/include/dbstructure.php b/include/dbstructure.php index e7514872fd..411def5d0d 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -459,6 +459,7 @@ function db_definition() { "about" => array("type" => "text"), "keywords" => array("type" => "text"), "gender" => array("type" => "varchar(32)", "not null" => "1", "default" => ""), + "xmpp" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "attag" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "avatar" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "photo" => array("type" => "text"), @@ -498,6 +499,7 @@ function db_definition() { "writable" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "forum" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "prv" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), + "contact-type" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"), "hidden" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "archive" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "pending" => array("type" => "tinyint(1)", "not null" => "1", "default" => "1"), @@ -1164,6 +1166,7 @@ function db_definition() { "education" => array("type" => "text"), "contact" => array("type" => "text"), "homepage" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), + "xmpp" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "photo" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "thumb" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "publish" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), @@ -1400,6 +1403,7 @@ function db_definition() { "cntunkmail" => array("type" => "int(11)", "not null" => "1", "default" => "10"), "notify-flags" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "65535"), "page-flags" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"), + "account-type" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"), "prvnets" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"), "pwdreset" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "maxreq" => array("type" => "int(11)", "not null" => "1", "default" => "10"), diff --git a/include/delivery.php b/include/delivery.php index fe33774382..7c0ba63a6b 100644 --- a/include/delivery.php +++ b/include/delivery.php @@ -178,7 +178,7 @@ function delivery_run(&$argv, &$argc){ $r = q("SELECT `contact`.*, `user`.`pubkey` AS `upubkey`, `user`.`prvkey` AS `uprvkey`, `user`.`timezone`, `user`.`nickname`, `user`.`sprvkey`, `user`.`spubkey`, - `user`.`page-flags`, `user`.`prvnets` + `user`.`page-flags`, `user`.`account-type`, `user`.`prvnets` FROM `contact` INNER JOIN `user` ON `user`.`uid` = `contact`.`uid` WHERE `contact`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1", intval($uid) diff --git a/include/dfrn.php b/include/dfrn.php index 27fc644c6b..e9cfb228f6 100644 --- a/include/dfrn.php +++ b/include/dfrn.php @@ -98,9 +98,9 @@ class dfrn { $sql_extra = " AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' "; - $r = q("SELECT `contact`.*, `user`.`nickname`, `user`.`timezone`, `user`.`page-flags` + $r = q("SELECT `contact`.*, `user`.`nickname`, `user`.`timezone`, `user`.`page-flags`, `user`.`account-type` FROM `contact` INNER JOIN `user` ON `user`.`uid` = `contact`.`uid` - WHERE `contact`.`self` = 1 AND `user`.`nickname` = '%s' LIMIT 1", + WHERE `contact`.`self` AND `user`.`nickname` = '%s' LIMIT 1", dbesc($owner_nick) ); @@ -440,9 +440,13 @@ class dfrn { xml::add_element($doc, $root, "link", "", $attributes); } + // For backward compatibility we keep this element if ($owner['page-flags'] == PAGE_COMMUNITY) xml::add_element($doc, $root, "dfrn:community", 1); + // The former element is replaced by this one + xml::add_element($doc, $root, "dfrn:account_type", $owner["account-type"]); + /// @todo We need a way to transmit the different page flags like "PAGE_PRVGROUP" xml::add_element($doc, $root, "updated", datetime_convert("UTC", "UTC", "now", ATOM_TIME)); @@ -512,14 +516,16 @@ class dfrn { xml::add_element($doc, $author, "dfrn:birthday", $birthday); // Only show contact details when we are allowed to - $r = q("SELECT `profile`.`about`, `profile`.`name`, `profile`.`homepage`, `user`.`nickname`, `user`.`timezone`, - `profile`.`locality`, `profile`.`region`, `profile`.`country-name`, `profile`.`pub_keywords`, `profile`.`dob` + $r = q("SELECT `profile`.`about`, `profile`.`name`, `profile`.`homepage`, `user`.`nickname`, + `user`.`timezone`, `profile`.`locality`, `profile`.`region`, `profile`.`country-name`, + `profile`.`pub_keywords`, `profile`.`xmpp`, `profile`.`dob` FROM `profile` INNER JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `profile`.`is-default` AND NOT `user`.`hidewall` AND `user`.`uid` = %d", intval($owner['uid'])); if ($r) { $profile = $r[0]; + xml::add_element($doc, $author, "poco:displayName", $profile["name"]); xml::add_element($doc, $author, "poco:updated", $namdate); @@ -550,12 +556,10 @@ class dfrn { } - /// @todo When we are having the XMPP address in the profile we should propagate it here - $xmpp = ""; - if (trim($xmpp) != "") { + if (trim($profile["xmpp"]) != "") { $ims = $doc->createElement("poco:ims"); xml::add_element($doc, $ims, "poco:type", "xmpp"); - xml::add_element($doc, $ims, "poco:value", $xmpp); + xml::add_element($doc, $ims, "poco:value", $profile["xmpp"]); xml::add_element($doc, $ims, "poco:primary", "true"); $author->appendChild($ims); } @@ -1143,7 +1147,7 @@ class dfrn { $author["link"] = $xpath->evaluate($element."/atom:uri/text()", $context)->item(0)->nodeValue; $r = q("SELECT `id`, `uid`, `url`, `network`, `avatar-date`, `name-date`, `uri-date`, `addr`, - `name`, `nick`, `about`, `location`, `keywords`, `bdyear`, `bd`, `hidden` + `name`, `nick`, `about`, `location`, `keywords`, `xmpp`, `bdyear`, `bd`, `hidden` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' AND `network` != '%s'", intval($importer["uid"]), dbesc(normalise_link($author["link"])), dbesc(NETWORK_STATUSNET)); if ($r) { @@ -1219,9 +1223,13 @@ class dfrn { if ($value != "") $poco["location"] = $value; + /// @todo Only search for elements with "poco:type" = "xmpp" + $value = $xpath->evaluate($element."/poco:ims/poco:value/text()", $context)->item(0)->nodeValue; + if ($value != "") + $poco["xmpp"] = $value; + /// @todo Add support for the following fields that we don't support by now in the contact table: /// - poco:utcOffset - /// - poco:ims /// - poco:urls /// - poco:locality /// - poco:region @@ -1308,12 +1316,13 @@ class dfrn { q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `about` = '%s', `location` = '%s', `addr` = '%s', `keywords` = '%s', `bdyear` = '%s', `bd` = '%s', `hidden` = %d, - `name-date` = '%s', `uri-date` = '%s' + `xmpp` = '%s', `name-date` = '%s', `uri-date` = '%s' WHERE `id` = %d AND `network` = '%s'", dbesc($contact["name"]), dbesc($contact["nick"]), dbesc($contact["about"]), dbesc($contact["location"]), dbesc($contact["addr"]), dbesc($contact["keywords"]), dbesc($contact["bdyear"]), - dbesc($contact["bd"]), intval($contact["hidden"]), dbesc($contact["name-date"]), - dbesc($contact["uri-date"]), intval($contact["id"]), dbesc($contact["network"])); + dbesc($contact["bd"]), intval($contact["hidden"]), dbesc($contact["xmpp"]), + dbesc($contact["name-date"]), dbesc($contact["uri-date"]), + intval($contact["id"]), dbesc($contact["network"])); } update_contact_avatar($author["avatar"], $importer["uid"], $contact["id"], diff --git a/include/identity.php b/include/identity.php index 91b31c0784..def50a98fc 100644 --- a/include/identity.php +++ b/include/identity.php @@ -337,6 +337,8 @@ function profile_sidebar($profile, $block = 0) { $about = ((x($profile,'about') == 1) ? t('About:') : False); + $xmpp = ((x($profile,'xmpp') == 1) ? t('XMPP:') : False); + if(($profile['hidewall'] || $block) && (! local_user()) && (! remote_user())) { $location = $pdesc = $gender = $marital = $homepage = $about = False; } @@ -405,6 +407,7 @@ function profile_sidebar($profile, $block = 0) { $tpl = get_markup_template('profile_vcard.tpl'); $o .= replace_macros($tpl, array( '$profile' => $p, + '$xmpp' => $xmpp, '$connect' => $connect, '$remoteconnect' => $remoteconnect, '$subscribe_feed' => $subscribe_feed, diff --git a/include/notifier.php b/include/notifier.php index 0610a4e398..584555d4ac 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -134,7 +134,7 @@ function notifier_run(&$argv, &$argc){ } elseif($cmd === 'removeme') { $r = q("SELECT `contact`.*, `user`.`pubkey` AS `upubkey`, `user`.`prvkey` AS `uprvkey`, `user`.`timezone`, `user`.`nickname`, `user`.`sprvkey`, `user`.`spubkey`, - `user`.`page-flags`, `user`.`prvnets`, `user`.`guid` + `user`.`page-flags`, `user`.`prvnets`, `user`.`account-type`, `user`.`guid` FROM `contact` INNER JOIN `user` ON `user`.`uid` = `contact`.`uid` WHERE `contact`.`uid` = %d AND `contact`.`self` LIMIT 1", intval($item_id)); @@ -204,7 +204,7 @@ function notifier_run(&$argv, &$argc){ $r = q("SELECT `contact`.*, `user`.`pubkey` AS `upubkey`, `user`.`prvkey` AS `uprvkey`, `user`.`timezone`, `user`.`nickname`, `user`.`sprvkey`, `user`.`spubkey`, - `user`.`page-flags`, `user`.`prvnets` + `user`.`page-flags`, `user`.`prvnets`, `user`.`account-type` FROM `contact` INNER JOIN `user` ON `user`.`uid` = `contact`.`uid` WHERE `contact`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1", intval($uid) diff --git a/mod/contacts.php b/mod/contacts.php index ba8ad45c39..be8135f5cb 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -626,6 +626,8 @@ function contacts_content(&$a) { 'account_type' => (($contact['forum'] || $contact['prv']) ? t('Forum') : ''), '$location' => bbcode($contact["location"]), '$location_label' => t("Location:"), + '$xmpp' => bbcode($contact["xmpp"]), + '$xmpp_label' => t("XMPP:"), '$about' => bbcode($contact["about"], false, false), '$about_label' => t("About:"), '$keywords' => $contact["keywords"], diff --git a/mod/profiles.php b/mod/profiles.php index d770e75c3a..943742e3a2 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -303,6 +303,7 @@ function profiles_post(&$a) { } $sexual = notags(trim($_POST['sexual'])); + $xmpp = notags(trim($_POST['xmpp'])); $homepage = notags(trim($_POST['homepage'])); if ((strpos($homepage, 'http') !== 0) && (strlen($homepage))) { // neither http nor https in URL, add them @@ -368,6 +369,10 @@ function profiles_post(&$a) { $changes[] = t('Sexual Preference'); $value = $sexual; } + if($xmpp != $orig[0]['xmpp']) { + $changes[] = t('XMPP'); + $value = $xmpp; + } if($homepage != $orig[0]['homepage']) { $changes[] = t('Homepage'); $value = $homepage; @@ -409,6 +414,7 @@ function profiles_post(&$a) { `with` = '%s', `howlong` = '%s', `sexual` = '%s', + `xmpp` = '%s', `homepage` = '%s', `hometown` = '%s', `politic` = '%s', @@ -443,6 +449,7 @@ function profiles_post(&$a) { dbesc($with), dbesc($howlong), dbesc($sexual), + dbesc($xmpp), dbesc($homepage), dbesc($hometown), dbesc($politic), @@ -725,6 +732,7 @@ function profiles_content(&$a) { '$howlong' => array('howlong', t('Since [date]:'), ($r[0]['howlong'] === '0000-00-00 00:00:00' ? '' : datetime_convert('UTC',date_default_timezone_get(),$r[0]['howlong']))), '$sexual' => sexpref_selector($r[0]['sexual']), '$about' => array('about', t('Tell us about yourself...'), $r[0]['about']), + '$xmpp' => array('xmpp', t('XMPP (Jabber) address:'), $r[0]['xmpp'], t("The XMPP address will be propagated to your contacts so that they can follow you.")), '$homepage' => array('homepage', t('Homepage URL:'), $r[0]['homepage']), '$hometown' => array('hometown', t('Hometown:'), $r[0]['hometown']), '$politic' => array('politic', t('Political Views:'), $r[0]['politic']), diff --git a/mod/settings.php b/mod/settings.php index e2d3f4d367..908d828456 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -420,6 +420,7 @@ function settings_post(&$a) { $publish = (((x($_POST,'profile_in_directory')) && (intval($_POST['profile_in_directory']) == 1)) ? 1: 0); $net_publish = (((x($_POST,'profile_in_netdirectory')) && (intval($_POST['profile_in_netdirectory']) == 1)) ? 1: 0); $old_visibility = (((x($_POST,'visibility')) && (intval($_POST['visibility']) == 1)) ? 1 : 0); + $account_type = (((x($_POST,'account-type')) && (intval($_POST['account-type']))) ? intval($_POST['account-type']) : 0); $page_flags = (((x($_POST,'page-flags')) && (intval($_POST['page-flags']))) ? intval($_POST['page-flags']) : 0); $blockwall = (((x($_POST,'blockwall')) && (intval($_POST['blockwall']) == 1)) ? 0: 1); // this setting is inverted! $blocktags = (((x($_POST,'blocktags')) && (intval($_POST['blocktags']) == 1)) ? 0: 1); // this setting is inverted! @@ -453,6 +454,16 @@ function settings_post(&$a) { if(x($_POST,'notify8')) $notify += intval($_POST['notify8']); + // Adjust the page flag if the account type doesn't fit to the page flag. + if (($account_type == ACCOUNT_TYPE_PERSON) AND !in_array($page_flags, array(PAGE_NORMAL, PAGE_SOAPBOX, PAGE_FREELOVE))) + $page_flags = PAGE_NORMAL; + elseif (($account_type == ACCOUNT_TYPE_ORGANISATION) AND !in_array($page_flags, array(PAGE_SOAPBOX))) + $page_flags = PAGE_SOAPBOX; + elseif (($account_type == ACCOUNT_TYPE_NEWS) AND !in_array($page_flags, array(PAGE_SOAPBOX))) + $page_flags = PAGE_SOAPBOX; + elseif (($account_type == ACCOUNT_TYPE_COMMUNITY) AND !in_array($page_flags, array(PAGE_COMMUNITY, PAGE_PRVGROUP))) + $page_flags = PAGE_COMMUNITY; + $email_changed = false; $err = ''; @@ -553,7 +564,7 @@ function settings_post(&$a) { $r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `openid` = '%s', `timezone` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', - `notify-flags` = %d, `page-flags` = %d, `default-location` = '%s', + `notify-flags` = %d, `page-flags` = %d, `account-type` = %d, `default-location` = '%s', `allow_location` = %d, `maxreq` = %d, `expire` = %d, `openidserver` = '%s', `def_gid` = %d, `blockwall` = %d, `hidewall` = %d, `blocktags` = %d, `unkmail` = %d, `cntunkmail` = %d, `language` = '%s' @@ -568,6 +579,7 @@ function settings_post(&$a) { dbesc($str_group_deny), intval($notify), intval($page_flags), + intval($account_type), dbesc($defloc), intval($allow_location), intval($maxreq), @@ -1065,13 +1077,41 @@ function settings_content(&$a) { if(! strlen($a->user['timezone'])) $timezone = date_default_timezone_get(); - + // Set the account type to "Community" when the page is a community page but the account type doesn't fit + // This is only happening on the first visit after the update + if (in_array($a->user['page-flags'], array(PAGE_COMMUNITY, PAGE_PRVGROUP)) AND + ($a->user['account-type'] != ACCOUNT_TYPE_COMMUNITY)) + $a->user['account-type'] = ACCOUNT_TYPE_COMMUNITY; $pageset_tpl = get_markup_template('pagetypes.tpl'); + $pagetype = replace_macros($pageset_tpl, array( - '$user' => t("User Types"), - '$community' => t("Community Types"), - '$page_normal' => array('page-flags', t('Normal Account Page'), PAGE_NORMAL, + '$account_types' => t("Account Types"), + '$user' => t("Personal Page Subtypes"), + '$community' => t("Community Forum Subtypes"), + '$account_type' => $a->user['account-type'], + '$type_person' => ACCOUNT_TYPE_PERSON, + '$type_organisation' => ACCOUNT_TYPE_ORGANISATION, + '$type_news' => ACCOUNT_TYPE_NEWS, + '$type_community' => ACCOUNT_TYPE_COMMUNITY, + + '$account_person' => array('account-type', t('Personal Page'), ACCOUNT_TYPE_PERSON, + t('This account is a regular personal profile'), + ($a->user['account-type'] == ACCOUNT_TYPE_PERSON)), + + '$account_organisation' => array('account-type', t('Organisation Page'), ACCOUNT_TYPE_ORGANISATION, + t('This account is a profile for an organisation'), + ($a->user['account-type'] == ACCOUNT_TYPE_ORGANISATION)), + + '$account_news' => array('account-type', t('News Page'), ACCOUNT_TYPE_NEWS, + t('This account is a news account/reflector'), + ($a->user['account-type'] == ACCOUNT_TYPE_NEWS)), + + '$account_community' => array('account-type', t('Community Forum'), ACCOUNT_TYPE_COMMUNITY, + t('This account is a community forum where people can discuss with each other'), + ($a->user['account-type'] == ACCOUNT_TYPE_COMMUNITY)), + + '$page_normal' => array('page-flags', t('Normal Account Page'), PAGE_NORMAL, t('This account is a normal personal profile'), ($a->user['page-flags'] == PAGE_NORMAL)), @@ -1079,8 +1119,8 @@ function settings_content(&$a) { t('Automatically approve all connection/friend requests as read-only fans'), ($a->user['page-flags'] == PAGE_SOAPBOX)), - '$page_community' => array('page-flags', t('Community Forum/Celebrity Account'), PAGE_COMMUNITY, - t('Automatically approve all connection/friend requests as read-write fans'), + '$page_community' => array('page-flags', t('Public Forum'), PAGE_COMMUNITY, + t('Automatically approve all contact requests'), ($a->user['page-flags'] == PAGE_COMMUNITY)), '$page_freelove' => array('page-flags', t('Automatic Friend Page'), PAGE_FREELOVE, diff --git a/update.php b/update.php index f1981f730f..31f7852a2f 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@
{{$profileurllabel}}
{{$profileurl}}
{{if $location}}
{{$location_label}}
{{$location}}
{{/if}} + {{if $xmpp}}
{{$xmpp_label}}
{{$xmpp}}
{{/if}} {{if $keywords}}
{{$keywords_label}}
{{$keywords}}
{{/if}} {{if $about}}
{{$about_label}}
{{$about}}
{{/if}} {{* End of contact-edit-links *}} diff --git a/view/templates/field_radio.tpl b/view/templates/field_radio.tpl index ef8ec4f9a6..72228a1c20 100644 --- a/view/templates/field_radio.tpl +++ b/view/templates/field_radio.tpl @@ -1,5 +1,3 @@ - -
diff --git a/view/templates/pagetypes.tpl b/view/templates/pagetypes.tpl index 33d1c64a94..b970f7745f 100644 --- a/view/templates/pagetypes.tpl +++ b/view/templates/pagetypes.tpl @@ -1,8 +1,26 @@ +

{{$account_types}}

+{{include file="field_radio.tpl" field=$account_person}} +{{include file="field_radio.tpl" field=$account_organisation}} +{{include file="field_radio.tpl" field=$account_news}} +{{include file="field_radio.tpl" field=$account_community}} -

{{$user}}

+{{if $account_type == $type_person}} +
{{$user}}
{{include file="field_radio.tpl" field=$page_normal}} {{include file="field_radio.tpl" field=$page_soapbox}} {{include file="field_radio.tpl" field=$page_freelove}} -

{{$community}}

+{{/if}} + +{{if $account_type == $type_organisation}} + +{{/if}} + +{{if $account_type == $type_news}} + +{{/if}} + +{{if $account_type == $type_community}} +
{{$community}}
{{include file="field_radio.tpl" field=$page_community}} {{include file="field_radio.tpl" field=$page_prvgroup}} +{{/if}} diff --git a/view/templates/profile_edit.tpl b/view/templates/profile_edit.tpl index 4623c77a8b..a25945c689 100644 --- a/view/templates/profile_edit.tpl +++ b/view/templates/profile_edit.tpl @@ -134,6 +134,13 @@
+
+ + +
{{$xmpp.3}}
+
+ +
@@ -352,6 +359,13 @@
+
+ + +
{{$xmpp.3}}
+
+ + {{$hide_friends}}
diff --git a/view/templates/profile_vcard.tpl b/view/templates/profile_vcard.tpl index 558daf26d7..b56dd607ce 100644 --- a/view/templates/profile_vcard.tpl +++ b/view/templates/profile_vcard.tpl @@ -28,6 +28,13 @@ {{/if}} + {{if $profile.xmpp}} +
+
{{$xmpp}}
+
{{$profile.xmpp}}
+
+ {{/if}} + {{if $gender}}
{{$gender}}
{{$profile.gender}}
{{/if}} {{if $profile.pubkey}}{{/if}} diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 9a31a0caa7..daabc0f958 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -967,10 +967,14 @@ aside .vcard .p-addr { white-space: nowrap; padding-bottom: 2px; } + aside .vcard .detail { display: table; padding: 5px 0; } +aside .xmpp { + display: table; +} aside .vcard .icon { display: table-cell; padding-right: 10px; diff --git a/view/theme/frio/templates/contact_edit.tpl b/view/theme/frio/templates/contact_edit.tpl index 34c5023c12..4836a47429 100644 --- a/view/theme/frio/templates/contact_edit.tpl +++ b/view/theme/frio/templates/contact_edit.tpl @@ -88,6 +88,14 @@
{{/if}} + {{if $xmpp}} +
+
+
{{$xmpp_label}}
+
{{$xmpp}}
+
+ {{/if}} + {{if $keywords}}

diff --git a/view/theme/frio/templates/profile_edit.tpl b/view/theme/frio/templates/profile_edit.tpl index 224f15e827..74ee1a05d6 100644 --- a/view/theme/frio/templates/profile_edit.tpl +++ b/view/theme/frio/templates/profile_edit.tpl @@ -203,6 +203,8 @@
{{include file="field_input.tpl" field=$homepage}} + {{include file="field_input.tpl" field=$xmpp}} + {{include file="field_input.tpl" field=$pub_keywords}} {{include file="field_input.tpl" field=$prv_keywords}} @@ -268,6 +270,8 @@ {{include file="field_input.tpl" field=$homepage}} + {{include file="field_input.tpl" field=$xmpp}} + {{$hide_friends}} {{include file="field_input.tpl" field=$address}} diff --git a/view/theme/frio/templates/profile_vcard.tpl b/view/theme/frio/templates/profile_vcard.tpl index 4ede0a9886..1fc3ccf207 100644 --- a/view/theme/frio/templates/profile_vcard.tpl +++ b/view/theme/frio/templates/profile_vcard.tpl @@ -87,6 +87,12 @@
{{/if}} + {{if $profile.xmpp}} +
+ + {{$profile.xmpp}} +
+ {{/if}} {{if $gender}}
diff --git a/view/theme/frost/style.css b/view/theme/frost/style.css index 82a89f93d2..0912311dad 100644 --- a/view/theme/frost/style.css +++ b/view/theme/frost/style.css @@ -918,6 +918,7 @@ input#dfrn-url { #profile-edit-religion-label, #profile-edit-pubkeywords-label, #profile-edit-prvkeywords-label, +#profile-edit-xmpp-label, #profile-edit-homepage-label, #profile-edit-hometown-label { font-weight: 700; @@ -939,6 +940,7 @@ input#dfrn-url { #sexual-select, #profile-edit-politic, #profile-edit-religion, +#profile-edit-xmpp, #profile-edit-pubkeywords, #profile-edit-prvkeywords, #profile-in-dir-yes, @@ -952,6 +954,7 @@ input#dfrn-url { float: left; margin-bottom: 20px; } +#profile-edit-xmpp, #profile-edit-pubkeywords, #profile-edit-prvkeywords { margin-bottom: 5px; @@ -1024,6 +1027,7 @@ input#dfrn-url { #profile-edit-pdesc-desc, +#profile-edit-xmpp-desc, #profile-edit-pubkeywords-desc, #profile-edit-prvkeywords-desc { float: left; @@ -1039,7 +1043,8 @@ input#dfrn-url { float: left; margin-bottom: 35px; }*/ -#profile-edit-homepage, #profile-edit-hometown { +#profile-edit-homepage, +#profile-edit-hometown { float: left; margin-bottom: 25px; } @@ -1082,6 +1087,7 @@ input#dfrn-url { #profile-edit-pubkeywords-end, #profile-edit-prvkeywords-end, #profile-edit-homepage-end, +#profile-edit-xmpp-end, #profile-edit-hometown-end, #profile-in-dir-break, #profile-in-dir-end, @@ -1897,6 +1903,7 @@ input#dfrn-url { #advanced-profile-marital-wrapper, #advanced-profile-sexual-wrapper, #advanced-profile-homepage-wrapper, +#advanced-profile-xmpp-wrapper, #advanced-profile-politic-wrapper, #advanced-profile-religion-wrapper, #advanced-profile-about-wrapper, @@ -1919,6 +1926,7 @@ input#dfrn-url { #advanced-profile-marital-text, #advanced-profile-sexual-text, #advanced-profile-homepage-text, +#advanced-profile-xmpp-text, #advanced-profile-politic-text, #advanced-profile-religion-text, #advanced-profile-about-text, @@ -1942,6 +1950,7 @@ input#dfrn-url { #advanced-profile-marital-end, #advanced-profile-sexual-end, #advanced-profile-homepage-end, +#advanced-profile-xmpp-end, #advanced-profile-politic-end, #advanced-profile-religion-end { height: 10px; @@ -1968,6 +1977,7 @@ input#dfrn-url { #advanced-profile-marital, #advanced-profile-sexual, #advanced-profile-homepage, +#advanced-profile-xmpp, #advanced-profile-politic, #advanced-profile-religion { float: left; @@ -2912,14 +2922,14 @@ aside input[type='text'] { margin-bottom: 25px; } -.location-label, .gender-label, .marital-label, .homepage-label, .network-label { +.location-label, .gender-label, .marital-label, .homepage-label, .ympp-label, .network-label, .xmpp-label { float: left; text-align: right; display: block; width: 65px; } -.adr, .x-gender, .marital-text, .homepage-url, .x-network { +.adr, .x-gender, .marital-text, .homepage-url, .x-network, .xmpp-data { float: left; display: block; margin-left: 8px; diff --git a/view/theme/frost/templates/profile_edit.tpl b/view/theme/frost/templates/profile_edit.tpl index 40a3c86a28..6ccc138817 100644 --- a/view/theme/frost/templates/profile_edit.tpl +++ b/view/theme/frost/templates/profile_edit.tpl @@ -131,6 +131,12 @@
+
+ + +
{{$xmpp.3}}
+
+
diff --git a/view/theme/frost/templates/profile_vcard.tpl b/view/theme/frost/templates/profile_vcard.tpl index 4d5a40bc59..dc2de8c3fa 100644 --- a/view/theme/frost/templates/profile_vcard.tpl +++ b/view/theme/frost/templates/profile_vcard.tpl @@ -26,6 +26,13 @@ {{/if}} + {{if $profile.xmpp}} +
+
{{$xmpp}}
+
{{$profile.xmpp}}
+
+ {{/if}} + {{if $gender}}
{{$gender}}
{{$profile.gender}}
{{/if}} {{if $profile.pubkey}}{{/if}} diff --git a/view/theme/quattro/templates/profile_vcard.tpl b/view/theme/quattro/templates/profile_vcard.tpl index 2428c4735b..d25234b733 100644 --- a/view/theme/quattro/templates/profile_vcard.tpl +++ b/view/theme/quattro/templates/profile_vcard.tpl @@ -49,6 +49,13 @@ {{/if}} + {{if $profile.xmpp}} +
+
{{$xmpp}}
+
{{$profile.xmpp}}
+
+ {{/if}} + {{if $gender}}
{{$gender}}
{{$profile.gender}}
{{/if}} {{if $profile.pubkey}}{{/if}} diff --git a/view/theme/vier/templates/contact_edit.tpl b/view/theme/vier/templates/contact_edit.tpl index db5adb4a58..f4f85d611b 100644 --- a/view/theme/vier/templates/contact_edit.tpl +++ b/view/theme/vier/templates/contact_edit.tpl @@ -54,6 +54,7 @@ {{* Some information about the contact from the profile *}}
{{$profileurllabel}}
{{$profileurl}}
{{if $location}}
{{$location_label}}
{{$location}}
{{/if}} + {{if $xmpp}}
{{$xmpp_label}}
{{$xmpp}}
{{/if}} {{if $keywords}}
{{$keywords_label}}
{{$keywords}}
{{/if}} {{if $about}}
{{$about_label}}
{{$about}}
{{/if}}
{{* End of contact-edit-links *}} diff --git a/view/theme/vier/templates/profile_edit.tpl b/view/theme/vier/templates/profile_edit.tpl index fa2cd18576..f1280f41c8 100644 --- a/view/theme/vier/templates/profile_edit.tpl +++ b/view/theme/vier/templates/profile_edit.tpl @@ -93,6 +93,13 @@
+
+ + +
+
{{$xmpp.3}}
+
+
@@ -342,6 +349,13 @@
{{/if}} +
+ + +
+
{{$xmpp.3}}
+
+
diff --git a/view/theme/vier/templates/profile_vcard.tpl b/view/theme/vier/templates/profile_vcard.tpl index ab69fd1b79..dfa341b260 100644 --- a/view/theme/vier/templates/profile_vcard.tpl +++ b/view/theme/vier/templates/profile_vcard.tpl @@ -39,6 +39,13 @@ {{/if}} + {{if $profile.xmpp}} +
+
{{$xmpp}}
+
{{$profile.xmpp}}
+
+ {{/if}} + {{if $gender}}
{{$gender}}
{{$profile.gender}}
{{/if}} {{if $profile.pubkey}}{{/if}}