Browse Source

Merge pull request #34940 from nextcloud/feat/add-mastodon

Add mastodon and reorganize profile info section
tags/v26.0.0beta1
Carl Schwan 1 year ago
parent
commit
8dcd992ad4
No account linked to committer's email address
81 changed files with 809 additions and 269 deletions
  1. 15
    2
      apps/admin_audit/composer/autoload.php
  2. 2
    2
      apps/admin_audit/composer/composer/installed.php
  3. 15
    2
      apps/cloud_federation_api/composer/autoload.php
  4. 2
    2
      apps/cloud_federation_api/composer/composer/installed.php
  5. 15
    2
      apps/comments/composer/autoload.php
  6. 2
    2
      apps/comments/composer/composer/installed.php
  7. 15
    2
      apps/contactsinteraction/composer/autoload.php
  8. 2
    2
      apps/contactsinteraction/composer/composer/installed.php
  9. 15
    2
      apps/dav/composer/autoload.php
  10. 2
    2
      apps/dav/composer/composer/installed.php
  11. 15
    2
      apps/encryption/composer/autoload.php
  12. 2
    2
      apps/encryption/composer/composer/installed.php
  13. 15
    2
      apps/federatedfilesharing/composer/autoload.php
  14. 2
    2
      apps/federatedfilesharing/composer/composer/installed.php
  15. 15
    2
      apps/federation/composer/autoload.php
  16. 2
    2
      apps/federation/composer/composer/installed.php
  17. 15
    2
      apps/files/composer/autoload.php
  18. 2
    2
      apps/files/composer/composer/installed.php
  19. 15
    2
      apps/files_sharing/composer/autoload.php
  20. 2
    2
      apps/files_sharing/composer/composer/installed.php
  21. 15
    2
      apps/files_trashbin/composer/autoload.php
  22. 2
    2
      apps/files_trashbin/composer/composer/installed.php
  23. 15
    2
      apps/files_versions/composer/autoload.php
  24. 2
    2
      apps/files_versions/composer/composer/installed.php
  25. 15
    2
      apps/lookup_server_connector/composer/autoload.php
  26. 2
    2
      apps/lookup_server_connector/composer/composer/installed.php
  27. 15
    2
      apps/oauth2/composer/autoload.php
  28. 2
    2
      apps/oauth2/composer/composer/installed.php
  29. 15
    2
      apps/provisioning_api/composer/autoload.php
  30. 2
    2
      apps/provisioning_api/composer/composer/installed.php
  31. 1
    0
      apps/provisioning_api/lib/Controller/AUserData.php
  32. 6
    0
      apps/provisioning_api/lib/Controller/UsersController.php
  33. 14
    0
      apps/provisioning_api/tests/Controller/UsersControllerTest.php
  34. 2
    2
      apps/settings/composer/composer/installed.php
  35. 17
    45
      apps/settings/css/settings.css
  36. 1
    1
      apps/settings/css/settings.css.map
  37. 20
    57
      apps/settings/css/settings.scss
  38. 8
    1
      apps/settings/lib/Controller/UsersController.php
  39. 1
    0
      apps/settings/lib/Settings/Personal/PersonalInfo.php
  40. 3
    0
      apps/settings/src/components/PersonalInfo/AvatarSection.vue
  41. 50
    0
      apps/settings/src/components/PersonalInfo/FediverseSection.vue
  42. 5
    0
      apps/settings/src/constants/AccountPropertyConstants.js
  43. 3
    0
      apps/settings/src/main-personal-info.js
  44. 45
    49
      apps/settings/templates/settings/personal/personal.info.php
  45. 29
    4
      apps/settings/tests/Controller/UsersControllerTest.php
  46. 1
    1
      apps/settings/tests/UserMigration/assets/account-complex-config.json
  47. 1
    1
      apps/settings/tests/UserMigration/assets/account-complex.json
  48. 1
    1
      apps/settings/tests/UserMigration/assets/account-config.json
  49. 1
    1
      apps/settings/tests/UserMigration/assets/account.json
  50. 15
    2
      apps/sharebymail/composer/autoload.php
  51. 2
    2
      apps/sharebymail/composer/composer/installed.php
  52. 15
    2
      apps/systemtags/composer/autoload.php
  53. 2
    2
      apps/systemtags/composer/composer/installed.php
  54. 15
    2
      apps/testing/composer/autoload.php
  55. 2
    2
      apps/testing/composer/composer/installed.php
  56. 15
    2
      apps/twofactor_backupcodes/composer/autoload.php
  57. 2
    2
      apps/twofactor_backupcodes/composer/composer/installed.php
  58. 15
    2
      apps/updatenotification/composer/autoload.php
  59. 2
    2
      apps/updatenotification/composer/composer/installed.php
  60. 15
    2
      apps/user_ldap/composer/autoload.php
  61. 2
    2
      apps/user_ldap/composer/composer/installed.php
  62. 15
    2
      apps/user_status/composer/autoload.php
  63. 2
    2
      apps/user_status/composer/composer/installed.php
  64. 15
    2
      apps/workflowengine/composer/autoload.php
  65. 2
    2
      apps/workflowengine/composer/composer/installed.php
  66. 3
    0
      build/integration/features/provisioning-v1.feature
  67. 0
    5
      build/psalm-baseline.xml
  68. 1
    1
      core/Controller/ClientFlowLoginV2Controller.php
  69. 40
    0
      core/img/actions/mastodon.svg
  70. 2
    2
      dist/settings-vue-settings-admin-basic-settings.js
  71. 1
    1
      dist/settings-vue-settings-admin-basic-settings.js.map
  72. 2
    2
      dist/settings-vue-settings-personal-info.js
  73. 1
    1
      dist/settings-vue-settings-personal-info.js.map
  74. 15
    2
      lib/composer/autoload.php
  75. 1
    0
      lib/composer/composer/autoload_classmap.php
  76. 1
    0
      lib/composer/composer/autoload_static.php
  77. 9
    0
      lib/private/Accounts/AccountManager.php
  78. 90
    0
      lib/private/Profile/Actions/FediverseAction.php
  79. 2
    0
      lib/private/Profile/ProfileManager.php
  80. 2
    0
      lib/public/Accounts/IAccountManager.php
  81. 39
    0
      tests/lib/Accounts/AccountManagerTest.php

+ 15
- 2
apps/admin_audit/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/admin_audit/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/cloud_federation_api/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/cloud_federation_api/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/comments/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/comments/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/contactsinteraction/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/contactsinteraction/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/dav/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/dav/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/encryption/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/encryption/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/federatedfilesharing/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/federatedfilesharing/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/federation/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/federation/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/files/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/files/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/files_sharing/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/files_sharing/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/files_trashbin/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/files_trashbin/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/files_versions/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/files_versions/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/lookup_server_connector/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/lookup_server_connector/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/oauth2/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/oauth2/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/provisioning_api/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/provisioning_api/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 1
- 0
apps/provisioning_api/lib/Controller/AUserData.php View File

@@ -181,6 +181,7 @@ abstract class AUserData extends OCSController {
IAccountManager::PROPERTY_ADDRESS,
IAccountManager::PROPERTY_WEBSITE,
IAccountManager::PROPERTY_TWITTER,
IAccountManager::PROPERTY_FEDIVERSE,
IAccountManager::PROPERTY_ORGANISATION,
IAccountManager::PROPERTY_ROLE,
IAccountManager::PROPERTY_HEADLINE,

+ 6
- 0
apps/provisioning_api/lib/Controller/UsersController.php View File

@@ -621,6 +621,7 @@ class UsersController extends AUserData {
$permittedFields[] = IAccountManager::PROPERTY_ADDRESS;
$permittedFields[] = IAccountManager::PROPERTY_WEBSITE;
$permittedFields[] = IAccountManager::PROPERTY_TWITTER;
$permittedFields[] = IAccountManager::PROPERTY_FEDIVERSE;
$permittedFields[] = IAccountManager::PROPERTY_ORGANISATION;
$permittedFields[] = IAccountManager::PROPERTY_ROLE;
$permittedFields[] = IAccountManager::PROPERTY_HEADLINE;
@@ -782,6 +783,7 @@ class UsersController extends AUserData {
$permittedFields[] = IAccountManager::PROPERTY_ADDRESS;
$permittedFields[] = IAccountManager::PROPERTY_WEBSITE;
$permittedFields[] = IAccountManager::PROPERTY_TWITTER;
$permittedFields[] = IAccountManager::PROPERTY_FEDIVERSE;
$permittedFields[] = IAccountManager::PROPERTY_ORGANISATION;
$permittedFields[] = IAccountManager::PROPERTY_ROLE;
$permittedFields[] = IAccountManager::PROPERTY_HEADLINE;
@@ -791,6 +793,7 @@ class UsersController extends AUserData {
$permittedFields[] = IAccountManager::PROPERTY_ADDRESS . self::SCOPE_SUFFIX;
$permittedFields[] = IAccountManager::PROPERTY_WEBSITE . self::SCOPE_SUFFIX;
$permittedFields[] = IAccountManager::PROPERTY_TWITTER . self::SCOPE_SUFFIX;
$permittedFields[] = IAccountManager::PROPERTY_FEDIVERSE . self::SCOPE_SUFFIX;
$permittedFields[] = IAccountManager::PROPERTY_ORGANISATION . self::SCOPE_SUFFIX;
$permittedFields[] = IAccountManager::PROPERTY_ROLE . self::SCOPE_SUFFIX;
$permittedFields[] = IAccountManager::PROPERTY_HEADLINE . self::SCOPE_SUFFIX;
@@ -827,6 +830,7 @@ class UsersController extends AUserData {
$permittedFields[] = IAccountManager::PROPERTY_ADDRESS;
$permittedFields[] = IAccountManager::PROPERTY_WEBSITE;
$permittedFields[] = IAccountManager::PROPERTY_TWITTER;
$permittedFields[] = IAccountManager::PROPERTY_FEDIVERSE;
$permittedFields[] = IAccountManager::PROPERTY_ORGANISATION;
$permittedFields[] = IAccountManager::PROPERTY_ROLE;
$permittedFields[] = IAccountManager::PROPERTY_HEADLINE;
@@ -955,6 +959,7 @@ class UsersController extends AUserData {
case IAccountManager::PROPERTY_ADDRESS:
case IAccountManager::PROPERTY_WEBSITE:
case IAccountManager::PROPERTY_TWITTER:
case IAccountManager::PROPERTY_FEDIVERSE:
case IAccountManager::PROPERTY_ORGANISATION:
case IAccountManager::PROPERTY_ROLE:
case IAccountManager::PROPERTY_HEADLINE:
@@ -999,6 +1004,7 @@ class UsersController extends AUserData {
case IAccountManager::PROPERTY_ADDRESS . self::SCOPE_SUFFIX:
case IAccountManager::PROPERTY_WEBSITE . self::SCOPE_SUFFIX:
case IAccountManager::PROPERTY_TWITTER . self::SCOPE_SUFFIX:
case IAccountManager::PROPERTY_FEDIVERSE . self::SCOPE_SUFFIX:
case IAccountManager::PROPERTY_ORGANISATION . self::SCOPE_SUFFIX:
case IAccountManager::PROPERTY_ROLE . self::SCOPE_SUFFIX:
case IAccountManager::PROPERTY_HEADLINE . self::SCOPE_SUFFIX:

+ 14
- 0
apps/provisioning_api/tests/Controller/UsersControllerTest.php View File

@@ -1008,6 +1008,7 @@ class UsersControllerTest extends TestCase {
IAccountManager::PROPERTY_ADDRESS => ['value' => 'address'],
IAccountManager::PROPERTY_PHONE => ['value' => 'phone'],
IAccountManager::PROPERTY_TWITTER => ['value' => 'twitter'],
IAccountManager::PROPERTY_FEDIVERSE => ['value' => 'fediverse'],
IAccountManager::PROPERTY_WEBSITE => ['value' => 'website'],
IAccountManager::PROPERTY_ORGANISATION => ['value' => 'organisation'],
IAccountManager::PROPERTY_ROLE => ['value' => 'role'],
@@ -1075,6 +1076,7 @@ class UsersControllerTest extends TestCase {
'address' => 'address',
'website' => 'website',
'twitter' => 'twitter',
'fediverse' => 'fediverse',
'groups' => ['group0', 'group1', 'group2'],
'language' => 'de',
'locale' => null,
@@ -1186,6 +1188,7 @@ class UsersControllerTest extends TestCase {
IAccountManager::PROPERTY_ADDRESS => ['value' => 'address'],
IAccountManager::PROPERTY_PHONE => ['value' => 'phone'],
IAccountManager::PROPERTY_TWITTER => ['value' => 'twitter'],
IAccountManager::PROPERTY_FEDIVERSE => ['value' => 'fediverse'],
IAccountManager::PROPERTY_WEBSITE => ['value' => 'website'],
IAccountManager::PROPERTY_ORGANISATION => ['value' => 'organisation'],
IAccountManager::PROPERTY_ROLE => ['value' => 'role'],
@@ -1214,6 +1217,7 @@ class UsersControllerTest extends TestCase {
'address' => 'address',
'website' => 'website',
'twitter' => 'twitter',
'fediverse' => 'fediverse',
'groups' => [],
'language' => 'da',
'locale' => null,
@@ -1364,6 +1368,7 @@ class UsersControllerTest extends TestCase {
IAccountManager::PROPERTY_ADDRESS => ['value' => 'address'],
IAccountManager::PROPERTY_PHONE => ['value' => 'phone'],
IAccountManager::PROPERTY_TWITTER => ['value' => 'twitter'],
IAccountManager::PROPERTY_FEDIVERSE => ['value' => 'fediverse'],
IAccountManager::PROPERTY_WEBSITE => ['value' => 'website'],
IAccountManager::PROPERTY_ORGANISATION => ['value' => 'organisation'],
IAccountManager::PROPERTY_ROLE => ['value' => 'role'],
@@ -1391,6 +1396,7 @@ class UsersControllerTest extends TestCase {
'address' => 'address',
'website' => 'website',
'twitter' => 'twitter',
'fediverse' => 'fediverse',
'groups' => [],
'language' => 'ru',
'locale' => null,
@@ -1582,6 +1588,7 @@ class UsersControllerTest extends TestCase {
public function selfEditChangePropertyProvider() {
return [
[IAccountManager::PROPERTY_TWITTER, '@oldtwitter', '@newtwitter'],
[IAccountManager::PROPERTY_FEDIVERSE, '@oldFediverse@floss.social', '@newFediverse@floss.social'],
[IAccountManager::PROPERTY_PHONE, '1234', '12345'],
[IAccountManager::PROPERTY_ADDRESS, 'Something street 2', 'Another street 3'],
[IAccountManager::PROPERTY_WEBSITE, 'https://examplesite1', 'https://examplesite2'],
@@ -1658,6 +1665,7 @@ class UsersControllerTest extends TestCase {
[IAccountManager::PROPERTY_DISPLAYNAME, IAccountManager::SCOPE_LOCAL, IAccountManager::SCOPE_FEDERATED],
[IAccountManager::PROPERTY_EMAIL, IAccountManager::SCOPE_LOCAL, IAccountManager::SCOPE_FEDERATED],
[IAccountManager::PROPERTY_TWITTER, IAccountManager::SCOPE_LOCAL, IAccountManager::SCOPE_FEDERATED],
[IAccountManager::PROPERTY_FEDIVERSE, IAccountManager::SCOPE_LOCAL, IAccountManager::SCOPE_FEDERATED],
[IAccountManager::PROPERTY_PHONE, IAccountManager::SCOPE_LOCAL, IAccountManager::SCOPE_FEDERATED],
[IAccountManager::PROPERTY_ADDRESS, IAccountManager::SCOPE_LOCAL, IAccountManager::SCOPE_FEDERATED],
[IAccountManager::PROPERTY_WEBSITE, IAccountManager::SCOPE_LOCAL, IAccountManager::SCOPE_FEDERATED],
@@ -3543,6 +3551,7 @@ class UsersControllerTest extends TestCase {
'address' => 'address',
'website' => 'website',
'twitter' => 'twitter',
'fediverse' => 'fediverse',
'organisation' => 'organisation',
'role' => 'role',
'headline' => 'headline',
@@ -3560,6 +3569,7 @@ class UsersControllerTest extends TestCase {
'address' => 'address',
'website' => 'website',
'twitter' => 'twitter',
'fediverse' => 'fediverse',
'organisation' => 'organisation',
'role' => 'role',
'headline' => 'headline',
@@ -3622,6 +3632,7 @@ class UsersControllerTest extends TestCase {
'address' => 'address',
'website' => 'website',
'twitter' => 'twitter',
'fediverse' => 'fediverse',
'displayname' => 'Demo User',
'organisation' => 'organisation',
'role' => 'role',
@@ -3946,6 +3957,7 @@ class UsersControllerTest extends TestCase {
IAccountManager::PROPERTY_ADDRESS,
IAccountManager::PROPERTY_WEBSITE,
IAccountManager::PROPERTY_TWITTER,
IAccountManager::PROPERTY_FEDIVERSE,
IAccountManager::PROPERTY_ORGANISATION,
IAccountManager::PROPERTY_ROLE,
IAccountManager::PROPERTY_HEADLINE,
@@ -3960,6 +3972,7 @@ class UsersControllerTest extends TestCase {
IAccountManager::PROPERTY_ADDRESS,
IAccountManager::PROPERTY_WEBSITE,
IAccountManager::PROPERTY_TWITTER,
IAccountManager::PROPERTY_FEDIVERSE,
IAccountManager::PROPERTY_ORGANISATION,
IAccountManager::PROPERTY_ROLE,
IAccountManager::PROPERTY_HEADLINE,
@@ -3973,6 +3986,7 @@ class UsersControllerTest extends TestCase {
IAccountManager::PROPERTY_ADDRESS,
IAccountManager::PROPERTY_WEBSITE,
IAccountManager::PROPERTY_TWITTER,
IAccountManager::PROPERTY_FEDIVERSE,
IAccountManager::PROPERTY_ORGANISATION,
IAccountManager::PROPERTY_ROLE,
IAccountManager::PROPERTY_HEADLINE,

+ 2
- 2
apps/settings/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => 'a66c80135de5b21d8ad48218b96a90eefde0fc7f',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => 'a66c80135de5b21d8ad48218b96a90eefde0fc7f',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 17
- 45
apps/settings/css/settings.css View File

@@ -102,8 +102,7 @@ input#openid, input#webdav {

.profile-settings-container {
display: inline-grid;
grid-template-columns: 1fr;
grid-template-rows: 1fr 1fr 1fr 2fr;
grid-template-columns: 1fr 1fr 1fr;
}

.personal-show-container {
@@ -119,6 +118,15 @@ input#openid, input#webdav {
.personal-settings-setting-box .section input[type=text], .personal-settings-setting-box .section input[type=email], .personal-settings-setting-box .section input[type=tel], .personal-settings-setting-box .section input[type=url] {
width: 100%;
}
.personal-settings-setting-box-profile {
grid-row: 3/5;
}
.personal-settings-setting-box-detail {
grid-row: 5;
}
.personal-settings-setting-box-detail--without-profile {
grid-row: 3;
}

select#timezone {
width: 100%;
@@ -127,8 +135,8 @@ select#timezone {
#personal-settings {
display: grid;
padding: 20px;
max-width: 1500px;
grid-template-columns: 1fr 2fr 1fr;
max-width: 1700px;
grid-template-columns: 1fr 1fr 1fr 1fr;
}
#personal-settings .section {
padding: 10px 10px;
@@ -178,63 +186,27 @@ select#timezone {
background-position: 24px;
}

@media (min-width: 1200px) and (max-width: 1400px) {
@media (min-width: 1400px) and (max-width: 1700px) {
#personal-settings {
display: grid;
grid-template-columns: 1fr 2fr;
}
#personal-settings #personal-settings-avatar-container {
grid-template-columns: 1fr;
grid-template-rows: 1fr;
}
#personal-settings .personal-settings-container {
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr;
}
#personal-settings .profile-settings-container {
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr;
grid-column: 2;
grid-template-columns: 1fr 1fr 1fr;
}
}
@media (max-width: 1200px) {
@media (min-width: 800px) and (max-width: 1400px) {
#personal-settings {
display: grid;
grid-template-columns: 1fr;
}
#personal-settings #personal-settings-avatar-container {
grid-template-rows: 1fr;
}
#personal-settings .personal-settings-container {
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr;
}
#personal-settings .profile-settings-container {
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr;
}
}
@media (max-width: 560px) {
@media (max-width: 800px) {
#personal-settings {
display: grid;
grid-template-columns: 1fr;
}
#personal-settings #personal-settings-avatar-container {
grid-template-rows: 1fr;
}
#personal-settings .personal-settings-container {
grid-template-columns: 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr;
}
#personal-settings .profile-settings-container {
grid-template-columns: 1fr;
grid-template-rows: 1fr 1fr;
}
}
.personal-settings-container {
display: inline-grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr 1fr;
grid-template-columns: 1fr 1fr 1fr;
}
.personal-settings-container:after {
clear: both;

+ 1
- 1
apps/settings/css/settings.css.map
File diff suppressed because it is too large
View File


+ 20
- 57
apps/settings/css/settings.scss View File

@@ -45,8 +45,7 @@ input {

.profile-settings-container {
display: inline-grid;
grid-template-columns: 1fr;
grid-template-rows: 1fr 1fr 1fr 2fr;
grid-template-columns: 1fr 1fr 1fr;
}

.personal-show-container {
@@ -67,6 +66,17 @@ input {
}
}
}

&-profile {
grid-row: 3/5;
}

&-detail {
grid-row: 5;
}
&-detail--without-profile {
grid-row: 3;
}
}

select {
@@ -78,8 +88,8 @@ select {
#personal-settings {
display: grid;
padding: 20px;
max-width: 1500px;
grid-template-columns: 1fr 2fr 1fr;
max-width: 1700px;
grid-template-columns: 1fr 1fr 1fr 1fr;

.section {
padding: 10px 10px;
@@ -139,77 +149,30 @@ select {
}
}



@media (min-width: 1200px) and (max-width: 1400px) {
@media (min-width: 1400px) and (max-width: 1700px) {
#personal-settings {
display: grid;
grid-template-columns: 1fr 2fr;

#personal-settings-avatar-container {
grid-template-columns: 1fr;
grid-template-rows: 1fr;
}

.personal-settings-container {
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr;
}

.profile-settings-container {
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr;
grid-column: 2;
}
grid-template-columns: 1fr 1fr 1fr;
}
}

@media (max-width: 1200px) {
@media (min-width: 800px) and (max-width: 1400px) {
#personal-settings {
display: grid;
grid-template-columns: 1fr;

#personal-settings-avatar-container {
grid-template-rows: 1fr;
}

.personal-settings-container {
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr;
}

.profile-settings-container {
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr;
}
grid-template-columns: 1fr 1fr;
}
}

@media (max-width: 560px) {
@media (max-width: 800px) {
#personal-settings {
display: grid;
grid-template-columns: 1fr;

#personal-settings-avatar-container {
grid-template-rows: 1fr;
}

.personal-settings-container {
grid-template-columns: 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr;
}

.profile-settings-container {
grid-template-columns: 1fr;
grid-template-rows: 1fr 1fr;
}
}
}

.personal-settings-container {
display: inline-grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr 1fr;
grid-template-columns: 1fr 1fr 1fr;

&:after {
clear: both;

+ 8
- 1
apps/settings/lib/Controller/UsersController.php View File

@@ -358,6 +358,8 @@ class UsersController extends Controller {
* @param string|null $addressScope
* @param string|null $twitter
* @param string|null $twitterScope
* @param string|null $fediverse
* @param string|null $fediverseScope
*
* @return DataResponse
*/
@@ -373,7 +375,9 @@ class UsersController extends Controller {
?string $address = null,
?string $addressScope = null,
?string $twitter = null,
?string $twitterScope = null
?string $twitterScope = null,
?string $fediverse = null,
?string $fediverseScope = null
) {
$user = $this->userSession->getUser();
if (!$user instanceof IUser) {
@@ -412,6 +416,7 @@ class UsersController extends Controller {
IAccountManager::PROPERTY_ADDRESS => ['value' => $address, 'scope' => $addressScope],
IAccountManager::PROPERTY_PHONE => ['value' => $phone, 'scope' => $phoneScope],
IAccountManager::PROPERTY_TWITTER => ['value' => $twitter, 'scope' => $twitterScope],
IAccountManager::PROPERTY_FEDIVERSE => ['value' => $fediverse, 'scope' => $fediverseScope],
];
$allowUserToChangeDisplayName = $this->config->getSystemValueBool('allow_user_to_change_display_name', true);
foreach ($updatable as $property => $data) {
@@ -451,6 +456,8 @@ class UsersController extends Controller {
'addressScope' => $userAccount->getProperty(IAccountManager::PROPERTY_ADDRESS)->getScope(),
'twitter' => $userAccount->getProperty(IAccountManager::PROPERTY_TWITTER)->getValue(),
'twitterScope' => $userAccount->getProperty(IAccountManager::PROPERTY_TWITTER)->getScope(),
'fediverse' => $userAccount->getProperty(IAccountManager::PROPERTY_FEDIVERSE)->getValue(),
'fediverseScope' => $userAccount->getProperty(IAccountManager::PROPERTY_FEDIVERSE)->getScope(),
'message' => $this->l10n->t('Settings saved'),
],
],

+ 1
- 0
apps/settings/lib/Settings/Personal/PersonalInfo.php View File

@@ -157,6 +157,7 @@ class PersonalInfo implements ISettings {
'location' => $this->getProperty($account, IAccountManager::PROPERTY_ADDRESS),
'website' => $this->getProperty($account, IAccountManager::PROPERTY_WEBSITE),
'twitter' => $this->getProperty($account, IAccountManager::PROPERTY_TWITTER),
'fediverse' => $this->getProperty($account, IAccountManager::PROPERTY_FEDIVERSE),
'languageMap' => $this->getLanguageMap($user),
'localeMap' => $this->getLocaleMap($user),
'profileEnabledGlobally' => $this->profileManager->isProfileEnabled(),

+ 3
- 0
apps/settings/src/components/PersonalInfo/AvatarSection.vue View File

@@ -276,6 +276,9 @@ export default {
</script>

<style lang="scss" scoped>
section {
grid-row: 1/3;
}
.avatar {
&__container {
margin: 0 auto;

+ 50
- 0
apps/settings/src/components/PersonalInfo/FediverseSection.vue View File

@@ -0,0 +1,50 @@
<!--
- @copyright 2022 Christopher Ng <chrng8@gmail.com>
-
- @author Christopher Ng <chrng8@gmail.com>
-
- @license AGPL-3.0-or-later
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation, either version 3 of the
- License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-->

<template>
<AccountPropertySection v-bind.sync="fediverse"
:placeholder="t('settings', 'Your handle')" />
</template>

<script>
import { loadState } from '@nextcloud/initial-state'

import AccountPropertySection from './shared/AccountPropertySection.vue'

import { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'

const { fediverse } = loadState('settings', 'personalInfoParameters', {})

export default {
name: 'FediverseSection',

components: {
AccountPropertySection,
},

data() {
return {
fediverse: { ...fediverse, readable: NAME_READABLE_ENUM[fediverse.name] },
}
},
}
</script>

+ 5
- 0
apps/settings/src/constants/AccountPropertyConstants.js View File

@@ -36,6 +36,7 @@ export const ACCOUNT_PROPERTY_ENUM = Object.freeze({
EMAIL: 'email',
HEADLINE: 'headline',
NOTIFICATION_EMAIL: 'notify_email',
FEDIVERSE: 'fediverse',
ORGANISATION: 'organisation',
PHONE: 'phone',
PROFILE_ENABLED: 'profile_enabled',
@@ -58,6 +59,7 @@ export const ACCOUNT_PROPERTY_READABLE_ENUM = Object.freeze({
PROFILE_ENABLED: t('settings', 'Profile'),
ROLE: t('settings', 'Role'),
TWITTER: t('settings', 'Twitter'),
FEDIVERSE: t('settings', 'Fediverse (e.g. Mastodon)'),
WEBSITE: t('settings', 'Website'),
})

@@ -74,6 +76,7 @@ export const NAME_READABLE_ENUM = Object.freeze({
[ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED,
[ACCOUNT_PROPERTY_ENUM.ROLE]: ACCOUNT_PROPERTY_READABLE_ENUM.ROLE,
[ACCOUNT_PROPERTY_ENUM.TWITTER]: ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER,
[ACCOUNT_PROPERTY_ENUM.FEDIVERSE]: ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE,
[ACCOUNT_PROPERTY_ENUM.WEBSITE]: ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE,
})

@@ -96,6 +99,7 @@ export const PROPERTY_READABLE_KEYS_ENUM = Object.freeze({
[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED,
[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: ACCOUNT_PROPERTY_ENUM.ROLE,
[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: ACCOUNT_PROPERTY_ENUM.TWITTER,
[ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE]: ACCOUNT_PROPERTY_ENUM.FEDIVERSE,
[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: ACCOUNT_PROPERTY_ENUM.WEBSITE,
})

@@ -137,6 +141,7 @@ export const PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM = Object.freeze({
[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],
[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],
[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],
[ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],
[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],
})


+ 3
- 0
apps/settings/src/main-personal-info.js View File

@@ -34,6 +34,7 @@ import PhoneSection from './components/PersonalInfo/PhoneSection.vue'
import LocationSection from './components/PersonalInfo/LocationSection.vue'
import WebsiteSection from './components/PersonalInfo/WebsiteSection.vue'
import TwitterSection from './components/PersonalInfo/TwitterSection.vue'
import FediverseSection from './components/PersonalInfo/FediverseSection.vue'
import LanguageSection from './components/PersonalInfo/LanguageSection/LanguageSection.vue'
import LocaleSection from './components/PersonalInfo/LocaleSection/LocaleSection.vue'
import ProfileSection from './components/PersonalInfo/ProfileSection/ProfileSection.vue'
@@ -61,6 +62,7 @@ const PhoneView = Vue.extend(PhoneSection)
const LocationView = Vue.extend(LocationSection)
const WebsiteView = Vue.extend(WebsiteSection)
const TwitterView = Vue.extend(TwitterSection)
const FediverseView = Vue.extend(FediverseSection)
const LanguageView = Vue.extend(LanguageSection)
const LocaleView = Vue.extend(LocaleSection)

@@ -72,6 +74,7 @@ new PhoneView().$mount('#vue-phone-section')
new LocationView().$mount('#vue-location-section')
new WebsiteView().$mount('#vue-website-section')
new TwitterView().$mount('#vue-twitter-section')
new FediverseView().$mount('#vue-fediverse-section')
new LanguageView().$mount('#vue-language-section')
new LocaleView().$mount('#vue-locale-section')


+ 45
- 49
apps/settings/templates/settings/personal/personal.info.php View File

@@ -45,67 +45,63 @@ script('settings', [

<div id="personal-settings">
<h2 class="hidden-visually"><?php p($l->t('Personal info')); ?></h2>
<div id="personal-settings-avatar-container" class="personal-settings-container">
<div id="vue-avatar-section"></div>
<div class="personal-settings-setting-box personal-settings-group-box section">
<div id="vue-details-section"></div>
<div id="vue-avatar-section"></div>
<?php if ($_['profileEnabledGlobally']) : ?>
<div class="personal-settings-setting-box personal-settings-setting-box-profile">
<div id="vue-profile-section"></div>
</div>
</div>

<div class="personal-settings-container">
<div class="personal-settings-setting-box">
<div id="vue-displayname-section"></div>
<div class="personal-settings-setting-box personal-settings-setting-box-detail">
<div id="vue-details-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-email-section"></div>
<?php else: ?>
<div class="personal-settings-setting-box personal-settings-setting-box-detail--without-profile">
<div id="vue-details-section"></div>
</div>
<?php endif; ?>
<div class="personal-settings-setting-box">
<div id="vue-displayname-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-email-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-phone-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-location-section"></div>
</div>
<div class="personal-settings-setting-box personal-settings-language-box">
<div id="vue-language-section"></div>
</div>
<div class="personal-settings-setting-box personal-settings-locale-box">
<div id="vue-locale-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-website-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-twitter-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-fediverse-section"></div>
</div>
<?php if ($_['profileEnabledGlobally']) : ?>
<div class="personal-settings-setting-box">
<div id="vue-phone-section"></div>
<div id="vue-organisation-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-location-section"></div>
<div id="vue-role-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-website-section"></div>
<div id="vue-headline-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-twitter-section"></div>
</div>
<?php if ($_['profileEnabledGlobally']) : ?>
<div class="personal-settings-setting-box">
<div id="vue-organisation-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-role-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-headline-section"></div>
</div>
<div class="personal-settings-setting-box">
<div id="vue-biography-section"></div>
</div>
<?php endif; ?>
</div>

<div class="profile-settings-container">
<?php if ($_['profileEnabledGlobally']) : ?>
<div class="personal-settings-setting-box">
<div id="vue-profile-section"></div>
</div>
<?php endif; ?>
<div class="personal-settings-setting-box personal-settings-language-box">
<div id="vue-language-section"></div>
</div>
<div class="personal-settings-setting-box personal-settings-locale-box">
<div id="vue-locale-section"></div>
<div id="vue-biography-section"></div>
</div>
<span class="msg"></span>
</div>

<div id="personal-settings-group-container">

</div>
<?php endif; ?>
<span class="msg"></span>

<div id="personal-settings-group-container"></div>
</div>

<?php if ($_['profileEnabledGlobally']) : ?>

+ 29
- 4
apps/settings/tests/Controller/UsersControllerTest.php View File

@@ -241,6 +241,11 @@ class UsersControllerTest extends \Test\TestCase {
'Default twitter',
IAccountManager::SCOPE_LOCAL,
),
IAccountManager::PROPERTY_FEDIVERSE => $this->buildPropertyMock(
IAccountManager::PROPERTY_FEDIVERSE,
'Default twitter',
IAccountManager::SCOPE_LOCAL,
),
];

$account = $this->createMock(IAccount::class);
@@ -336,6 +341,8 @@ class UsersControllerTest extends \Test\TestCase {
$addressScope = IAccountManager::SCOPE_PUBLISHED;
$twitter = '@nextclouders';
$twitterScope = IAccountManager::SCOPE_PUBLISHED;
$fediverse = '@nextclouders@floss.social';
$fediverseScope = IAccountManager::SCOPE_PUBLISHED;

$user = $this->createMock(IUser::class);
$user->method('getUID')->willReturn('johndoe');
@@ -410,7 +417,9 @@ class UsersControllerTest extends \Test\TestCase {
$address,
$addressScope,
$twitter,
$twitterScope
$twitterScope,
$fediverse,
$fediverseScope
);
}

@@ -447,6 +456,8 @@ class UsersControllerTest extends \Test\TestCase {
$addressScope = IAccountManager::SCOPE_PUBLISHED;
$twitter = '@nextclouders';
$twitterScope = IAccountManager::SCOPE_PUBLISHED;
$fediverse = '@nextclouders@floss.social';
$fediverseScope = IAccountManager::SCOPE_PUBLISHED;

// All settings are changed (in the past phone, website, address and
// twitter were not changed).
@@ -464,6 +475,8 @@ class UsersControllerTest extends \Test\TestCase {
$expectedProperties[IAccountManager::PROPERTY_ADDRESS]['scope'] = $addressScope;
$expectedProperties[IAccountManager::PROPERTY_TWITTER]['value'] = $twitter;
$expectedProperties[IAccountManager::PROPERTY_TWITTER]['scope'] = $twitterScope;
$expectedProperties[IAccountManager::PROPERTY_FEDIVERSE]['value'] = $fediverse;
$expectedProperties[IAccountManager::PROPERTY_FEDIVERSE]['scope'] = $fediverseScope;

$this->mailer->expects($this->once())->method('validateMailAddress')
->willReturn(true);
@@ -485,7 +498,9 @@ class UsersControllerTest extends \Test\TestCase {
$address,
$addressScope,
$twitter,
$twitterScope
$twitterScope,
$fediverse,
$fediverseScope
);
}

@@ -523,6 +538,8 @@ class UsersControllerTest extends \Test\TestCase {
$addressScope = ($property === 'addressScope') ? $propertyValue : null;
$twitter = ($property === 'twitter') ? $propertyValue : null;
$twitterScope = ($property === 'twitterScope') ? $propertyValue : null;
$fediverse = ($property === 'fediverse') ? $propertyValue : null;
$fediverseScope = ($property === 'fediverseScope') ? $propertyValue : null;

/** @var IAccountProperty[]|MockObject[] $expectedProperties */
$expectedProperties = $userAccount->getProperties();
@@ -555,6 +572,10 @@ class UsersControllerTest extends \Test\TestCase {
case 'twitterScope':
$propertyId = IAccountManager::PROPERTY_TWITTER;
break;
case 'fediverse':
case 'fediverseScope':
$propertyId = IAccountManager::PROPERTY_FEDIVERSE;
break;
default:
$propertyId = '404';
}
@@ -584,7 +605,9 @@ class UsersControllerTest extends \Test\TestCase {
$address,
$addressScope,
$twitter,
$twitterScope
$twitterScope,
$fediverse,
$fediverseScope
);
}

@@ -603,6 +626,8 @@ class UsersControllerTest extends \Test\TestCase {
['addressScope', IAccountManager::SCOPE_PUBLISHED],
['twitter', '@nextclouders'],
['twitterScope', IAccountManager::SCOPE_PUBLISHED],
['fediverse', '@nextclouders@floss.social'],
['fediverseScope', IAccountManager::SCOPE_PUBLISHED],
];
}

@@ -822,7 +847,7 @@ class UsersControllerTest extends \Test\TestCase {
$signature = 'theSignature';

$code = $message . ' ' . $signature;
if ($type === IAccountManager::PROPERTY_TWITTER) {
if ($type === IAccountManager::PROPERTY_TWITTER || $type === IAccountManager::PROPERTY_FEDIVERSE) {
$code = $message . ' ' . md5($signature);
}


+ 1
- 1
apps/settings/tests/UserMigration/assets/account-complex-config.json View File

@@ -1 +1 @@
{"address":{"visibility":"show_users_only"},"avatar":{"visibility":"show_users_only"},"biography":{"visibility":"show"},"displayname":{"visibility":"show"},"headline":{"visibility":"show"},"organisation":{"visibility":"show"},"role":{"visibility":"show"},"email":{"visibility":"hide"},"phone":{"visibility":"hide"},"twitter":{"visibility":"show_users_only"},"website":{"visibility":"show_users_only"},"talk":{"visibility":"show"}}
{"address":{"visibility":"show_users_only"},"avatar":{"visibility":"show_users_only"},"biography":{"visibility":"show"},"displayname":{"visibility":"show"},"fediverse":{"visibility":"show_users_only"},"headline":{"visibility":"show"},"organisation":{"visibility":"show"},"role":{"visibility":"show"},"email":{"visibility":"hide"},"phone":{"visibility":"hide"},"twitter":{"visibility":"show_users_only"},"website":{"visibility":"show_users_only"},"talk":{"visibility":"show"}}

+ 1
- 1
apps/settings/tests/UserMigration/assets/account-complex.json View File

@@ -1 +1 @@
{"displayname":{"name":"displayname","value":"Steve Smith","scope":"v2-local","verified":"0","verificationData":""},"address":{"name":"address","value":"123 Water St","scope":"v2-local","verified":"0","verificationData":""},"website":{"name":"website","value":"https:\/\/example.org","scope":"v2-local","verified":"0","verificationData":""},"email":{"name":"email","value":"steve@example.org","scope":"v2-federated","verified":"0","verificationData":""},"avatar":{"name":"avatar","value":"","scope":"v2-local","verified":"0","verificationData":""},"phone":{"name":"phone","value":"+12178515387","scope":"v2-private","verified":"0","verificationData":""},"twitter":{"name":"twitter","value":"steve","scope":"v2-federated","verified":"0","verificationData":""},"organisation":{"name":"organisation","value":"Mytery Machine","scope":"v2-private","verified":"0","verificationData":""},"role":{"name":"role","value":"Manager","scope":"v2-private","verified":"0","verificationData":""},"headline":{"name":"headline","value":"I am Steve","scope":"v2-local","verified":"0","verificationData":""},"biography":{"name":"biography","value":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris porttitor ullamcorper dictum. Sed fermentum ut ligula scelerisque semper. Aliquam interdum convallis tellus eu dapibus. Integer in justo sollicitudin, hendrerit ligula sit amet, blandit sem.\n\nSuspendisse consectetur ultrices accumsan. Quisque sagittis bibendum lectus ut placerat. Mauris tincidunt ornare neque, et pulvinar tortor porttitor eu.","scope":"v2-local","verified":"0","verificationData":""},"profile_enabled":{"name":"profile_enabled","value":"1","scope":"v2-local","verified":"0","verificationData":""},"additional_mail":[{"name":"additional_mail","value":"steve@example.com","scope":"v2-published","verified":"0","verificationData":""},{"name":"additional_mail","value":"steve@earth.world","scope":"v2-local","verified":"0","verificationData":""}]}
{"displayname":{"name":"displayname","value":"Steve Smith","scope":"v2-local","verified":"0","verificationData":""},"address":{"name":"address","value":"123 Water St","scope":"v2-local","verified":"0","verificationData":""},"website":{"name":"website","value":"https:\/\/example.org","scope":"v2-local","verified":"0","verificationData":""},"email":{"name":"email","value":"steve@example.org","scope":"v2-federated","verified":"0","verificationData":""},"avatar":{"name":"avatar","value":"","scope":"v2-local","verified":"0","verificationData":""},"phone":{"name":"phone","value":"+12178515387","scope":"v2-private","verified":"0","verificationData":""},"twitter":{"name":"twitter","value":"steve","scope":"v2-federated","verified":"0","verificationData":""},"fediverse":{"name":"fediverse","value":"@steve@floss.social","scope":"v2-federated","verified":"0","verificationData":""},"organisation":{"name":"organisation","value":"Mytery Machine","scope":"v2-private","verified":"0","verificationData":""},"role":{"name":"role","value":"Manager","scope":"v2-private","verified":"0","verificationData":""},"headline":{"name":"headline","value":"I am Steve","scope":"v2-local","verified":"0","verificationData":""},"biography":{"name":"biography","value":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris porttitor ullamcorper dictum. Sed fermentum ut ligula scelerisque semper. Aliquam interdum convallis tellus eu dapibus. Integer in justo sollicitudin, hendrerit ligula sit amet, blandit sem.\n\nSuspendisse consectetur ultrices accumsan. Quisque sagittis bibendum lectus ut placerat. Mauris tincidunt ornare neque, et pulvinar tortor porttitor eu.","scope":"v2-local","verified":"0","verificationData":""},"profile_enabled":{"name":"profile_enabled","value":"1","scope":"v2-local","verified":"0","verificationData":""},"additional_mail":[{"name":"additional_mail","value":"steve@example.com","scope":"v2-published","verified":"0","verificationData":""},{"name":"additional_mail","value":"steve@earth.world","scope":"v2-local","verified":"0","verificationData":""}]}

+ 1
- 1
apps/settings/tests/UserMigration/assets/account-config.json View File

@@ -1 +1 @@
{"address":{"visibility":"show_users_only"},"avatar":{"visibility":"show"},"biography":{"visibility":"show"},"displayname":{"visibility":"show"},"headline":{"visibility":"show"},"organisation":{"visibility":"show"},"role":{"visibility":"show"},"email":{"visibility":"show_users_only"},"phone":{"visibility":"show_users_only"},"twitter":{"visibility":"show"},"website":{"visibility":"show"}}
{"address":{"visibility":"show_users_only"},"avatar":{"visibility":"show"},"biography":{"visibility":"show"},"displayname":{"visibility":"show"},"fediverse":{"visibility":"show"},"headline":{"visibility":"show"},"organisation":{"visibility":"show"},"role":{"visibility":"show"},"email":{"visibility":"show_users_only"},"phone":{"visibility":"show_users_only"},"twitter":{"visibility":"show"},"website":{"visibility":"show"}}

+ 1
- 1
apps/settings/tests/UserMigration/assets/account.json View File

@@ -1 +1 @@
{"displayname":{"name":"displayname","value":"Emma Jones","scope":"v2-federated","verified":"0","verificationData":""},"address":{"name":"address","value":"920 Grass St","scope":"v2-local","verified":"0","verificationData":""},"website":{"name":"website","value":"","scope":"v2-local","verified":"0","verificationData":""},"email":{"name":"email","value":"","scope":"v2-federated","verified":"0","verificationData":""},"avatar":{"name":"avatar","value":"","scope":"v2-federated","verified":"0","verificationData":""},"phone":{"name":"phone","value":"","scope":"v2-local","verified":"0","verificationData":""},"twitter":{"name":"twitter","value":"","scope":"v2-local","verified":"0","verificationData":""},"organisation":{"name":"organisation","value":"","scope":"v2-local","verified":"0","verificationData":""},"role":{"name":"role","value":"","scope":"v2-local","verified":"0","verificationData":""},"headline":{"name":"headline","value":"","scope":"v2-local","verified":"0","verificationData":""},"biography":{"name":"biography","value":"","scope":"v2-local","verified":"0","verificationData":""},"profile_enabled":{"name":"profile_enabled","value":"1","scope":"v2-local","verified":"0","verificationData":""},"additional_mail":[]}
{"displayname":{"name":"displayname","value":"Emma Jones","scope":"v2-federated","verified":"0","verificationData":""},"address":{"name":"address","value":"920 Grass St","scope":"v2-local","verified":"0","verificationData":""},"website":{"name":"website","value":"","scope":"v2-local","verified":"0","verificationData":""},"email":{"name":"email","value":"","scope":"v2-federated","verified":"0","verificationData":""},"avatar":{"name":"avatar","value":"","scope":"v2-federated","verified":"0","verificationData":""},"phone":{"name":"phone","value":"","scope":"v2-local","verified":"0","verificationData":""},"twitter":{"name":"twitter","value":"","scope":"v2-local","verified":"0","verificationData":""},"fediverse":{"name":"fediverse","value":"","scope":"v2-local","verified":"0","verificationData":""},"organisation":{"name":"organisation","value":"","scope":"v2-local","verified":"0","verificationData":""},"role":{"name":"role","value":"","scope":"v2-local","verified":"0","verificationData":""},"headline":{"name":"headline","value":"","scope":"v2-local","verified":"0","verificationData":""},"biography":{"name":"biography","value":"","scope":"v2-local","verified":"0","verificationData":""},"profile_enabled":{"name":"profile_enabled","value":"1","scope":"v2-local","verified":"0","verificationData":""},"additional_mail":[]}

+ 15
- 2
apps/sharebymail/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/sharebymail/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/systemtags/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/systemtags/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/testing/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/testing/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/twofactor_backupcodes/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/twofactor_backupcodes/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/updatenotification/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/updatenotification/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/user_ldap/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/user_ldap/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/user_status/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/user_status/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 15
- 2
apps/workflowengine/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 2
- 2
apps/workflowengine/composer/composer/installed.php View File

@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

+ 3
- 0
build/integration/features/provisioning-v1.feature View File

@@ -67,6 +67,7 @@ Feature: provisioning
| address |
| website |
| twitter |
| fediverse |
| organisation |
| role |
| headline |
@@ -81,6 +82,7 @@ Feature: provisioning
| address |
| website |
| twitter |
| fediverse |
| organisation |
| role |
| headline |
@@ -94,6 +96,7 @@ Feature: provisioning
| address |
| website |
| twitter |
| fediverse |
| organisation |
| role |
| headline |

+ 0
- 5
build/psalm-baseline.xml View File

@@ -1299,11 +1299,6 @@
<code>\Sabre\Uri\split($this-&gt;principalInfo['uri'])</code>
</UndefinedFunction>
</file>
<file src="apps/files_versions/lib/Storage.php">
<InvalidScalarArgument occurrences="1">
<code>$timestamp</code>
</InvalidScalarArgument>
</file>
<file src="apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php">
<InvalidScalarArgument occurrences="1">
<code>$this-&gt;retries + 1</code>

+ 1
- 1
core/Controller/ClientFlowLoginV2Controller.php View File

@@ -216,7 +216,7 @@ class ClientFlowLoginV2Controller extends Controller {
return $response;
}

$result = $this->loginFlowV2Service->flowDoneWithAppPassword($loginToken, $this->getServerPath(), $this->userId, $password);
$result = $this->loginFlowV2Service->flowDoneWithAppPassword($loginToken, $this->getServerPath(), $user, $password);
return $this->handleFlowDone($result);
}


+ 40
- 0
core/img/actions/mastodon.svg View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
fill="#000000"
viewBox="0 0 32 32"
width="32px"
height="32px"
version="1.1"
id="svg4"
sodipodi:docname="mastodon.svg"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs8" />
<sodipodi:namedview
id="namedview6"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="27.21875"
inkscape:cx="23.990815"
inkscape:cy="11.646383"
inkscape:window-width="1920"
inkscape:window-height="1007"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
<path
d="M 16.092108,4.0424002e-4 C 12.062352,0.01674741 8.0611741,0.52836757 5.9792557,1.4882781 c 0,0 -4.4792557,2.0390593 -4.4792557,8.9845679 0,8.267636 -0.006,18.650381 7.4211287,20.658254 2.8443783,0.76446 5.2904523,0.928996 7.2569683,0.815594 3.568811,-0.201455 5.333936,-1.295049 5.333936,-1.295049 l -0.119865,-2.637001 c 0,0 -2.313201,0.815177 -5.177591,0.721787 -2.837706,-0.100064 -5.827232,-0.31302 -6.2928463,-3.856484 -0.042694,-0.329532 -0.063873,-0.663192 -0.062538,-0.995391 6.0129483,1.492897 11.1403013,0.650223 12.5518183,0.479455 3.941035,-0.478955 7.371787,-2.95017 7.809382,-5.208861 0.685746,-3.559473 0.627983,-8.682304 0.627983,-8.682304 0,-6.9455086 -4.47144,-8.9845679 -4.47144,-8.9845679 C 24.181616,0.4629949 20.121863,-0.01593892 16.092108,4.0424002e-4 Z M 11.779618,5.2978601 c 1.380664,0.037022 2.744984,0.6547271 3.585489,1.9595116 l 0.81299,1.3810381 0.810383,-1.3810381 c 1.687681,-2.6242446 5.470248,-2.4605003 7.269996,-0.429946 1.659664,1.9318288 1.289838,3.1786613 1.289838,11.8091823 v 0.0025 H 22.28333 v -7.509723 c 0,-3.5154475 -4.481861,-3.6512167 -4.481861,0.487271 v 4.351575 H 14.55733 V 11.6167 c 0,-4.1384877 -4.479254,-4.0053242 -4.479254,-0.489878 v 7.509724 H 6.8052731 c 0,-8.6371452 -0.3631558,-9.8919821 1.2898381,-11.8091356 C 9.0016558,5.8054625 10.398956,5.2608226 11.779618,5.2978448 Z"
id="path2"
style="stroke-width:1.33413" />
</svg>

+ 2
- 2
dist/settings-vue-settings-admin-basic-settings.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-vue-settings-admin-basic-settings.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-vue-settings-personal-info.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-vue-settings-personal-info.js.map
File diff suppressed because it is too large
View File


+ 15
- 2
lib/composer/autoload.php View File

@@ -3,8 +3,21 @@
// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
exit(1);
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

+ 1
- 0
lib/composer/composer/autoload_classmap.php View File

@@ -1418,6 +1418,7 @@ return array(
'OC\\Preview\\WebP' => $baseDir . '/lib/private/Preview/WebP.php',
'OC\\Preview\\XBitmap' => $baseDir . '/lib/private/Preview/XBitmap.php',
'OC\\Profile\\Actions\\EmailAction' => $baseDir . '/lib/private/Profile/Actions/EmailAction.php',
'OC\\Profile\\Actions\\FediverseAction' => $baseDir . '/lib/private/Profile/Actions/FediverseAction.php',
'OC\\Profile\\Actions\\PhoneAction' => $baseDir . '/lib/private/Profile/Actions/PhoneAction.php',
'OC\\Profile\\Actions\\TwitterAction' => $baseDir . '/lib/private/Profile/Actions/TwitterAction.php',
'OC\\Profile\\Actions\\WebsiteAction' => $baseDir . '/lib/private/Profile/Actions/WebsiteAction.php',

+ 1
- 0
lib/composer/composer/autoload_static.php View File

@@ -1451,6 +1451,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
'OC\\Preview\\WebP' => __DIR__ . '/../../..' . '/lib/private/Preview/WebP.php',
'OC\\Preview\\XBitmap' => __DIR__ . '/../../..' . '/lib/private/Preview/XBitmap.php',
'OC\\Profile\\Actions\\EmailAction' => __DIR__ . '/../../..' . '/lib/private/Profile/Actions/EmailAction.php',
'OC\\Profile\\Actions\\FediverseAction' => __DIR__ . '/../../..' . '/lib/private/Profile/Actions/FediverseAction.php',
'OC\\Profile\\Actions\\PhoneAction' => __DIR__ . '/../../..' . '/lib/private/Profile/Actions/PhoneAction.php',
'OC\\Profile\\Actions\\TwitterAction' => __DIR__ . '/../../..' . '/lib/private/Profile/Actions/TwitterAction.php',
'OC\\Profile\\Actions\\WebsiteAction' => __DIR__ . '/../../..' . '/lib/private/Profile/Actions/WebsiteAction.php',

+ 9
- 0
lib/private/Accounts/AccountManager.php View File

@@ -131,6 +131,7 @@ class AccountManager implements IAccountManager {
self::PROPERTY_AVATAR => self::SCOPE_FEDERATED,
self::PROPERTY_PHONE => self::SCOPE_LOCAL,
self::PROPERTY_TWITTER => self::SCOPE_LOCAL,
self::PROPERTY_FEDIVERSE => self::SCOPE_LOCAL,
self::PROPERTY_ORGANISATION => self::SCOPE_LOCAL,
self::PROPERTY_ROLE => self::SCOPE_LOCAL,
self::PROPERTY_HEADLINE => self::SCOPE_LOCAL,
@@ -525,6 +526,7 @@ class AccountManager implements IAccountManager {
protected function updateVerificationStatus(IAccount $updatedAccount, array $oldData): void {
static $propertiesVerifiableByLookupServer = [
self::PROPERTY_TWITTER,
self::PROPERTY_FEDIVERSE,
self::PROPERTY_WEBSITE,
self::PROPERTY_EMAIL,
];
@@ -723,6 +725,13 @@ class AccountManager implements IAccountManager {
'verified' => self::NOT_VERIFIED,
],

[
'name' => self::PROPERTY_FEDIVERSE,
'value' => '',
'scope' => $scopes[self::PROPERTY_FEDIVERSE],
'verified' => self::NOT_VERIFIED,
],

[
'name' => self::PROPERTY_ORGANISATION,
'value' => '',

+ 90
- 0
lib/private/Profile/Actions/FediverseAction.php View File

@@ -0,0 +1,90 @@
<?php

declare(strict_types=1);

/**
* @copyright 2021 Christopher Ng <chrng8@gmail.com>
*
* @author Christopher Ng <chrng8@gmail.com>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/

namespace OC\Profile\Actions;

use function Safe\substr;
use OCP\Accounts\IAccountManager;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\L10N\IFactory;
use OCP\Profile\ILinkAction;

class FediverseAction implements ILinkAction {
private ?string $value = null;
private IAccountManager $accountManager;
private IFactory $l10nFactory;
private IURLGenerator $urlGenerator;

public function __construct(
IAccountManager $accountManager,
IFactory $l10nFactory,
IURLGenerator $urlGenerator
) {
$this->accountManager = $accountManager;
$this->l10nFactory = $l10nFactory;
$this->urlGenerator = $urlGenerator;
}

public function preload(IUser $targetUser): void {
$account = $this->accountManager->getAccount($targetUser);
$this->value = $account->getProperty(IAccountManager::PROPERTY_FEDIVERSE)->getValue();
}

public function getAppId(): string {
return 'core';
}

public function getId(): string {
return IAccountManager::PROPERTY_FEDIVERSE;
}

public function getDisplayId(): string {
return $this->l10nFactory->get('lib')->t('Fediverse');
}

public function getTitle(): string {
$displayUsername = $this->value[0] === '@' ? $this->value : '@' . $this->value;
return $this->l10nFactory->get('lib')->t('View %s on the fediverse', [$displayUsername]);
}

public function getPriority(): int {
return 50;
}

public function getIcon(): string {
return $this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/mastodon.svg'));
}

public function getTarget(): ?string {
if (empty($this->value)) {
return null;
}
$username = $this->value[0] === '@' ? substr($this->value, 1) : $this->value;
[$username, $instance] = explode('@', $username);
return 'https://' . $instance . '/@' . $username;
}
}

+ 2
- 0
lib/private/Profile/ProfileManager.php View File

@@ -35,6 +35,7 @@ use OC\KnownUser\KnownUserService;
use OC\Profile\Actions\EmailAction;
use OC\Profile\Actions\PhoneAction;
use OC\Profile\Actions\TwitterAction;
use OC\Profile\Actions\FediverseAction;
use OC\Profile\Actions\WebsiteAction;
use OCP\Accounts\IAccountManager;
use OCP\Accounts\PropertyDoesNotExistException;
@@ -95,6 +96,7 @@ class ProfileManager {
PhoneAction::class,
WebsiteAction::class,
TwitterAction::class,
FediverseAction::class,
];

/**

+ 2
- 0
lib/public/Accounts/IAccountManager.php View File

@@ -112,6 +112,7 @@ interface IAccountManager {
public const PROPERTY_WEBSITE = 'website';
public const PROPERTY_ADDRESS = 'address';
public const PROPERTY_TWITTER = 'twitter';
public const PROPERTY_FEDIVERSE = 'fediverse';

/**
* @since 23.0.0
@@ -151,6 +152,7 @@ interface IAccountManager {
self::PROPERTY_WEBSITE,
self::PROPERTY_ADDRESS,
self::PROPERTY_TWITTER,
self::PROPERTY_FEDIVERSE,
self::PROPERTY_ORGANISATION,
self::PROPERTY_ROLE,
self::PROPERTY_HEADLINE,

+ 39
- 0
tests/lib/Accounts/AccountManagerTest.php View File

@@ -156,6 +156,11 @@ class AccountManagerTest extends TestCase {
'value' => '@sometwitter',
'scope' => IAccountManager::SCOPE_PUBLISHED
],
[
'name' => IAccountManager::PROPERTY_FEDIVERSE,
'value' => '@someMastodon@mastodon.social',
'scope' => IAccountManager::SCOPE_PUBLISHED
],
[
'name' => IAccountManager::PROPERTY_PHONE,
'value' => '+491601231212',
@@ -211,6 +216,11 @@ class AccountManagerTest extends TestCase {
'value' => '@a_alice',
'scope' => IAccountManager::SCOPE_FEDERATED
],
[
'name' => IAccountManager::PROPERTY_FEDIVERSE,
'value' => '@a_alice@cool.social',
'scope' => IAccountManager::SCOPE_FEDERATED
],
[
'name' => IAccountManager::PROPERTY_PHONE,
'value' => '+491602312121',
@@ -266,6 +276,11 @@ class AccountManagerTest extends TestCase {
'value' => '',
'scope' => IAccountManager::SCOPE_LOCAL
],
[
'name' => IAccountManager::PROPERTY_FEDIVERSE,
'value' => '',
'scope' => IAccountManager::SCOPE_LOCAL
],
[
'name' => IAccountManager::PROPERTY_PHONE,
'value' => '+491603121212',
@@ -321,6 +336,11 @@ class AccountManagerTest extends TestCase {
'value' => '', '
scope' => IAccountManager::SCOPE_LOCAL
],
[
'name' => IAccountManager::PROPERTY_FEDIVERSE,
'value' => '', '
scope' => IAccountManager::SCOPE_LOCAL
],
[
'name' => IAccountManager::PROPERTY_PHONE,
'value' => '+71601212123',
@@ -386,6 +406,11 @@ class AccountManagerTest extends TestCase {
'value' => '',
'scope' => IAccountManager::SCOPE_LOCAL
],
[
'name' => IAccountManager::PROPERTY_FEDIVERSE,
'value' => '',
'scope' => IAccountManager::SCOPE_LOCAL
],
[
'name' => IAccountManager::PROPERTY_PHONE,
'value' => '+71602121231',
@@ -570,6 +595,13 @@ class AccountManagerTest extends TestCase {
'verified' => IAccountManager::NOT_VERIFIED,
],

[
'name' => IAccountManager::PROPERTY_FEDIVERSE,
'value' => '',
'scope' => IAccountManager::SCOPE_LOCAL,
'verified' => IAccountManager::NOT_VERIFIED,
],

[
'name' => IAccountManager::PROPERTY_ORGANISATION,
'value' => '',
@@ -619,6 +651,12 @@ class AccountManagerTest extends TestCase {
'verified' => IAccountManager::NOT_VERIFIED,
'name' => IAccountManager::PROPERTY_TWITTER,
],
[
'value' => '@mastohandle@mastodon.social',
'scope' => IAccountManager::SCOPE_LOCAL,
'verified' => IAccountManager::NOT_VERIFIED,
'name' => IAccountManager::PROPERTY_FEDIVERSE,
],
[
'value' => 'test@example.com',
'scope' => IAccountManager::SCOPE_PUBLISHED,
@@ -634,6 +672,7 @@ class AccountManagerTest extends TestCase {
];
$expected = new Account($user);
$expected->setProperty(IAccountManager::PROPERTY_TWITTER, '@twitterhandle', IAccountManager::SCOPE_LOCAL, IAccountManager::NOT_VERIFIED);
$expected->setProperty(IAccountManager::PROPERTY_FEDIVERSE, '@mastohandle@mastodon.social', IAccountManager::SCOPE_LOCAL, IAccountManager::NOT_VERIFIED);
$expected->setProperty(IAccountManager::PROPERTY_EMAIL, 'test@example.com', IAccountManager::SCOPE_PUBLISHED, IAccountManager::VERIFICATION_IN_PROGRESS);
$expected->setProperty(IAccountManager::PROPERTY_WEBSITE, 'https://example.com', IAccountManager::SCOPE_FEDERATED, IAccountManager::VERIFIED);


Loading…
Cancel
Save