[xoops-cvslog 2901] CVS update: xoops2jp/html/modules/user/class

Back to archive index

Minahito minah****@users*****
2006年 4月 27日 (木) 19:26:11 JST


Index: xoops2jp/html/modules/user/class/mailjob.php
diff -u xoops2jp/html/modules/user/class/mailjob.php:1.1.2.3 xoops2jp/html/modules/user/class/mailjob.php:1.1.2.4
--- xoops2jp/html/modules/user/class/mailjob.php:1.1.2.3	Tue Mar 28 22:32:03 2006
+++ xoops2jp/html/modules/user/class/mailjob.php	Thu Apr 27 19:26:11 2006
@@ -4,28 +4,147 @@
 
 class UserMailjobObject extends XoopsSimpleObject
 {
+	var $mUsers = array();
+	var $_mUsersLoadedFlag = false;
+	var $mUserCount = 0;
+	
 	function UserMailjobObject()
 	{
-		$this->initVar('id', XOBJ_DTYPE_INT, '', true);
-		$this->initVar('lastlogin', XOBJ_DTYPE_INT, '', false);
-		$this->initVar('lastlogin_flag', XOBJ_DTYPE_BOOL, '0', true);
-		$this->initVar('mailok', XOBJ_DTYPE_BOOL, '0', true);
-		$this->initVar('activeuser', XOBJ_DTYPE_BOOL, '0', true);
-		$this->initVar('registdate', XOBJ_DTYPE_INT, '0', false);
-		$this->initVar('registdate_flag', XOBJ_DTYPE_BOOL, '0', true);
-		$this->initVar('sender', XOBJ_DTYPE_STRING, '', false, 255);
-		$this->initVar('email', XOBJ_DTYPE_STRING, '', false, 255);
-		$this->initVar('subject', XOBJ_DTYPE_STRING, '', true, 255);
+		$this->initVar('mailjob_id', XOBJ_DTYPE_INT, '', false);
+		$this->initVar('title', XOBJ_DTYPE_STRING, '', true, 255);
 		$this->initVar('body', XOBJ_DTYPE_TEXT, '', true);
-		$this->initVar('by_pm', XOBJ_DTYPE_BOOL, '0', true);
-		$this->initVar('by_email', XOBJ_DTYPE_BOOL, '0', true);
+		$this->initVar('from_name', XOBJ_DTYPE_STRING, '', false, 255);
+		$this->initVar('from_email', XOBJ_DTYPE_STRING, '', false, 255);
+		$this->initVar('is_pm', XOBJ_DTYPE_BOOL, '0', true);
+		$this->initVar('is_mail', XOBJ_DTYPE_BOOL, '0', true);
+		$this->initVar('create_unixtime', XOBJ_DTYPE_INT, time(), true);
+	}
+
+	/**
+	 * Count the number of target users, and set it to mUserCount. 
+	 */	
+	function loadUserCount()
+	{
+		$handler =& xoops_getmodulehandler('mailjob_link', 'user');
+		$this->mUserCount = $handler->getCount(new Criteria('mailjob_id', $this->get('mailjob_id')));
+	}
+	
+	/**
+	 * Load the uid list of target users.
+	 */
+	function loadUser()
+	{
+		if (!$this->_mUsersLoadedFlag) {
+			$handler =& xoops_getmodulehandler('mailjob_link', 'user');
+			$this->mUsers =& $handler->getObjects(new Criteria('mailjob_id', $this->get('mailjob_id')));
+			$this->_mUsersLoadedFlag = true;
+		}
+	}
+	
+	function send($from_user)
+	{
+		$root =& XCube_Root::getSingleton();
+		
+		$root->mEventManager->add("Module.User.Mailjob.ReplaceBody", new XCube_InstanceDelegate($this, "getReplaceBody"));
+
+		if ($this->get('is_pm')) {
+			$root->mEventManager->add("Module.User.Mailjob.Send", new XCube_InstanceDelegate($this, "sendPM"));
+		}
+		
+		$this->loadUser();
+		$handler =& xoops_getmodulehandler('mailjob_link', 'user');
+
+		$userHandler =& xoops_gethandler('user');
+		
+		foreach ($this->mUsers as $link) {
+			$to_user =& $userHandler->get($link->get('uid'));
+			
+			if (is_object($to_user)) {
+				$eventArgs = array();
+				$eventArgs['from_user'] =& $from_user;
+				$eventArgs['to_user'] =& $to_user;
+				$eventArgs['mailjob'] =& $this;
+			
+				$root->mEventManager->raiseEvent('Module.User.Mailjob.Send', $this, $eventArgs);
+			}
+			
+			$handler->delete($link);
+		}
+	}
+	
+	function getReplaceBody(&$sender, &$eventArgs)
+	{
+		//
+		// TODO Replace subject, too. (We wait new delegate class)
+		//
+		$eventArgs['body'] = str_replace('{X_UID}', $eventArgs['to_user']->get('uid'), $eventArgs['body']);
+		$eventArgs['body'] = str_replace('{X_UNAME}', $eventArgs['to_user']->get('uname'), $eventArgs['body']);
+		$eventArgs['body'] = str_replace('{X_UEMAIL}', $eventArgs['to_user']->get('email'), $eventArgs['body']);
+		$eventArgs['body'] = str_replace('{X_UEMAIL}', $eventArgs['to_user']->get('email'), $eventArgs['body']);
+		// TODO {X_UACTLINK}
+	}
+	
+	function sendPM(&$sender, &$eventArgs)
+	{
+		$root =& XCube_Root::getSingleton();
+		$serviceMgr =& $root->getServiceManager();
+		$pmService =& $serviceMgr->searchXCubeService('PrivateMessage');
+		
+		$pmClient =& new XCube_ServiceClient($pmService);
+		
+		//
+		// Convert body message.
+		//
+		$replaceEventArgs = array();
+		$replaceEventArgs['body'] = $eventArgs['mailjob']->get('body');
+		$replaceEventArgs['to_user'] =& $eventArgs['to_user'];
+		$replaceEventArgs['from_user'] =& $eventArgs['from_user'];
+		$replaceEventArgs['mailjob'] =& $eventArgs['mailjob'];
+		$root->mEventManager->raiseEvent('Module.User.Mailjob.ReplaceBody', $this, $replaceEventArgs);
+		
+		$param = array(
+			'to_uid' => $eventArgs['to_user']->get('uid'),
+			'from_uid' => $eventArgs['from_user']->get('uid'),
+			'subject' => $eventArgs['mailjob']->get('title'),
+			'message' => $replaceEventArgs['body']
+		);
+
+		$result =& $pmClient->call('send', $param);
+	}
+
+	function sendMail(&$sender, &$eventArgs)
+	{
+		$root =& XCube_Root::getSingleton();
+		$serviceMgr =& $root->getServiceManager();
+		$pmService =& $serviceMgr->searchXCubeService('PrivateMessage');
+		
+		$pmClient =& new XCube_ServiceClient($pmService);
+		
+		//
+		// Convert body message.
+		//
+		$replaceEventArgs = array();
+		$replaceEventArgs['body'] = $eventArgs['mailjob']->get('body');
+		$replaceEventArgs['to_user'] =& $eventArgs['to_user'];
+		$replaceEventArgs['from_user'] =& $eventArgs['from_user'];
+		$replaceEventArgs['mailjob'] =& $eventArgs['mailjob'];
+		$root->mEventManager->raiseEvent('Module.User.Mailjob.ReplaceBody', $this, $replaceEventArgs);
+		
+		$param = array(
+			'to_uid' => $eventArgs['to_user']->get('uid'),
+			'from_uid' => $eventArgs['from_user']->get('uid'),
+			'subject' => $eventArgs['mailjob']->get('title'),
+			'message' => $replaceEventArgs['body']
+		);
+
+		$result =& $pmClient->call('send', $param);
 	}
 }
 
 class UserMailjobHandler extends XoopsObjectGenericHandler
 {
 	var $mTable = "user_mailjob";
-	var $mPrimary = "id";
+	var $mPrimary = "mailjob_id";
 	var $mClass = "UserMailjobObject";
 }
 


xoops-cvslog メーリングリストの案内
Back to archive index