Overview

Packages

  • IMP
  • None

Classes

  • IMP
  • IMP_Ajax_Application
  • IMP_Ajax_Imple_ContactAutoCompleter
  • IMP_Ajax_Imple_PassphraseDialog
  • IMP_Ajax_Queue
  • IMP_Api
  • IMP_Auth
  • IMP_Block_Newmail
  • IMP_Block_Summary
  • IMP_Compose
  • IMP_Compose_Exception
  • IMP_Compose_Stationery
  • IMP_Contents
  • IMP_Crypt_Pgp
  • IMP_Crypt_Smime
  • IMP_Dimp
  • IMP_Exception
  • IMP_Factory_AuthImap
  • IMP_Factory_Compose
  • IMP_Factory_Contents
  • IMP_Factory_Flags
  • IMP_Factory_Identity
  • IMP_Factory_Imap
  • IMP_Factory_Imaptree
  • IMP_Factory_Mail
  • IMP_Factory_Mailbox
  • IMP_Factory_MailboxList
  • IMP_Factory_MimeViewer
  • IMP_Factory_Pgp
  • IMP_Factory_Quota
  • IMP_Factory_Search
  • IMP_Factory_Sentmail
  • IMP_Factory_Smime
  • IMP_Filter
  • IMP_Flag_Base
  • IMP_Flag_Imap
  • IMP_Flag_Imap_Answered
  • IMP_Flag_Imap_Deleted
  • IMP_Flag_Imap_Draft
  • IMP_Flag_Imap_Flagged
  • IMP_Flag_Imap_Forwarded
  • IMP_Flag_Imap_Junk
  • IMP_Flag_Imap_NotJunk
  • IMP_Flag_Imap_Seen
  • IMP_Flag_System_Attachment
  • IMP_Flag_System_Encrypted
  • IMP_Flag_System_HighPriority
  • IMP_Flag_System_List
  • IMP_Flag_System_LowPriority
  • IMP_Flag_System_Match_Address
  • IMP_Flag_System_Match_Flag
  • IMP_Flag_System_Match_Header
  • IMP_Flag_System_Personal
  • IMP_Flag_System_Signed
  • IMP_Flag_System_Unseen
  • IMP_Flag_User
  • IMP_Flags
  • IMP_Imap
  • IMP_Imap_Acl
  • IMP_Imap_Exception
  • IMP_Imap_PermanentFlags
  • IMP_Imap_Thread
  • IMP_Imap_Tree
  • IMP_Indices
  • IMP_Indices_Form
  • IMP_LoginTasks_SystemTask_GarbageCollection
  • IMP_LoginTasks_SystemTask_Upgrade
  • IMP_LoginTasks_SystemTask_UpgradeAuth
  • IMP_LoginTasks_Task_Autocreate
  • IMP_LoginTasks_Task_DeleteAttachmentsMonthly
  • IMP_LoginTasks_Task_DeleteSentmailMonthly
  • IMP_LoginTasks_Task_FilterOnLogin
  • IMP_LoginTasks_Task_PurgeSentmail
  • IMP_LoginTasks_Task_PurgeSpam
  • IMP_LoginTasks_Task_PurgeTrash
  • IMP_LoginTasks_Task_RecoverDraft
  • IMP_LoginTasks_Task_RenameSentmailMonthly
  • IMP_Mailbox
  • IMP_Mailbox_List
  • IMP_Mailbox_List_Track
  • IMP_Maillog
  • IMP_Menu_Dimp
  • IMP_Message
  • IMP_Mime_Status
  • IMP_Mime_Viewer_Alternative
  • IMP_Mime_Viewer_Appledouble
  • IMP_Mime_Viewer_Audio
  • IMP_Mime_Viewer_Enriched
  • IMP_Mime_Viewer_Externalbody
  • IMP_Mime_Viewer_Html
  • IMP_Mime_Viewer_Images
  • IMP_Mime_Viewer_Itip
  • IMP_Mime_Viewer_Mdn
  • IMP_Mime_Viewer_Partial
  • IMP_Mime_Viewer_Pdf
  • IMP_Mime_Viewer_Pgp
  • IMP_Mime_Viewer_Plain
  • IMP_Mime_Viewer_Related
  • IMP_Mime_Viewer_Rfc822
  • IMP_Mime_Viewer_Smil
  • IMP_Mime_Viewer_Smime
  • IMP_Mime_Viewer_Status
  • IMP_Mime_Viewer_Vcard
  • IMP_Mime_Viewer_Video
  • IMP_Mime_Viewer_Zip
  • IMP_Notification_Event_Status
  • IMP_Notification_Handler_Decorator_ImapAlerts
  • IMP_Notification_Handler_Decorator_NewmailNotify
  • IMP_Notification_Listener_AjaxStatus
  • Imp_Prefs_Identity
  • IMP_Prefs_Ui
  • IMP_Quota
  • IMP_Quota_Base
  • IMP_Quota_Command
  • IMP_Quota_Hook
  • IMP_Quota_Imap
  • IMP_Quota_Maildir
  • IMP_Quota_Mdaemon
  • IMP_Quota_Mercury32
  • IMP_Quota_Null
  • IMP_Quota_Sql
  • IMP_Search
  • IMP_Search_Element
  • IMP_Search_Element_Attachment
  • IMP_Search_Element_Autogenerated
  • IMP_Search_Element_Bulk
  • IMP_Search_Element_Contacts
  • IMP_Search_Element_Date
  • IMP_Search_Element_Flag
  • IMP_Search_Element_Header
  • IMP_Search_Element_Mailinglist
  • IMP_Search_Element_Or
  • IMP_Search_Element_Personal
  • IMP_Search_Element_Recipient
  • IMP_Search_Element_Size
  • IMP_Search_Element_Text
  • IMP_Search_Element_Within
  • IMP_Search_Filter
  • IMP_Search_Filter_Attachment
  • IMP_Search_Filter_Autogenerated
  • IMP_Search_Filter_Builtin
  • IMP_Search_Filter_Bulk
  • IMP_Search_Filter_Contacts
  • IMP_Search_Filter_Mailinglist
  • IMP_Search_Filter_Personal
  • IMP_Search_Query
  • IMP_Search_Vfolder
  • IMP_Search_Vfolder_Builtin
  • IMP_Search_Vfolder_Vinbox
  • IMP_Search_Vfolder_Vtrash
  • IMP_Sentmail
  • IMP_Sentmail_Base
  • IMP_Sentmail_Null
  • IMP_Sentmail_Sql
  • IMP_Spam
  • IMP_Test
  • IMP_Tree_Flist
  • IMP_Tree_Jquerymobile
  • IMP_Tree_Simplehtml
  • IMP_Ui_Compose
  • IMP_Ui_Editor
  • IMP_Ui_Folder
  • IMP_Ui_Headers
  • IMP_Ui_Imageview
  • IMP_Ui_Mailbox
  • IMP_Ui_Message
  • IMP_Ui_Mimp
  • IMP_Ui_Search
  • IMP_Views_Compose
  • IMP_Views_ListMessages
  • IMP_Views_ShowMessage
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * This class provides access to IMP stationery data.
  4:  *
  5:  * Copyright 2010-2012 Horde LLC (http://www.horde.org/)
  6:  *
  7:  * See the enclosed file COPYING for license information (GPL). If you
  8:  * did not receive this file, see http://www.horde.org/licenses/gpl.
  9:  *
 10:  * @author   Michael Slusarz <slusarz@horde.org>
 11:  * @category Horde
 12:  * @license  http://www.horde.org/licenses/gpl GPL
 13:  * @package  IMP
 14:  */
 15: class IMP_Compose_Stationery implements ArrayAccess, Countable, Iterator
 16: {
 17:     /**
 18:      * Stationery list.
 19:      * Each entry has the following properties:
 20:      * <pre>
 21:      * 'c' => (string) Content.
 22:      * 'n' => (string) Name.
 23:      * 't' => (string) Type.
 24:      * </pre>
 25:      *
 26:      * @var array
 27:      */
 28:     protected $_stationery;
 29: 
 30:     /**
 31:      * Constructor.
 32:      */
 33:     public function __construct()
 34:     {
 35:         $slist = @unserialize($GLOBALS['prefs']->getValue('stationery'));
 36:         $this->_stationery = is_array($slist)
 37:             ? $slist
 38:             : array();
 39:     }
 40: 
 41:     /**
 42:      * Substitute variables in stationery content.
 43:      *
 44:      * @param integer $id                   The stationery ID.
 45:      * @param IMP_Prefs_Identity $identity  The identity object.
 46:      * @param string $msg                   The message text.
 47:      * @param boolean $html                 Output HTML code?
 48:      *
 49:      * @return string  Stationery content.
 50:      */
 51:     public function getContent($id, IMP_Prefs_Identity $identity, $msg,
 52:                                $html = false)
 53:     {
 54:         $s_content = $this[$id]['c'];
 55: 
 56:         if (strpos($s_content, '%s') !== false) {
 57:             $sig = $identity->getSignature($html ? 'html' : 'text');
 58: 
 59:             switch ($this[$id]['t']) {
 60:             case 'html':
 61:                 if (!$html) {
 62:                     $s_content = $GLOBALS['injector']->getInstance('Horde_Core_Factory_TextFilter')->filter($s_content, 'Html2text', array('charset' => 'UTF-8'));
 63:                 }
 64:                 break;
 65: 
 66:             case 'text':
 67:                 if ($html) {
 68:                     $s_content = IMP_Compose::text2html($s_content);
 69:                 }
 70:                 break;
 71:             }
 72: 
 73:             $msg = str_replace(array("\r\n", $sig), array("\n", ''), $msg);
 74:             $s_content = str_replace('%s', $sig, $s_content);
 75:         }
 76: 
 77:         return (strpos($s_content, '%c') === false)
 78:             ? $s_content
 79:             : str_replace('%c', $msg, $s_content);
 80:     }
 81: 
 82:     /**
 83:      * Save the current stationery list to preferences.
 84:      */
 85:     protected function _save()
 86:     {
 87:         $GLOBALS['prefs']->setValue('stationery', serialize($this->_stationery));
 88:     }
 89: 
 90:     /* ArrayAccess methods. */
 91: 
 92:     public function offsetExists($offset)
 93:     {
 94:         return isset($this->_stationery[$offset]);
 95:     }
 96: 
 97:     public function offsetGet($offset)
 98:     {
 99:         return isset($this->_stationery[$offset])
100:             ? $this->_stationery[$offset]
101:             : null;
102:     }
103: 
104:     public function offsetSet($offset, $value)
105:     {
106:         if (is_null($offset)) {
107:             $this->_stationery[] = $value;
108:         } else {
109:             $this->_stationery[$offset] = $value;
110:         }
111: 
112:         $this->_save();
113:     }
114: 
115:     /* NOTE: this function reindexes the internal array. */
116:     public function offsetUnset($offset)
117:     {
118:         if (isset($this->_stationery[$offset])) {
119:             unset($this->_stationery[$offset]);
120:             $this->_stationery = array_values($this->_stationery);
121:             $this->_save();
122:         }
123:     }
124: 
125:     /* Countable methods. */
126: 
127:     public function count()
128:     {
129:         return count($this->_stationery);
130:     }
131: 
132:     /* Iterator methods. */
133: 
134:     public function current()
135:     {
136:         return current($this->_stationery);
137:     }
138: 
139:     public function key()
140:     {
141:         return key($this->_stationery);
142:     }
143: 
144:     public function next()
145:     {
146:         next($this->_stationery);
147:     }
148: 
149:     public function rewind()
150:     {
151:         reset($this->_stationery);
152:     }
153: 
154:     public function valid()
155:     {
156:         return (key($this->_stationery) !== null);
157:     }
158: 
159: }
160: 
API documentation generated by ApiGen