* This will change in the future.
*/
+use \Friendica\Core\Config;
+
require_once("include/items.php");
require_once("include/bb2diaspora.php");
require_once("include/Scrape.php");
foreach($servers AS $server) {
$server = trim($server);
+ $addr = "relay@".str_replace("http://", "", normalise_link($server));
$batch = $server."/receive/public";
- $relais = q("SELECT `batch`, `id`, `name`,`network` FROM `contact` WHERE `uid` = 0 AND `batch` = '%s' LIMIT 1", dbesc($batch));
+ $relais = q("SELECT `batch`, `id`, `name`,`network` FROM `contact` WHERE `uid` = 0 AND `batch` = '%s' AND `addr` = '%s' AND `nurl` = '%s' LIMIT 1",
+ dbesc($batch), dbesc($addr), dbesc(normalise_link($server)));
if (!$relais) {
- $addr = "relay@".str_replace("http://", "", normalise_link($server));
-
$r = q("INSERT INTO `contact` (`uid`, `created`, `name`, `nick`, `addr`, `url`, `nurl`, `batch`, `network`, `rel`, `blocked`, `pending`, `writable`, `name-date`, `uri-date`, `avatar-date`)
VALUES (0, '%s', '%s', 'relay', '%s', '%s', '%s', '%s', '%s', %d, 0, 0, 1, '%s', '%s', '%s')",
datetime_convert(),
return false;
}
- // Use a dummy importer to import the data for the public copy
- $importer = array("uid" => 0, "page-flags" => PAGE_FREELOVE);
- $message_id = self::dispatch($importer,$msg);
-
// Now distribute it to the followers
$r = q("SELECT `user`.* FROM `user` WHERE `user`.`uid` IN
(SELECT `contact`.`uid` FROM `contact` WHERE `contact`.`network` = '%s' AND `contact`.`addr` = '%s')
dbesc(NETWORK_DIASPORA),
dbesc($msg["author"])
);
- if ($r) {
+
+ if (dbm::is_result($r)) {
foreach ($r as $rr) {
logger("delivering to: ".$rr["username"]);
self::dispatch($rr,$msg);
}
- } else
- logger("No subscribers for ".$msg["author"]." ".print_r($msg, true));
+ } else {
+ $social_relay = (bool)Config::get('system', 'relay_subscribe', false);
+
+ // Use a dummy importer to import the data for the public copy
+ if ($social_relay) {
+ $importer = array("uid" => 0, "page-flags" => PAGE_FREELOVE);
+ $message_id = self::dispatch($importer,$msg);
+ } else {
+ logger("Unwanted message from ".$msg["author"]." send by ".$_SERVER["REMOTE_ADDR"]." with ".$_SERVER["HTTP_USER_AGENT"].": ".print_r($msg, true), LOGGER_DEBUG);
+ }
+ }
return $message_id;
}
* @return The contact id
*/
private static function contact_by_handle($uid, $handle) {
+
+ // First do a direct search on the contact table
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `addr` = '%s' LIMIT 1",
intval($uid),
dbesc($handle)
);
- if ($r)
+ if (dbm::is_result($r)) {
return $r[0];
+ } else {
+ // We haven't found it?
+ // We use another function for it that will possibly create a contact entry
+ $cid = get_contact($handle, $uid);
+
+ if ($cid > 0) {
+ $r = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1", intval($cid));
+
+ if (dbm::is_result($r)) {
+ return $r[0];
+ }
+ }
+ }
$handle_parts = explode("@", $handle);
$nurl_sql = "%%://".$handle_parts[1]."%%/profile/".$handle_parts[0];
intval($uid),
dbesc($nurl_sql)
);
- if($r)
+ if (dbm::is_result($r)) {
return $r[0];
+ }
+ logger("Haven't found contact for user ".$uid." and handle ".$handle, LOGGER_DEBUG);
return false;
}
dbesc($guid)
);
- if ($r) {
+ if (dbm::is_result($r)) {
logger("message ".$guid." already exists for user ".$uid);
return $r[0]["id"];
}
dbesc($target_guid),
intval($importer["uid"])
);
- if (!$r)
+ if (!$r) {
return false;
+ }
// Check if the sender is the thread owner
$p = q("SELECT `id`, `author-link`, `origin` FROM `item` WHERE `id` = %d",
logger("Deleted target ".$target_guid." (".$r[0]["id"].") from user ".$importer["uid"]." parent: ".$p[0]["id"], LOGGER_DEBUG);
// Now check if the retraction needs to be relayed by us
- if($p[0]["origin"]) {
+ if ($p[0]["origin"]) {
// notify others
proc_run(PRIORITY_HIGH, "include/notifier.php", "drop", $r[0]["id"]);
}
* @return string the handle in the format user@domain.tld
*/
private static function my_handle($contact) {
- if ($contact["addr"] != "")
+ if ($contact["addr"] != "") {
return $contact["addr"];
+ }
// Normally we should have a filled "addr" field - but in the past this wasn't the case
// So - just in case - we build the the address here.
- if ($contact["nickname"] != "")
+ if ($contact["nickname"] != "") {
$nick = $contact["nickname"];
- else
+ } else {
$nick = $contact["nick"];
+ }
return $nick."@".substr(App::get_baseurl(), strpos(App::get_baseurl(),"://") + 3);
}