Beispiel #1
0
 $ActivityType = new RowManager_ActivityTypeManager();
 $ActivityType->dropTable();
 $ActivityType->createTable();
 /*
  * StaffActivity Table
  *
  * Records details about some staff member's scheduled activity.
  *
  * staffactivity_id [INTEGER]  unique id of the staff activity record
  * person_id [INTEGER]  the id of the staff person associated with the activity
  * staffactivity_startdate [DATE]  The start date of the activity
  * staffactivity_enddate [DATE]  The end date of the activity.
  * staffactivity_contactPhone [STRING]  The phone # where the staff member can be reached during the activity.
  * activitytype_id [INTEGER]  The activity's type (i.e. "vacation")
  */
 $StaffActivity = new RowManager_StaffActivityManager();
 $StaffActivity->dropTable();
 $StaffActivity->createTable();
 /*
  * StaffScheduleType Table
  *
  * The HRDB schedule/form type.
  *
  * staffscheduletype_id [INTEGER]  Unique ID for this form/schedule type
  * staffscheduletype_desc [STRING]  Description of the staff form/schedule type.
  * staffscheduletype_startdate [DATE]  The min. start date for the schedule/form context
  * staffscheduletype_enddate [DATE]  The max ending date for the schedule/form.
  */
 $StaffScheduleType = new RowManager_StaffScheduleTypeManager();
 $StaffScheduleType->dropTable();
 $StaffScheduleType->createTable();
 /**
  * function getHTML
  * <pre>
  * This method returns the HTML data generated by this object.
  * </pre>
  * @return [STRING] HTML Display data.
  */
 function getHTML()
 {
     // Uncomment the following line if you want to create a template
     // tailored for this page:
     $path = $this->pathModuleRoot . 'templates/';
     // Otherwise use the standard Templates for the site:
     //$path = SITE_PATH_TEMPLATES;
     /*
      * store the link values
      */
     // example:
     // $this->linkValues[ 'view' ] = 'add/new/href/data/here';
     // store the link labels
     // Disable form?
     //         if ($this->disableForm != true)
     //         {
     $this->linkLabels['edit'] = $this->labels->getLabel('[Edit]');
     $this->linkLabels['del'] = $this->labels->getLabel('[Delete]');
     //      	  }
     $this->linkLabels['cont'] = $this->labels->getLabel('[Continue]');
     // $this->linkLabels[ 'view' ] = 'new link label here';
     /*
      * store any additional link Columns
      */
     // example:
     //$title = $this->labels->getLabel( '[title_groups]');
     //$columnLabel = $this->labels->getLabel( '[groups]');
     //$link = $this->linkValues[ 'groups' ];
     //$fieldName = 'accessgroup_id';
     //$this->addLinkColumn( $title, $columnLabel, $link, $fieldName);
     /*
      * Update any label tags ...
      */
     // example:
     // $name = $user->getName();
     // $this->labels->setLabelTag( '[Title]', '[userName]', $name);
     // NOTE:  this parent method prepares the $this->template with the
     // common AdminBox data.
     $this->prepareTemplate($path);
     // store the statevar id to edit
     $this->template->set('editEntryID', $this->staffactivity_id);
     $this->formValues['form_name'] = 'scheduledActivityForm';
     // store all the fields to the template
     $this->setFormFieldsToTemplate();
     /*
      * Form related Template variables:
      */
     // Disable form?
     if ($this->disableForm == true) {
         $this->template->set('disableForm', $this->disableForm);
     }
     /*
      * Insert the date start/end values for the following date fields:
      */
     // example:
     //$this->template->set( 'startYear_[fieldName]', 2000);
     //$this->template->set( 'endYear_[fieldName]', 2010);
     $this->template->set('startYear_staffactivity_startdate', 2000);
     $this->template->set('endYear_staffactivity_startdate', 2010);
     $this->template->set('startYear_staffactivity_enddate', 2000);
     $this->template->set('endYear_staffactivity_enddate', 2010);
     /*
      * List related Template variables :
      */
     // Store the XML Node name for the Data Access Field List
     $xmlNodeName = RowManager_StaffActivityManager::XML_NODE_NAME;
     $this->template->set('rowManagerXMLNodeName', $xmlNodeName);
     // store the primary key field name for the data being displayed
     $this->template->set('primaryKeyFieldName', 'staffactivity_id');
     // store data list to the template
     // NOTE: we initialize it here to make sure we capture any new data
     // from a recent processData() call.
     $dataAccessManager = new RowManager_StaffActivityManager();
     if ($this->form_start_date != '' && $this->form_end_date != '') {
         $dataAccessManager->constructSearchCondition('staffactivity_startdate', '>=', $this->form_start_date, true);
         $dataAccessManager->constructSearchCondition('staffactivity_enddate', '<=', $this->form_end_date, true);
     }
     //         if ($this->showOnlyVacation == true)
     // 		  {
     // 			  $dataAccessManager->setActivityTypeID('1'); // **HACK** activitytype set to vacation
     // 		  }
     if (count($this->activityTypesFilter) > 0) {
         $activityTypesList = implode(',', $this->activityTypesFilter);
         $dataAccessManager->addSearchCondition('activitytype_id in (' . $activityTypesList . ')');
         // 				$dataAccessManager->constructSearchCondition('activitytype_id','=',$activityTypesList, true);
     }
     $dataAccessManager->setPersonID($this->person_id);
     $dataAccessManager->setSortOrder($this->sortBy);
     //        $this->dataList = new StaffActivityList( $this->sortBy );
     $this->dataList = $dataAccessManager->getListIterator();
     // $dataAccessManager
     $this->template->setXML('dataList', $this->dataList->getXML());
     /*
      * Add any additional data required by the template here
      */
     $this->template->set('disableHeading', $this->disableHeading);
     $activitytype = new RowManager_ActivityTypeManager();
     //         if ($this->showOnlyVacation == true)
     // 		  {
     // 			  $activitytype->setActivityTypeID('1'); // **HACK** activitytype set to vacation
     // 		  }
     if (count($this->activityTypesFilter) > 0) {
         $activityTypesList = implode(',', $this->activityTypesFilter);
         if ($activityTypesList != '') {
             $activitytype->addSearchCondition('activitytype_id in (' . $activityTypesList . ')');
         }
     }
     $activitytype->setSortOrder('activitytype_desc');
     //         $activitytypeList = new ListIterator($activitytype);
     //         $activitytypeArray = $activitytypeList->getDropListArray();
     $activitytypeList = $activitytype->getListIterator();
     $activitytypeArray = $activitytypeList->getDataList();
     foreach (array_keys($activitytypeArray) as $key) {
         $record = current($activitytypeArray);
         $colorCode = $record['activitytype_color'];
         $eventDesc = $record['activitytype_desc'];
         $activitytypeArray[$key] = '<span style="color:' . $colorCode . ';">' . $eventDesc . '</span>';
         next($activitytypeArray);
     }
     $this->template->set('list_activitytype_id', $activitytypeArray);
     /* First check to see whether start date > end date
      * then check if date matches form date context 
      */
     if (isset($this->dateSwitchMessage)) {
         $this->template->set('date_error_msg', $this->dateSwitchMessage);
     } else {
         if (isset($this->dateContextMessage)) {
             $this->template->set('date_error_msg', $this->dateContextMessage);
         }
     }
     //         $templateName = 'siteAdminBox.php';
     // if you are creating a custom template for this page then
     // replace $templateName with the following:
     $this->template->set('formName', $this->formValues['form_name']);
     $templateName = 'page_EditStaffActivity.tpl.php';
     return $this->template->fetch($templateName);
 }
 /**
  * function __construct
  * <pre>
  * Initialize the object.
  * </pre>
  * @param $pathModuleRoot [STRING] The path to the module's root dir.
  * @param $viewer [OBJECT] The viewer object.
  * @param $sortBy [STRING] Field data to sort listManager by.
  * @param $managerInit [INTEGER] Initialization value for the listManager.
  * @return [void]
  */
 function __construct($pathModuleRoot, $viewer, $sortBy, $month_id = '')
 {
     parent::__construct(page_ViewScheduleCalendar::DISPLAY_FIELDS);
     $this->pathModuleRoot = $pathModuleRoot;
     $this->viewer = $viewer;
     if ($month_id == '') {
         $month_id = date('n');
     }
     $this->month_id = $month_id;
     $this->year_id = date('Y');
     $this->first_weekday = page_ViewScheduleCalendar::SUNDAY;
     $this->monthValues = $this->getMonthValues();
     //$this->yearValueList->getDropListArray();
     // Now load the access Privilege manager of this viewer
     $this->adminManager = new RowManager_AdminManager();
     // Get the person ID
     $accessManager = new RowManager_AccessManager();
     $accessManager->loadByViewerID($this->viewer->getViewerID());
     $personID = $accessManager->getPersonID();
     // Get the permissions the person has.
     $this->adminManager->loadByPersonID($personID);
     // Super-admin
     if ($this->adminManager->hasSitePriv()) {
         $dataAccessObject = new MultiTableManager();
         $activities = new RowManager_StaffActivityManager();
         $activityTypes = new RowManager_ActivityTypeManager();
         $person_info = new RowManager_PersonManager();
         $dataAccessObject->addRowManager($activities);
         $dataAccessObject->addRowManager($activityTypes, new JoinPair($activityTypes->getJoinOnActivityTypeID(), $activities->getJoinOnActivityTypeID()));
         $dataAccessObject->addRowManager($person_info, new JoinPair($person_info->getJoinOnPersonID(), $activities->getJoinOnPersonID()));
         $dataAccessObject->setSortOrder($sortBy);
         $this->listManager = $dataAccessObject->getListIterator();
     } else {
         if ($this->adminManager->isStaff($viewer->getID())) {
             $director_id = $this->getStaffIDfromViewerID();
             // 	        $staffPersonManager = new MultiTableManager();
             $staffManager = new RowManager_StaffDirectorManager();
             $staffManager->setDirectorID($director_id);
             // 	        $staffInfoManager = new RowManager_StaffManager();
             // 	        $staffPersonManager->addRowManager($staffInfoManager);
             // 	        $staffPersonManager->addRowManager($staffManager, new JoinPair($staffManager->getJoinOnStaffID(),$staffInfoManager->getJoinOnStaffID()));
             // 	        $staffList = $staffPersonManager->getListIterator();
             // 	        $staffArray = $staffList->getDataList();
             /* Retrieve all directors under the current director */
             $hierarchy_result = $staffManager->getDirectorHierarchy($director_id);
             $hierarchy_result->setFirst();
             $hierarchy_array = array();
             $directed_staff = '';
             while ($hierarchy_result->moveNext()) {
                 $staff_ids = $hierarchy_result->getCurrentRow();
                 // 	           echo 'array = <pre>'.print_r($hierarchy_array,true).'</pre>';
                 for ($lvl = 1; $lvl <= MAX_DIRECTOR_LEVELS; $lvl++) {
                     $staff_id = $staff_ids['staff_lvl' . $lvl];
                     if ($staff_id != null) {
                         $directed_staff .= $staff_id . ',';
                     }
                 }
             }
             if ($directed_staff != '') {
                 $directed_staff .= $director_id;
                 //= substr( $directed_staff, 0, -1 );
             } else {
                 $directed_staff = $director_id;
                 //page_ViewScheduleCalendar::NON_DIRECTOR;
             }
             // 	        echo '<pre>'.print_r($staffArray,true).'</pre>';
             // 	        // Retrieve the list of staff supervised by current viewer
             // 	        $directed_staff = '';
             // 	        foreach (array_keys($staffArray) as $key)
             // 	        {
             // 		        $record = current($staffArray);
             // 		        $directed_staff .= $record['person_id'].',';
             // 		        next($staffArray);
             // 	        }
             // 	        $directed_staff = substr($directed_staff,0,-1);
             // 	        if ($directed_staff == '')
             // 	        {
             // 		        $directed_staff = page_FormApprovalListing::NO_SUPERVISEES;	// don't match any person IDs
             // 	        }
             // Filter activities by those staff persons found in the list of staff under the direction of the current viewer
             $dataAccessObject = new MultiTableManager();
             $schedules = new RowManager_StaffScheduleManager();
             // 	        $schedules->addSearchCondition('person_id in ('.$directed_staff.')');
             $schedule_activities = new RowManager_ActivityScheduleManager();
             $activities = new RowManager_StaffActivityManager();
             $activityTypes = new RowManager_ActivityTypeManager();
             $person_info = new RowManager_PersonManager();
             $staff = new RowManager_StaffManager();
             $dataAccessObject->addRowManager($activities);
             $dataAccessObject->addRowManager($schedule_activities, new JoinPair($activities->getJoinOnActivityID(), $schedule_activities->getJoinOnActivityID()));
             $dataAccessObject->addRowManager($schedules, new JoinPair($schedules->getJoinOnScheduleID(), $schedule_activities->getJoinOnScheduleID()));
             $dataAccessObject->addRowManager($activityTypes, new JoinPair($activityTypes->getJoinOnActivityTypeID(), $activities->getJoinOnActivityTypeID()));
             $dataAccessObject->addRowManager($person_info, new JoinPair($person_info->getJoinOnPersonID(), $activities->getJoinOnPersonID()));
             $dataAccessObject->addRowManager($staff, new JoinPair($staff->getJoinOnPersonID(), $person_info->getJoinOnPersonID()));
             $dataAccessObject->addSearchCondition('staff_id in (' . $directed_staff . ')');
             $dataAccessObject->setSortOrder($sortBy);
             $this->listManager = $dataAccessObject->getListIterator();
         } else {
             $dataAccessObject = new RowManager_StaffActivityManager(page_ViewScheduleCalendar::UNAUTHORIZED_DIRECTOR);
             $this->listManager = $dataAccessObject->getListIterator();
         }
     }
     $this->monthEvents = array();
     // 		  $eventsOfType = array();	// stores events/activities of a specific type
     // 		  $eventDetails = array();	// stores details for a specific person's event
     $eventsArray = $this->listManager->getDataList();
     reset($eventsArray);
     if (count($eventsArray) > 0) {
         // Search through found activities
         foreach (array_keys($eventsArray) as $key) {
             $record = current($eventsArray);
             $activity_id = $record['staffactivity_id'];
             $activity_desc = $record['activitytype_desc'];
             $person_name = $record['person_fname'] . ' ' . $record['person_lname'];
             $contact_phone = $record['staffactivity_contactPhone'];
             $activity_type = $record['activitytype_abbr'];
             // 		        $eventDetails[$activity_id][0] = $person_name;
             // 		        $eventDetails[$activity_id][1] = $contact_phone;
             //
             // 		        $eventsOfType[$activity_type] = $eventDetails;
             $startdate_parts = explode('-', $record['staffactivity_startdate']);
             $enddate_parts = explode('-', $record['staffactivity_enddate']);
             // Store event information by weekday
             for ($month_id = $startdate_parts[1]; $month_id <= $enddate_parts[1]; $month_id++) {
                 if ($this->month_id == $month_id) {
                     $start_day = $startdate_parts[2];
                     if (substr($start_day, 0, 1) == 0) {
                         $start_day = substr($start_day, 1);
                     }
                     $end_day = $enddate_parts[2];
                     if (substr($end_day, 0, 1) == 0) {
                         $end_day = substr($end_day, 1);
                     }
                     // Store the event data (name and contact #) for each valid day of the month
                     $init_day = page_ViewScheduleCalendar::FIRST_MONTH_DATE;
                     $last_day = page_ViewScheduleCalendar::MAX_MONTH_DATE;
                     if ($startdate_parts[1] == $enddate_parts[1]) {
                         $init_day = $start_day;
                         $last_day = $end_day;
                     } else {
                         if ($month_id == $startdate_parts[1]) {
                             $init_day = $start_day;
                             $last_day = page_ViewScheduleCalendar::MAX_MONTH_DATE;
                         } else {
                             if ($month_id == $enddate_parts[1]) {
                                 $init_day = page_ViewScheduleCalendar::FIRST_MONTH_DATE;
                                 $last_day = $end_day;
                             } else {
                                 $init_day = page_ViewScheduleCalendar::FIRST_MONTH_DATE;
                                 $last_day = page_ViewScheduleCalendar::MAX_MONTH_DATE;
                             }
                         }
                     }
                     // Use the init and last day values as set based on above conditions
                     for ($day_id = $init_day; $day_id <= $last_day; $day_id++) {
                         $this->monthEvents[$day_id][$activity_type][$activity_id][0] = $activity_desc;
                         $this->monthEvents[$day_id][$activity_type][$activity_id][1] = $person_name;
                         $this->monthEvents[$day_id][$activity_type][$activity_id][2] = $contact_phone;
                         //$this->monthEvents[$day_id] = $eventsOfType;
                     }
                 }
             }
             next($eventsArray);
         }
     }
     /** TEST **/
     //         $values = $this->listManager->getDataList();
     //         echo 'values found = <pre>'.print_r($values,true).'</pre>';
     /** END TEST **/
     // now initialize the labels for this page
     // start by loading the default field labels for this Module
     $languageID = $viewer->getLanguageID();
     $seriesKey = modulecim_hrdb::MULTILINGUAL_SERIES_KEY;
     $pageKey = modulecim_hrdb::MULTILINGUAL_PAGE_FIELDS;
     $this->labels = new MultilingualManager($languageID, $seriesKey, $pageKey);
     // then load the page specific labels for this page
     $pageKey = page_ViewScheduleCalendar::MULTILINGUAL_PAGE_KEY;
     $this->labels->loadPageLabels($pageKey);
     $this->labels->setSeriesKey(SITE_LABEL_SERIES_SITE);
     $this->labels->loadPageLabels(SITE_LABEL_PAGE_FORM_LINKS);
 }
 /**
  * function __construct
  * <pre>
  * Initialize the object.
  * </pre>
  * @param $pathModuleRoot [STRING] The path to the module's root dir.
  * @param $viewer [OBJECT] The viewer object.
  * @param $sortBy [STRING] Field data to sort listManager by.
  * @param $managerInit [INTEGER] Initialization value for the listManager.
  * @return [void]
  */
 function __construct($pathModuleRoot, $viewer, $sortBy, $staffactivity_id = '', $activitytype_id = '', $disable_heading = false, $start_date = '', $end_date = '')
 {
     // remove activity types from page listing if there is only one common activity type
     if ($activitytype_id != '') {
         $DISPLAY_FIELDS = 'person_id,staffactivity_startdate,staffactivity_enddate,staffactivity_contactPhone';
         parent::__construct($DISPLAY_FIELDS);
     } else {
         parent::__construct(page_ViewStaffActivities::DISPLAY_FIELDS);
     }
     //         $this->testdate = $start_date;
     //         echo 'dates = '.$start_date.' and '.$end_date;
     $this->pathModuleRoot = $pathModuleRoot;
     $this->viewer = $viewer;
     $this->staffactivityID = $staffactivity_id;
     $this->activityTypeID = $activitytype_id;
     $this->disableHeading = $disable_heading;
     // Default sorting: person_id, start_date, end_date   // TODO: use person name not person_id
     if ($sortBy == '') {
         $sortBy = 'person_id,staffactivity_startdate,staffactivity_enddate';
     }
     // Now load the access Priviledge manager of this viewer
     $this->adminManager = new RowManager_AdminManager();
     // Get the person ID
     $accessManager = new RowManager_AccessManager();
     $accessManager->loadByViewerID($this->viewer->getViewerID());
     $personID = $accessManager->getPersonID();
     // Get the permissions the person has.
     $this->adminManager->loadByPersonID($personID);
     // Super-admin
     if ($this->adminManager->hasSitePriv()) {
         /*** Setup basic details for Staff Activity data-access object **/
         if ($this->staffactivityID != '') {
             $dataAccessObject = new RowManager_StaffActivityManager($this->staffactivityID);
         } else {
             $dataAccessObject = new RowManager_StaffActivityManager();
         }
         if ($this->activityTypeID != '') {
             $dataAccessObject->setActivityTypeID($this->activityTypeID);
         }
         if ($start_date != '' && $end_date != '') {
             // Create sub-query 1: activity date-range falls exactly within (or equal to) the date-range parameters
             $activities1 = new RowManager_StaffActivityManager();
             $activities_manager1 = new MultiTableManager();
             $activities_manager1->addRowManager($activities1);
             $activities_manager1->setFieldList('staffactivity_id');
             $dateWithinRange = "staffactivity_startdate >= '" . $start_date . "' and staffactivity_enddate <= '" . $end_date . "'";
             $activities_manager1->addSearchCondition($dateWithinRange);
             $internalRange_subQuery = $activities_manager1->createSQL();
             // Create sub-query 2: activity date-range encloses (or is equal to) the date-range parameters
             $activities2 = new RowManager_StaffActivityManager();
             $activities_manager2 = new MultiTableManager();
             $activities_manager2->addRowManager($activities2);
             $activities_manager2->setFieldList('staffactivity_id');
             $dateWithinRange = "staffactivity_startdate <= '" . $start_date . "' and staffactivity_enddate >= '" . $end_date . "'";
             $activities_manager2->addSearchCondition($dateWithinRange);
             $containsRange_subQuery = $activities_manager2->createSQL();
             // Create final query condition which includes Case 3: date-range parameters are intersected by activity date-range
             $validDateConditions = "staffactivity_startdate between '" . $start_date . "' and '" . $end_date . "' or ";
             $validDateConditions .= "staffactivity_enddate between '" . $start_date . "' and '" . $end_date . "' or ";
             $validDateConditions .= "staffactivity_id in (" . $internalRange_subQuery . ") or ";
             $validDateConditions .= "staffactivity_id in (" . $containsRange_subQuery . ")";
             $dataAccessObject->addSearchCondition($validDateConditions);
         }
         $dataAccessObject->setSortOrder($sortBy);
         $this->listManager = $dataAccessObject->getListIterator();
     } else {
         if ($this->adminManager->isStaff($viewer->getID())) {
             $director_id = $this->getStaffIDfromViewerID();
             // 	        $staffPersonManager = new MultiTableManager();
             $staffManager = new RowManager_StaffDirectorManager();
             $staffManager->setDirectorID($director_id);
             // 	        $staffInfoManager = new RowManager_StaffManager();
             // 	        $staffPersonManager->addRowManager($staffInfoManager);
             // 	        $staffPersonManager->addRowManager($staffManager, new JoinPair($staffManager->getJoinOnStaffID(),$staffInfoManager->getJoinOnStaffID()));
             // 	        $staffList = $staffPersonManager->getListIterator();
             // 	        $staffArray = $staffList->getDataList();
             /* Retrieve all directors under the current director */
             $hierarchy_result = $staffManager->getDirectorHierarchy($director_id);
             $hierarchy_result->setFirst();
             $hierarchy_array = array();
             $directed_staff = '';
             while ($hierarchy_result->moveNext()) {
                 $staff_ids = $hierarchy_result->getCurrentRow();
                 // 	           echo 'array = <pre>'.print_r($hierarchy_array,true).'</pre>';
                 for ($lvl = 1; $lvl <= MAX_DIRECTOR_LEVELS; $lvl++) {
                     $staff_id = $staff_ids['staff_lvl' . $lvl];
                     if ($staff_id != null) {
                         $directed_staff .= $staff_id . ',';
                     }
                 }
             }
             if ($directed_staff != '') {
                 $directed_staff .= $director_id;
                 //= substr( $directed_staff, 0, -1 );
             } else {
                 $directed_staff = $director_id;
                 //page_ViewScheduleCalendar::NON_DIRECTOR;
             }
             // Filter activities by those staff persons found in the list of staff under the direction of the current viewer
             $dataAccessObject = new MultiTableManager();
             $schedules = new RowManager_StaffScheduleManager();
             // 	        $schedules->addSearchCondition('person_id in ('.$directed_staff.')');
             $schedule_activities = new RowManager_ActivityScheduleManager();
             $activities = new RowManager_StaffActivityManager();
             if ($this->staffactivityID != '') {
                 $activities = new RowManager_StaffActivityManager($this->staffactivityID);
             }
             if ($this->activityTypeID != '') {
                 $activities->setActivityTypeID($this->activityTypeID);
             }
             $validDateConditions = '';
             if ($start_date != '' && $end_date != '') {
                 // Create sub-query 1: activity date-range falls exactly within (or equal to) the date-range parameters
                 $activities1 = new RowManager_StaffActivityManager();
                 $activities_manager1 = new MultiTableManager();
                 $activities_manager1->addRowManager($activities1);
                 $activities_manager1->setFieldList('staffactivity_id');
                 $dateWithinRange = "staffactivity_startdate >= '" . $start_date . "' and staffactivity_enddate <= '" . $end_date . "'";
                 $activities_manager1->addSearchCondition($dateWithinRange);
                 $internalRange_subQuery = $activities_manager1->createSQL();
                 // Create sub-query 2: activity date-range falls exactly within (or equal to) the date-range parameters
                 $activities2 = new RowManager_StaffActivityManager();
                 $activities_manager2 = new MultiTableManager();
                 $activities_manager2->addRowManager($activities2);
                 $activities_manager2->setFieldList('staffactivity_id');
                 $dateWithinRange = "staffactivity_startdate <= '" . $start_date . "' and staffactivity_enddate >= '" . $end_date . "'";
                 $activities_manager2->addSearchCondition($dateWithinRange);
                 $containsRange_subQuery = $activities_manager2->createSQL();
                 // Create final query condition which includes Case 3: date-range parameters are intersected by activity date-range
                 $validDateConditions = "staffactivity_startdate between '" . $start_date . "' and '" . $end_date . "' or ";
                 $validDateConditions .= "staffactivity_enddate between '" . $start_date . "' and '" . $end_date . "' or ";
                 $validDateConditions .= "cim_hrdb_staffactivity.staffactivity_id in (" . $internalRange_subQuery . ") or ";
                 $validDateConditions .= "cim_hrdb_staffactivity.staffactivity_id in (" . $containsRange_subQuery . ")";
                 // 	        	  $activities->addSearchCondition($validDateConditions);
             }
             // 	        $activityTypes = new RowManager_ActivityTypeManager();
             $person_info = new RowManager_PersonManager();
             $staff = new RowManager_StaffManager();
             $dataAccessObject->addRowManager($activities);
             $dataAccessObject->addRowManager($schedule_activities, new JoinPair($activities->getJoinOnActivityID(), $schedule_activities->getJoinOnActivityID()));
             $dataAccessObject->addRowManager($schedules, new JoinPair($schedules->getJoinOnScheduleID(), $schedule_activities->getJoinOnScheduleID()));
             // 	        $dataAccessObject->addRowManager($activityTypes, new JoinPair($activityTypes->getJoinOnActivityTypeID(), $activities->getJoinOnActivityTypeID()));
             $dataAccessObject->addRowManager($person_info, new JoinPair($person_info->getJoinOnPersonID(), $activities->getJoinOnPersonID()));
             $dataAccessObject->addRowManager($staff, new JoinPair($staff->getJoinOnPersonID(), $person_info->getJoinOnPersonID()));
             $dataAccessObject->addSearchCondition('staff_id in (' . $directed_staff . ')');
             // 	        $dataAccessObject->setFieldList('cim_hrdb_staffactivity.person_id,staffactivity_startdate,staffactivity_enddate,staffactivity_contactPhone');	//page_ViewStaffActivities::DISPLAY_FIELDS);
             if ($validDateConditions != '') {
                 $dataAccessObject->addSearchCondition($validDateConditions);
             }
             // 	    	 if (!isset($sortBy)||($sortBy == ''))
             // 			  {
             // 				  $sortBy = 'person_lname';		// TODO: remove this once we figure how to sort person even if name is cover for person_id
             // 			  }
             // 			  $dataAccessObject->setSortOrder( $sortBy );
             $list_iterator = $dataAccessObject->getListIterator();
             $data_array = $list_iterator->getDataList();
             // Go through the inefficient process of grabbing staff activity IDs  (could do min. as subquery)
             $staff_activities = '';
             reset($data_array);
             foreach (array_keys($data_array) as $key) {
                 $row = current($data_array);
                 $staff_activities .= $row['staffactivity_id'] . ',';
                 next($data_array);
             }
             if ($staff_activities != '') {
                 $staff_activities = substr($staff_activities, 0, -1);
             } else {
                 $staff_activities = page_ViewStaffActivities::NO_ACTIVITIES;
             }
             // 	        echo "<pre>".print_r($data_array,true)."</pre>";
             // 	        echo '<br>activities = '.$staff_activities.'<br>';
             /** Apparently we need to use single row manager for staff activity table:
                 therefore use found activity IDs... **/
             $activities2 = new RowManager_StaffActivityManager($this->staffactivityID);
             $activities2->addSearchCondition('staffactivity_id in (' . $staff_activities . ')');
             if (!isset($sortBy) || $sortBy == '' || $sortBy == 'person_id') {
                 $sortBy = 'person_lname';
                 // TODO: remove this once we figure how to sort person even if name is cover for person_id
             }
             $activities2->setSortOrder($sortBy);
             $this->listManager = $activities2->getListIterator();
             // dataAccessObject
             // 	        echo "<pre>".print_r($this->listManager->getDataList(),true)."</pre>";
         } else {
             $dataAccessObject = new RowManager_StaffActivityManager(page_ViewStaffActivities::UNAUTHORIZED_DIRECTOR);
             $this->listManager = $dataAccessObject->getListIterator();
         }
     }
     // now initialize the labels for this page
     // start by loading the default field labels for this Module
     $languageID = $viewer->getLanguageID();
     $seriesKey = modulecim_hrdb::MULTILINGUAL_SERIES_KEY;
     $pageKey = modulecim_hrdb::MULTILINGUAL_PAGE_FIELDS;
     $this->labels = new MultilingualManager($languageID, $seriesKey, $pageKey);
     // then load the page specific labels for this page
     $pageKey = page_ViewStaffActivities::MULTILINGUAL_PAGE_KEY;
     $this->labels->loadPageLabels($pageKey);
     $this->labels->setSeriesKey(SITE_LABEL_SERIES_SITE);
     $this->labels->loadPageLabels(SITE_LABEL_PAGE_FORM_LINKS);
 }