X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FMsn%2FMsnPlugin.php;h=187486eedcb687aa4e75a429ef09446a8864d9a1;hb=5bf0c9f610d2fe7852ffafbcd51436c9e057b0a7;hp=6737e727abe9aa488b02009c3e0ba9b1a1903577;hpb=0264f66d76f6a8e5669d305985f96533a156e9ae;p=quix0rs-gnu-social.git diff --git a/plugins/Msn/MsnPlugin.php b/plugins/Msn/MsnPlugin.php index 6737e727ab..187486eedc 100644 --- a/plugins/Msn/MsnPlugin.php +++ b/plugins/Msn/MsnPlugin.php @@ -1,173 +1,216 @@ -. - * - * @category IM - * @package StatusNet - * @author Craig Andrews - * @copyright 2009 StatusNet, Inc. - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 - * @link http://status.net/ - */ - -if (!defined('STATUSNET')) { - // This check helps protect against security problems; - // your code file can't be executed directly from the web. - exit(1); -} -// We bundle the phptoclib library... -set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/extlib/phptoclib'); - -/** - * Plugin for AIM - * - * @category Plugin - * @package StatusNet - * @author Craig Andrews - * @copyright 2009 StatusNet, Inc. - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 - * @link http://status.net/ - */ - -class MsnPlugin extends ImPlugin -{ - public $user = null; - public $password = null; - public $publicFeed = array(); - - public $transport = 'msnim'; - - function getDisplayName() - { - return _m('MSN'); - } - - function normalize($screenname) - { - $screenname = str_replace(" ","", $screenname); - return strtolower($screenname); - } - - function daemon_screenname() - { - return $this->user; - } - - function validate($screenname) - { - if(preg_match('/^[a-z]\w{2,15}$/i', $screenname)) { - return true; - }else{ - return false; - } - } - - /** - * Load related modules when needed - * - * @param string $cls Name of the class to be loaded - * - * @return boolean hook value; true means continue processing, false means stop. - */ - function onAutoload($cls) - { - $dir = dirname(__FILE__); - - switch ($cls) - { - case 'Msn': - require_once(INSTALLDIR.'/plugins/Msn/extlib/phpmsnclass/msn.class.php'); - return false; - case 'MsnManager': - include_once $dir . '/'.strtolower($cls).'.php'; - return false; - case 'Fake_Msn': - include_once $dir . '/'. $cls .'.php'; - return false; - default: - return true; - } - } - - function onStartImDaemonIoManagers(&$classes) - { - parent::onStartImDaemonIoManagers(&$classes); - $classes[] = new MsnManager($this); // handles sending/receiving - return true; - } - - function microiduri($screenname) - { - return 'msnim:' . $screenname; - } - - function send_message($screenname, $body) - { - //$this->fake_aim->sendIm($screenname, $body); - //$this->enqueue_outgoing_raw($this->fake_aim->would_be_sent); - $this->enqueue_outgoing_raw(array($screenname, $body)); - return true; - } - - /** - * Accept a queued input message. - * - * @return true if processing completed, false if message should be reprocessed - */ - function receive_raw_message($message) - { - $info=Aim::getMessageInfo($message); - $from = $info['from']; - $user = $this->get_user($from); - $notice_text = $info['message']; - - $this->handle_incoming($from, $notice_text); - - return true; - } - - function initialize(){ - if(!isset($this->user)){ - throw new Exception("must specify a user"); - } - if(!isset($this->password)){ - throw new Exception("must specify a password"); - } - if(!isset($this->nickname)) { - throw new Exception("must specify a nickname"); - } - - $this->fake_msn = new Fake_Msn($this->user,$this->password,4); - return true; - } - - function onPluginVersion(&$versions) - { - $versions[] = array('name' => 'MSN', - 'version' => STATUSNET_VERSION, - 'author' => 'Luke Fitzgerald', - 'homepage' => 'http://status.net/wiki/Plugin:MSN', - 'rawdescription' => - _m('The MSN plugin allows users to send and receive notices over the MSN network.')); - return true; - } -} - +. + * + * @category IM + * @package StatusNet + * @author Luke Fitzgerald + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + // This check helps protect against security problems; + // your code file can't be executed directly from the web. + exit(1); +} +// We bundle the phpmsnclass library... +set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/extlib/phpmsnclass'); + +/** + * Plugin for MSN + * + * @category Plugin + * @package StatusNet + * @author Luke Fitzgerald + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +class MsnPlugin extends ImPlugin { + public $user = null; + public $password = null; + public $nickname = null; + public $transport = 'msn'; + + /** + * Get the internationalized/translated display name of this IM service + * + * @return string Name of service + */ + public function getDisplayName() { + return _m('MSN'); + } + + /** + * Normalize a screenname for comparison + * + * @param string $screenname screenname to normalize + * @return string an equivalent screenname in normalized form + */ + public function normalize($screenname) { + $screenname = str_replace(" ","", $screenname); + return strtolower($screenname); + } + + /** + * Get the screenname of the daemon that sends and receives messages + * + * @return string Screenname + */ + public function daemonScreenname() { + return $this->user; + } + + /** + * Validate (ensure the validity of) a screenname + * + * @param string $screenname screenname to validate + * @return boolean + */ + public function validate($screenname) { + return Validate::email($screenname, common_config('email', 'check_domain')); + } + + /** + * Load related modules when needed + * + * @param string $cls Name of the class to be loaded + * @return boolean hook value; true means continue processing, false means stop. + */ + public function onAutoload($cls) { + $dir = dirname(__FILE__); + + switch ($cls) { + case 'MSN': + require_once(INSTALLDIR.'/plugins/Msn/extlib/phpmsnclass/msn.class.php'); + return false; + case 'MsnManager': + case 'Msn_waiting_message': + include_once $dir . '/'.strtolower($cls).'.php'; + return false; + default: + return true; + } + } + + /* + * Start manager on daemon start + * + * @return boolean + */ + public function onStartImDaemonIoManagers(&$classes) { + parent::onStartImDaemonIoManagers(&$classes); + $classes[] = new MsnManager($this); // handles sending/receiving + return true; + } + + /** + * Ensure the database table is present + * + */ + public function onCheckSchema() { + $schema = Schema::get(); + + // For storing messages while sessions become ready + $schema->ensureTable('msn_waiting_message', + array(new ColumnDef('id', 'integer', null, + false, 'PRI', null, null, true), + new ColumnDef('screenname', 'varchar', 255, false), + new ColumnDef('message', 'text', null, false), + new ColumnDef('created', 'datetime', null, false), + new ColumnDef('claimed', 'datetime'))); + + return true; + } + + /** + * Get a microid URI for the given screenname + * + * @param string $screenname + * @return string microid URI + */ + public function microiduri($screenname) { + return 'msnim:' . $screenname; + } + + /** + * Send a message to a given screenname + * + * @param string $screenname Screenname to send to + * @param string $body Text to send + * @return boolean success value + */ + public function sendMessage($screenname, $body) { + $this->enqueueOutgoingRaw(array('to' => $screenname, 'message' => $body)); + return true; + } + + /** + * Accept a queued input message. + * + * @param array $data Data + * @return true if processing completed, false if message should be reprocessed + */ + public function receiveRawMessage($data) { + $this->handleIncoming($data['sender'], $data['message']); + return true; + } + + /** + * Initialize plugin + * + * @return boolean + */ + public function initialize() { + if (!isset($this->user)) { + throw new Exception("Must specify a user"); + } + if (!isset($this->password)) { + throw new Exception("Must specify a password"); + } + if (!isset($this->nickname)) { + throw new Exception("Must specify a nickname"); + } + + return true; + } + + /** + * Get plugin information + * + * @param array $versions array to insert information into + * @return void + */ + public function onPluginVersion(&$versions) { + $versions[] = array( + 'name' => 'MSN', + 'version' => STATUSNET_VERSION, + 'author' => 'Luke Fitzgerald', + 'homepage' => 'http://status.net/wiki/Plugin:MSN', + 'rawdescription' => + _m('The MSN plugin allows users to send and receive notices over the MSN network.') + ); + return true; + } +}