Example #1
0
// check to see if the parameter 'skipTables' was provided
// $skipTables = isset($_REQUEST['skipTables']);
$skipTables = true;
// if NOT then reset the tables...
if (!$skipTables) {
    /*
     * Division Table
     *
     * A division of some ministry.
     *
     * division_id [INTEGER]  unique identifier of division
     * division_name [STRING]  Name of the Division
     * division_desc [STRING]  Description of Division
     * ministry_id [INTEGER]  The ID of the Ministry this Division belongs to.
     */
    $Division = new RowManager_DivisionManager();
    $Division->dropTable();
    $Division->createTable();
    /*
     * Ministry Table
     *
     * stores details on a Ministry
     *
     * ministry_id [INTEGER]  unique id of this Ministry
     * ministry_name [STRING]  the Ministry's name
     * ministry_desc [STRING]  Description of the Ministry
     * ministry_website [STRING]  the URL of the Ministry's website
     */
    $Ministry = new RowManager_MinistryManager();
    $Ministry->dropTable();
    $Ministry->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
     $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->region_id);
     // store all the fields to the template
     $this->setFormFieldsToTemplate();
     /*
      * Form related Template variables:
      */
     $ministryManager = new RowManager_MinistryManager();
     $ministryIterator = $ministryManager->getListIterator();
     $ministryList = $ministryIterator->getDropListArray();
     $this->template->set('list_ministry_id', $ministryList);
     $divisionManager = new RowManager_DivisionManager();
     $divisionIterator = $divisionManager->getListIterator();
     $divisionList = $divisionIterator->getDropListArray();
     $this->template->set('list_division_id', $divisionList);
     /*
      * Insert the date start/end values for the following date fields:
      */
     // example:
     //$this->template->set( 'startYear_[fieldName]', 2000);
     //$this->template->set( 'endYear_[fieldName]', 2010);
     /*
      * List related Template variables :
      */
     // Store the XML Node name for the Data Access Field List
     $xmlNodeName = RowManager_StatsRegionManager::XML_NODE_NAME;
     $this->template->set('rowManagerXMLNodeName', $xmlNodeName);
     // store the primary key field name for the data being displayed
     $this->template->set('primaryKeyFieldName', 'region_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_StatsRegionManager();
     $dataAccessManager->setSortOrder($this->sortBy);
     //        $this->dataList = new StatsRegionList( $this->sortBy );
     $this->dataList = $dataAccessManager->getListIterator();
     $this->template->setXML('dataList', $this->dataList->getXML());
     /*
      * Add any additional data required by the template here
      */
     $templateName = 'siteAdminBox.php';
     // if you are creating a custom template for this page then
     // replace $templateName with the following:
     //$templateName = 'page_EditRegion.php';
     return $this->template->fetch($templateName);
 }
 /**
  * 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;
     // NOTE:  this parent method prepares the $this->template with the
     // common Form data.
     $this->prepareTemplate($path);
     // TODO: when implementing staff-specific stats reporting,
     //       refer to page_StaffSemesterReport.php in app_cim_stats module
     /** The frequency values (weeks, days,.. whatever was chosen) **/
     //this->freqValManager;
     //         $infoArray = array();
     $statNames = array();
     //ReportInfo
     $statReportInfo = new ReportInfo();
     /*** Determine which frequency is acting as the parent frequency (i.e. month is parent of week) **/
     $freqType = new RowManager_FreqTypeManager($this->freq_id);
     //              $freqType->setFreqID($this->freq_id);
     $freqTypeList = $freqType->getListIterator();
     $freqTypeArray = $freqTypeList->getDataList();
     // should be only 1 match for the frequency ID
     $parent_freq_id = '';
     $date_field_id = '';
     if (count($freqTypeArray) == 1) {
         $record = current($freqTypeArray);
         $parent_freq_id = $record['freq_parent_freq_id'];
         $date_field_id = $record['freq_parent_date_field_index'] - 1;
         //IMPORTANT: database stores 1-based index (to allow 0 default)
         //              echo ' freqTypeArray = <pre>'.print_r($freqTypeArray,true).'</pre>';
         // 	             echo ' dateFieldValues = <pre>'.print_r($dateFieldValues,true).'</pre>';
         //             	 echo ' date field index = '.$date_field_id;
     }
     $parentDateValues = array();
     $parentIndex = 0;
     // calendar
     $statReportInfo->calendar = array();
     $currentParentFreqVal = 0;
     // i.e. could be default starting month value if child stat is 'weekly'
     // actual data
     // dataArray[freqValID] = arrayOfData
     $statReportInfo->dataArray = array();
     $freqValList = new ListIterator($this->freqValManager);
     $freqValList->setFirst();
     while ($freqValList->moveNext()) {
         // TODO: check if below filters properly based on $this->freqValManager
         $freqVal = $freqValList->getCurrent(new RowManager_FreqValueManager());
         // i.e. week for weekly stats
         $freqValID = $freqVal->getID();
         // i.e. weekID for weekly stats
         // setup stuff for the calendar in the report
         $freqVal_dateTime = $freqVal->getFreqValue();
         // i.e. getEndDate for weekly stats in app_cim_stats
         $freqVal_date = substr($freqVal_dateTime, 0, 10);
         $freqVal_time = substr($freqVal_dateTime, 10);
         //              list( $year, $month, $day ) = explode('-', $freqVal_date );
         $dateFieldValues = explode('-', $freqVal_date);
         $timeFieldValues = explode(':', $freqVal_time);
         //              $month = ltrim($month, "0");		// strips '0's from in front of $month...
         // $day = ltrim($day, "0");
         $dateTimeValues = array_merge($dateFieldValues, $timeFieldValues);
         $parentDateFieldVal = 0;
         if (isset($dateFieldValues) && $date_field_id >= 0) {
             $parentDateFieldVal = $dateFieldValues[$date_field_id];
         }
         if ($currentParentFreqVal != $parentDateFieldVal) {
             // echo 'start new array<br/>';
             $currentParentFreqVal = $parentDateFieldVal;
         }
         //              echo 'parent val = '.$currentParentFreqVal;
         //              $currentParentFreqVal = ltrim($currentParentFreqVal,"0");	// trim any leading zeroes
         $parentDateValues[$parentIndex] = $currentParentFreqVal;
         $currentFreqVal = $dateTimeValues[$date_field_id + 1];
         // i.e. current freq = (some) hour if the parent = (some) day
         $statReportInfo->calendar[$currentParentFreqVal][$currentFreqVal] = $freqValID;
         // i.e. calendar[month][day] = $weekID
         // end calendar stuff
         // check if an entry exists in the stat values table for the current freq. value
         $this->dataManager->clearValues();
         $this->dataManager->setFreqValueID($freqValID);
         $statsManager = new RowManager_StatisticManager();
         $freqVal_statVals = new MultiTableManager();
         $freqVal_statVals->addRowManager($this->dataManager);
         $freqVal_statVals->addRowManager($statsManager, new JoinPair($statsManager->getJoinOnStatID(), $this->dataManager->getJoinOnStatID()));
         $statValsList = $freqVal_statVals->getListIterator();
         $statValsArray = $statValsList->getDataList();
         // retrieve stat values associated with some freq val (used for display)
         $stat_name = '';
         $stat_val = '';
         $freqValStatValsArray = array();
         //              echo '<br>stat vals array <pre>'.print_r( $statValsArray,true ).'</pre>';
         reset($statValsArray);
         foreach (array_keys($statValsArray) as $key) {
             $record = current($statValsArray);
             $stat_name = $record['statistic_name'];
             $stat_val = $record['statvalues_value'];
             // re-package array into simpler form for list display use
             $freqValStatValsArray[$stat_name] = $stat_val;
             next($statValsArray);
         }
         if (count($freqValStatValsArray) > 0) {
             $statReportInfo->dataArray[$freqValID] = $freqValStatValsArray;
             //                   echo 'freq val stat vals array: <pre>'.print_r( $freqValStatValsArray,true ).'</pre>';
         } else {
             $statReportInfo->dataArray[$freqValID] = null;
         }
         $parentIndex++;
     }
     //          echo 'calendar = <pre>'.print_r($statReportInfo->calendar,true).'</pre>';
     //          $infoArray[] = $statReportInfo;
     /*
      * Update any label tags ...
      */
     // example:
     // $name = $user->getName();
     // $this->labels->setLabelTag( '[Title]', '[userName]', $name);
     //         $campusJumpLinkSelectedValue = $this->linkValues['campusJumpLink'].$this->campus_id;
     //         $semesterJumpLinkSelectedValue = $this->linkValues['semesterJumpLink'].$this->semester_id;
     //
     // 			$this->template->set( 'calendar', $calendar );
     // 			$this->template->set( 'dataArray', $dataArray );
     //         $this->template->set( 'infoArray', $infoArray );
     $this->template->set('statReportInfo', $statReportInfo);
     // 		echo '<br> stat report: <pre>'.print_r($statReportInfo,true).'</pre>';
     $this->template->set('statsArray', $this->stat_names_array);
     // need to create a static array of parent frequency values (i.e. like list of months as headers for week values)
     $parent_freqs_array = array();
     if (isset($parent_freq_id) && $parent_freq_id > 0) {
         $parentFreqValues = new RowManager_FreqValueManager();
         $parentFreqValues->setFreqID($parent_freq_id);
         $parentFreqValuesList = $parentFreqValues->getListIterator();
         $parentFreqValuesArray = $parentFreqValuesList->getDataList();
         $i = 0;
         reset($parentFreqValuesArray);
         foreach (array_keys($parentFreqValuesArray) as $key) {
             $record = current($parentFreqValuesArray);
             //              $date_field_value = $parentDateValues[$i];
             //              echo "date field = ".$date_field_value;
             //              echo "record = ".$record['freqvalue_desc'];
             //              if ($date_field_value ==  $record['freqvalue_desc'])
             //              {
             //              	$parent_freqs_array[$date_field_value] = $record['freqvalue_desc'];
             //              	$i++;
             //           	 }
             $freqVal_dateTime = $record['freqvalue_value'];
             $freqVal_date = substr($freqVal_dateTime, 0, 10);
             $freqVal_time = substr($freqVal_dateTime, 10);
             $dateFieldValues = explode('-', $freqVal_date);
             $timeFieldValues = explode(':', $freqVal_time);
             $dateTimeValues = array_merge($dateFieldValues, $timeFieldValues);
             // setup array to have date field value (i.e. one of YYYY, MM, DD, HH, min, sec   values) as index
             // the value is the frequency type description (i.e. 'January' for MM = 01)
             $parent_freqs_array[$dateFieldValues[$date_field_id]] = $record['freqvalue_desc'];
             next($parentFreqValuesArray);
         }
         //            echo "parent freqs = <pre>".print_r($parent_freqs_array,true)."</pre>";
         $this->template->set('parentFreqArray', $parent_freqs_array);
         // //           echo 'parent freq id = '.$parent_freq_id;
         // // 			 echo 'parent freq array = <pre>'.print_r($parent_freqs_array, true).'</pre>';
     }
     // setup stuff for the calendar in the report
     $freqVal_dateTime = $freqVal->getFreqValue();
     // i.e. getEndDate for weekly stats in app_cim_stats
     $freqVal_date = substr($freqVal_dateTime, 0, 10);
     $freqVal_time = substr($freqVal_dateTime, 10);
     //              list( $year, $month, $day ) = explode('-', $freqVal_date );
     $dateFieldValues = explode('-', $freqVal_date);
     $timeFieldValues = explode(':', $freqVal_time);
     //              $month = ltrim($month, "0");		// strips '0's from in front of $month...
     // $day = ltrim($day, "0");
     $dateTimeValues = array_merge($dateFieldValues, $timeFieldValues);
     $parentDateFieldVal = 0;
     if (isset($dateFieldValues) && $date_field_id >= 0) {
         $parentDateFieldVal = $dateFieldValues[$date_field_id];
     }
     if ($currentParentFreqVal != $parentDateFieldVal) {
         // echo 'start new array<br/>';
         $currentParentFreqVal = $parentDateFieldVal;
     }
     //              echo 'parent val = '.$currentParentFreqVal;
     $currentParentFreqVal = ltrim($currentParentFreqVal, "0");
     // trim any leading zeroes
     $parentDateValues[$parentIndex] = $currentParentFreqVal;
     // Go through scope array and set template scope names for the scopes that were user-selected
     foreach (array_keys($this->scope_ref_array) as $scope_id) {
         $scope_ref_id = current($this->scope_ref_array);
         if ($scope_ref_id > 0) {
             switch ($scope_id) {
                 case RowManager_ScopeManager::SCOPE_MINISTRY:
                     $ministries = new RowManager_MinistryManager($scope_ref_id);
                     $ministryList = $ministries->getListIterator();
                     $ministryArray = $ministryList->getDataList();
                     $record = current($ministryArray);
                     $ministryName = $record['ministry_name'];
                     $this->template->set('ministryName', $ministryName);
                     break;
                 case RowManager_ScopeManager::SCOPE_DIVISION:
                     $divisions = new RowManager_DivisionManager($scope_ref_id);
                     $divList = $divisions->getListIterator();
                     $divArray = $divList->getDataList();
                     $record = current($divArray);
                     $divisionName = $record['division_name'];
                     $this->template->set('divisionName', $divisionName);
                     break;
                 case RowManager_ScopeManager::SCOPE_REGION:
                     $regions = new RowManager_StatsRegionManager($scope_ref_id);
                     $regionList = $regions->getListIterator();
                     $regionArray = $regionList->getDataList();
                     $record = current($regionArray);
                     $regionName = $record['region_desc'];
                     $this->template->set('regionName', $regionName);
                     break;
                 case RowManager_ScopeManager::SCOPE_LOCATION:
                     $locations = new RowManager_LocationManager($scope_ref_id);
                     $locationList = $locations->getListIterator();
                     $locationArray = $locationList->getDataList();
                     $record = current($locationArray);
                     $locationName = $record['location_desc'];
                     $this->template->set('locationName', $locationName);
                     break;
             }
         }
         next($this->scope_ref_array);
     }
     /** Retrieve values for  $freqDesc   and   $measName **/
     $freqTypes = new RowManager_FreqTypeManager();
     $freqTypes->setFreqID($this->freq_id);
     $freqList = $freqTypes->getListIterator();
     $freqArray = $freqList->getDataList();
     $freqDesc = '';
     if (count($freqArray) == 1) {
         $record = current($freqArray);
         $freqDesc = $record['freq_desc'];
     }
     $measTypes = new RowManager_MeasureTypeManager();
     $measTypes->setMeasureID($this->meas_id);
     $measList = $measTypes->getListIterator();
     $measArray = $measList->getDataList();
     $measName = '';
     if (count($measArray) == 1) {
         $record = current($measArray);
         $measName = $record['meas_name'];
     }
     // set [Instr] label value replacement values
     //       $instrVars = $freqDesc.','.$measName;
     //       $this->template->set('instrVars', $instrVars);
     $this->template->set('measName', $measName);
     $this->template->set('freqName', $freqDesc);
     $calcList = $this->calcManager->getListIterator();
     $calcArray = $calcList->getDataList();
     reset($calcArray);
     $calcNames = array();
     $i = 0;
     foreach (array_keys($calcArray) as $key) {
         $record = current($calcArray);
         $calcNames[$i] = $record['filter_name'];
         next($calcArray);
         $i++;
     }
     // set the additional calculation values (i.e. 'Total', 'Average', etc)
     $this->template->set('calcNames', $calcNames);
     // uncomment this line if you are creating a template for this page
     $templateName = 'page_StatsReport.tpl.php';
     // otherwise use the generic site template
     //$templateName = '';
     return $this->template->fetch($templateName);
 }