]> git.mxchange.org Git - friendica.git/blobdiff - mod/settings.php
Merge pull request #7828 from nupplaphil/task/move_enotify
[friendica.git] / mod / settings.php
index b5011881cb9b5871308dba82c7d5f4211c955589..5ae4086b61741e48ce7145b555a06f073f2569de 100644 (file)
@@ -5,6 +5,7 @@
 
 use Friendica\App;
 use Friendica\BaseModule;
+use Friendica\BaseObject;
 use Friendica\Content\Feature;
 use Friendica\Content\Nav;
 use Friendica\Core\ACL;
@@ -25,6 +26,7 @@ use Friendica\Model\Group;
 use Friendica\Model\User;
 use Friendica\Module\Login;
 use Friendica\Protocol\Email;
+use Friendica\Util\ACLFormatter;
 use Friendica\Util\Network;
 use Friendica\Util\Strings;
 use Friendica\Util\Temporal;
@@ -129,8 +131,8 @@ function settings_init(App $a)
 
        $tabs[] =       [
                'label' => L10n::t('Export personal data'),
-               'url' => 'uexport',
-               'selected' => (($a->argc == 1) && ($a->argv[0] === 'uexport')?'active':''),
+               'url' => 'settings/userexport',
+               'selected' => (($a->argc > 1) && ($a->argv[1] === 'userexport')?'active':''),
                'accesskey' => 'e',
        ];
 
@@ -388,6 +390,33 @@ function settings_post(App $a)
 
        BaseModule::checkFormSecurityTokenRedirectOnError('/settings', 'settings');
 
+       // Import Contacts from CSV file
+       if (!empty($_POST['importcontact-submit'])) {
+               if (isset($_FILES['importcontact-filename'])) {
+                       // was there an error
+                       if ($_FILES['importcontact-filename']['error'] > 0) {
+                               Logger::notice('Contact CSV file upload error');
+                               info(L10n::t('Contact CSV file upload error'));
+                       } else {
+                               $csvArray = array_map('str_getcsv', file($_FILES['importcontact-filename']['tmp_name']));
+                               // import contacts
+                               foreach ($csvArray as $csvRow) {
+                                       // The 1st row may, or may not contain the headers of the table
+                                       // We expect the 1st field of the row to contain either the URL
+                                       // or the handle of the account, therefore we check for either
+                                       // "http" or "@" to be present in the string.
+                                       // All other fields from the row will be ignored
+                                       if ((strpos($csvRow[0],'@') !== false) || (strpos($csvRow[0],'http') !== false)) {
+                                               $arr = Contact::createFromProbe($_SESSION['uid'], $csvRow[0], '', false);
+                                       }
+                               }
+                               info(L10n::t('Importing Contacts done'));
+                               // delete temp file
+                               unlink($filename);
+                       }
+               }
+       }
+
        if (!empty($_POST['resend_relocate'])) {
                Worker::add(PRIORITY_HIGH, 'Notifier', Delivery::RELOCATION, local_user());
                info(L10n::t("Relocate message has been send to your contacts"));
@@ -426,7 +455,6 @@ function settings_post(App $a)
        $language         = (!empty($_POST['language'])   ? Strings::escapeTags(trim($_POST['language']))     : '');
 
        $defloc           = (!empty($_POST['defloc'])     ? Strings::escapeTags(trim($_POST['defloc']))       : '');
-       $openid           = (!empty($_POST['openid_url']) ? Strings::escapeTags(trim($_POST['openid_url']))   : '');
        $maxreq           = (!empty($_POST['maxreq'])     ? intval($_POST['maxreq'])             : 0);
        $expire           = (!empty($_POST['expire'])     ? intval($_POST['expire'])             : 0);
        $def_gid          = (!empty($_POST['group-selection']) ? intval($_POST['group-selection']) : 0);
@@ -438,6 +466,8 @@ function settings_post(App $a)
        $expire_photos    = (!empty($_POST['expire_photos'])? intval($_POST['expire_photos'])    : 0);
        $expire_network_only    = (!empty($_POST['expire_network_only'])? intval($_POST['expire_network_only'])  : 0);
 
+       $delete_openid    = ((!empty($_POST['delete_openid']) && (intval($_POST['delete_openid']) == 1)) ? 1: 0);
+
        $allow_location   = ((!empty($_POST['allow_location']) && (intval($_POST['allow_location']) == 1)) ? 1: 0);
        $publish          = ((!empty($_POST['profile_in_directory']) && (intval($_POST['profile_in_directory']) == 1)) ? 1: 0);
        $net_publish      = ((!empty($_POST['profile_in_netdirectory']) && (intval($_POST['profile_in_netdirectory']) == 1)) ? 1: 0);
@@ -533,25 +563,13 @@ function settings_post(App $a)
                date_default_timezone_set($timezone);
        }
 
-       $str_group_allow   = !empty($_POST['group_allow'])   ? perms2str($_POST['group_allow'])   : '';
-       $str_contact_allow = !empty($_POST['contact_allow']) ? perms2str($_POST['contact_allow']) : '';
-       $str_group_deny    = !empty($_POST['group_deny'])    ? perms2str($_POST['group_deny'])    : '';
-       $str_contact_deny  = !empty($_POST['contact_deny'])  ? perms2str($_POST['contact_deny'])  : '';
-
-       $openidserver = $a->user['openidserver'];
-       //$openid = Strings::normaliseOpenID($openid);
-
-       // If openid has changed or if there's an openid but no openidserver, try and discover it.
-       if ($openid != $a->user['openid'] || (strlen($openid) && (!strlen($openidserver)))) {
-               if (Network::isUrlValid($openid)) {
-                       Logger::log('updating openidserver');
-                       $open_id_obj = new LightOpenID($a->getHostName());
-                       $open_id_obj->identity = $openid;
-                       $openidserver = $open_id_obj->discover($open_id_obj->identity);
-               } else {
-                       $openidserver = '';
-               }
-       }
+       /** @var ACLFormatter $aclFormatter */
+       $aclFormatter = BaseObject::getClass(ACLFormatter::class);
+
+       $str_group_allow   = !empty($_POST['group_allow'])   ? $aclFormatter->toString($_POST['group_allow'])   : '';
+       $str_contact_allow = !empty($_POST['contact_allow']) ? $aclFormatter->toString($_POST['contact_allow']) : '';
+       $str_group_deny    = !empty($_POST['group_deny'])    ? $aclFormatter->toString($_POST['group_deny'])    : '';
+       $str_contact_deny  = !empty($_POST['contact_deny'])  ? $aclFormatter->toString($_POST['contact_deny'])  : '';
 
        PConfig::set(local_user(), 'expire', 'items', $expire_items);
        PConfig::set(local_user(), 'expire', 'notes', $expire_notes);
@@ -576,41 +594,18 @@ function settings_post(App $a)
                }
        }
 
+       $fields = ['username' => $username, 'email' => $email, 'timezone' => $timezone,
+               'allow_cid' => $str_contact_allow, 'allow_gid' => $str_group_allow, 'deny_cid' => $str_contact_deny, 'deny_gid' => $str_group_deny,
+               'notify-flags' => $notify, 'page-flags' => $page_flags, 'account-type' => $account_type, 'default-location' => $defloc,
+               'allow_location' => $allow_location, 'maxreq' => $maxreq, 'expire' => $expire, 'def_gid' => $def_gid, 'blockwall' => $blockwall,
+               'hidewall' => $hidewall, 'blocktags' => $blocktags, 'unkmail' => $unkmail, 'cntunkmail' => $cntunkmail, 'language' => $language];
 
-       $r = q("UPDATE `user` SET `username` = '%s', `email` = '%s',
-                               `openid` = '%s', `timezone` = '%s',
-                               `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s',
-                               `notify-flags` = %d, `page-flags` = %d, `account-type` = %d, `default-location` = '%s',
-                               `allow_location` = %d, `maxreq` = %d, `expire` = %d, `openidserver` = '%s',
-                               `def_gid` = %d, `blockwall` = %d, `hidewall` = %d, `blocktags` = %d,
-                               `unkmail` = %d, `cntunkmail` = %d, `language` = '%s'
-                       WHERE `uid` = %d",
-                       DBA::escape($username),
-                       DBA::escape($email),
-                       DBA::escape($openid),
-                       DBA::escape($timezone),
-                       DBA::escape($str_contact_allow),
-                       DBA::escape($str_group_allow),
-                       DBA::escape($str_contact_deny),
-                       DBA::escape($str_group_deny),
-                       intval($notify),
-                       intval($page_flags),
-                       intval($account_type),
-                       DBA::escape($defloc),
-                       intval($allow_location),
-                       intval($maxreq),
-                       intval($expire),
-                       DBA::escape($openidserver),
-                       intval($def_gid),
-                       intval($blockwall),
-                       intval($hidewall),
-                       intval($blocktags),
-                       intval($unkmail),
-                       intval($cntunkmail),
-                       DBA::escape($language),
-                       intval(local_user())
-       );
-       if (DBA::isResult($r)) {
+       if ($delete_openid) {
+               $fields['openid'] = '';
+               $fields['openidserver'] = '';
+       }
+
+       if (DBA::update('user', $fields, ['uid' => local_user()])) {
                info(L10n::t('Settings updated.') . EOL);
        }
 
@@ -1075,7 +1070,7 @@ function settings_content(App $a)
        if ($noid) {
                $openid_field = false;
        } else {
-               $openid_field = ['openid_url', L10n::t('OpenID:'), $openid, L10n::t("\x28Optional\x29 Allow this OpenID to login to this account."), "", "", "url"];
+               $openid_field = ['openid_url', L10n::t('OpenID:'), $openid, L10n::t("\x28Optional\x29 Allow this OpenID to login to this account."), "", "readonly", "url"];
        }
 
        $opt_tpl = Renderer::getMarkupTemplate("field_yesno.tpl");
@@ -1185,6 +1180,7 @@ function settings_content(App $a)
                '$password4'=> ['mpassword', L10n::t('Password:'), '', L10n::t('Your current password to confirm the changes')],
                '$oid_enable' => (!Config::get('system', 'no_openid')),
                '$openid'       => $openid_field,
+               '$delete_openid' => ['delete_openid', L10n::t('Delete OpenID URL'), false, ''],
 
                '$h_basic'      => L10n::t('Basic Settings'),
                '$username' => ['username',  L10n::t('Full Name:'), $username, ''],
@@ -1254,6 +1250,10 @@ function settings_content(App $a)
                '$h_descadvn' => L10n::t('Change the behaviour of this account for special situations'),
                '$pagetype' => $pagetype,
 
+               '$importcontact' => L10n::t('Import Contacts'),
+               '$importcontact_text' => L10n::t('Upload a CSV file that contains the handle of your followed accounts in the first column you exported from the old account.'),
+               '$importcontact_button' => L10n::t('Upload File'),
+               '$importcontact_maxsize' => Config::get('system', 'max_csv_file_size', 30720), 
                '$relocate' => L10n::t('Relocate'),
                '$relocate_text' => L10n::t("If you have moved this profile from another server, and some of your contacts don't receive your updates, try pushing this button."),
                '$relocate_button' => L10n::t("Resend relocate message to contacts"),