/application/models/Admin/Page/ContactDetails.php

https://bitbucket.org/eric_getit/alert · PHP · 312 lines · 203 code · 44 blank · 65 comment · 2 complexity · d010fe555d8d362c691d6fb633f042bb MD5 · raw file

  1. <?php
  2. /**
  3. * Model_Admin_Page_ContactDetail
  4. *
  5. * PHP Version 5.3
  6. *
  7. * @category Class
  8. * @package Model\Page\Admin
  9. * @author Get It <devteam@getit.me>
  10. * @copyright 2013 Get It, LLC
  11. * @link http://www.getit.me/
  12. */
  13. use GetIt\Admin\Page\Page,
  14. GetIt\Admin\Grid\Column,
  15. GetIt\Admin\Grid\Grid;
  16. /**
  17. * Manage contact Detail
  18. * @author Eugene Churmanov <eugene@soft-rose.com>
  19. */
  20. class Model_Admin_Page_ContactDetails extends Page
  21. {
  22. /**
  23. * Template file
  24. *
  25. * @var string
  26. */
  27. protected $_twigTemplateName = '/admin/contact-details.html.twig';
  28. /**
  29. * Contact object - show details for this contact
  30. *
  31. * @var Model_Contact
  32. */
  33. protected $_contact;
  34. /**
  35. * Get contact object for the detail page
  36. *
  37. * @return Model_Contact
  38. */
  39. public function getContact()
  40. {
  41. return $this->_contact;
  42. } // getContact
  43. /**
  44. * Set contact object for the detail page
  45. *
  46. * @param Model_Contact $contact
  47. *
  48. * @return Model_Admin_Page_ContactDetails
  49. */
  50. public function setContact($contact)
  51. {
  52. $this->_contact = $contact;
  53. $title = 'Contact Details for ' . $contact->getEmail();
  54. $this->setTitle($title);
  55. $breadcrumbs = array(
  56. 'Contacts' => '/contacts',
  57. $title => '',
  58. );
  59. $this->setBreadcrumbs($breadcrumbs);
  60. return $this;
  61. } // setContact
  62. /**
  63. * Get admin page breadcrumbs
  64. *
  65. * @return array
  66. */
  67. public function getBreadcrumbs()
  68. {
  69. if (empty($this->_breadcrumbs)) {
  70. $this->_breadcrumbs = array(
  71. 'Contacts' => '/contacts',
  72. $this->getTitle() => '',
  73. );
  74. }
  75. return $this->_breadcrumbs;
  76. } // getBreadcrumbs
  77. /**
  78. * Initialize Twig template
  79. *
  80. * @see \GetIt\Admin\Page\Page::_initTwigContext()
  81. *
  82. * @return void
  83. */
  84. protected function _initTwigContext()
  85. {
  86. parent::_initTwigContext();
  87. $contact = $this->getContact();
  88. switch ($contact->getContactStatus()) {
  89. case Model_Contact::STATUS_ACTIVE:
  90. $contactStatusClass = 'text-success';
  91. break;
  92. case Model_Contact::STATUS_DEACTIVE:
  93. $contactStatusClass = 'text-error';
  94. break;
  95. case Model_Contact::STATUS_SUSPEND:
  96. $contactStatusClass = 'text-info';
  97. break;
  98. default:
  99. $contactStatusClass = 'text-inwarningfo';
  100. break;
  101. }
  102. $this->_twigContext['contact'] = $contact;
  103. $this->_twigContext['contactStatusClass'] = $contactStatusClass;
  104. $alertsColumns = $this->_getAlertsColumns();
  105. $alertsStore = new Model_Admin_Store_Alerts();
  106. $alertsGrid = new Grid();
  107. $alertsGrid->setPagingDisabled(true);
  108. $alertsGrid->setParams($this->getParams());
  109. $alertsGrid->setColumns($alertsColumns);
  110. $alertsGrid->setStore($alertsStore);
  111. $this->_twigContext['alertsGrid'] = $alertsGrid->render();
  112. $newslettersColumns = $this->_getNewslettersColumns();
  113. $newslettersStore = new Model_Admin_Store_NewsletterSubscriptions();
  114. $newslettersStore->setFilters(array('contactId' => $contact->getContactId()));
  115. $newslettersGrid = new Grid();
  116. $newslettersGrid->setPagingDisabled(true);
  117. $newslettersGrid->setParams($this->getParams());
  118. $newslettersGrid->setColumns($newslettersColumns);
  119. $newslettersGrid->setStore($newslettersStore);
  120. $this->_twigContext['newslettersGrid'] = $newslettersGrid->render();
  121. $operationsColumns = $this->_getOperationsColumns();
  122. $operationsStore = new Model_Admin_Store_AlertsOperationsHistory();
  123. $operationsGrid = new Grid();
  124. $operationsGrid->setPagingDisabled(true);
  125. $operationsGrid->setParams($this->getParams());
  126. $operationsGrid->setColumns($operationsColumns);
  127. $operationsGrid->setStore($operationsStore);
  128. $this->_twigContext['operationsGrid'] = $operationsGrid->render();
  129. // TODO : Put user last activity date here
  130. $this->_twigContext['lastActivity'] = '';
  131. } // _initTwigContext
  132. /**
  133. * Get list of columns for the alert grid
  134. *
  135. * @return array
  136. */
  137. private function _getAlertsColumns()
  138. {
  139. $columns = array();
  140. $column = new Column();
  141. $column->setProperty('alertStatus');
  142. $column->setCaption('Status');
  143. $column->setType(Column::TYPE_ENUM);
  144. $column->setSortable(false);
  145. $column->setEnumMap(array(
  146. Model_Alert::STATUS_ACTIVE => 'Active',
  147. Model_Alert::STATUS_DEACTIVE => 'Deactivated',
  148. Model_Alert::STATUS_PENDING => 'Pending Multi Alert',
  149. Model_Alert::STATUS_ADM_PENDING => 'Admin Pending',
  150. Model_Alert::STATUS_SUSPENDED_AS_BOUNCE_PERMANENT => 'Permanent Bounce',
  151. Model_Alert::STATUS_SUSPENDED_AS_BOUNCE_TRANSIENT => 'Transient Bounce',
  152. Model_Alert::STATUS_SUSPENDED_AS_COMPLAINT => 'SPAM Complaint',
  153. Model_Alert::STATUS_UNSUBSCRIBED_ADMIN => 'Unsubscribed by admin',
  154. Model_Alert::STATUS_UNSUBSCRIBED_API => 'Unsubscribed via API',
  155. Model_Alert::STATUS_UNSUBSCRIBED_USER => 'Unsubscribed',
  156. ));
  157. $columns[] = $column;
  158. $column = new Column();
  159. $column->setProperty('siteDomain');
  160. $column->setCaption('Site');
  161. $column->setType(Column::TYPE_STRING);
  162. $column->setSortable(false);
  163. $columns[] = $column;
  164. $column = new Column();
  165. $column->setProperty('alertType');
  166. $column->setCaption('Type');
  167. $column->setType(Column::TYPE_ENUM);
  168. $column->setSortable(false);
  169. $column->setEnumMap(array(
  170. 'DAILY' => 'Daily',
  171. 'WEEKLY' => 'Weekly'
  172. ));
  173. $columns[] = $column;
  174. $column = new Column();
  175. $column->setProperty('queryDisplay');
  176. $column->setCaption('Query');
  177. $column->setType(Column::TYPE_RAW);
  178. $column->setSortable(false);
  179. $columns[] = $column;
  180. $column = new Column();
  181. $column->setProperty('createdDate');
  182. $column->setCaption('Created');
  183. $column->setType(Column::TYPE_DATE);
  184. $column->setSortable(false);
  185. $columns[] = $column;
  186. $column = new Column();
  187. $column->setProperty('lastSendDate');
  188. $column->setCaption('Last Sent');
  189. $column->setType(Column::TYPE_DATE);
  190. $column->setSortable(false);
  191. $columns[] = $column;
  192. return $columns;
  193. } // _getAlertsColumns
  194. /**
  195. * Get list of columns for the newsletters grid
  196. *
  197. * @return array
  198. */
  199. private function _getNewslettersColumns()
  200. {
  201. $columns = array();
  202. $column = new \GetIt\Admin\Grid\Column();
  203. $column->setProperty('SubscriptionStatus');
  204. $column->setSortingProperty('subscriptionStatus');
  205. $column->setCaption('Status');
  206. $column->setType(Column::TYPE_ENUM);
  207. $column->setSortable(false);
  208. $column->setEnumMap(array(
  209. Model_Newsletter_Subscription::STATUS_ACTIVE => 'Active',
  210. Model_Newsletter_Subscription::STATUS_DEACTIVE => 'Unsubscribed',
  211. ));
  212. $columns[] = $column;
  213. $column = new Column();
  214. $column->setProperty('NewsletterName');
  215. $column->setSortingProperty('newsletterName');
  216. $column->setCaption('Newsletter');
  217. $column->setType(Column::TYPE_STRING);
  218. $column->setSortable(false);
  219. $columns[] = $column;
  220. $column = new \GetIt\Admin\Grid\Column();
  221. $column->setProperty('Domain');
  222. $column->setSortingProperty('domain');
  223. $column->setCaption('Domain');
  224. $column->setType(Column::TYPE_STRING);
  225. $column->setSortable(false);
  226. $columns[] = $column;
  227. $column = new \GetIt\Admin\Grid\Column();
  228. $column->setProperty('CreatedDate');
  229. $column->setSortingProperty('createdDate');
  230. $column->setCaption('Created');
  231. $column->setType(Column::TYPE_DATE);
  232. $column->setSortable(false);
  233. $columns[] = $column;
  234. return $columns;
  235. } // _getNewslettersColumns
  236. /**
  237. * Get list of columns for the alerts operations history list
  238. *
  239. * @return array
  240. */
  241. private function _getOperationsColumns()
  242. {
  243. $columns = array();
  244. $column = new \GetIt\Admin\Grid\Column();
  245. $column->setProperty('operation');
  246. $column->setCaption('Operation');
  247. $column->setType(Column::TYPE_STRING);
  248. $column->setSortable(false);
  249. $column->setEnumMap(array(
  250. Model_Newsletter_Subscription::STATUS_ACTIVE => 'Active',
  251. Model_Newsletter_Subscription::STATUS_DEACTIVE => 'Unsubscribed',
  252. ));
  253. $columns[] = $column;
  254. $column = new Column();
  255. $column->setProperty('ip');
  256. $column->setCaption('IP Address');
  257. $column->setType(Column::TYPE_STRING);
  258. $column->setSortable(false);
  259. $columns[] = $column;
  260. $column = new \GetIt\Admin\Grid\Column();
  261. $column->setProperty('createdDate');
  262. $column->setCaption('Date');
  263. $column->setType(Column::TYPE_DATE);
  264. $column->setSortable(false);
  265. $columns[] = $column;
  266. return $columns;
  267. } // _getOperationsColumns
  268. }