Option to check that a random profile works before returning it

This commit is contained in:
Stefan Parviainen 2014-12-22 22:57:58 +01:00
parent c819c276f0
commit 83eb7a10e2
2 changed files with 46 additions and 24 deletions

View File

@ -106,24 +106,29 @@ This document assumes you're an administrator.
list of names (no spaces) list of names (no spaces)
[b]system > auto_follow[/b] [b]system > auto_follow[/b]
Make the first channel of an account auto-follow channels listed here - comma separated list of webbies (member@hub addresses). Make the first channel of an account auto-follow channels listed here - comma separated list of webbies (member@hub addresses).
[b]system > admin_email[/b] [b]system > admin_email[/b]
Specifies the administrators email for this site. This is initially set during install. Specifies the administrators email for this site. This is initially set during install.
[b]system > cron_hour[/b] [b]system > cron_hour[/b]
Specify an hour in which to run cron_daily. By default with no config, this will run at midnight UTC. Specify an hour in which to run cron_daily. By default with no config, this will run at midnight UTC.
[b]system > minimum_feedcheck_minutes[/b] [b]system > minimum_feedcheck_minutes[/b]
The minimum interval between polling RSS feeds. If this is lower than the cron interval, feeds will be polled with each cronjob The minimum interval between polling RSS feeds. If this is lower than the cron interval, feeds will be polled with each cronjob
[b]system > blacklisted_sites[/b] [b]system > blacklisted_sites[/b]
An array of specific hubs to block from this hub completely. An array of specific hubs to block from this hub completely.
[b]system > ignore_imagick[/b] [b]system > ignore_imagick[/b]
Ignore imagick and use GD, even if imagick is installed on the server. Prevents some issues with PNG files in older versions of imagick. Ignore imagick and use GD, even if imagick is installed on the server. Prevents some issues with PNG files in older versions of imagick.
[b]system > no_age_restriction[/b] [b]system > no_age_restriction[/b]
Do not restric registration to people over the age of 13 Do not restric registration to people over the age of 13
[b]system > override_poll_lockfile[/b] [b]system > override_poll_lockfile[/b]
Ignore the lock file in the poller process to allow more than one process to run at a time. Ignore the lock file in the poller process to allow more than one process to run at a time.
[b]system > projecthome[/b] [b]system > projecthome[/b]
Display the project page on your home page for logged out viewers. Display the project page on your home page for logged out viewers.
[b]system > sellpage[/b] [b]system > sellpage[/b]
A URL shown in the public sites list to sell your hub - display service classes, etc. A URL shown in the public sites list to sell your hub - display service classes, etc.
[b]randprofile > check[/b]
When requesting a random profile, check that it actually exists first
[b]randprofile > retry[/b]
Number of times to retry getting a random profile
#include doc/macros/main_footer.bb; #include doc/macros/main_footer.bb;

View File

@ -581,12 +581,29 @@ function contact_remove($channel_id, $abook_id) {
function random_profile() { function random_profile() {
$randfunc = db_getfunc('rand'); $randfunc = db_getfunc('rand');
$r = q("select xchan_url from xchan left join hubloc on hubloc_hash = xchan_hash where hubloc_connected > %s - interval %s order by $randfunc limit 1",
db_utcnow(), db_quoteinterval('30 day') $checkrandom = get_config('randprofile','check'); // False by default
); $retryrandom = intval(get_config('randprofile','retry'));
if($r) if($retryrandom === false) $retryrandom = 5;
return $r[0]['xchan_url'];
for($i = 0; $i < $retryrandom; $i++) {
$r = q("select xchan_url from xchan left join hubloc on hubloc_hash = xchan_hash where hubloc_connected > %s - interval %s order by $randfunc limit 1",
db_utcnow(), db_quoteinterval('30 day')
);
if(!$r) return ''; // Couldn't get a random channel
if($checkrandom) {
if(z_fetch_url($r[0]['xchan_url'])['success'])
return $r[0]['xchan_url'];
else
logger('Random channel turned out to be bad.');
}
else {
return $r[0]['xchan_url'];
}
}
return ''; return '';
} }