Esempio n. 1
0
 /**
  * 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);
 }
Esempio n. 2
0
 /**
  *  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;
     }
 }