X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=xmppdaemon.php;h=9aaa953fd0c3016e027c579b889bf164e3942247;hb=72fda63585b4c6dae290ae08de4a0f33e1bb252c;hp=da5ffb9f4e03daf26a2018b57509359542ef2e7b;hpb=62db03d31fc1341fb3eb83e1aed9b1972f1252b0;p=quix0rs-gnu-social.git diff --git a/xmppdaemon.php b/xmppdaemon.php index da5ffb9f4e..9aaa953fd0 100755 --- a/xmppdaemon.php +++ b/xmppdaemon.php @@ -98,7 +98,12 @@ class XMPPDaemon { $this->confirmation_queue(); } } - + + function handle_session($pl) { + # XXX what to do here? + return true; + } + function get_user($from) { $user = User::staticGet('jabber', jabber_normalize_jid($from)); return $user; @@ -135,11 +140,22 @@ class XMPPDaemon { } if ($this->handle_command($user, $pl['body'])) { return; + } else if ($this->is_autoreply($pl['body'])) { + $this->log(LOG_INFO, 'Ignoring auto reply from ' . $from); + return; } else { $this->add_notice($user, $pl); } } + function is_autoreply($txt) { + if (preg_match('/[\[\(]?[Aa]uto-?[Rr]eply[\]\)]/', $txt)) { + return true; + } else { + return false; + } + } + function from_site($address, $msg) { $text = '['.common_config('site', 'name') . '] ' . $msg; jabber_send_message($address, $text); @@ -181,6 +197,7 @@ class XMPPDaemon { $notice = new Notice(); $notice->profile_id = $user->id; $notice->content = trim(substr($pl['body'], 0, 140)); + $notice->rendered = common_render_content($notice->content, $notice); $notice->created = DB_DataObject_Cast::dateTime(); $notice->query('BEGIN'); $id = $notice->insert(); @@ -204,6 +221,7 @@ class XMPPDaemon { return; } $notice->query('COMMIT'); + common_save_replies($notice); common_real_broadcast($notice); $this->log(LOG_INFO, 'Added notice ' . $notice->id . ' from user ' . $user->nickname); @@ -315,6 +333,7 @@ class XMPPDaemon { function clear_old_claims() { $qi = new Queue_item(); + $qi->claimed = NULL; $qi->whereAdd('now() - claimed > '.CLAIM_TIMEOUT); $qi->update(DB_DATAOBJECT_WHEREADD_ONLY); } @@ -325,7 +344,7 @@ class XMPPDaemon { } function confirmation_queue() { - $this->clear_old_confirm_claims(); + # $this->clear_old_confirm_claims(); $this->log(LOG_INFO, 'checking for queued confirmations'); do { $confirm = $this->next_confirm(); @@ -336,10 +355,9 @@ class XMPPDaemon { $this->log(LOG_WARNING, 'Confirmation for unknown user ' . $confirm->user_id); continue; } - $success = jabber_confirm_address($confirm->code, - $user->nickname, - $jabber); + $user->nickname, + $confirm->address); if (!$success) { $this->log(LOG_ERROR, 'Confirmation failed for ' . $confirm->address); # Just let the claim age out; hopefully things work then @@ -348,7 +366,7 @@ class XMPPDaemon { $this->log(LOG_INFO, 'Confirmation sent for ' . $confirm->address); # Mark confirmation sent $original = clone($confirm); - $confirm->sent = DB_DataObject_Cast::dateTime(); + $confirm->sent = $confirm->claimed; $result = $confirm->update($original); if (!$result) { $this->log(LOG_ERROR, 'Cannot mark sent for ' . $confirm->address); @@ -362,19 +380,21 @@ class XMPPDaemon { function next_confirm() { $confirm = new Confirm_address(); - $confirm->sent = NULL; - $confirm->claimed = NULL; + $confirm->whereAdd('claimed IS NULL'); + $confirm->whereAdd('sent IS NULL'); # XXX: eventually we could do other confirmations in the queue, too $confirm->address_type = 'jabber'; $confirm->orderBy('modified DESC'); $confirm->limit(1); if ($confirm->find(TRUE)) { $this->log(LOG_INFO, 'Claiming confirmation for ' . $confirm->address); - $original = clone($confirm); + # working around some weird DB_DataObject behaviour + $confirm->whereAdd(''); # clears where stuff + $original = clone($confirm); $confirm->claimed = DB_DataObject_Cast::dateTime(); $result = $confirm->update($original); if ($result) { - $this->log(LOG_INFO, 'Succeeded in claim!'); + $this->log(LOG_INFO, 'Succeeded in claim! '. $result); return $confirm; } else { $this->log(LOG_INFO, 'Failed in claim!'); @@ -386,6 +406,7 @@ class XMPPDaemon { function clear_old_confirm_claims() { $confirm = new Confirm(); + $confirm->claimed = NULL; $confirm->whereAdd('now() - claimed > '.CLAIM_TIMEOUT); $confirm->update(DB_DATAOBJECT_WHEREADD_ONLY); }