+++ /dev/null
-<?php
-/**
- * @file mod/randprof.php
- */
-use Friendica\App;
-use Friendica\Model\Contact;
-use Friendica\Model\GContact;
-
-function randprof_init(App $a)
-{
- $x = GContact::getRandomUrl();
-
- if ($x) {
- $link = Contact::magicLink($x);
- $a->redirect($link);
- }
-
- $a->internalRedirect('profile');
-}
$collector->addRoute(['GET', 'POST'], '/verify' , Module\Settings\TwoFactor\Verify::class);
});
});
+ $this->routeCollector->addRoute(['GET'], '/randprof', Module\RandomProfile::class);
$this->routeCollector->addRoute(['GET', 'POST'], '/register', Module\Register::class);
$this->routeCollector->addRoute(['GET'], '/robots.txt', Module\RobotsTxt::class);
$this->routeCollector->addRoute(['GET'], '/rsd.xml', Module\ReallySimpleDiscovery::class);
if (isset($params['order'])) {
$order_string = " ORDER BY ";
foreach ($params['order'] AS $fields => $order) {
- if (!is_int($fields)) {
+ if ($order === 'RAND()') {
+ $order_string .= "RAND(), ";
+ } elseif (!is_int($fields)) {
$order_string .= "`" . $fields . "` " . ($order ? "DESC" : "ASC") . ", ";
} else {
$order_string .= "`" . $order . "`, ";
$last_update = date("c", time() - (60 * 60 * 24 * $requery_days));
- $r = q(
- "SELECT `nurl`, `url` FROM `gserver` WHERE `last_contact` >= `last_failure` AND `network` = '%s' AND `last_poco_query` < '%s' ORDER BY RAND() LIMIT 5",
- DBA::escape(Protocol::OSTATUS),
- DBA::escape($last_update)
- );
+ $r = DBA::select('gserver', ['nurl', 'url'], [
+ '`network` = ?
+ AND `last_contact` >= `last_failure`
+ AND `last_poco_query` < ?',
+ Protocol::OSTATUS,
+ $last_update
+ ], [
+ 'limit' => 5,
+ 'order' => ['RAND()']
+ ]);
if (!DBA::isResult($r)) {
return;
}
/**
- * @return string
+ * Returns a random, global contact of the current node
+ *
+ * @return string The profile URL
* @throws Exception
*/
public static function getRandomUrl()
{
- $r = q(
- "SELECT `url` FROM `gcontact` WHERE `network` = '%s'
- AND `last_contact` >= `last_failure`
- AND `updated` > UTC_TIMESTAMP - INTERVAL 1 MONTH
- ORDER BY rand() LIMIT 1",
- DBA::escape(Protocol::DFRN)
- );
+ $r = DBA::selectFirst('gcontact', ['url'], [
+ '`network` = ?
+ AND `last_contact` >= `last_failure`
+ AND `updated` > ?',
+ Protocol::DFRN,
+ DateTimeFormat::utc('now - 1 month'),
+ ], ['order' => ['RAND()']]);
if (DBA::isResult($r)) {
- return dirname($r[0]['url']);
+ return $r['url'];
}
return '';
--- /dev/null
+<?php
+
+namespace Friendica\Module;
+
+use Friendica\BaseModule;
+use Friendica\Model\Contact;
+use Friendica\Model\GContact;
+
+/**
+ * Redirects to a random profile of this node
+ */
+class RandomProfile extends BaseModule
+{
+ public static function content()
+ {
+ $a = self::getApp();
+
+ $contactUrl = GContact::getRandomUrl();
+
+ if ($contactUrl) {
+ $link = Contact::magicLink($contactUrl);
+ $a->redirect($link);
+ }
+
+ $a->internalRedirect('profile');
+ }
+}