public function getIdentity($locale)
{
/* -- Cache it in our class; no need to fetch it more than once */
if (isset($this->cachedIdentity[$locale])) {
return $this->cachedIdentity[$locale];
}
$settings = $this->getSettings($locale);
$identity = array();
$identity['locale'] = $settings['locale'];
$identity['googleSiteVerification'] = $settings['googleSiteVerification'];
$identity['bingSiteVerification'] = $settings['bingSiteVerification'];
$identity['googleAnalyticsUID'] = $settings['googleAnalyticsUID'];
$identity['googleTagManagerID'] = $settings['googleTagManagerID'];
$identity['googleAnalyticsSendPageview'] = $settings['googleAnalyticsSendPageview'];
$identity['googleAnalyticsAdvertising'] = $settings['googleAnalyticsAdvertising'];
$identity['googleAnalyticsEcommerce'] = $settings['googleAnalyticsEcommerce'];
$identity['googleAnalyticsEEcommerce'] = $settings['googleAnalyticsEEcommerce'];
$identity['googleAnalyticsLinkAttribution'] = $settings['googleAnalyticsLinkAttribution'];
$identity['googleAnalyticsLinker'] = $settings['googleAnalyticsLinker'];
$identity['siteOwnerType'] = ucfirst($settings['siteOwnerType']);
$identity['siteOwnerSubType'] = $settings['siteOwnerSubType'];
$identity['siteOwnerSpecificType'] = $settings['siteOwnerSpecificType'];
/* -- Handle migrating the old way of storing siteOwnerType */
if ($identity['siteOwnerType'] != "Organization" && $identity['siteOwnerType'] != "Person") {
$identity['siteOwnerSubType'] = $identity['siteOwnerType'];
$identity['siteOwnerType'] = "Organization";
}
if ($identity['siteOwnerSubType'] == "Restaurant") {
$identity['siteOwnerSpecificType'] = $identity['siteOwnerSubType'];
$identity['siteOwnerSubType'] = "LocalBusiness";
}
$identity['genericOwnerName'] = $settings['genericOwnerName'];
$identity['genericOwnerAlternateName'] = $settings['genericOwnerAlternateName'];
$identity['genericOwnerDescription'] = $settings['genericOwnerDescription'];
$identity['genericOwnerUrl'] = $settings['genericOwnerUrl'];
$identity['genericOwnerImageId'] = $settings['genericOwnerImageId'];
$image = craft()->assets->getFileById($settings['genericOwnerImageId']);
if ($image) {
$identity['genericOwnerImage'] = $this->getFullyQualifiedUrl($image->url);
$identity['genericOwnerImageHeight'] = $image->getHeight();
$identity['genericOwnerImageWidth'] = $image->getWidth();
} else {
$identity['genericOwnerImage'] = '';
}
$identity['genericOwnerTelephone'] = $settings['genericOwnerTelephone'];
$identity['genericOwnerEmail'] = $settings['genericOwnerEmail'];
$identity['genericOwnerStreetAddress'] = $settings['genericOwnerStreetAddress'];
$identity['genericOwnerAddressLocality'] = $settings['genericOwnerAddressLocality'];
$identity['genericOwnerAddressRegion'] = $settings['genericOwnerAddressRegion'];
$identity['genericOwnerPostalCode'] = $settings['genericOwnerPostalCode'];
$identity['genericOwnerAddressCountry'] = $settings['genericOwnerAddressCountry'];
$identity['genericOwnerGeoLatitude'] = $settings['genericOwnerGeoLatitude'];
$identity['genericOwnerGeoLongitude'] = $settings['genericOwnerGeoLongitude'];
$identity['organizationOwnerDuns'] = $settings['organizationOwnerDuns'];
$identity['organizationOwnerFounder'] = $settings['organizationOwnerFounder'];
$identity['organizationOwnerFoundingDate'] = $settings['organizationOwnerFoundingDate'];
$identity['organizationOwnerFoundingLocation'] = $settings['organizationOwnerFoundingLocation'];
$identity['organizationOwnerContactPoints'] = $settings['organizationOwnerContactPoints'];
/* -- Handle the organization contact points */
$contactPoints = array();
if (isset($identity['organizationOwnerContactPoints']) && is_array($identity['organizationOwnerContactPoints'])) {
foreach ($identity['organizationOwnerContactPoints'] as $contacts) {
$spec = array("type" => "ContactPoint", "telephone" => $contacts['telephone'], "contactType" => $contacts['contactType']);
$contactPoints[] = $spec;
}
}
$contactPoints = array_filter($contactPoints);
$identity['contactPoint'] = $contactPoints;
if (count($identity['contactPoint']) < 1) {
unset($identity['contactPoint']);
}
$identity['personOwnerGender'] = $settings['personOwnerGender'];
$identity['personOwnerBirthPlace'] = $settings['personOwnerBirthPlace'];
$identity['localBusinessOwnerOpeningHours'] = $settings['localBusinessOwnerOpeningHours'];
/* -- Handle the opening hours specification */
$days = array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
$openingHours = array();
if (isset($identity['localBusinessOwnerOpeningHours']) && is_array($identity['localBusinessOwnerOpeningHours'])) {
craft()->seomatic->convertTimes($identity['localBusinessOwnerOpeningHours']);
$index = 0;
foreach ($identity['localBusinessOwnerOpeningHours'] as $hours) {
$openTime = "";
$closeTime = "";
if (isset($hours['open']) && $hours['open']) {
$openTime = $hours['open']->format('H:i:s', $hours['open']->getTimeZone());
}
if (isset($hours['close']) && $hours['close']) {
$closeTime = $hours['close']->format('H:i:s', $hours['close']->getTimeZone());
}
if ($openTime && $closeTime) {
$spec = array("type" => "OpeningHoursSpecification", "closes" => $closeTime, "dayOfWeek" => array($days[$index]), "opens" => $openTime);
$openingHours[] = $spec;
}
$index++;
}
}
$openingHours = array_filter($openingHours);
$identity['openingHoursSpecification'] = $openingHours;
if (count($identity['openingHoursSpecification']) <= 1) {
unset($identity['openingHoursSpecification']);
}
$identity['corporationOwnerTickerSymbol'] = $settings['corporationOwnerTickerSymbol'];
$identity['restaurantOwnerServesCuisine'] = $settings['restaurantOwnerServesCuisine'];
$identity['restaurantOwnerMenuUrl'] = $this->getFullyQualifiedUrl($settings['restaurantOwnerMenuUrl']);
$identity['restaurantOwnerReservationsUrl'] = $this->getFullyQualifiedUrl($settings['restaurantOwnerReservationsUrl']);
$result = $identity;
$this->cachedIdentity[$locale] = $result;
return $result;
}