/wp-content/plugins/wp-responder-email-autoresponder-and-newsletter-plugin/models/newsletter.php

https://bitbucket.org/antonyravel/cape-resorts · PHP · 201 lines · 151 code · 50 blank · 0 comment · 8 complexity · b3e5f480bb792d04e413b64cf6257072 MD5 · raw file

  1. <?php
  2. class NewsletterNotFoundException extends Exception { }
  3. class InvalidNewsletterIDException extends Exception { }
  4. class DeletedNewsletterAccessException extends Exception { }
  5. class Newsletter
  6. {
  7. private $id;
  8. private $name;
  9. private $reply_to;
  10. private $description;
  11. private $confirm_subject;
  12. private $confirm_body;
  13. private $confirmed_subject;
  14. private $confirmed_body;
  15. private $from_name;
  16. public function getFromName()
  17. {
  18. return $this->from_name;
  19. }
  20. public function getFromEmail()
  21. {
  22. return $this->from_email;
  23. }
  24. private $from_email;
  25. private $deleted = false;
  26. private function __construct($nid) {
  27. global $wpdb;
  28. $nid = intval($nid);
  29. if (0 == $nid)
  30. throw new InvalidNewsletterIDException();
  31. $tableName = $wpdb->prefix."wpr_newsletters";
  32. $getNewsletterInformationQuery = sprintf("SELECT * FROM %s WHERE id=%d",$tableName,$nid);
  33. $newsletters = $wpdb->get_results($getNewsletterInformationQuery);
  34. if (0 == count($newsletters))
  35. throw new NewsletterNotFoundException();
  36. $newsletter = $newsletters[0];
  37. $this->id = $newsletter->id;
  38. $this->name = $newsletter->name;
  39. $this->reply_to = $newsletter->reply_to;
  40. $this->description = $newsletter->description;
  41. $this->from_name = $newsletter->fromname;
  42. $this->from_email = $newsletter->fromemail;
  43. }
  44. public static function getNewsletter($id) {
  45. global $wpdb;
  46. $getNewsletterQuery = sprintf("SELECT * FROM %swpr_newsletters WHERE id=%d", $wpdb->prefix, $id);
  47. $newsletterRes = $wpdb->get_results($getNewsletterQuery);
  48. if (count($newsletterRes) == 0 )
  49. throw new NonExistentNewsletterException();
  50. return new Newsletter($id);
  51. }
  52. public function getCustomFieldKeys() {
  53. global $wpdb;
  54. $getCustomFieldKeysQuery = sprintf("SELECT name FROM %swpr_custom_fields WHERE nid=%d", $wpdb->prefix, $this->id);
  55. $custom_fields = $wpdb->get_col($getCustomFieldKeysQuery);
  56. return $custom_fields;
  57. }
  58. public function getCustomFieldKeyLabelPair() {
  59. global $wpdb;
  60. $getCustomFieldsQuery = sprintf("SELECT * FROM %swpr_custom_fields WHERE nid=%d", $wpdb->prefix, $this->id);
  61. $custom_fields = $wpdb->get_results($getCustomFieldsQuery);
  62. $result = array();
  63. foreach ($custom_fields as $field) {
  64. $result[$field->name] = $field->label;
  65. }
  66. return $result;
  67. }
  68. function getName()
  69. {
  70. return $this->name;
  71. }
  72. function getId()
  73. {
  74. return $this->id;
  75. }
  76. function delete()
  77. {
  78. global $wpdb;
  79. $prefix = $wpdb->prefix;
  80. $id = $this->id;
  81. $deletionQueries = array(
  82. "deleteCustomFieldData" => sprintf("DELETE FROM %swpr_custom_fields_values WHERE nid=%d",$prefix, $id),
  83. "deleteCustomFieldsDefinitions" => sprintf("DELETE FROM %swpr_custom_fields WHERE nid=%d",$prefix,$id),
  84. "deleteAutoresponderSubscriptions" =>sprintf("DELETE FROM %swpr_followup_subscriptions WHERE sid=(SELECT id FROM %swpr_subscribers WHERE nid=%d);",$prefix,$prefix,$id),
  85. "deleteAutoresponderMessages" => sprintf("DELETE FROM %swpr_autoresponder_messages WHERE aid=(SELECT id FROM %swpr_autoresponders WHERE nid=%d);",$prefix,$prefix,$id),
  86. "deleteAutoresponders" => sprintf("DELETE FROM %swpr_autoresponders WHERE nid=%d",$prefix,$id),
  87. "deleteSubscriptionForms" => sprintf("DELETE FROM %swpr_subscription_form WHERE nid=%d",$prefix,$id),
  88. "deleteSubscriberTransferRules" => sprintf("DELETE FROM %swpr_subscriber_transfer WHERE source=%d OR dest=%d",$prefix, $id,$id),
  89. "deleteEmailsPendingDelivery"=> sprintf("DELETE FROM %swpr_queue WHERE sid=(SELECT id FROM %swpr_subscribers WHERE nid=%d",$prefix,$prefix,$id),
  90. "deleteBlogSubscriptions" => sprintf("DELETE FROM %swpr_blog_subscription WHERE sid=(SELECT id FROM %swpr_subscribers WHERE nid=%d);",$prefix,$prefix,$id),
  91. "deleteSubscribers"=> sprintf("DELETE FROM %swpr_subscribers WHERE nid=%d",$prefix,$id),
  92. "deleteNewsletterQuery"=>sprintf("DELETE FROM %swpr_newsletters WHERE id=%d",$prefix,$id)
  93. );
  94. foreach ($deletionQueries as $query)
  95. {
  96. $wpdb->query($query);
  97. }
  98. $this->deleted=true;
  99. }
  100. function getNumberOfSubscribers()
  101. {
  102. global $wpdb;
  103. $getNumberOfSubscribersQuery = sprintf("SELECT count(*) number FROM %swpr_subscribers WHERE nid=%d",$wpdb->prefix,$this->id);
  104. $result = $wpdb->get_results($getNumberOfSubscribersQuery);
  105. $number = $result[0]->number;
  106. return $number;
  107. }
  108. function getNumberOfUnsubscribed()
  109. {
  110. global $wpdb;
  111. $getNumberOfSubscribersQuery = sprintf("SELECT count(*) number FROM %swpr_subscribers WHERE nid=%d AND active=0 AND confirmed=1",$wpdb->prefix,$this->id);
  112. $result = $wpdb->get_results($getNumberOfSubscribersQuery);
  113. $number = $result[0]->number;
  114. return $number;
  115. }
  116. public static function whetherNewsletterIDExists($newsletter_id) {
  117. global $wpdb;
  118. $checkWhetherNewsletterIDExistsQuery = sprintf("SELECT COUNT(*) result_count FROM {$wpdb->prefix}wpr_newsletters WHERE id=%d",$newsletter_id);
  119. $newslettersCountRes = $wpdb->get_results($checkWhetherNewsletterIDExistsQuery);
  120. $count = (int) $newslettersCountRes[0]->result_count;
  121. return (0 != $count);
  122. }
  123. public static function getAllNewsletters() {
  124. global $wpdb;
  125. $getAllNewslettersQuery = sprintf("SELECT * FROM {$wpdb->prefix}wpr_newsletters");
  126. $newsletters = $wpdb->get_results($getAllNewslettersQuery);
  127. $result = array();
  128. foreach ($newsletters as $newsletter) {
  129. $result[] = Newsletter::getNewsletter($newsletter->id);
  130. }
  131. return $result;
  132. }
  133. private static function getNumberOfNewsletters() {
  134. global $wpdb;
  135. $getCountNewslettersQuery = sprintf("SELECT count(*) num FROM {$wpdb->prefix}wpr_newsletters");
  136. $results = $wpdb->get_results($getCountNewslettersQuery);
  137. $count = $results[0]->num;
  138. return $count;
  139. }
  140. public static function whetherNoNewslettersExist() {
  141. return 0 == self::getNumberOfNewsletters();
  142. }
  143. function getNumberOfActiveSubscribers()
  144. {
  145. global $wpdb;
  146. $getNumberOfSubscribersQuery = sprintf("SELECT COUNT(*) number FROM %swpr_subscribers WHERE nid=%d AND active=1 AND confirmed=1",$wpdb->prefix,$this->id);
  147. $result = $wpdb->get_results($getNumberOfSubscribersQuery);
  148. $number = $result[0]->number;
  149. return $number;
  150. }
  151. }