Exemplo n.º 1
0
 /**
  * assign smarty variables to the template that will be used by google api to plot the contacts
  *
  * @param array $contactIds list of contact ids that we need to plot
  * @param int   $locationId location_id
  *
  * @return string           the location of the file we have created
  * @access protected
  */
 function createLocation($contactIds, $locationId = null)
 {
     $config =& CRM_Core_Config::singleton();
     $this->assign('query', 'CiviCRM Search Query');
     $this->assign('mapProvider', $config->mapProvider);
     $this->assign('mapKey', $config->mapAPIKey);
     require_once 'CRM/Contact/BAO/Contact.php';
     $locations =& CRM_Contact_BAO_Contact::getMapInfo($this->_contactIds, $locationId);
     if (empty($locations)) {
         CRM_Utils_System::statusBounce(ts('This contact\'s primary address does not contain latitude/longitude information and can not be mapped.'));
     } else {
         $session =& CRM_Core_Session::singleton();
         $redirect = $session->readUserContext();
         $additionalBreadCrumb = "<a href=\"{$redirect}\">" . ts('Search Results') . '</a>';
         CRM_Utils_System::appendBreadCrumb($additionalBreadCrumb);
     }
     $this->assign_by_ref('locations', $locations);
     $sumLat = $sumLng = 0;
     $maxLat = $maxLng = -400;
     $minLat = $minLng = +400;
     foreach ($locations as $location) {
         $sumLat += $location['lat'];
         $sumLng += $location['lng'];
         if ($location['lat'] > $maxLat) {
             $maxLat = $location['lat'];
         }
         if ($location['lat'] < $minLat) {
             $minLat = $location['lat'];
         }
         if ($location['lng'] > $maxLng) {
             $maxLng = $location['lng'];
         }
         if ($location['lng'] < $minLng) {
             $minLng = $location['lng'];
         }
     }
     $center = array('lat' => (double) $sumLat / count($locations), 'lng' => (double) $sumLng / count($locations));
     $span = array('lat' => (double) ($maxLat - $minLat), 'lng' => (double) ($maxLng - $minLng));
     $this->assign_by_ref('center', $center);
     $this->assign_by_ref('span', $span);
 }