Browse Source

Fixing class SystemAnnouncementManager. When autoloading the class with constants see #4808

Julio Montoya 12 years ago
parent
commit
ddb4caf4e9

+ 52 - 73
main/admin/system_announcements.php

@@ -60,82 +60,62 @@ if ($_GET['action'] != 'add' && $_GET['action'] != 'edit') {
 
 /* MAIN CODE */
 
-$form_action = '';
 $show_announcement_list = true;
-if (isset ($_GET['action']) && $_GET['action'] == 'make_visible') {
-    switch ($_GET['person']) {
-        case VISIBLE_TEACHER :
-            SystemAnnouncementManager :: set_visibility($_GET['id'], VISIBLE_TEACHER, true);
-            break;
-        case VISIBLE_STUDENT :
-            SystemAnnouncementManager :: set_visibility($_GET['id'], VISIBLE_STUDENT, true);
-            break;
-        case VISIBLE_GUEST :
-            SystemAnnouncementManager :: set_visibility($_GET['id'], VISIBLE_GUEST, true);
-            break;
-    }
-}
-
-if (isset ($_GET['action']) && $_GET['action'] == 'make_invisible') {
-    switch ($_GET['person']) {
-        case VISIBLE_TEACHER :
-            SystemAnnouncementManager :: set_visibility($_GET['id'], VISIBLE_TEACHER, false);
-            break;
-        case VISIBLE_STUDENT :
-            SystemAnnouncementManager :: set_visibility($_GET['id'], VISIBLE_STUDENT, false);
-            break;
-        case VISIBLE_GUEST :
-            SystemAnnouncementManager :: set_visibility($_GET['id'], VISIBLE_GUEST, false);
-            break;
-    }
-}
+$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : null;
 
 // Form was posted?
 if (isset ($_POST['action'])) {
     $action_todo = true;
 }
 
-// Delete an announcement.
-if (isset ($_GET['action']) && $_GET['action'] == 'delete') {
-    SystemAnnouncementManager :: delete_announcement($_GET['id']);
-    Display :: display_confirmation_message(get_lang('AnnouncementDeleted'));
-}
-
-// Delete selected announcements.
-if (isset ($_POST['action']) && $_POST['action'] == 'delete_selected') {
-    foreach($_POST['id'] as $index => $id) {
-        SystemAnnouncementManager :: delete_announcement($id);
-    }
-    Display :: display_confirmation_message(get_lang('AnnouncementDeleted'));
-    $action_todo = false;
-}
-
-// Add an announcement.
-if (isset ($_GET['action']) && $_GET['action'] == 'add') {
-    $values['action'] = 'add';
-    // Set default time window: NOW -> NEXT WEEK
-    $values['start'] = date('Y-m-d H:i:s',api_strtotime(api_get_local_time()));
-    $values['end']   = date('Y-m-d H:i:s',api_strtotime(api_get_local_time()) + (7 * 24 * 60 * 60));
-    $action_todo = true;
-}
-
-// Edit an announcement.
-if (isset ($_GET['action']) && $_GET['action'] == 'edit') {
-
-    $announcement 				= SystemAnnouncementManager :: get_announcement($_GET['id']);
-    $values['id'] 				= $announcement->id;
-    $values['title'] 			= $announcement->title;
-    $values['content']			= $announcement->content;
-    $values['start'] 			= api_get_local_time($announcement->date_start);
-    $values['end'] 				= api_get_local_time($announcement->date_end);
-    $values['visible_teacher'] 	= $announcement->visible_teacher;
-    $values['visible_student'] 	= $announcement->visible_student ;
-    $values['visible_guest'] 	= $announcement->visible_guest ;
-    $values['lang'] 			= $announcement->lang;
-    $values['action']			= 'edit';
-    $groups = SystemAnnouncementManager :: get_announcement_groups($announcement->id);
-    $values['group'] = isset($groups[0]['group_id']) ? $groups[0]['group_id'] : 0;
-    $action_todo = true;
+//Actions
+switch($action) {
+    case 'make_visible':
+    case 'make_invisible':
+        $status = false;
+        if ($action == 'make_visible') {
+            $status = true;
+        }
+        SystemAnnouncementManager :: set_visibility($_GET['id'], $_GET['person'], $status);
+        break;
+    case 'delete':
+        // Delete an announcement.
+        SystemAnnouncementManager :: delete_announcement($_GET['id']);
+        Display :: display_confirmation_message(get_lang('AnnouncementDeleted'));
+        break;
+    
+    case 'delete_selected':
+        foreach($_POST['id'] as $index => $id) {
+            SystemAnnouncementManager :: delete_announcement($id);
+        }
+        Display :: display_confirmation_message(get_lang('AnnouncementDeleted'));
+        $action_todo = false;
+        break;
+    case 'add':
+        // Add an announcement.
+        $values['action'] = 'add';
+        // Set default time window: NOW -> NEXT WEEK
+        $values['start'] = date('Y-m-d H:i:s',api_strtotime(api_get_local_time()));
+        $values['end']   = date('Y-m-d H:i:s',api_strtotime(api_get_local_time()) + (7 * 24 * 60 * 60));
+        $action_todo = true;
+        break;
+    case 'edit':
+        // Edit an announcement.
+        $announcement 				= SystemAnnouncementManager :: get_announcement($_GET['id']);
+        $values['id'] 				= $announcement->id;
+        $values['title'] 			= $announcement->title;
+        $values['content']			= $announcement->content;
+        $values['start'] 			= api_get_local_time($announcement->date_start);
+        $values['end'] 				= api_get_local_time($announcement->date_end);
+        $values['visible_teacher'] 	= $announcement->visible_teacher;
+        $values['visible_student'] 	= $announcement->visible_student ;
+        $values['visible_guest'] 	= $announcement->visible_guest ;
+        $values['lang'] 			= $announcement->lang;
+        $values['action']			= 'edit';
+        $groups = SystemAnnouncementManager :: get_announcement_groups($announcement->id);
+        $values['group'] = isset($groups[0]['group_id']) ? $groups[0]['group_id'] : 0;
+        $action_todo = true;
+        break;
 }
 
 if ($action_todo) {
@@ -144,7 +124,6 @@ if ($action_todo) {
     } elseif (isset($_REQUEST['action']) && $_REQUEST['action'] == 'edit') {
         $form_title = get_lang('EditNews');
     }
-
     $form = new FormValidator('system_announcement');
     $form->addElement('header', '', $form_title);
     $form->add_textfield('title', get_lang('Title'), true, array('size'=>'60px'));
@@ -259,9 +238,9 @@ if ($show_announcement_list) {
         $row[] = $announcement->title;        
         $row[] = api_convert_and_format_date($announcement->date_start);
         $row[] = api_convert_and_format_date($announcement->date_end);
-        $row[] = "<a href=\"?id=".$announcement->id."&amp;person=".VISIBLE_TEACHER."&amp;action=". ($announcement->visible_teacher ? 'make_invisible' : 'make_visible')."\">".Display::return_icon(($announcement->visible_teacher  ? 'visible.gif' : 'invisible.gif'), get_lang('ShowOrHide'))."</a>";
-        $row[] = "<a href=\"?id=".$announcement->id."&amp;person=".VISIBLE_STUDENT."&amp;action=". ($announcement->visible_student  ? 'make_invisible' : 'make_visible')."\">".Display::return_icon(($announcement->visible_student  ? 'visible.gif' : 'invisible.gif'), get_lang('ShowOrHide'))."</a>";
-        $row[] = "<a href=\"?id=".$announcement->id."&amp;person=".VISIBLE_GUEST."&amp;action=". ($announcement->visible_guest ? 'make_invisible' : 'make_visible')."\">".Display::return_icon(($announcement->visible_guest  ? 'visible.gif' : 'invisible.gif'), get_lang('ShowOrHide'))."</a>";
+        $row[] = "<a href=\"?id=".$announcement->id."&amp;person=".SystemAnnouncementManager::VISIBLE_TEACHER."&amp;action=". ($announcement->visible_teacher ? 'make_invisible' : 'make_visible')."\">".Display::return_icon(($announcement->visible_teacher  ? 'visible.gif' : 'invisible.gif'), get_lang('ShowOrHide'))."</a>";
+        $row[] = "<a href=\"?id=".$announcement->id."&amp;person=".SystemAnnouncementManager::VISIBLE_STUDENT."&amp;action=". ($announcement->visible_student  ? 'make_invisible' : 'make_visible')."\">".Display::return_icon(($announcement->visible_student  ? 'visible.gif' : 'invisible.gif'), get_lang('ShowOrHide'))."</a>";
+        $row[] = "<a href=\"?id=".$announcement->id."&amp;person=".SystemAnnouncementManager::VISIBLE_GUEST."&amp;action=". ($announcement->visible_guest ? 'make_invisible' : 'make_visible')."\">".Display::return_icon(($announcement->visible_guest  ? 'visible.gif' : 'invisible.gif'), get_lang('ShowOrHide'))."</a>";
         
         $row[] = $announcement->lang;
         $row[] = "<a href=\"?action=edit&id=".$announcement->id."\">".Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL)."</a> <a href=\"?action=delete&id=".$announcement->id."\"  onclick=\"javascript:if(!confirm('".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"), ENT_QUOTES))."')) return false;\">".Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL)."</a>";

+ 26 - 18
main/inc/lib/system_announcements.lib.php

@@ -6,9 +6,7 @@
 /**
  * Code
  */
-define('VISIBLE_GUEST', 1);
-define('VISIBLE_STUDENT', 2);
-define('VISIBLE_TEACHER', 3);
+
 
 /**
 *	This is the system announcements library for Dokeos.
@@ -16,6 +14,11 @@ define('VISIBLE_TEACHER', 3);
 *	@package chamilo.library
 */
 class SystemAnnouncementManager {
+    
+    CONST VISIBLE_GUEST   = 1;
+    CONST VISIBLE_STUDENT = 2;
+    CONST VISIBLE_TEACHER = 3;
+    
 	/**
 	 * Displays all announcements
 	 * @param int $visible VISIBLE_GUEST, VISIBLE_STUDENT or VISIBLE_TEACHER
@@ -44,13 +47,13 @@ class SystemAnnouncementManager {
         ." AND ((NOW() BETWEEN date_start AND date_end) OR date_end='0000-00-00') ";
         
         switch ($visible) {
-            case VISIBLE_GUEST :
+            case self::VISIBLE_GUEST :
                 $sql .= " AND visible_guest = 1 ";
                 break;
-            case VISIBLE_STUDENT :
+            case self::VISIBLE_STUDENT :
                 $sql .= " AND visible_student = 1 ";
                 break;
-            case VISIBLE_TEACHER :
+            case self::VISIBLE_TEACHER :
                 $sql .= " AND visible_teacher = 1 ";
                 break;
         }
@@ -128,13 +131,13 @@ class SystemAnnouncementManager {
 				WHERE ( lang = '$user_selected_language' OR lang IS NULL) AND ( '$now' >= date_start AND '$now' <= date_end) ";
 				
 		switch ($visible) {
-			case VISIBLE_GUEST :
+			case self::VISIBLE_GUEST :
 				$sql .= " AND visible_guest = 1 ";
 				break;
-			case VISIBLE_STUDENT :
+			case self::VISIBLE_STUDENT :
 				$sql .= " AND visible_student = 1 ";
 				break;
-			case VISIBLE_TEACHER :
+			case self::VISIBLE_TEACHER :
 				$sql .= " AND visible_teacher = 1 ";
 				break;
 		}
@@ -219,19 +222,19 @@ class SystemAnnouncementManager {
 
 	public static function count_nb_announcement($start = 0, $user_id = '') {
 		$start = intval($start);
-		$visibility = api_is_allowed_to_create_course() ? VISIBLE_TEACHER : VISIBLE_STUDENT;
+		$visibility = api_is_allowed_to_create_course() ? self::VISIBLE_TEACHER : self::VISIBLE_STUDENT;
 		$user_selected_language = api_get_interface_language();
 		$db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS);
 		$sql = 'SELECT id FROM '.$db_table.' WHERE (lang="'.$user_selected_language.'" OR lang IS NULL) ';
 		if (isset($user_id)) {
 			switch ($visibility) {
-				case VISIBLE_GUEST :
+				case self::VISIBLE_GUEST :
 					$sql .= " AND visible_guest = 1 ";
 					break;
-				case VISIBLE_STUDENT :
+				case self::VISIBLE_STUDENT :
 					$sql .= " AND visible_student = 1 ";
 					break;
-				case VISIBLE_TEACHER :
+				case self::VISIBLE_TEACHER :
 					$sql .= " AND visible_teacher = 1 ";
 					break;
 			}
@@ -496,8 +499,13 @@ class SystemAnnouncementManager {
 		$db_table 			= Database::get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS);
 		$visible			= intval($visible);
 		$announcement_id 	= intval($announcement_id);
-
-		$field = ($user == VISIBLE_TEACHER ? 'visible_teacher' : ($user == VISIBLE_STUDENT ? 'visible_student' : 'visible_guest'));
+        
+        if (!in_array($user, array(self::VISIBLE_GUEST, self::VISIBLE_STUDENT, self::VISIBLE_TEACHER))) {
+            return false;
+        }
+        
+		$field = ($user == self::VISIBLE_TEACHER ? 'visible_teacher' : ($user == self::VISIBLE_STUDENT ? 'visible_student' : 'visible_guest'));
+        
 		$sql = "UPDATE ".$db_table." SET ".$field." = '".$visible."' WHERE id='".$announcement_id."'";
 		$res = Database::query($sql);
 		if ($res === false) {
@@ -586,13 +594,13 @@ class SystemAnnouncementManager {
 				WHERE ( lang = '$user_selected_language' OR lang IS NULL) AND ( '$now' >= date_start AND '$now' <= date_end) ";
 		
 		switch ($visible) {
-			case VISIBLE_GUEST :
+			case self::VISIBLE_GUEST :
 				$sql .= " AND visible_guest = 1 ";
 				break;
-			case VISIBLE_STUDENT :
+			case self::VISIBLE_STUDENT :
 				$sql .= " AND visible_student = 1 ";
 				break;
-			case VISIBLE_TEACHER :
+			case self::VISIBLE_TEACHER :
 				$sql .= " AND visible_teacher = 1 ";
 				break;
 		}

+ 3 - 3
main/inc/lib/userportal.lib.php

@@ -83,7 +83,7 @@ class IndexManager {
 		$announcement = intval($announcement);	
         
 		if (!api_is_anonymous() && $this->user_id) {
-			$visibility = api_is_allowed_to_create_course() ? VISIBLE_TEACHER : VISIBLE_STUDENT;
+			$visibility = api_is_allowed_to_create_course() ? SystemAnnouncementManager::VISIBLE_TEACHER : SystemAnnouncementManager::VISIBLE_STUDENT;
 			if ($show_slide) {
 				$announcements = SystemAnnouncementManager :: display_announcements_slider($visibility, $announcement);                
 			} else {
@@ -91,9 +91,9 @@ class IndexManager {
 			}
 		} else {
 			if ($show_slide) {
-				$announcements = SystemAnnouncementManager :: display_announcements_slider(VISIBLE_GUEST, $announcement);
+				$announcements = SystemAnnouncementManager :: display_announcements_slider(SystemAnnouncementManager::VISIBLE_GUEST, $announcement);
 			} else {
-				$announcements = SystemAnnouncementManager :: display_all_announcements(VISIBLE_GUEST, $announcement);
+				$announcements = SystemAnnouncementManager :: display_all_announcements(SystemAnnouncementManager::VISIBLE_GUEST, $announcement);
 			}
 		}
 		return $announcements;

+ 2 - 4
news_list.php

@@ -14,15 +14,13 @@ if (api_is_platform_admin()) {
 }
 
 if (api_is_anonymous()) {
-    $visibility = VISIBLE_GUEST;
+    $visibility = SystemAnnouncementManager::VISIBLE_GUEST;
 } else {
-    $visibility = api_is_allowed_to_create_course() ? VISIBLE_TEACHER : VISIBLE_STUDENT;
+    $visibility = api_is_allowed_to_create_course() ? SystemAnnouncementManager::VISIBLE_TEACHER : SystemAnnouncementManager::VISIBLE_STUDENT;
 }
-
 $content =  SystemAnnouncementManager ::display_announcements_slider($visibility, $_GET['id']);
 
 $tpl = new Template($tool_name);
-
 $tpl->assign('actions', $actions);
 //$tpl->assign('message', $message);
 $tpl->assign('content', $content);