Index: trunk/in-bulletin/privatemessage.php =================================================================== diff -u -N --- trunk/in-bulletin/privatemessage.php (revision 12744) +++ trunk/in-bulletin/privatemessage.php (revision 0) @@ -1,369 +0,0 @@ -tablename = GetTablePrefix().'PrivateMessages'; - $this->type = TYPE_MESSAGE; - $this->NoResourceId = 1; - //$this->BasePermission = 'PM'; - $this->id_field = 'PmId'; - $this->TagPrefix = 'pm'; - $prefix = GetTablePrefix(); - $this->SelectSQL = 'SELECT pm.*, pmb.Subject, pmb.Body, pmb.Options, pu.Login - FROM %s AS pm - LEFT JOIN '.$prefix.'PrivateMessageBody AS pmb ON pm.PMBodyId = pmb.PMBodyId - LEFT JOIN '.$prefix.'PortalUser AS pu ON pu.PortalUserId = pm.FromId - WHERE %s'; - } - - function ParseObject($element) - { - global $objSession, $objUsers, $var_list_update, $bb_var_list_update; - - $extra_attribs = ExtraAttributes($element->attributes); - if(strtolower($element->name) == $this->TagPrefix) - { - $field = strtolower( $element->attributes['_field'] ); - switch($field) - { - case 'id': - $ret = $this->UniqueId(); - break; - - case 'body': - global $objCensorList, $objSmileys; - $ret = $this->Get('Body'); - $ret = str_replace( "[/code]\r\n",'[/code]', $ret); - $ret = str_replace('"', '"', $ret); - $ret = $objCensorList->CensorText($ret); - if(!$this->GetOption("disable_smileys")) - { - $ret = $objSmileys->ParseText($ret); - } - - if(!$this->GetOption("disable_bbcode")) - { - $ret = ReplaceBBCode($ret); - } - $ret = nl2br($ret); - - if( $this->GetOption("show_sig") && $element->GetAttributeByName('_signature') > 0 ) - { - $Sender =& $objUsers->GetItem($this->Get('FromId')); - - $showsig = $this->GetOption("show_sig"); // show post creator signature in this post - $UserSig = (int)$objSession->GetPersistantVariable("bb_signatures"); // viewing user wishes to see other signatures - if($showsig == 1 && $UserSig == 1) - { - $sig = $Sender->GetPersistantVariable("my_signature"); - - if( !$this->GetOption("disable_smileys") ) $sig = $objSmileys->ParseText($sig); - if( !$this->GetOption("disable_bbcode") ) $sig = ReplaceBBCode($sig); - $ret .= "

".nl2br($sig); - } - } - break; - - case 'reply_link': - $var_list_update['t'] = $element->GetAttributeByName('_PMTemplate'); - $bb_var_list_update['pm_id'] = $this->UniqueId(); - - $ToUser =& $objUsers->GetItem($this->Get('FromId')); - if( is_object($ToUser) ) - { - $ret = HREF_Wrapper('', Array('ToUser' => $ToUser->Get('Login'), 'IsReply' => 1) ); - } - else - { - $ret = ''; - } - break; - - case 'delete_link': - $var_list_update['t'] = 'inbulletin/pm_list'; - $bb_var_list_update['pm_id'] = $this->UniqueId(); - $ret = HREF_Wrapper('', Array('Action' => 'bb_delete_pm', 'FolderId' => (int)GetVar('FolderId') ) ); - break; - - case 'fromlogin': - $Me = $objUsers->GetItem( $objSession->Get('PortalUserId') ); - if( is_object($Me) ) - { - $ret = $Me->Get('Login'); - } - break; - - case 'fromuser': - $ret = $this->Get('SenderUser'); - break; - - case 'senderuser': - $UserID = $this->Get('FromId') != $objSession->Get('PortalUserId') ? $this->Get('FromId') : $this->Get('ToId'); - $FromUser = $objUsers->GetItem($UserID); - if( is_object($FromUser) ) - { - $ret = $FromUser->Get('Login'); - } - else - { - $ret = ''; - } - - break; - - case 'link': - $var_list_update['t'] = $element->GetAttributeByName('_PMTemplate'); - $bb_var_list_update['pm_id'] = $this->UniqueId(); - $ret = HREF_Wrapper('', Array('FolderId' => (int)GetVar('FolderId') ) ); - break; - - case 'datecreated': - $ret = adodb_date($element->GetAttributeByName('_Format'), $this->Get('CreatedOn') ); - break; - - case 'subject': - // PM Statuses = {0 - Unread, 1 - Viewed, 2 - Read, 3 - Replyed, 4 - Sent} - $subject = $this->Get('Subject') ? $this->Get('Subject') : '['.language('no_subject').']'; - $ret = $this->Get('Status') < 2 ? ''.$subject.'' : $subject; - $ret = get_magic_quotes_gpc() ? $ret : stripslashes($ret); - break; - - default: - $ret = parent::ParseObject($element); - break; - } - } - return $ret; - } - - function GetOption($name) - { - $opt = decbin($this->Get('Options')); - $opt = str_pad($opt, 8, '0'); - - if($opt == 0) return false; - switch($name) - { - case "show_sig": - $option = $opt[0]; - break; - case "disable_bbcode": - $option = $opt[1]; - break; - case "disable_smileys": - $option = $opt[2]; - break; - } - return $option; - } - - function Delete() - { - // if all references to pm body were deleted -> also delete message body - $db =& GetADODBConnection(); - $BodyID = $this->Get('PMBodyId'); - $BodyTable = GetTablePrefix().'PrivateMessageBody'; - - $ret = parent::Delete(); - if($ret) - { - $db->Execute('UPDATE '.$BodyTable.' SET ReferenceCount = ReferenceCount - 1 WHERE PMBodyId = '.$BodyID); - } - $db->Execute('DELETE FROM '.$BodyTable.' WHERE PMBodyId = '.$BodyID.' AND ReferenceCount = 0'); - } - - function SetOption($name,$value) - { - $opt = str_pad(decbin($this->Get('Options')),8,"0"); - - switch($name) - { - case "show_sig": - $option = 0; - break; - case "disable_bbcode": - $option = 1; - break; - case "disable_smileys": - $option = 2; - break; - } - if(is_numeric($option)) - { - if($value) - { - $opt[$option] =1; - } - else - $opt[$option]=0; - } - $this->Set('Options', bindec($opt) ); - return $option; - } - - function UpdateOptions() - { - $db =& GetADODBConnection(); - $sql = 'UPDATE '.GetTablePrefix().'PrivateMessageBody SET Options = '.$this->get('Options').' WHERE PMBodyId = '.$this->Get('PMBodyId'); - $db->Execute($sql); - } - -} - -class clsPrivateMessageList extends clsItemList -{ - var $FolderId = 0; // folder id to get private messages from - - function clsPrivateMessageList() - { - global $bb_var_list; - parent::clsItemList(); - $this->classname = 'clsPrivateMessage'; - $this->SetTable('live', GetTablePrefix().'PrivateMessages'); - $this->Page = $bb_var_list['pmp']; - $this->PerPageVar = 'Perpage_PrivateMessages'; - $this->PageEnvar = 'bb_var_list_update'; - $this->PageEnvarIndex = 'pmp'; - $this->EnablePaging = true; - //$this->AddSortField('PMs_Sortfield','PMs_SortOrder'); - $this->ItemType = TYPE_MESSAGE; - } - - /** - * @return void - * @param int $ToId - * @param string $Subject - * @param string $Text - * @desc Create new private mesage - */ - function &Add_PrivateMessage($ToId, $Subject, $Text) - { - global $objSession, $objUsers; - - // PM Statuses = {0 - Unread, 1 - Viewed, 2 - Read, 3 - Replyed, 4 - Sent} - // PM Folders = {0 - Inbox, -1 - Sent} - - $db =& GetADODBConnection(); - $sql = 'INSERT INTO '.GetTablePrefix().'PrivateMessageBody(Subject,Body,ReferenceCount) VALUES (%s,%s,2)'; - $db->Execute( sprintf($sql, $db->qstr($Subject, get_magic_quotes_gpc() ), $db->qstr($Text, get_magic_quotes_gpc() ) ) ); - if( $db->ErrorNo() == 0 ) - { - // pm body was inserted - $pm =& $this->GetDummy(); - $FromId = $objSession->Get('PortalUserId'); - $BodyId = $db->Insert_ID(); - $CreatedOn = adodb_date("U"); - // create message in sender "Sent" folder - $pm->Set( Array('FromId', 'ToId', 'CreatedOn','FolderId','Status','PMBodyId','PmId'), - Array($FromId, $ToId, $CreatedOn, -1, 2, $BodyId,0) ); - $pm->Create(); - - // create message in recipient "Inbox" folder - $pm->Set( Array('FromId', 'ToId', 'CreatedOn','FolderId','Status','PMBodyId','PmId'), - Array($FromId, $ToId, $CreatedOn, 0, 0, $BodyId,0) ); - $pm->Create(); - - $Recipient =& $objUsers->GetItem($ToId); - if( is_object($Recipient) ) - { - // send email to recipient that pm were created (if he allowed this) - if($Recipient->GetPersistantVariable('bb_pm_notify') == 1) - { - $pm->Set('SenderUser', $Recipient->Get('Login') ); - $objSession->SetVariable('ToUser', $pm->Get('SenderUser') ); - $pm->SendUserEventMail('PM.ADD', $ToId); - } - } - } - return $pm; - } - - function LoadUserPMs($attribs=array()) - { - global $objSession, $objConfig; - - $this->SetFolderId( GetVar('FolderId') ); - $OrderBy =''; - - //$this->Clear(); - - $limit = $this->GetPageLimitSQL(); - - // apply sorting - $sort_field = trim($objSession->GetPersistantVariable('PMs_Sortfield')); - if( !strlen($sort_field) ) - { - $sort_field = trim( $objConfig->Get('PMs_Sortfield') ); - } - if($sort_field) - { - $OrderBy = 'ORDER BY '.$sort_field.' '.$objSession->GetPersistantVariable('PMs_SortOrder'); - } - else - { - $OrderBy = 'ORDER BY CreatedOn DESC'; - } - - $where = 'pm.FolderId = '.$this->FolderId; - $ThisUserId = $objSession->Get('PortalUserId'); - switch($this->FolderId) - { - case 0: // inbox - $where .= ' AND pm.ToId = '.$ThisUserId; - break; - - case -1: // sent - $where .= ' AND pm.FromId = '.$ThisUserId; - break; - } - $prefix = GetTablePrefix(); - if($this->FolderId == -1) - { - $field_list = 'pm.ToId AS FromId, pm.FromId AS ToId'; - $join_clause = 'pu.PortalUserId = pm.ToId'; - } - else - { - $field_list = 'pm.ToId AS ToId, pm.FromId AS FromId'; - $join_clause = 'pu.PortalUserId = pm.FromId'; - } - - $sql = 'SELECT pm.PmId, pm.FolderId, pm.Status, pm.PMBodyId, pm.CreatedOn, pmb.Subject, pmb.Body, pu.Login AS SenderUser, '.$field_list.' - FROM '.$this->SourceTable.' AS pm LEFT JOIN '.$prefix.'PrivateMessageBody AS pmb ON pm.PMBodyId = pmb.PMBodyId LEFT JOIN '.$prefix.'PortalUser AS pu ON '.$join_clause.' - WHERE '.$where; - - $this->QueryItemCount = QueryCount($sql); - - $sql .= " ".$OrderBy; - - return $this->Query_Item($sql, $limit); - } - - function Query_Item($sql,$limit = null, $fix_method = 'set_first') - { - if($sql !== $this->LastQuerySQL && $limit !== $this->LastLimitClause) - { - $ret = parent::Query_Item($sql,$limit,$fix_method); - $this->LastQuerySQL = $sql; - $this->LastLimitClause = $limit; - return $ret; - } - else - { - return $this->Items; - } - } - - function SetFolderId($NewId) - { - $this->FolderId = (int)$NewId; - } -} - -?>