• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • Examples
  • File List
  • Globals

cms/modules/newsletter.lib.php

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  * Created on Oct 20, 2008
00011  *
00012  * To change the template for this generated file go to
00013  * Window - Preferences - PHPeclipse - PHP - Code Templates
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         // return an array containing name of list, path, boolean indicating if user is registered or not
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                 // select from newsletter_unsubscribed where email = $userEmail
00152                 // if exists, return error
00153                 // 
00154         }
00155 
00156         // Return an array containing all distinct email ids newsletters for this module must be sent to
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 }

Generated on Sun Jan 2 2011 04:55:32 for Pragyan CMS by  doxygen 1.7.1