diff --git a/boot.php b/boot.php index c979dde76..fe16e0193 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,16 @@ define ( 'PAGE_BLOG', 4 ); define ( 'PAGE_PRVGROUP', 5 ); /** @}*/ +/** + * @name page types + * + * @{ + */ +define ( 'PAGE_TYPE_PERSON', 0 ); +define ( 'PAGE_TYPE_COMPANY', 1 ); +define ( 'PAGE_TYPE_COMMUNITY', 2 ); +/** @}*/ + /** * @name CP * diff --git a/database.sql b/database.sql index 03ebc5fe4..f621fdd2e 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 1202 -- ------------------------------------------ @@ -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, @@ -771,6 +772,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 +824,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, diff --git a/include/Contact.php b/include/Contact.php index 1dbf21c73..004d3aa28 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 e7514872f..22df6caca 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"), @@ -1164,6 +1165,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"), diff --git a/include/dfrn.php b/include/dfrn.php index 27fc644c6..cfeb8347b 100644 --- a/include/dfrn.php +++ b/include/dfrn.php @@ -512,14 +512,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 +552,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 +1143,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 +1219,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 +1312,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 91b31c078..def50a98f 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/mod/contacts.php b/mod/contacts.php index ba8ad45c3..be8135f5c 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 d770e75c3..943742e3a 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 e2d3f4d36..493a84064 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -1065,12 +1065,18 @@ function settings_content(&$a) { if(! strlen($a->user['timezone'])) $timezone = date_default_timezone_get(); - + $page_type = PAGE_TYPE_PERSON; $pageset_tpl = get_markup_template('pagetypes.tpl'); + $pagetype = replace_macros($pageset_tpl, array( '$user' => t("User Types"), - '$community' => t("Community Types"), + '$company' => t("Company Types"), + '$community' => t("Community Types"), + '$page_type' => $page_type, + '$page_person' => PAGE_TYPE_PERSON, + '$page_company' => PAGE_TYPE_COMPANY, + '$page_forum' => PAGE_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)), diff --git a/update.php b/update.php index f1981f730..bd37e382e 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@