protected function prepareRecipientRegionSimpleFormat($activityId) { $returnData = array(); $element = new Iati_Aidstream_Element_Activity_RecipientRegion(); $data = $element->fetchData($activityId, true); $csvData = $this->prepareCsvDataForElement($element, $data, false); $returnData['recipient-region'] = $csvData['RecipientRegion-text']; $returnData['recipient-region-codes'] = $csvData['RecipientRegion-code']; $returnData['recipient-region-percentages'] = $csvData['RecipientRegion-percentage']; return $returnData; }
/** * * Function to fetch data from the local database and generates array of activities base on segmentation. */ public function getDataToPublish() { $activityCollection = new Iati_ActivityCollection(); $activitiesId = $activityCollection->getPublishedActivityCollection($this->publisherOrgId); if ($this->segmented) { /** *Seperate activities by country or region * *foreach activity *if number of country is 1 i.e count of country is one and size is not zero, use country code *else * if number of region is 1 i.e count of region is one and size is not zero, use region code * else if number of regions is greater than 1 , use 998 * else * if number of countries is 0, use 998 * else use the country with max percentage, if no percentage use first inserted. **/ $segmentedActivities = array(); foreach ($activitiesId as $activityId) { $recipientCountryObj = new Iati_Aidstream_Element_Activity_RecipientCountry(); $countries = $recipientCountryObj->fetchData($activityId, true); $recipientRegionObj = new Iati_Aidstream_Element_Activity_RecipientRegion(); $regions = $recipientRegionObj->fetchData($activityId, true); if ($countries[0]['@code']) { $countryCode = Iati_Core_Codelist::getCodeByAttrib('RecipientCountry', '@code', $countries[0]['@code']); } if ($regions[0]['@code']) { $regionCode = Iati_Core_Codelist::getCodeByAttrib('RecipientRegion', '@code', $regions[0]['@code']); } if (count($countries) == 1) { $segmentedActivities[$countryCode][] = $activityId; } else { if (count($regions) == 1) { $segmentedActivities[$regionCode][] = $activityId; } elseif (count($regions) > 1) { $segmentedActivities[998][] = $activityId; } else { if (count($countries) == 0) { $segmentedActivities[998][] = $activityId; } else { $maxPercent = ''; foreach ($countries as $country) { $percent = $country['@percentage']; if ($percent > $maxPercent) { $maxPercent = $percent; $maxPercentCountry = Iati_Core_Codelist::getCodeByAttrib('RecipientCountry', '@code', $country['@code']); } } if ($maxPercentCountry) { $segmentedActivities[$maxPercentCountry][] = $activityId; } else { $segmentedActivities[$countryCode][] = $activityId; } } } } } return $segmentedActivities; } else { return $activitiesId; } }