I have created a calendar module in Drupal 7. In addition to the default calendar on the website, my client can create a new calendar for events specific to a particular page.

Say that they want to add "Youth" and "College and Career" calendars; the db table looks like this:

table: churchcal_calendars

------id------|------name-----|------set_default------

------1-------------Main---------------1--------

------2-------------Youth--------------0---------

------3-------College and Career---------0-----------




In my churchcal.module file, I have set hook_block_info and hook_block_view:

    function churchcal_block_info() {
    	$blocks = array();
    	$blocks['monthly_calendar'] = array(
    		'info' => t('Display the monthly calendar.'),
    		'cache' => DRUPAL_NO_CACHE,
    	);
    	
    	//get calendars
    	include('db.php');
    	$result = mysql_query("SELECT * FROM churchcal_calendars WHERE set_default != '1'");
    		while($row = mysql_fetch_array($result)) {		
    			$cal_name = $row['name'];
    			$sys_cal_name = strtolower(str_replace(' ', '_', $cal_name));
    			$blocks['churchcal_' . $sys_cal_name] = array(
    				'info' => t('Display calendar for ' . $cal_name . '.'),
    				'cache' => DRUPAL_NO_CACHE,
    			);
    		}
    	
    	return $blocks;
    }

    function churchcal_block_view($block_name = '') {
    	if ($block_name == 'monthly_calendar') {
    		$content = monthlyCalendar();
    		$block = array (
    			'subject' => t(''),
    			'content' => $content,
    		);
    	}
    		
    		//get calendars
    		include('db.php');
    		$result = mysql_query("SELECT * FROM churchcal_calendars WHERE set_default != '1'");
    			while($row = mysql_fetch_array($result)) {
    				$cal_name = $row['name'];
    				$sys_cal_name = strtolower(str_replace(' ', '_', $cal_name));
    				$cal_id = $row['id'];
    				
    				if($block_name == 'churchcal_' . $sys_cal_name) {
    					$content .= churchCal($cal_id);
    					$block = array(
    						'subject' => t('Upcoming Events'),
    						'content' => $content,
    					);
    			}
    		
    		return $block;
    	}
    }


The "monthly_calendar" is the main calendar, and there is no problem with that block.

Beneath the monthly calendar is the code for the additional calendars. I can see each calendar in admin/structure/block page (for the example "Display calendar for Youth", "Display calendar for College and Career"). That part works great. However, **I can only see one calendar**, and that is whichever is first in the db with default != 1. In this example, the Youth calendar would display, but not the College and Career. So, it tells me that hook_block_info is correct and there is a problem with hook_block_view.

How can I display a calendar for each calendar in the db?