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)
[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).
[b]system > admin_email[/b]
Specifies the administrators email for this site. This is initially set during install.
[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.
[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
[b]system > blacklisted_sites[/b]
An array of specific hubs to block from this hub completely.
[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.
[b]system > no_age_restriction[/b]
Do not restric registration to people over the age of 13
[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.
[b]system > projecthome[/b]
Display the project page on your home page for logged out viewers.
[b]system > sellpage[/b]
A URL shown in the public sites list to sell your hub - display service classes, etc.
[b]system > admin_email[/b]
Specifies the administrators email for this site. This is initially set during install.
[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.
[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
[b]system > blacklisted_sites[/b]
An array of specific hubs to block from this hub completely.
[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.
[b]system > no_age_restriction[/b]
Do not restric registration to people over the age of 13
[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.
[b]system > projecthome[/b]
Display the project page on your home page for logged out viewers.
[b]system > sellpage[/b]
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;

View file

@ -581,12 +581,29 @@ function contact_remove($channel_id, $abook_id) {
function random_profile() {
$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')
);
if($r)
return $r[0]['xchan_url'];
$checkrandom = get_config('randprofile','check'); // False by default
$retryrandom = intval(get_config('randprofile','retry'));
if($retryrandom === false) $retryrandom = 5;
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 '';
}