return $flink;
}
- function set_flags($noticesend, $noticerecv, $replysync, $friendsync)
+ function set_flags($noticesend, $noticerecv, $replysync, $repeatsync, $friendsync)
{
if ($noticesend) {
$this->noticesync |= FOREIGN_NOTICE_SEND;
$this->noticesync &= ~FOREIGN_NOTICE_SEND_REPLY;
}
+ if ($repeatsync) {
+ $this->noticesync |= FOREIGN_NOTICE_SEND_REPEAT;
+ } else {
+ $this->noticesync &= ~FOREIGN_NOTICE_SEND_REPEAT;
+ }
+
if ($friendsync) {
$this->friendsync |= FOREIGN_FRIEND_RECV;
} else {
define('FOREIGN_NOTICE_SEND', 1);
define('FOREIGN_NOTICE_RECV', 2);
define('FOREIGN_NOTICE_SEND_REPLY', 4);
+define('FOREIGN_NOTICE_SEND_REPEAT', 8);
define('FOREIGN_FRIEND_SEND', 1);
define('FOREIGN_FRIEND_RECV', 2);
$replysync = $this->boolean('replysync');
$original = clone($this->flink);
- $this->flink->set_flags($noticesync, false, $replysync, false);
+ // TODO: Allow disabling of repeats
+ $this->flink->set_flags($noticesync, false, $replysync, true, false);
$result = $this->flink->update($original);
if ($result === false) {
// Defaults: noticesync on, everything else off
- $flink->set_flags(true, false, false, false);
+ $flink->set_flags(true, false, false, false, false);
$flink_id = $flink->insert();
$this->flink->noticesync & FOREIGN_NOTICE_SEND_REPLY);
$this->elementEnd('li');
$this->elementStart('li');
+ $this->checkbox('repeatsync',
+ // TRANS: Checkbox label.
+ _m('Send local repeats to Twitter.'),
+ $this->flink->noticesync & FOREIGN_NOTICE_SEND_REPEAT);
+ $this->elementEnd('li');
+ $this->elementStart('li');
$this->checkbox('friendsync',
// TRANS: Checkbox label.
_m('Subscribe to my Twitter friends here.'),
$noticerecv = $this->boolean('noticerecv');
$friendsync = $this->boolean('friendsync');
$replysync = $this->boolean('replysync');
+ $repeatsync = $this->boolean('repeatsync');
if (!$this->flink instanceof Foreign_link) {
common_log_db_error($this->flink, 'SELECT', __FILE__);
$original = clone($this->flink);
$wasReceiving = (bool)($original->noticesync & FOREIGN_NOTICE_RECV);
- $this->flink->set_flags($noticesend, $noticerecv, $replysync, $friendsync);
+ $this->flink->set_flags($noticesend, $noticerecv, $replysync, $repeatsync, $friendsync);
$result = $this->flink->update($original);
if ($result === false) {
return false;
}
- $allowedVerbs = array(ActivityVerb::POST, ActivityVerb::SHARE);
+ $allowedVerbs = array(ActivityVerb::POST);
+
+ // Default behavior: always send repeats
+ if (empty($flink))
+ array_push($allowedVerbs, ActivityVerb::SHARE);
+ // Otherwise, check to see if repeats are allowed
+ else if (($flink->noticesync & FOREIGN_NOTICE_SEND_REPEAT) == FOREIGN_NOTICE_SEND_REPEAT)
+ array_push($allowedVerbs, ActivityVerb::SHARE);
// Don't send things that aren't posts or repeats (at least for now)
if (!in_array($notice->verb, $allowedVerbs)) {