Go to the documentation of this file.00001 <?php
00002 if(!defined('__PRAGYAN_CMS'))
00003 {
00004 header($_SERVER['SERVER_PROTOCOL'].' 403 Forbidden');
00005 echo "<h1>403 Forbidden<h1><h4>You are not authorized to access the page.</h4>";
00006 echo '<hr/>'.$_SERVER['SERVER_SIGNATURE'];
00007 exit(1);
00008 }
00009
00010
00011
00012
00013
00014
00015
00016
00017 class newsletter implements module {
00018 private $userId;
00019 private $moduleComponentId;
00020 private $action;
00021
00022 public function getHtml($userId, $moduleComponentId, $action) {
00023 $this->userId = $userId;
00024 $this->moduleComponentId = $moduleComponentId;
00025 $this->action = $action;
00026
00027 switch ($action) {
00028 case 'view':
00029 return $this->actionView();
00030 case 'edit':
00031 return $this->actionEdit();
00032 case 'editregistrants':
00033 return $this->actionEditregistrants();
00034
00035 }
00036 }
00037
00038 public function actionView() {
00039 echo "<p><b>Hi</b></p>";
00040 }
00041
00042 public function actionEdit() {
00043
00044 }
00045
00046 public function actionEditregistrants() {
00047
00048 }
00049
00050 public static function isUserRegistered($userId, $moduleComponentId) {
00051 if (isInternalUserRegistered($userId, $moduleComponentId, false))
00052 return true;
00053
00054 $userEmail = getUserEmail($userId);
00055 if (isExternalUserRegistered($userEmail, $moduleComponentId)) {
00056 moveUserToInternal($userEmail, $userId);
00057 return true;
00058 }
00059
00060 return false;
00061 }
00062
00063 private static function moveUserToInternal($userEmail, $userId) {
00064 $query = "SELECT `page_modulecomponentid` FROM `newsletter_externalusers` WHERE `user_email` = '$userEmail'";
00065 $result = mysql_query($query);
00066 while ($row = mysql_fetch_row($result)) {
00067 if (!isInternalUserRegistered($userId, $row[0], false)) {
00068 $insertQuery = "INSERT INTO `newsletter_users`(`page_modulecomponentid`, `newsletter_subscriptiontype`, `user_id`, `user_joindatetime`) VALUES ({$row[0]}, 'user', $userId, NOW())";
00069 if (!mysql_query($insertQuery)) {
00070 displayerror('Could not add user to internal list.');
00071 }
00072 else {
00073 $deleteQuery = "DELETE FROM `newsletter_externalusers` WHERE `page_modulecomponentid` = {$row[0]} AND `user_email` = '$userEmail'";
00074 if (!mysql_query($deleteQuery))
00075 displayerror('Could not remove user from external list.');
00076 }
00077 }
00078 else {
00079 $deleteQuery = "DELETE FROM `newsletter_externalusers` WHERE `page_modulecomponentid` = {$row[0]} AND `user_email` = '$userEmail'";
00080 if (!mysql_query($deleteQuery))
00081 displayerror('Could not remove user from external list.');
00082 }
00083 }
00084 }
00085
00086 private static function isInternalUserRegistered($userId, $moduleComponentId, $testGroups = true) {
00087 $userExistsQuery = "SELECT COUNT(*) FROM `newsletter_users` WHERE `page_modulecomponentid` = $moduleComponentId AND `newsletter_subscriptiontype` = 'group'";
00088 $userExistsResult = mysql_query($userExistsQuery);
00089 if ($userExistsRow = mysql_fetch_row($userExistsResult))
00090 if ($userExistsRow[0] == 1)
00091 return true;
00092
00093 if ($testGroups) {
00094 $userGroups = getGroupIds($userId);
00095 $usergroupTable = MYSQL_DATABASE_PREFIX . 'usergroup';
00096 $groupsQuery = "SELECT COUNT(*) FROM `newsletter_users`, `$usergroupTable` WHERE `newsletter_users`.`page_modulecomponentid` = $moduleComponentId AND `newsletter_users`.`newsletter_subscriptiontype` = 'group' " .
00097 "AND `$usergroupTable`.`user_id` = $userId AND `newsletter_users`.`usergroup_id` = `$usergroupTable`.`group_id`";
00098 $groupsResult = mysql_query($groupsQuery);
00099 if ($groupsResultRow = mysql_fetch_row($groupsResult))
00100 if ($groupsResultRow[0] > 0)
00101 return true;
00102 }
00103
00104 return false;
00105 }
00106
00107 public static function isExternalUserRegistered($userEmail, $moduleComponentId) {
00108 $userExistsQuery = "SELECT COUNT(*) FROM `newsletter_externalusers` WHERE `page_modulecomponentid` = $moduleComponentId AND `user_email` = '$userEmail'";
00109 $userExistsResult = mysql_query($userExistsQuery);
00110 if ($userExistsRow = mysql_fetch_row($userExistsResult))
00111 if ($userExistsRow[0] == 1)
00112 return true;
00113 return false;
00114 }
00115
00116 private function getNewsletterName($listId) {
00117 $listNameQuery = 'SELECT `newsletter_name` FROM `newsletter_desc` WHERE `page_modulecomponentid` = ' . $listId;
00118 $listNameResult = mysql_query($listNameQuery);
00119 if ($listNameRow = mysql_fetch_row($listNameQuery))
00120 return $listNameRow[0];
00121 return '';
00122 }
00123
00124 private function getNewsletterPath($pageId) {
00125 return getPagePath($pageId);
00126 }
00127
00128
00129 public static function getSubscribableLists($userId) {
00130 $newsletterListQuery = 'SELECT `page_id`, `page_modulecomponentid` FROM `' . MYSQL_DATABASE_PREFIX . 'pages` WHERE `page_module` = \'newsletter\' ORDER BY `page_modulecomponentid`';
00131 $newsletterListResult = mysql_query($newsletterListQuery);
00132
00133 $subscribableLists = array();
00134 while ($newsletterListRow = mysql_fetch_row($newsletterListQuery)) {
00135 if (getPermissions($userId, $newsletterListRow[0], 'view', 'newsletter')) {
00136 $listName = getNewsletterName($newsletterListRow[1]);
00137 $listPath = getNewsletterPath($newsletterListRow[0]);
00138 $subscribed = newsletter::isUserRegistered($userId, $newsletterListRow[1]);
00139 $subscribableLists[] = array($listName, $listPath, $subscribed);
00140 }
00141 }
00142
00143 $subscribableLists[] = array('newsletter1', 'newsletter1', 0);
00144 $subscribableLists[] = array('newsletter2', 'newsletter3', 1);
00145 $subscribableLists[] = array('newsletter3', 'newsletter2', 1);
00146
00147 return $subscribableLists;
00148 }
00149
00150 public static function addUserToList($userEmail) {
00151
00152
00153
00154 }
00155
00156
00157 public function getUserList() {
00158
00159 }
00160
00161 public function createModule(&$moduleComponentId) {
00162 $query = "SELECT MAX(page_modulecomponentid) as MAX FROM `newsletter_desc` ";
00163 $result = mysql_query($query) or die(mysql_error() . "article.lib L:73");
00164 $row = mysql_fetch_assoc($result);
00165 $compId = $row['MAX'] + 1;
00166
00167 $query = "INSERT INTO `newsletter_desc` (`page_modulecomponentid` ,`newsletter_name`)VALUES ('$compId', 'New Newsletter')";
00168 $result = mysql_query($query) or die(mysql_error()."newsletter.lib L:188");
00169 if (mysql_affected_rows()) {
00170 $moduleComponentId = $compId;
00171 return true;
00172 } else
00173 return false;
00174 }
00175
00176 public function deleteModule($moduleComponentId) {
00177
00178 }
00179
00180 public function copyModule($moduleComponentId) {
00181
00182 }
00183 }