/** * Sends a Direct Message to yourself or to a follower as a RADRIA Event * @param object EventControler * * Example: * * $do_twitter = new OfuzTwitter(); * $do_twitter->sessionPersistent('do_twitter', 'signout.php', 36000); * $e_tw_message = new Event('do_twitter->eventSendDirectMessage'); * $e_tw_message->addParam('goto',$_SERVER['PHP_SELF']); * $e_tw_message->addParam('message','Hello from Ofuz!'); * echo _('Click '),$e_tw_message->getLink('HERE'),' to send a test tweet.'; */ function eventSendDirectMessage(EventControler $evtcl) { $token = unserialize($this->getAccessToken()); $tw_user_id = $token->getParam('user_id'); $config = $this->getTwitterConfig(); $twitter = new Ofuz_Service_Twitter($tw_user_id, $config, $token); $response = $twitter->directMessageNew($tw_user_id, $evtcl->message); }
/** * sendMessage * This abstract the message sending so we use a general function * that will send email or facebook or twitter based on the user * preferences and settings. * its possible to generate an EmailTemplate on the fly with no records in the DB * Here is an exemple: * <code php> * $do_template = new EmailTemplate(); * $do_template->senderemail = "*****@*****.**"; * $do_template->sendername = "Philippe Lewicki"; * $do_template->subject = "This is an example"; * $do_template->bodytext = "This is the content of the sample message"; * $do_template->bodyhtml = nl2br($do_template->bodytext); * </code> * * An other example more OO / stylish * <code php> * $do_template = new EmailTemplate(); * $do_template->setFrom("*****@*****.**", "Philippe Lewicki") * ->setSubject("This is an example") * ->setMessage("This is the content of the sample message"); * </code> * setFrom() is optional, if not provided it takes the do_User data * * Then send the message with: $contact->sendMessage($do_template); * * If you used a saved EmailTemplate like * $do_template = new EmailTemplate("my template in email template table"); * and want the sender to be the currently signed in user, make sure the senderemail field * is empty. * * @param $message an EmailTemplate object. * @param $values an array with values to merge, optional. * */ function sendMessage($template, $values = array()) { if (!is_object($template)) { return false; } if (empty($values)) { $values = $this->getValues(); } $this->last_message_sent = false; $do_contact_email = $this->getChildContactEmail(); $email_to = $do_contact_email->getDefaultEmail(); $this->setLog("\n Sending message to:" . $email_to); $contact_link = '<a href="/Contact/' . $this->idcontact . '">' . $this->firstname . ' ' . $this->lastname . '</a>'; if (strlen($email_to) > 4) { if ($this->email_optout != 'y') { $emailer = new Ofuz_Emailer('UTF-8'); if (strlen($template->senderemail) == 0) { $template->setFrom($_SESSION['do_User']->email, $_SESSION['do_User']->getFullName()); } $emailer->setEmailTemplate($template); $emailer->mergeArrayWithFooter($values); $emailer->addTo($email_to); $this->last_message_sent = true; return $emailer->send(); } else { $_SESSION['in_page_message'] .= _("<br>" . $contact_link . " has opt-out and will not receive this email"); } } elseif (strlen($this->tw_user_id) > 0) { // send direct message using twitter api. try { $do_twitter = new OfuzTwitter(); $tw_config = $do_twitter->getTwitterConfig(); $serialized_token = $do_twitter->getAccessToken(); $token = unserialize($serialized_token); $ofuz_twitter = new Ofuz_Service_Twitter($token->getParam('user_id'), $tw_config, $token); $followers = $ofuz_twitter->userFollowers(false); if (is_object($followers) && count($followers->user) > 0) { foreach ($followers->user as $follower) { if ($follower->id == $this->tw_user_id) { $merge = new MergeString(); $message = $merge->withArray($template->bodytext, $values); $ofuz_twitter->directMessageNew($this->tw_user_id, $message); $do_contact_notes = new ContactNotes(); $do_contact_notes->iduser = $_SESSION['do_User']->iduser; $do_contact_notes->note = $message; $do_contact_notes->date_added = date('Y-m-d'); $do_contact_notes->idcontact = $this->idcontact; $do_contact_notes->add(); return true; } } } $_SESSION['in_page_message'] .= _("<br>Notification can not be sent to " . $contact_link); } catch (Exception $e) { $_SESSION['in_page_message'] .= _("<br>Notification can not be sent to " . $contact_link); } } elseif ($this->fb_userid && $_SESSION["do_User"]->global_fb_connected) { // send message using facebook api. include_once 'facebook_client/facebook.php'; include_once 'class/OfuzFacebook.class.php'; $facebook = new Facebook(FACEBOOK_API_KEY, FACEBOOK_APP_SECRET); try { $msg = _(' has sent the following message using ofuz') . '<br />'; $msg .= '<b>' . $template->subject . '</b><br/>' . $template->bodyhtml; $facebook->api_client->notifications_send($this->fb_userid, $msg, 'user_to_user'); //$this->last_message_sent = true; } catch (Exception $e) { $_SESSION['in_page_message'] .= _("<br>Notification can not be sent to " . $contact_link); } } else { $_SESSION['in_page_message'] .= _("<br>" . $contact_link . " doesn't have a valid email address, facebook account, or twitter id."); } if ($this->last_message_sent) { return true; } else { return false; } }