check_form_security_token_redirectOnErr('/admin/site', 'admin_site');
+ // relocate
+ if (x($_POST,'relocate') && x($_POST,'relocate_url') && $_POST['relocate_url']!=""){
+ $new_url = $_POST['relocate_url'];
+ $new_url = rtrim($new_url,"/");
+
+ $parsed = @parse_url($new_url);
+ if (!$parsed || (!x($parsed,'host') || !x($parsed,'scheme'))) {
+ notice(t("Can not parse base url. Must have at least <scheme>://<domain>"));
+ goaway($a->get_baseurl(true) . '/admin/site' );
+ }
+
+ /* steps:
+ * replace all "baseurl" to "new_url" in config, profile, term, items and contacts
+ * send relocate for every local user
+ * */
+
+ $old_url = $a->get_baseurl(true);
+
+ function update_table($table_name, $fields, $old_url, $new_url) {
+ global $db, $a;
+
+ $dbold = dbesc($old_url);
+ $dbnew = dbesc($new_url);
+
+ $upd = array();
+ foreach ($fields as $f) {
+ $upd[] = "`$f` = REPLACE(`$f`, '$dbold', '$dbnew')";
+ }
+
+ $upds = implode(", ", $upd);
+
+
+
+ $q = sprintf("UPDATE %s SET %s;", $table_name, $upds);
+ $r = q($q);
+ if (!$r) {
+ notice( "Falied updating '$table_name': " . $db->error );
+ goaway($a->get_baseurl(true) . '/admin/site' );
+ }
+ }
+
+ // update tables
+ update_table("profile", array('photo', 'thumb'), $old_url, $new_url);
+ update_table("term", array('url'), $old_url, $new_url);
+ update_table("contact", array('photo','thumb','micro','url','nurl','request','notify','poll','confirm','poco'), $old_url, $new_url);
+ update_table("item", array('owner-link','owner-avatar','author-name','author-link','author-avatar','body','plink','tag'), $old_url, $new_url);
+
+ // update config
+ $a->set_baseurl($new_url);
+ set_config('system','url',$new_url);
+
+ // send relocate
+ $users = q("SELECT uid FROM user WHERE account_removed = 0 AND account_expired = 0");
+
+ foreach ($users as $user) {
+ proc_run('php', 'include/notifier.php', 'relocate', $user['uid']);
+ }
+
+ info("Relocation started. Could take a while to complete.");
+
+ goaway($a->get_baseurl(true) . '/admin/site' );
+ }
+ // end relocate
+
$sitename = ((x($_POST,'sitename')) ? notags(trim($_POST['sitename'])) : '');
$banner = ((x($_POST,'banner')) ? trim($_POST['banner']) : false);
$info = ((x($_POST,'info')) ? trim($_POST['info']) : false);
'$corporate' => t('Policies'),
'$advanced' => t('Advanced'),
'$performance' => t('Performance'),
+ '$relocate'=> t('Relocate - WARNING: advanced function. Could make this server unreachable.'),
'$baseurl' => $a->get_baseurl(true),
// name, label, value, help string, extra data...
'$lockpath' => array('lockpath', t("Path for lock file"), get_config('system','lockpath'), "The lock file is used to avoid multiple pollers at one time. Only define a folder here."),
'$temppath' => array('temppath', t("Temp path"), get_config('system','temppath'), "If you have a restricted system where the webserver can't access the system temp path, enter another path here."),
'$basepath' => array('basepath', t("Base path to installation"), get_config('system','basepath'), "If the system cannot detect the correct path to your installation, enter the correct path here. This setting should only be set if you are using a restricted system and symbolic links to your webroot."),
+
+ '$relocate_url' => array('relocate_url', t("New base url"), $a->get_baseurl(), "Change base url for this server. Sends relocate message to all DFRN contacts of all users."),
+
'$form_security_token' => get_form_security_token("admin_site"),
));
check_form_security_token_redirectOnErr('/settings', 'settings');
+ if (x($_POST,'resend_relocate')) {
+ proc_run('php', 'include/notifier.php', 'relocate', local_user());
+ info(t("Relocate message has been send to your contacts"));
+ goaway($a->get_baseurl(true) . '/settings');
+ }
+
call_hooks('settings_post', $_POST);
if((x($_POST,'npassword')) || (x($_POST,'confirm'))) {
'$h_descadvn' => t('Change the behaviour of this account for special situations'),
'$pagetype' => $pagetype,
+ '$relocate' => t('Relocate'),
+ '$relocate_text' => 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' => t("Resend relocate message to contacts"),
+
));
call_hooks('settings_form',$o);