コード例 #1
0
    /**
     * @param $visible
     * @param $id
     * @param int $start
     * @param string $user_id
     * @return string
     */
    public static function display_all_announcements($visible, $id = -1, $start = 0,$user_id='')
    {
		$user_selected_language = api_get_interface_language();
		$start	= intval($start);

	    $tbl_announcement_group = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS_GROUPS);
	    $temp_user_groups = GroupPortalManager::get_groups_by_user(api_get_user_id(),0);
	    $groups =array();
	    foreach ($temp_user_groups as $user_group) {
	      $groups = array_merge($groups, array($user_group['id']));
	      $groups = array_merge($groups, GroupPortalManager::get_parent_groups($user_group['id']));
	    }
	    //checks if tables exists to not break platform not updated
	    $ann_group_db_ok =false;
	    if( Database::num_rows(Database::query("SHOW TABLES LIKE 'announcement_rel_group'")) > 0)
	       $ann_group_db_ok =true;
	    $groups_string = '('.implode($groups,',').')';

		$db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS);
		$now  = api_get_utc_datetime();

		$sql = "SELECT * FROM ".$db_table."
				WHERE ( lang = '$user_selected_language' OR lang IS NULL) AND ( '$now' >= date_start AND '$now' <= date_end) ";

		switch ($visible) {
			case self::VISIBLE_GUEST :
				$sql .= " AND visible_guest = 1 ";
				break;
			case self::VISIBLE_STUDENT :
				$sql .= " AND visible_student = 1 ";
				break;
			case self::VISIBLE_TEACHER :
				$sql .= " AND visible_teacher = 1 ";
				break;
		}

	    if (count($groups) > 0 and $ann_group_db_ok ) {
            $sql .= " OR id IN (SELECT announcement_id FROM $tbl_announcement_group
                              WHERE group_id in $groups_string) ";
	    }

		if (api_is_multiple_url_enabled()) {
			$current_access_url_id = api_get_current_access_url_id();
            $sql .= " AND access_url_id IN ('1', '$current_access_url_id')";
		}

		if(!isset($_GET['start']) || $_GET['start'] == 0) {
			$sql .= " ORDER BY date_start DESC LIMIT ".$start.",20";
		} else {
			$sql .= " ORDER BY date_start DESC LIMIT ".($start+1).",20";
		}
		$announcements = Database::query($sql);
		$content = '';
		if (Database::num_rows($announcements) > 0) {
			$query_string = ereg_replace('announcement=[1-9]+', '', $_SERVER['QUERY_STRING']);
			$query_string = ereg_replace('&$', '', $query_string);
			$url = api_get_self();
			$content .= '<div class="system_announcements">';
			$content .= '<h3>'.get_lang('SystemAnnouncements').'</h3>';
			$content .= '<table align="center">';
				$content .= '<tr>';
					$content .= '<td>';
						$content .= SystemAnnouncementManager :: display_arrow($user_id);
					$content .= '</td>';
				$content .= '</tr>';
			$content .= '</table>';
			$content .= '<table align="center" border="0" width="900px">';
			while ($announcement = Database::fetch_object($announcements)) {
				$display_date = api_convert_and_format_date($announcement->display_date, DATE_FORMAT_LONG);
				$content .= '<tr><td>';
				$content .= '<a name="'.$announcement->id.'"></a>
						<div class="system_announcement">
						<h2>'.$announcement->title.'</h2><div class="system_announcement_date">'.$display_date.'</div>
						<br />
					  	<div class="system_announcement_content">'
					  			.$announcement->content.'
						</div>
					  </div><br />';
				$content .= '</tr></td>';
			}
			$content .= '</table>';

			$content .= '<table align="center">';
				$content .= '<tr>';
					$content .= '<td>';
						$content .= SystemAnnouncementManager :: display_arrow($user_id);
					$content .= '</td>';
				$content .= '</tr>';
			$content .= '</table>';
			$content .= '</div>';
		}
		return $content;
	}