Merge remote-tracking branch 'upstream/develop' into comment-public
This commit is contained in:
commit
d707c5afcd
10 changed files with 844 additions and 1902 deletions
91
boot.php
91
boot.php
|
@ -37,7 +37,6 @@ require_once 'include/datetime.php';
|
||||||
require_once 'include/pgettext.php';
|
require_once 'include/pgettext.php';
|
||||||
require_once 'include/nav.php';
|
require_once 'include/nav.php';
|
||||||
require_once 'include/identity.php';
|
require_once 'include/identity.php';
|
||||||
require_once 'update.php';
|
|
||||||
|
|
||||||
define('FRIENDICA_PLATFORM', 'Friendica');
|
define('FRIENDICA_PLATFORM', 'Friendica');
|
||||||
define('FRIENDICA_CODENAME', 'Asparagus');
|
define('FRIENDICA_CODENAME', 'Asparagus');
|
||||||
|
@ -619,10 +618,17 @@ function is_ajax()
|
||||||
function check_db($via_worker)
|
function check_db($via_worker)
|
||||||
{
|
{
|
||||||
$build = Config::get('system', 'build');
|
$build = Config::get('system', 'build');
|
||||||
if (!x($build)) {
|
|
||||||
|
if (empty($build)) {
|
||||||
Config::set('system', 'build', DB_UPDATE_VERSION);
|
Config::set('system', 'build', DB_UPDATE_VERSION);
|
||||||
$build = DB_UPDATE_VERSION;
|
$build = DB_UPDATE_VERSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We don't support upgrading from very old versions anymore
|
||||||
|
if ($build < NEW_UPDATE_ROUTINE_VERSION) {
|
||||||
|
die('You try to update from a version prior to database version 1170. The direct upgrade path is not supported. Please update to version 3.5.4 before updating to this version.');
|
||||||
|
}
|
||||||
|
|
||||||
if ($build != DB_UPDATE_VERSION) {
|
if ($build != DB_UPDATE_VERSION) {
|
||||||
// When we cannot execute the database update via the worker, we will do it directly
|
// When we cannot execute the database update via the worker, we will do it directly
|
||||||
if (!Worker::add(PRIORITY_CRITICAL, 'DBUpdate') && $via_worker) {
|
if (!Worker::add(PRIORITY_CRITICAL, 'DBUpdate') && $via_worker) {
|
||||||
|
@ -647,7 +653,7 @@ function check_url(App $a)
|
||||||
// and www.example.com vs example.com.
|
// and www.example.com vs example.com.
|
||||||
// We will only change the url to an ip address if there is no existing setting
|
// We will only change the url to an ip address if there is no existing setting
|
||||||
|
|
||||||
if (!x($url)) {
|
if (empty($url)) {
|
||||||
$url = Config::set('system', 'url', System::baseUrl());
|
$url = Config::set('system', 'url', System::baseUrl());
|
||||||
}
|
}
|
||||||
if ((!link_compare($url, System::baseUrl())) && (!preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/", $a->get_hostname))) {
|
if ((!link_compare($url, System::baseUrl())) && (!preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/", $a->get_hostname))) {
|
||||||
|
@ -664,63 +670,46 @@ function check_url(App $a)
|
||||||
function update_db(App $a)
|
function update_db(App $a)
|
||||||
{
|
{
|
||||||
$build = Config::get('system', 'build');
|
$build = Config::get('system', 'build');
|
||||||
if (!x($build)) {
|
|
||||||
$build = Config::set('system', 'build', DB_UPDATE_VERSION);
|
if (empty($build)) {
|
||||||
|
Config::set('system', 'build', DB_UPDATE_VERSION);
|
||||||
|
$build = DB_UPDATE_VERSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($build != DB_UPDATE_VERSION) {
|
if ($build != DB_UPDATE_VERSION) {
|
||||||
|
require_once 'update.php';
|
||||||
|
|
||||||
$stored = intval($build);
|
$stored = intval($build);
|
||||||
$current = intval(DB_UPDATE_VERSION);
|
$current = intval(DB_UPDATE_VERSION);
|
||||||
if ($stored < $current) {
|
if ($stored < $current) {
|
||||||
Config::load('database');
|
Config::load('database');
|
||||||
|
|
||||||
// We're reporting a different version than what is currently installed.
|
// Compare the current structure with the defined structure
|
||||||
// Run any existing update scripts to bring the database up to current.
|
$t = Config::get('database', 'dbupdate_' . DB_UPDATE_VERSION);
|
||||||
// make sure that boot.php and update.php are the same release, we might be
|
if (!is_null($t)) {
|
||||||
// updating right this very second and the correct version of the update.php
|
return;
|
||||||
// file may not be here yet. This can happen on a very busy site.
|
}
|
||||||
|
|
||||||
if (DB_UPDATE_VERSION == UPDATE_VERSION) {
|
Config::set('database', 'dbupdate_' . DB_UPDATE_VERSION, time());
|
||||||
// Compare the current structure with the defined structure
|
|
||||||
|
|
||||||
$t = Config::get('database', 'dbupdate_' . DB_UPDATE_VERSION);
|
// run update routine
|
||||||
if (!is_null($t)) {
|
// it update the structure in one call
|
||||||
return;
|
$retval = DBStructure::update(false, true);
|
||||||
}
|
if ($retval) {
|
||||||
|
DBStructure::updateFail(
|
||||||
|
DB_UPDATE_VERSION,
|
||||||
|
$retval
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
Config::set('database', 'dbupdate_' . DB_UPDATE_VERSION, 'success');
|
||||||
|
}
|
||||||
|
|
||||||
Config::set('database', 'dbupdate_' . DB_UPDATE_VERSION, time());
|
// run any left update_nnnn functions in update.php
|
||||||
|
for ($x = $stored + 1; $x <= $current; $x++) {
|
||||||
// run old update routine (wich could modify the schema and
|
$r = run_update_function($x);
|
||||||
// conflits with new routine)
|
if (!$r) {
|
||||||
for ($x = $stored; $x < NEW_UPDATE_ROUTINE_VERSION; $x++) {
|
break;
|
||||||
$r = run_update_function($x);
|
|
||||||
if (!$r) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($stored < NEW_UPDATE_ROUTINE_VERSION) {
|
|
||||||
$stored = NEW_UPDATE_ROUTINE_VERSION;
|
|
||||||
}
|
|
||||||
|
|
||||||
// run new update routine
|
|
||||||
// it update the structure in one call
|
|
||||||
$retval = DBStructure::update(false, true);
|
|
||||||
if ($retval) {
|
|
||||||
DBStructure::updateFail(
|
|
||||||
DB_UPDATE_VERSION,
|
|
||||||
$retval
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
Config::set('database', 'dbupdate_' . DB_UPDATE_VERSION, 'success');
|
|
||||||
}
|
|
||||||
|
|
||||||
// run any left update_nnnn functions in update.php
|
|
||||||
for ($x = $stored; $x < $current; $x ++) {
|
|
||||||
$r = run_update_function($x);
|
|
||||||
if (!$r) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -996,7 +985,7 @@ function remote_user()
|
||||||
if (local_user()) {
|
if (local_user()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if ((x($_SESSION, 'authenticated')) && (x($_SESSION, 'visitor_id'))) {
|
if (x($_SESSION, 'authenticated') && x($_SESSION, 'visitor_id')) {
|
||||||
return intval($_SESSION['visitor_id']);
|
return intval($_SESSION['visitor_id']);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -1051,7 +1040,7 @@ function info($s)
|
||||||
function get_max_import_size()
|
function get_max_import_size()
|
||||||
{
|
{
|
||||||
$a = get_app();
|
$a = get_app();
|
||||||
return ((x($a->config, 'max_import_size')) ? $a->config['max_import_size'] : 0 );
|
return (x($a->config, 'max_import_size') ? $a->config['max_import_size'] : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Where to get started to help improve Friendica?
|
# Where to get started to help improve Friendica
|
||||||
===============================================
|
|
||||||
|
<!-- markdownlint-disable MD010 MD013 -->
|
||||||
|
|
||||||
* [Home](help)
|
* [Home](help)
|
||||||
|
|
||||||
|
@ -10,29 +11,25 @@ A project like Friendica is the sum of many different contributions.
|
||||||
We are looking for helpers in all areas, whether you write text or code, whether you spread the word to convince people or design new icons.
|
We are looking for helpers in all areas, whether you write text or code, whether you spread the word to convince people or design new icons.
|
||||||
Whether you feel like an expert or like a newbie - join us with your ideas!
|
Whether you feel like an expert or like a newbie - join us with your ideas!
|
||||||
|
|
||||||
Contact us
|
## Contact us
|
||||||
---
|
|
||||||
|
|
||||||
The discussion of Friendica development takes place in the following Friendica forums:
|
The discussion of Friendica development takes place in the following Friendica forums:
|
||||||
|
|
||||||
* The main [forum for Friendica development](https://forum.friendi.ca/profile/developers)
|
* The main [forum for Friendica development](https://forum.friendi.ca/profile/developers)
|
||||||
* The [forum for Friendica theme development](https://friendica.eu/profile/ftdevs)
|
* The [forum for Friendica theme development](https://friendica.eu/profile/ftdevs)
|
||||||
|
|
||||||
Help other users
|
## Help other users
|
||||||
---
|
|
||||||
|
|
||||||
Remember the questions you had when you first tried Friendica?
|
Remember the questions you had when you first tried Friendica?
|
||||||
A good place to start can be to help new people find their way around Friendica in the [general support forum](https://forum.friendi.ca/prufile/helpers).
|
A good place to start can be to help new people find their way around Friendica in the [general support forum](https://forum.friendi.ca/prufile/helpers).
|
||||||
Welcome them, answer their questions, point them to documentation or ping other helpers directly if you can't help but think you know who can.
|
Welcome them, answer their questions, point them to documentation or ping other helpers directly if you can't help but think you know who can.
|
||||||
|
|
||||||
Translation
|
## Translation
|
||||||
---
|
|
||||||
|
|
||||||
The documentation contains help on how to translate Friendica [at Transifex](/help/translations) where the UI is translated.
|
The documentation contains help on how to translate Friendica [at Transifex](/help/translations) where the UI is translated.
|
||||||
If you don't want to translate the UI, or it is already done to your satisfaction, you might want to work on the translation of the /help files?
|
If you don't want to translate the UI, or it is already done to your satisfaction, you might want to work on the translation of the /help files?
|
||||||
|
|
||||||
Design
|
## Design
|
||||||
---
|
|
||||||
|
|
||||||
Are you good at designing things?
|
Are you good at designing things?
|
||||||
If you have seen Friendica you probably have ideas to improve it, haven't you?
|
If you have seen Friendica you probably have ideas to improve it, haven't you?
|
||||||
|
@ -40,11 +37,10 @@ If you have seen Friendica you probably have ideas to improve it, haven't you?
|
||||||
* If you would like to work with us on enhancing the user interface, please join the [UX Watchdogs forum](https://fc.oscp.info/profile/ux-watchdogs)
|
* If you would like to work with us on enhancing the user interface, please join the [UX Watchdogs forum](https://fc.oscp.info/profile/ux-watchdogs)
|
||||||
* Make plans for a better Friendica interface design and share them with us.
|
* Make plans for a better Friendica interface design and share them with us.
|
||||||
* Tell us if you are able to realize your ideas or what kind of help you need.
|
* Tell us if you are able to realize your ideas or what kind of help you need.
|
||||||
We can't promise we have the right skills in the group but we'll try.
|
We can't promise we have the right skills in the group but we'll try.
|
||||||
* Choose a thing to start with, e.g. work on the icon set of your favorite theme
|
* Choose a thing to start with, e.g. work on the icon set of your favorite theme
|
||||||
|
|
||||||
Programming
|
## Programming
|
||||||
---
|
|
||||||
|
|
||||||
### Composer
|
### Composer
|
||||||
|
|
||||||
|
@ -60,13 +56,14 @@ It's a command-line tool that downloads required libraries into the `vendor` fol
|
||||||
|
|
||||||
For the sake of consistency between contribution and general code readability, Friendica follows the widespread [PSR-2 coding standards](http://www.php-fig.org/psr/psr-2/) to the exception of a few rules.
|
For the sake of consistency between contribution and general code readability, Friendica follows the widespread [PSR-2 coding standards](http://www.php-fig.org/psr/psr-2/) to the exception of a few rules.
|
||||||
Here's a few primers if you are new to Friendica or to the PSR-2 coding standards:
|
Here's a few primers if you are new to Friendica or to the PSR-2 coding standards:
|
||||||
* Indentation is tabs, period (not PSR-2).
|
|
||||||
* By default, strings are enclosed in single quotes, but feel free to use double quotes if it makes more sense (SQL queries, adding tabs and line feeds).
|
* Indentation is tabs, period (not PSR-2).
|
||||||
* Operators are wrapped by spaces, e.g. `$var === true`, `$var = 1 + 2` and `'string' . $concat . 'enation'`
|
* By default, strings are enclosed in single quotes, but feel free to use double quotes if it makes more sense (SQL queries, adding tabs and line feeds).
|
||||||
* Braces are mandatory in conditions
|
* Operators are wrapped by spaces, e.g. `$var === true`, `$var = 1 + 2` and `'string' . $concat . 'enation'`
|
||||||
* Boolean operators are `&&` and `||` for PHP conditions, `AND` and `OR` for SQL queries
|
* Braces are mandatory in conditions
|
||||||
* No closing PHP tag
|
* Boolean operators are `&&` and `||` for PHP conditions, `AND` and `OR` for SQL queries
|
||||||
* No trailing spaces
|
* No closing PHP tag
|
||||||
|
* No trailing spaces
|
||||||
|
|
||||||
Don't worry, you don't have to know by heart the PSR-2 coding standards to start contributing to Friendica.
|
Don't worry, you don't have to know by heart the PSR-2 coding standards to start contributing to Friendica.
|
||||||
There are a few tools you can use to check or fix your files before you commit.
|
There are a few tools you can use to check or fix your files before you commit.
|
||||||
|
@ -100,7 +97,7 @@ If you are interested in having the documentation of the Friendica code outside
|
||||||
The configuration file for Doxygen is located in the `util` directory of the project sources.
|
The configuration file for Doxygen is located in the `util` directory of the project sources.
|
||||||
Run
|
Run
|
||||||
|
|
||||||
$> doxygen util/Doxyfile
|
$> doxygen util/Doxyfile
|
||||||
|
|
||||||
to generate the files which will be located in the `doc/html` subdirectory in the Friendica directory.
|
to generate the files which will be located in the `doc/html` subdirectory in the Friendica directory.
|
||||||
You can browse these files with any browser.
|
You can browse these files with any browser.
|
||||||
|
@ -111,11 +108,11 @@ If you find missing documentation, don't hesitate to contact us and write it dow
|
||||||
|
|
||||||
Have a look at our [issue tracker](https://github.com/friendica/friendica) on github!
|
Have a look at our [issue tracker](https://github.com/friendica/friendica) on github!
|
||||||
|
|
||||||
* Try to reproduce a bug that needs more inquiries and write down what you find out.
|
* Try to reproduce a bug that needs more inquiries and write down what you find out.
|
||||||
* If a bug looks fixed, ask the bug reporters for feedback to find out if the bug can be closed.
|
* If a bug looks fixed, ask the bug reporters for feedback to find out if the bug can be closed.
|
||||||
* Fix a bug if you can. Please make the pull request against the *develop* branch of the repository.
|
* Fix a bug if you can. Please make the pull request against the *develop* branch of the repository.
|
||||||
* There is a *Junior Job* label for issues we think might be a good point to start with.
|
* There is a *Junior Job* label for issues we think might be a good point to start with.
|
||||||
But you don't have to limit yourself to those issues.
|
But you don't have to limit yourself to those issues.
|
||||||
|
|
||||||
### Web interface
|
### Web interface
|
||||||
|
|
||||||
|
@ -124,10 +121,10 @@ This is a piece of work!
|
||||||
If you want to get involved here:
|
If you want to get involved here:
|
||||||
|
|
||||||
* Look at the first steps that were made (e.g. the clean theme).
|
* Look at the first steps that were made (e.g. the clean theme).
|
||||||
Ask us to find out whom to talk to about their experiences.
|
Ask us to find out whom to talk to about their experiences.
|
||||||
* Talk to design people if you know any.
|
* Talk to design people if you know any.
|
||||||
* Let us know about your plans [in the dev forum](https://forum.friendi.ca/profile/developers) or the [theme developer forum](https://friendica.eu/profile/ftdevs).
|
* Let us know about your plans [in the dev forum](https://forum.friendi.ca/profile/developers) or the [theme developer forum](https://friendica.eu/profile/ftdevs).
|
||||||
Do not worry about cross-posting.
|
Do not worry about cross-posting.
|
||||||
|
|
||||||
### Client software
|
### Client software
|
||||||
|
|
||||||
|
|
26
doc/api.md
26
doc/api.md
|
@ -615,6 +615,12 @@ This is an alias for `search`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### saved_searches/list (*; AUTH)
|
||||||
|
|
||||||
|
This call does not have any parameter.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
### users/search (*)
|
### users/search (*)
|
||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
@ -686,6 +692,23 @@ On error:
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### account/update_profile (POST; AUTH)
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
|
||||||
|
* name (optional): full name of the user
|
||||||
|
* description (optional): a description of the user
|
||||||
|
|
||||||
|
#### Unsupported parameters
|
||||||
|
|
||||||
|
* url
|
||||||
|
* location
|
||||||
|
* profile_link_color
|
||||||
|
* include_entities
|
||||||
|
* skip_status
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
### friendships/incoming (*; AUTH)
|
### friendships/incoming (*; AUTH)
|
||||||
|
|
||||||
#### Unsupported parameters
|
#### Unsupported parameters
|
||||||
|
@ -1199,8 +1222,6 @@ The following API calls from the Twitter API are not implemented in either Frien
|
||||||
* friendships/lookup
|
* friendships/lookup
|
||||||
* account/settings
|
* account/settings
|
||||||
* account/update_delivery_device
|
* account/update_delivery_device
|
||||||
* account/update_profile
|
|
||||||
* account/update_profile_background_image
|
|
||||||
* blocks/ids
|
* blocks/ids
|
||||||
* users/show
|
* users/show
|
||||||
* users/search
|
* users/search
|
||||||
|
@ -1234,7 +1255,6 @@ The following API calls from the Twitter API are not implemented in either Frien
|
||||||
* lists/subscriptions
|
* lists/subscriptions
|
||||||
* lists/members/destroy_all
|
* lists/members/destroy_all
|
||||||
* lists/ownerships
|
* lists/ownerships
|
||||||
* saved_searches/list
|
|
||||||
* saved_searches/show/:id
|
* saved_searches/show/:id
|
||||||
* saved_searches/create
|
* saved_searches/create
|
||||||
* saved_searches/destroy/:id
|
* saved_searches/destroy/:id
|
||||||
|
|
858
include/api.php
858
include/api.php
File diff suppressed because it is too large
Load diff
|
@ -13,6 +13,7 @@ use Friendica\Core\System;
|
||||||
use Friendica\Core\Worker;
|
use Friendica\Core\Worker;
|
||||||
use Friendica\Database\DBM;
|
use Friendica\Database\DBM;
|
||||||
use Friendica\Model\Contact;
|
use Friendica\Model\Contact;
|
||||||
|
use Friendica\Protocol\Diaspora;
|
||||||
|
|
||||||
require_once 'include/bbcode.php';
|
require_once 'include/bbcode.php';
|
||||||
require_once 'mod/proxy.php';
|
require_once 'mod/proxy.php';
|
||||||
|
@ -374,9 +375,9 @@ function profile_sidebar($profile, $block = 0)
|
||||||
$location = $pdesc = $gender = $marital = $homepage = $about = false;
|
$location = $pdesc = $gender = $marital = $homepage = $about = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$firstname = ((strpos($profile['name'], ' '))
|
$split_name = Diaspora::splitName($profile['name']);
|
||||||
? trim(substr($profile['name'], 0, strpos($profile['name'], ' '))) : $profile['name']);
|
$firstname = $split_name['first'];
|
||||||
$lastname = (($firstname === $profile['name']) ? '' : trim(substr($profile['name'], strlen($firstname))));
|
$lastname = $split_name['last'];
|
||||||
|
|
||||||
if ($profile['guid'] != "") {
|
if ($profile['guid'] != "") {
|
||||||
$diaspora = array(
|
$diaspora = array(
|
||||||
|
|
|
@ -534,7 +534,7 @@ function admin_page_federation(App $a)
|
||||||
// off one % two of them are needed in the query
|
// off one % two of them are needed in the query
|
||||||
// Add more platforms if you like, when one returns 0 known nodes it is not
|
// Add more platforms if you like, when one returns 0 known nodes it is not
|
||||||
// displayed on the stats page.
|
// displayed on the stats page.
|
||||||
$platforms = array('Friendi%%a', 'Diaspora', '%%red%%', 'Hubzilla', 'BlaBlaNet', 'GNU Social', 'StatusNet', 'Mastodon', 'Pleroma');
|
$platforms = array('Friendi%%a', 'Diaspora', '%%red%%', 'Hubzilla', 'BlaBlaNet', 'GNU Social', 'StatusNet', 'Mastodon', 'Pleroma', 'socialhome');
|
||||||
$colors = array(
|
$colors = array(
|
||||||
'Friendi%%a' => '#ffc018', // orange from the logo
|
'Friendi%%a' => '#ffc018', // orange from the logo
|
||||||
'Diaspora' => '#a1a1a1', // logo is black and white, makes a gray
|
'Diaspora' => '#a1a1a1', // logo is black and white, makes a gray
|
||||||
|
@ -544,7 +544,8 @@ function admin_page_federation(App $a)
|
||||||
'GNU Social' => '#a22430', // dark red from the logo
|
'GNU Social' => '#a22430', // dark red from the logo
|
||||||
'StatusNet' => '#789240', // the green from the logo (red and blue have already others
|
'StatusNet' => '#789240', // the green from the logo (red and blue have already others
|
||||||
'Mastodon' => '#1a9df9', // blue from the Mastodon logo
|
'Mastodon' => '#1a9df9', // blue from the Mastodon logo
|
||||||
'Pleroma' => '#E46F0F' // Orange from the text that is used on Pleroma instances
|
'Pleroma' => '#E46F0F', // Orange from the text that is used on Pleroma instances
|
||||||
|
'socialhome' => '#52056b' // lilac from the Django Image used at the Socialhome homepage
|
||||||
);
|
);
|
||||||
$counts = array();
|
$counts = array();
|
||||||
$total = 0;
|
$total = 0;
|
||||||
|
|
|
@ -3963,6 +3963,62 @@ class Diaspora
|
||||||
return self::buildAndTransmit($owner, $contact, $type, $message, false, $item["guid"]);
|
return self::buildAndTransmit($owner, $contact, $type, $message, false, $item["guid"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Split a name into first name and last name
|
||||||
|
*
|
||||||
|
* @param string $name The name
|
||||||
|
*
|
||||||
|
* @return array The array with "first" and "last"
|
||||||
|
*/
|
||||||
|
public static function splitName($name) {
|
||||||
|
$name = trim($name);
|
||||||
|
|
||||||
|
// Is the name longer than 64 characters? Then cut the rest of it.
|
||||||
|
if (strlen($name) > 64) {
|
||||||
|
if ((strpos($name, ' ') <= 64) && (strpos($name, ' ') !== false)) {
|
||||||
|
$name = trim(substr($name, 0, strrpos(substr($name, 0, 65), ' ')));
|
||||||
|
} else {
|
||||||
|
$name = substr($name, 0, 64);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Take the first word as first name
|
||||||
|
$first = ((strpos($name, ' ') ? trim(substr($name, 0, strpos($name, ' '))) : $name));
|
||||||
|
$last = (($first === $name) ? '' : trim(substr($name, strlen($first))));
|
||||||
|
if ((strlen($first) < 32) && (strlen($last) < 32)) {
|
||||||
|
return ['first' => $first, 'last' => $last];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Take the last word as last name
|
||||||
|
$first = ((strrpos($name, ' ') ? trim(substr($name, 0, strrpos($name, ' '))) : $name));
|
||||||
|
$last = (($first === $name) ? '' : trim(substr($name, strlen($first))));
|
||||||
|
|
||||||
|
if ((strlen($first) < 32) && (strlen($last) < 32)) {
|
||||||
|
return ['first' => $first, 'last' => $last];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Take the first 32 characters if there is no space in the first 32 characters
|
||||||
|
if ((strpos($name, ' ') > 32) || (strpos($name, ' ') === false)) {
|
||||||
|
$first = substr($name, 0, 32);
|
||||||
|
$last = substr($name, 32);
|
||||||
|
return ['first' => $first, 'last' => $last];
|
||||||
|
}
|
||||||
|
|
||||||
|
$first = trim(substr($name, 0, strrpos(substr($name, 0, 33), ' ')));
|
||||||
|
$last = (($first === $name) ? '' : trim(substr($name, strlen($first))));
|
||||||
|
|
||||||
|
// Check if the last name is longer than 32 characters
|
||||||
|
if (strlen($last) > 32) {
|
||||||
|
if (strpos($last, ' ') <= 32) {
|
||||||
|
$last = trim(substr($last, 0, strrpos(substr($last, 0, 33), ' ')));
|
||||||
|
} else {
|
||||||
|
$last = substr($last, 0, 32);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ['first' => $first, 'last' => $last];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Create profile data
|
* @brief Create profile data
|
||||||
*
|
*
|
||||||
|
@ -3986,11 +4042,12 @@ class Diaspora
|
||||||
}
|
}
|
||||||
|
|
||||||
$profile = $r[0];
|
$profile = $r[0];
|
||||||
|
|
||||||
$handle = $profile["addr"];
|
$handle = $profile["addr"];
|
||||||
$first = ((strpos($profile['name'], ' ')
|
|
||||||
? trim(substr($profile['name'], 0, strpos($profile['name'], ' '))) : $profile['name']));
|
$split_name = self::splitName($profile['name']);
|
||||||
$last = (($first === $profile['name']) ? '' : trim(substr($profile['name'], strlen($first))));
|
$first = $split_name['first'];
|
||||||
|
$last = $split_name['last'];
|
||||||
|
|
||||||
$large = System::baseUrl().'/photo/custom/300/'.$profile['uid'].'.jpg';
|
$large = System::baseUrl().'/photo/custom/300/'.$profile['uid'].'.jpg';
|
||||||
$medium = System::baseUrl().'/photo/custom/100/'.$profile['uid'].'.jpg';
|
$medium = System::baseUrl().'/photo/custom/100/'.$profile['uid'].'.jpg';
|
||||||
$small = System::baseUrl().'/photo/custom/50/' .$profile['uid'].'.jpg';
|
$small = System::baseUrl().'/photo/custom/50/' .$profile['uid'].'.jpg';
|
||||||
|
|
|
@ -575,7 +575,7 @@ class PortableContact
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function toBoolean($val)
|
private static function toBoolean($val)
|
||||||
{
|
{
|
||||||
if (($val == "true") || ($val == 1)) {
|
if (($val == "true") || ($val == 1)) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -592,7 +592,7 @@ class PortableContact
|
||||||
* @param object $data POCO data
|
* @param object $data POCO data
|
||||||
* @return array Server data
|
* @return array Server data
|
||||||
*/
|
*/
|
||||||
public static function detectPocoData($data)
|
private static function detectPocoData($data)
|
||||||
{
|
{
|
||||||
$server = false;
|
$server = false;
|
||||||
|
|
||||||
|
@ -629,7 +629,7 @@ class PortableContact
|
||||||
* @param string $server_url address of the server
|
* @param string $server_url address of the server
|
||||||
* @return array Server data
|
* @return array Server data
|
||||||
*/
|
*/
|
||||||
public static function fetchNodeinfo($server_url)
|
private static function fetchNodeinfo($server_url)
|
||||||
{
|
{
|
||||||
$serverret = z_fetch_url($server_url."/.well-known/nodeinfo");
|
$serverret = z_fetch_url($server_url."/.well-known/nodeinfo");
|
||||||
if (!$serverret["success"]) {
|
if (!$serverret["success"]) {
|
||||||
|
@ -746,7 +746,7 @@ class PortableContact
|
||||||
* @param string $body Front page of the server
|
* @param string $body Front page of the server
|
||||||
* @return array Server data
|
* @return array Server data
|
||||||
*/
|
*/
|
||||||
public static function detectServerType($body)
|
private static function detectServerType($body)
|
||||||
{
|
{
|
||||||
$server = false;
|
$server = false;
|
||||||
|
|
||||||
|
@ -1292,7 +1292,7 @@ class PortableContact
|
||||||
*
|
*
|
||||||
* @param string $poco URL to the POCO endpoint
|
* @param string $poco URL to the POCO endpoint
|
||||||
*/
|
*/
|
||||||
public static function fetchServerlist($poco)
|
private static function fetchServerlist($poco)
|
||||||
{
|
{
|
||||||
$serverret = z_fetch_url($poco."/@server");
|
$serverret = z_fetch_url($poco."/@server");
|
||||||
if (!$serverret["success"]) {
|
if (!$serverret["success"]) {
|
||||||
|
@ -1315,7 +1315,7 @@ class PortableContact
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function discoverFederation()
|
private static function discoverFederation()
|
||||||
{
|
{
|
||||||
$last = Config::get('poco', 'last_federation_discovery');
|
$last = Config::get('poco', 'last_federation_discovery');
|
||||||
|
|
||||||
|
@ -1470,7 +1470,7 @@ class PortableContact
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function discoverServerUsers($data, $server)
|
private static function discoverServerUsers($data, $server)
|
||||||
{
|
{
|
||||||
if (!isset($data->entry)) {
|
if (!isset($data->entry)) {
|
||||||
return;
|
return;
|
||||||
|
@ -1501,7 +1501,7 @@ class PortableContact
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function discoverServer($data, $default_generation = 0)
|
private static function discoverServer($data, $default_generation = 0)
|
||||||
{
|
{
|
||||||
if (!isset($data->entry) || !count($data->entry)) {
|
if (!isset($data->entry) || !count($data->entry)) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -310,6 +310,7 @@ class ExAuth
|
||||||
|
|
||||||
$lockpath = Config::get('jabber', 'lockpath');
|
$lockpath = Config::get('jabber', 'lockpath');
|
||||||
if (is_null($lockpath)) {
|
if (is_null($lockpath)) {
|
||||||
|
$this->writeLog(LOG_INFO, 'No lockpath defined.');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -325,6 +326,9 @@ class ExAuth
|
||||||
|
|
||||||
// Now it is safe to create the pid file
|
// Now it is safe to create the pid file
|
||||||
PidFile::create($file);
|
PidFile::create($file);
|
||||||
|
if (!file_exists($file)) {
|
||||||
|
$this->writeLog(LOG_WARNING, 'Logfile ' . $file . " couldn't be created.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
1621
update.php
1621
update.php
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue