aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mod/dfrn_request.php32
1 files changed, 31 insertions, 1 deletions
diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php
index 9755895ce..d7c918490 100644
--- a/mod/dfrn_request.php
+++ b/mod/dfrn_request.php
@@ -252,12 +252,41 @@ function dfrn_request_post(&$a) {
*
* Cleanup old introductions that remain blocked.
* Also remove the contact record, but only if there is no existing relationship
+ * Do not remove email contacts as these may be awaiting email verification
+ */
+
+ $r = q("SELECT `intro`.*, `intro`.`id` AS `iid`, `contact`.`id` AS `cid`, `contact`.`rel`
+ FROM `intro` LEFT JOIN `contact` on `intro`.`contact-id` = `contact`.`id`
+ WHERE `intro`.`blocked` = 1 AND `contact`.`self` = 0
+ AND `contact`.`network` != '%s'
+ AND `intro`.`datetime` < UTC_TIMESTAMP() - INTERVAL 30 MINUTE ",
+ dbesc(NETWORK_MAIL)
+ );
+ if(count($r)) {
+ foreach($r as $rr) {
+ if(! $rr['rel']) {
+ q("DELETE FROM `contact` WHERE `id` = %d LIMIT 1",
+ intval($rr['cid'])
+ );
+ }
+ q("DELETE FROM `intro` WHERE `id` = %d LIMIT 1",
+ intval($rr['iid'])
+ );
+ }
+ }
+
+ /**
*
+ * Cleanup any old email intros - which will have a greater lifetime
*/
$r = q("SELECT `intro`.*, `intro`.`id` AS `iid`, `contact`.`id` AS `cid`, `contact`.`rel`
FROM `intro` LEFT JOIN `contact` on `intro`.`contact-id` = `contact`.`id`
- WHERE `intro`.`blocked` = 1 AND `contact`.`self` = 0 AND `intro`.`datetime` < UTC_TIMESTAMP() - INTERVAL 30 MINUTE ");
+ WHERE `intro`.`blocked` = 1 AND `contact`.`self` = 0
+ AND `contact`.`network` = '%s'
+ AND `intro`.`datetime` < UTC_TIMESTAMP() - INTERVAL 3 DAY ",
+ dbesc(NETWORK_MAIL)
+ );
if(count($r)) {
foreach($r as $rr) {
if(! $rr['rel']) {
@@ -271,6 +300,7 @@ function dfrn_request_post(&$a) {
}
}
+
$url = trim($_POST['dfrn_url']);
if(! strlen($url)) {
notice( t("Invalid locator") . EOL );