/cms/modules/newsletter.lib.php

https://github.com/akash6190/pragyan · PHP · 173 lines · 132 code · 30 blank · 11 comment · 23 complexity · cb26a771fa6fcd09a1630bb86e43c2cb MD5 · raw file

  1. <?php
  2. if(!defined('__PRAGYAN_CMS'))
  3. {
  4. header($_SERVER['SERVER_PROTOCOL'].' 403 Forbidden');
  5. echo "<h1>403 Forbidden<h1><h4>You are not authorized to access the page.</h4>";
  6. echo '<hr/>'.$_SERVER['SERVER_SIGNATURE'];
  7. exit(1);
  8. }
  9. /*
  10. * Created on Oct 20, 2008
  11. *
  12. * To change the template for this generated file go to
  13. * Window - Preferences - PHPeclipse - PHP - Code Templates
  14. */
  15. class newsletter implements module {
  16. private $userId;
  17. private $moduleComponentId;
  18. private $action;
  19. public function getHtml($userId, $moduleComponentId, $action) {
  20. $this->userId = $userId;
  21. $this->moduleComponentId = $moduleComponentId;
  22. $this->action = $action;
  23. switch ($action) {
  24. case 'view':
  25. return $this->actionView();
  26. case 'edit':
  27. return $this->actionEdit();
  28. case 'editregistrants':
  29. return $this->actionEditregistrants();
  30. }
  31. }
  32. public function actionView() {
  33. echo "<p><b>Hi</b></p>";
  34. }
  35. public function actionEdit() {
  36. }
  37. public function actionEditregistrants() {
  38. }
  39. public static function isUserRegistered($userId, $moduleComponentId) {
  40. if (isInternalUserRegistered($userId, $moduleComponentId, false))
  41. return true;
  42. $userEmail = getUserEmail($userId);
  43. if (isExternalUserRegistered($userEmail, $moduleComponentId)) {
  44. moveUserToInternal($userEmail, $userId);
  45. return true;
  46. }
  47. return false;
  48. }
  49. private static function moveUserToInternal($userEmail, $userId) {
  50. $query = "SELECT `page_modulecomponentid` FROM `newsletter_externalusers` WHERE `user_email` = '$userEmail'";
  51. $result = mysql_query($query);
  52. while ($row = mysql_fetch_row($result)) {
  53. if (!isInternalUserRegistered($userId, $row[0], false)) {
  54. $insertQuery = "INSERT INTO `newsletter_users`(`page_modulecomponentid`, `newsletter_subscriptiontype`, `user_id`, `user_joindatetime`) VALUES ({$row[0]}, 'user', $userId, NOW())";
  55. if (!mysql_query($insertQuery)) {
  56. displayerror('Could not add user to internal list.');
  57. }
  58. else {
  59. $deleteQuery = "DELETE FROM `newsletter_externalusers` WHERE `page_modulecomponentid` = {$row[0]} AND `user_email` = '$userEmail'";
  60. if (!mysql_query($deleteQuery))
  61. displayerror('Could not remove user from external list.');
  62. }
  63. }
  64. else {
  65. $deleteQuery = "DELETE FROM `newsletter_externalusers` WHERE `page_modulecomponentid` = {$row[0]} AND `user_email` = '$userEmail'";
  66. if (!mysql_query($deleteQuery))
  67. displayerror('Could not remove user from external list.');
  68. }
  69. }
  70. }
  71. private static function isInternalUserRegistered($userId, $moduleComponentId, $testGroups = true) {
  72. $userExistsQuery = "SELECT COUNT(*) FROM `newsletter_users` WHERE `page_modulecomponentid` = $moduleComponentId AND `newsletter_subscriptiontype` = 'group'";
  73. $userExistsResult = mysql_query($userExistsQuery);
  74. if ($userExistsRow = mysql_fetch_row($userExistsResult))
  75. if ($userExistsRow[0] == 1)
  76. return true;
  77. if ($testGroups) {
  78. $userGroups = getGroupIds($userId);
  79. $usergroupTable = MYSQL_DATABASE_PREFIX . 'usergroup';
  80. $groupsQuery = "SELECT COUNT(*) FROM `newsletter_users`, `$usergroupTable` WHERE `newsletter_users`.`page_modulecomponentid` = $moduleComponentId AND `newsletter_users`.`newsletter_subscriptiontype` = 'group' " .
  81. "AND `$usergroupTable`.`user_id` = $userId AND `newsletter_users`.`usergroup_id` = `$usergroupTable`.`group_id`";
  82. $groupsResult = mysql_query($groupsQuery);
  83. if ($groupsResultRow = mysql_fetch_row($groupsResult))
  84. if ($groupsResultRow[0] > 0)
  85. return true;
  86. }
  87. return false;
  88. }
  89. public static function isExternalUserRegistered($userEmail, $moduleComponentId) {
  90. $userExistsQuery = "SELECT COUNT(*) FROM `newsletter_externalusers` WHERE `page_modulecomponentid` = $moduleComponentId AND `user_email` = '$userEmail'";
  91. $userExistsResult = mysql_query($userExistsQuery);
  92. if ($userExistsRow = mysql_fetch_row($userExistsResult))
  93. if ($userExistsRow[0] == 1)
  94. return true;
  95. return false;
  96. }
  97. private function getNewsletterName($listId) {
  98. $listNameQuery = 'SELECT `newsletter_name` FROM `newsletter_desc` WHERE `page_modulecomponentid` = ' . $listId;
  99. $listNameResult = mysql_query($listNameQuery);
  100. if ($listNameRow = mysql_fetch_row($listNameQuery))
  101. return $listNameRow[0];
  102. return '';
  103. }
  104. private function getNewsletterPath($pageId) {
  105. return getPagePath($pageId);
  106. }
  107. // return an array containing name of list, path, boolean indicating if user is registered or not
  108. public static function getSubscribableLists($userId) {
  109. $newsletterListQuery = 'SELECT `page_id`, `page_modulecomponentid` FROM `' . MYSQL_DATABASE_PREFIX . 'pages` WHERE `page_module` = \'newsletter\' ORDER BY `page_modulecomponentid`';
  110. $newsletterListResult = mysql_query($newsletterListQuery);
  111. $subscribableLists = array();
  112. while ($newsletterListRow = mysql_fetch_row($newsletterListQuery)) {
  113. if (getPermissions($userId, $newsletterListRow[0], 'view', 'newsletter')) {
  114. $listName = getNewsletterName($newsletterListRow[1]);
  115. $listPath = getNewsletterPath($newsletterListRow[0]);
  116. $subscribed = newsletter::isUserRegistered($userId, $newsletterListRow[1]);
  117. $subscribableLists[] = array($listName, $listPath, $subscribed);
  118. }
  119. }
  120. $subscribableLists[] = array('newsletter1', 'newsletter1', 0);
  121. $subscribableLists[] = array('newsletter2', 'newsletter3', 1);
  122. $subscribableLists[] = array('newsletter3', 'newsletter2', 1);
  123. return $subscribableLists;
  124. }
  125. public static function addUserToList($userEmail) {
  126. // select from newsletter_unsubscribed where email = $userEmail
  127. // if exists, return error
  128. //
  129. }
  130. // Return an array containing all distinct email ids newsletters for this module must be sent to
  131. public function getUserList() {
  132. }
  133. public function createModule($compId) {
  134. $query = "INSERT INTO `newsletter_desc` (`page_modulecomponentid` ,`newsletter_name`)VALUES ('$compId', 'New Newsletter')";
  135. $result = mysql_query($query) or die(mysql_error()."newsletter.lib L:188");
  136. }
  137. public function deleteModule($moduleComponentId) {
  138. return true;
  139. }
  140. public function copyModule($moduleComponentId,$newId) {
  141. return true;
  142. }
  143. }