aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMario Vavti <mario@mariovavti.com>2021-06-03 10:59:12 +0200
committerMario Vavti <mario@mariovavti.com>2021-06-03 10:59:12 +0200
commit440f7bacd62cd277e8d9d4341675e8c5f5e7485a (patch)
tree9ef59c8eef05ca0a3e69e9b28e2b036ce7dd0600
parent2ec2da5dff1f8be28c6f625a37295a9410d35593 (diff)
downloadvolse-hubzilla-440f7bacd62cd277e8d9d4341675e8c5f5e7485a.tar.gz
volse-hubzilla-440f7bacd62cd277e8d9d4341675e8c5f5e7485a.tar.bz2
volse-hubzilla-440f7bacd62cd277e8d9d4341675e8c5f5e7485a.zip
directory improvements
-rw-r--r--Zotlabs/Daemon/Onedirsync.php6
-rw-r--r--Zotlabs/Lib/Libzotdir.php11
-rw-r--r--Zotlabs/Module/Dirsearch.php85
3 files changed, 44 insertions, 58 deletions
diff --git a/Zotlabs/Daemon/Onedirsync.php b/Zotlabs/Daemon/Onedirsync.php
index 9ab8ebb54..35d0ae604 100644
--- a/Zotlabs/Daemon/Onedirsync.php
+++ b/Zotlabs/Daemon/Onedirsync.php
@@ -25,6 +25,7 @@ class Onedirsync {
if (!$r)
return;
+
if (($r[0]['ud_flags'] & UPDATE_FLAGS_UPDATED) || (!$r[0]['ud_addr']))
return;
@@ -50,18 +51,17 @@ class Onedirsync {
// ignore doing an update if this ud_addr refers to a known dead hubloc
$h = q("select * from hubloc where hubloc_addr = '%s'",
- dbesc($r[0]['ud_addr'])
+ dbesc($r[0]['ud_addr']),
);
$h = Libzot::zot_record_preferred($h);
- if (($h) && ($h['hubloc_status'] & HUBLOC_OFFLINE)) {
+ if (($h) && (($h['hubloc_status'] & HUBLOC_OFFLINE) || $h['hubloc_deleted'] || $h['hubloc_error'])) {
q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and ( ud_flags & %d ) = 0 ",
intval(UPDATE_FLAGS_UPDATED),
dbesc($r[0]['ud_addr']),
intval(UPDATE_FLAGS_UPDATED)
);
-
return;
}
diff --git a/Zotlabs/Lib/Libzotdir.php b/Zotlabs/Lib/Libzotdir.php
index e095502dd..9042bcd16 100644
--- a/Zotlabs/Lib/Libzotdir.php
+++ b/Zotlabs/Lib/Libzotdir.php
@@ -207,8 +207,6 @@ class Libzotdir {
);
}
-
-
// If there are no directory servers, setup the fallback master
/** @FIXME What to do if we're in a different realm? */
@@ -249,6 +247,7 @@ class Libzotdir {
$syncdate = (($rr['site_sync'] <= NULL_DATE) ? datetime_convert('UTC','UTC','now - 2 days') : $rr['site_sync']);
$x = z_fetch_url($rr['site_directory'] . '?f=&sync=' . urlencode($syncdate) . (($token) ? '&t=' . $token : ''));
+
if (! $x['success'])
continue;
@@ -319,6 +318,14 @@ class Libzotdir {
}
if(array_path_exists('signature/signer',$zf) && $zf['signature']['signer'] === $href && intval($zf['signature']['header_valid'])) {
$xc = Libzot::import_xchan($zf['data'], 0, $ud);
+ // This is a workaround for a missing xchan_updated column
+ // TODO: implement xchan_updated in the xchan table and update this column instead
+ if($zf['data']['primary_location']['address'] && $zf['data']['primary_location']['url']) {
+ q("UPDATE hubloc SET hubloc_updated = '%s' WHERE hubloc_id_url = '%s' AND hubloc_primary = 1",
+ dbesc(datetime_convert()),
+ dbesc($zf['data']['primary_location']['url'])
+ );
+ }
}
else {
q("update updates set ud_last = '%s' where ud_addr = '%s'",
diff --git a/Zotlabs/Module/Dirsearch.php b/Zotlabs/Module/Dirsearch.php
index 3cccaca37..5d748fb80 100644
--- a/Zotlabs/Module/Dirsearch.php
+++ b/Zotlabs/Module/Dirsearch.php
@@ -256,65 +256,44 @@ class Dirsearch extends Controller {
}
else {
- $r = q("SELECT xchan.*, xprof.* from xchan left join xprof on xchan_hash = xprof_hash
- where ( $logic $sql_extra ) $hub_query and xchan_network = 'zot6' and xchan_system = 0 and xchan_hidden = 0 and xchan_orphan = 0 and xchan_deleted = 0
- $safesql $order $qlimit "
+ $r = q("SELECT
+ xchan.xchan_name as name,
+ xchan.xchan_hash as hash,
+ xchan.xchan_censored as censored,
+ xchan.xchan_selfcensored as selfcensored,
+ xchan.xchan_pubforum as public_forum,
+ xchan.xchan_url as url,
+ xchan.xchan_photo_l as photo_l,
+ xchan.xchan_photo_m as photo,
+ xchan.xchan_addr as address,
+ xprof.xprof_desc as description,
+ xprof.xprof_locale as locale,
+ xprof.xprof_region as region,
+ xprof.xprof_postcode as postcode,
+ xprof.xprof_country as country,
+ xprof.xprof_dob as birthday,
+ xprof.xprof_age as age,
+ xprof.xprof_gender as gender,
+ xprof.xprof_marital as marital,
+ xprof.xprof_sexual as sexual,
+ xprof.xprof_about as about,
+ xprof.xprof_homepage as homepage,
+ xprof.xprof_hometown as hometown,
+ xprof.xprof_keywords as keywords
+ from xchan left join xprof on xchan_hash = xprof_hash left join hubloc on hubloc_hash = xchan_hash
+ where hubloc_primary = 1 and hubloc_updated > %s - INTERVAL %s and ( $logic $sql_extra ) $hub_query and xchan_network = 'zot6' and xchan_system = 0 and xchan_hidden = 0 and xchan_orphan = 0 and xchan_deleted = 0
+ $safesql $order $qlimit",
+ db_utcnow(),
+ db_quoteinterval('30 DAY')
);
-
-
- $ret['page'] = $page + 1;
- $ret['records'] = count($r);
}
-
-
if($r) {
+ $ret['results'] = $r;
+ $ret['page'] = $page + 1;
+ $ret['records'] = count($r);
- $entries = array();
-
- foreach($r as $rr) {
-
- $entry = array();
-
- $pc = q("select count(xlink_rating) as total_ratings from xlink where xlink_link = '%s' and xlink_rating != 0 and xlink_static = 1 group by xlink_rating",
- dbesc($rr['xchan_hash'])
- );
-
- if($pc)
- $entry['total_ratings'] = intval($pc[0]['total_ratings']);
- else
- $entry['total_ratings'] = 0;
-
- $entry['name'] = $rr['xchan_name'];
- $entry['hash'] = $rr['xchan_hash'];
- $entry['censored'] = $rr['xchan_censored'];
- $entry['selfcensored'] = $rr['xchan_selfcensored'];
- $entry['public_forum'] = (intval($rr['xchan_pubforum']) ? true : false);
- $entry['url'] = $rr['xchan_url'];
- $entry['photo_l'] = $rr['xchan_photo_l'];
- $entry['photo'] = $rr['xchan_photo_m'];
- $entry['address'] = $rr['xchan_addr'];
- $entry['description'] = $rr['xprof_desc'];
- $entry['locale'] = $rr['xprof_locale'];
- $entry['region'] = $rr['xprof_region'];
- $entry['postcode'] = $rr['xprof_postcode'];
- $entry['country'] = $rr['xprof_country'];
- $entry['birthday'] = $rr['xprof_dob'];
- $entry['age'] = $rr['xprof_age'];
- $entry['gender'] = $rr['xprof_gender'];
- $entry['marital'] = $rr['xprof_marital'];
- $entry['sexual'] = $rr['xprof_sexual'];
- $entry['about'] = $rr['xprof_about'];
- $entry['homepage'] = $rr['xprof_homepage'];
- $entry['hometown'] = $rr['xprof_hometown'];
- $entry['keywords'] = $rr['xprof_keywords'];
-
- $entries[] = $entry;
-
- }
-
- $ret['results'] = $entries;
if($kw) {
$k = dir_tagadelic($kw, $hub);
if($k) {