/framework/ActiveSync/lib/Horde/ActiveSync/Message/Contact.php

https://github.com/finger2000/horde · PHP · 256 lines · 224 code · 10 blank · 22 comment · 3 complexity · f7d29706310fc796d42c3cff98741f61 MD5 · raw file

  1. <?php
  2. /**
  3. * Horde_ActiveSync_Message_Contact class represents a single ActiveSync
  4. * Contact object.
  5. *
  6. * @copyright 2010-2011 Horde LLC (http://www.horde.org)
  7. *
  8. * @author Michael J. Rubinsky <mrubinsk@horde.org>
  9. * @package ActiveSync
  10. */
  11. class Horde_ActiveSync_Message_Contact extends Horde_ActiveSync_Message_Base
  12. {
  13. /* Workaround for issues with arrays from __get() */
  14. public $categories = array();
  15. public $children = array();
  16. public $bodytruncated = 0;
  17. /* POOMCONTACTS */
  18. const ANNIVERSARY = "POOMCONTACTS:Anniversary";
  19. const ASSISTANTNAME = "POOMCONTACTS:AssistantName";
  20. const ASSISTNAMEPHONENUMBER = "POOMCONTACTS:AssistnamePhoneNumber";
  21. const BIRTHDAY = "POOMCONTACTS:Birthday";
  22. const BODY = "POOMCONTACTS:Body";
  23. const BODYSIZE = "POOMCONTACTS:BodySize";
  24. const BODYTRUNCATED = "POOMCONTACTS:BodyTruncated";
  25. const BUSINESS2PHONENUMBER = "POOMCONTACTS:Business2PhoneNumber";
  26. const BUSINESSCITY = "POOMCONTACTS:BusinessCity";
  27. const BUSINESSCOUNTRY = "POOMCONTACTS:BusinessCountry";
  28. const BUSINESSPOSTALCODE = "POOMCONTACTS:BusinessPostalCode";
  29. const BUSINESSSTATE = "POOMCONTACTS:BusinessState";
  30. const BUSINESSSTREET = "POOMCONTACTS:BusinessStreet";
  31. const BUSINESSFAXNUMBER = "POOMCONTACTS:BusinessFaxNumber";
  32. const BUSINESSPHONENUMBER = "POOMCONTACTS:BusinessPhoneNumber";
  33. const CARPHONENUMBER = "POOMCONTACTS:CarPhoneNumber";
  34. const CATEGORIES = "POOMCONTACTS:Categories";
  35. const CATEGORY = "POOMCONTACTS:Category";
  36. const CHILDREN = "POOMCONTACTS:Children";
  37. const CHILD = "POOMCONTACTS:Child";
  38. const COMPANYNAME = "POOMCONTACTS:CompanyName";
  39. const DEPARTMENT = "POOMCONTACTS:Department";
  40. const EMAIL1ADDRESS = "POOMCONTACTS:Email1Address";
  41. const EMAIL2ADDRESS = "POOMCONTACTS:Email2Address";
  42. const EMAIL3ADDRESS = "POOMCONTACTS:Email3Address";
  43. const FILEAS = "POOMCONTACTS:FileAs";
  44. const FIRSTNAME = "POOMCONTACTS:FirstName";
  45. const HOME2PHONENUMBER = "POOMCONTACTS:Home2PhoneNumber";
  46. const HOMECITY = "POOMCONTACTS:HomeCity";
  47. const HOMECOUNTRY = "POOMCONTACTS:HomeCountry";
  48. const HOMEPOSTALCODE = "POOMCONTACTS:HomePostalCode";
  49. const HOMESTATE = "POOMCONTACTS:HomeState";
  50. const HOMESTREET = "POOMCONTACTS:HomeStreet";
  51. const HOMEFAXNUMBER = "POOMCONTACTS:HomeFaxNumber";
  52. const HOMEPHONENUMBER = "POOMCONTACTS:HomePhoneNumber";
  53. const JOBTITLE = "POOMCONTACTS:JobTitle";
  54. const LASTNAME = "POOMCONTACTS:LastName";
  55. const MIDDLENAME = "POOMCONTACTS:MiddleName";
  56. const MOBILEPHONENUMBER = "POOMCONTACTS:MobilePhoneNumber";
  57. const OFFICELOCATION = "POOMCONTACTS:OfficeLocation";
  58. const OTHERCITY = "POOMCONTACTS:OtherCity";
  59. const OTHERCOUNTRY = "POOMCONTACTS:OtherCountry";
  60. const OTHERPOSTALCODE = "POOMCONTACTS:OtherPostalCode";
  61. const OTHERSTATE = "POOMCONTACTS:OtherState";
  62. const OTHERSTREET = "POOMCONTACTS:OtherStreet";
  63. const PAGERNUMBER = "POOMCONTACTS:PagerNumber";
  64. const RADIOPHONENUMBER = "POOMCONTACTS:RadioPhoneNumber";
  65. const SPOUSE = "POOMCONTACTS:Spouse";
  66. const SUFFIX = "POOMCONTACTS:Suffix";
  67. const TITLE = "POOMCONTACTS:Title";
  68. const WEBPAGE = "POOMCONTACTS:WebPage";
  69. const YOMICOMPANYNAME = "POOMCONTACTS:YomiCompanyName";
  70. const YOMIFIRSTNAME = "POOMCONTACTS:YomiFirstName";
  71. const YOMILASTNAME = "POOMCONTACTS:YomiLastName";
  72. const RTF = "POOMCONTACTS:Rtf";
  73. const PICTURE = "POOMCONTACTS:Picture";
  74. /* POOMCONTACTS2 */
  75. const CUSTOMERID = "POOMCONTACTS2:CustomerId";
  76. const GOVERNMENTID = "POOMCONTACTS2:GovernmentId";
  77. const IMADDRESS = "POOMCONTACTS2:IMAddress";
  78. const IMADDRESS2 = "POOMCONTACTS2:IMAddress2";
  79. const IMADDRESS3 = "POOMCONTACTS2:IMAddress3";
  80. const MANAGERNAME = "POOMCONTACTS2:ManagerName";
  81. const COMPANYMAINPHONE = "POOMCONTACTS2:CompanyMainPhone";
  82. const ACCOUNTNAME = "POOMCONTACTS2:AccountName";
  83. const NICKNAME = "POOMCONTACTS2:NickName";
  84. const MMS = "POOMCONTACTS2:MMS";
  85. /**
  86. * Const'r
  87. *
  88. * @param array $params
  89. *
  90. * @return Horde_ActiveSync_Message_Contact
  91. */
  92. public function __construct($params = array())
  93. {
  94. // Mappings for the encoder
  95. $this->_mapping = array(
  96. self::ANNIVERSARY => array(self::KEY_ATTRIBUTE => 'anniversary', self::KEY_TYPE => self::TYPE_DATE_DASHES),
  97. self::ASSISTANTNAME => array(self::KEY_ATTRIBUTE => 'assistantname'),
  98. self::ASSISTNAMEPHONENUMBER => array(self::KEY_ATTRIBUTE => 'assistnamephonenumber'),
  99. self::BIRTHDAY => array(self::KEY_ATTRIBUTE => 'birthday', self::KEY_TYPE => self::TYPE_DATE_DASHES),
  100. self::BODY => array(self::KEY_ATTRIBUTE => 'body'),
  101. self::BODYSIZE => array(self::KEY_ATTRIBUTE => 'bodysize'),
  102. self::BODYTRUNCATED => array(self::KEY_ATTRIBUTE => 'bodytruncated'),
  103. self::BUSINESS2PHONENUMBER => array(self::KEY_ATTRIBUTE => 'business2phonenumber'),
  104. self::BUSINESSCITY => array(self::KEY_ATTRIBUTE => 'businesscity'),
  105. self::BUSINESSCOUNTRY => array(self::KEY_ATTRIBUTE => 'businesscountry'),
  106. self::BUSINESSPOSTALCODE => array(self::KEY_ATTRIBUTE => 'businesspostalcode'),
  107. self::BUSINESSSTATE => array(self::KEY_ATTRIBUTE => 'businessstate'),
  108. self::BUSINESSSTREET => array(self::KEY_ATTRIBUTE => 'businessstreet'),
  109. self::BUSINESSFAXNUMBER => array(self::KEY_ATTRIBUTE => 'businessfaxnumber'),
  110. self::BUSINESSPHONENUMBER => array(self::KEY_ATTRIBUTE => 'businessphonenumber'),
  111. self::CARPHONENUMBER => array(self::KEY_ATTRIBUTE => 'carphonenumber'),
  112. self::CHILDREN => array(self::KEY_ATTRIBUTE => 'children', self::KEY_VALUES => self::CHILD),
  113. self::COMPANYNAME => array(self::KEY_ATTRIBUTE => 'companyname'),
  114. self::DEPARTMENT => array(self::KEY_ATTRIBUTE => 'department'),
  115. self::EMAIL1ADDRESS => array(self::KEY_ATTRIBUTE => 'email1address'),
  116. self::EMAIL2ADDRESS => array(self::KEY_ATTRIBUTE => 'email2address'),
  117. self::EMAIL3ADDRESS => array(self::KEY_ATTRIBUTE => 'email3address'),
  118. self::FILEAS => array(self::KEY_ATTRIBUTE => 'fileas'),
  119. self::FIRSTNAME => array(self::KEY_ATTRIBUTE => 'firstname'),
  120. self::HOME2PHONENUMBER => array(self::KEY_ATTRIBUTE => 'home2phonenumber'),
  121. self::HOMECITY => array(self::KEY_ATTRIBUTE => 'homecity'),
  122. self::HOMECOUNTRY => array(self::KEY_ATTRIBUTE => 'homecountry'),
  123. self::HOMEPOSTALCODE => array(self::KEY_ATTRIBUTE => 'homepostalcode'),
  124. self::HOMESTATE => array(self::KEY_ATTRIBUTE => 'homestate'),
  125. self::HOMESTREET => array(self::KEY_ATTRIBUTE => 'homestreet'),
  126. self::HOMEFAXNUMBER => array(self::KEY_ATTRIBUTE => 'homefaxnumber'),
  127. self::HOMEPHONENUMBER => array(self::KEY_ATTRIBUTE => 'homephonenumber'),
  128. self::JOBTITLE => array(self::KEY_ATTRIBUTE => 'jobtitle'),
  129. self::LASTNAME => array(self::KEY_ATTRIBUTE => 'lastname'),
  130. self::MIDDLENAME => array(self::KEY_ATTRIBUTE => 'middlename'),
  131. self::MOBILEPHONENUMBER => array(self::KEY_ATTRIBUTE => 'mobilephonenumber'),
  132. self::OFFICELOCATION => array(self::KEY_ATTRIBUTE => 'officelocation'),
  133. self::OTHERCITY => array(self::KEY_ATTRIBUTE => 'othercity'),
  134. self::OTHERCOUNTRY => array(self::KEY_ATTRIBUTE => 'othercountry'),
  135. self::OTHERPOSTALCODE => array(self::KEY_ATTRIBUTE => 'otherpostalcode'),
  136. self::OTHERSTATE => array(self::KEY_ATTRIBUTE => 'otherstate'),
  137. self::OTHERSTREET => array(self::KEY_ATTRIBUTE => 'otherstreet'),
  138. self::PAGERNUMBER => array(self::KEY_ATTRIBUTE => 'pagernumber'),
  139. self::RADIOPHONENUMBER => array(self::KEY_ATTRIBUTE => 'radiophonenumber'),
  140. self::SPOUSE => array(self::KEY_ATTRIBUTE => 'spouse'),
  141. self::SUFFIX => array(self::KEY_ATTRIBUTE => 'suffix'),
  142. self::TITLE => array(self::KEY_ATTRIBUTE => 'title'),
  143. self::WEBPAGE => array(self::KEY_ATTRIBUTE => 'webpage'),
  144. self::YOMICOMPANYNAME => array(self::KEY_ATTRIBUTE => 'yomicompanyname'),
  145. self::YOMIFIRSTNAME => array(self::KEY_ATTRIBUTE => 'yomifirstname'),
  146. self::YOMILASTNAME => array(self::KEY_ATTRIBUTE => 'yomilastname'),
  147. self::RTF => array(self::KEY_ATTRIBUTE => 'rtf'),
  148. self::PICTURE => array(self::KEY_ATTRIBUTE => 'picture'),
  149. self::CATEGORIES => array(self::KEY_ATTRIBUTE => 'categories', self::KEY_VALUES => self::CATEGORY),
  150. );
  151. // Accepted property values
  152. $this->_properties = array(
  153. 'anniversary' => false,
  154. 'assistantname' => false,
  155. 'assistnamephonenumber' => false,
  156. 'birthday' => false,
  157. 'body' => false,
  158. 'bodysize' => false,
  159. 'bodytruncated' => false,
  160. 'business2phonenumber' => false,
  161. 'businesscity' => false,
  162. 'businesscountry' => false,
  163. 'businesspostalcode' => false,
  164. 'businessstate' => false,
  165. 'businessstreet' => false,
  166. 'businessfaxnumber' => false,
  167. 'businessphonenumber' => false,
  168. 'carphonenumber' => false,
  169. 'children' => false,
  170. 'companyname' => false,
  171. 'department' => false,
  172. 'email1address' => false,
  173. 'email2address' => false,
  174. 'email3address' => false,
  175. 'fileas' => false,
  176. 'firstname' => false,
  177. 'home2phonenumber' => false,
  178. 'homecity' => false,
  179. 'homecountry' => false,
  180. 'homepostalcode' => false,
  181. 'homestate' => false,
  182. 'homestreet' => false,
  183. 'homefaxnumber' => false,
  184. 'homephonenumber' => false,
  185. 'jobtitle' => false,
  186. 'lastname' => false,
  187. 'middlename' => false,
  188. 'mobilephonenumber' => false,
  189. 'officelocation' => false,
  190. 'othercity' => false,
  191. 'othercountry' => false,
  192. 'otherpostalcode' => false,
  193. 'otherstate' => false,
  194. 'otherstreet' => false,
  195. 'pagernumber' => false,
  196. 'radiophonenumber' => false,
  197. 'spouse' => false,
  198. 'suffix' => false,
  199. 'title' => false,
  200. 'webpage' => false,
  201. 'yomicompanyname' => false,
  202. 'yomifirstname' => false,
  203. 'yomilastname' => false,
  204. 'rtf' => false,
  205. 'picture' => false,
  206. 'categories' => false,
  207. );
  208. // POOMCONTACTS2
  209. $this->_mapping += array(
  210. self::CUSTOMERID => array(self::KEY_ATTRIBUTE => 'customerid'),
  211. self::GOVERNMENTID => array(self::KEY_ATTRIBUTE => 'governmentid'),
  212. self::IMADDRESS => array(self::KEY_ATTRIBUTE => 'imaddress'),
  213. self::IMADDRESS2 => array(self::KEY_ATTRIBUTE => 'imaddress2'),
  214. self::IMADDRESS3 => array(self::KEY_ATTRIBUTE => 'imaddress3'),
  215. self::MANAGERNAME => array(self::KEY_ATTRIBUTE => 'managername'),
  216. self::COMPANYMAINPHONE => array(self::KEY_ATTRIBUTE => 'companymainphone'),
  217. self::ACCOUNTNAME => array(self::KEY_ATTRIBUTE => 'accountname'),
  218. self::NICKNAME => array(self::KEY_ATTRIBUTE => 'nickname'),
  219. self::MMS => array(self::KEY_ATTRIBUTE => 'mms'),
  220. );
  221. $this->_properties += array(
  222. 'customerid' => false,
  223. 'governmentid' => false,
  224. 'imaddress' => false,
  225. 'imaddress2' => false,
  226. 'imaddress3' => false,
  227. 'managername' => false,
  228. 'companymainphone' => false,
  229. 'accountname' => false,
  230. 'nickname' => false,
  231. 'mms' => false,
  232. );
  233. parent::__construct($params);
  234. }
  235. public function getClass()
  236. {
  237. return 'Contacts';
  238. }
  239. protected function _checkSendEmpty($tag)
  240. {
  241. if ($tag == self::BODYTRUNCATED && $this->bodysize > 0) {
  242. return true;
  243. }
  244. return false;
  245. }
  246. }