Esempio n. 1
0
 public function PluginApiAppData(&$aAppData)
 {
     if (!empty(self::$sInviteEmail)) {
         $aAppData['ExternalInviteEmail'] = self::$sInviteEmail;
     }
     $oApiDomainsManager = \CApi::Manager('domains');
     $oInput = new api_Http();
     $oDomain = $oApiDomainsManager->GetDomainByUrl($oInput->GetHost());
     if ($oDomain && !$oDomain->IsDefaultDomain) {
         $this->sTenantHash = substr(md5($oDomain->IdTenant . CApi::$sSalt), 0, 8);
     }
     \CExternalServicesConnectors::Init($aAppData, $this->sTenantHash);
     $oTenant = CExternalServicesConnectors::GetTenantFromCookieOrHash($this->sTenantHash);
     if ($oTenant) {
         $aSocials = $oTenant->getSocials();
         $self = $this;
         // for PHP < 5.4
         array_walk($aSocials, function ($oSocial, $sKey) use($self) {
             if ($oSocial->SocialAllow && in_array($sKey, $self->aEnableConnectors)) {
                 $self->aConnectors[] = $oSocial->toArray();
             }
         });
     }
     if (!isset($aAppData['Plugins'])) {
         $aAppData['Plugins'] = array();
     }
     $aExternalServices = array();
     if (is_array($this->aConnectors)) {
         $aExternalServices['Connectors'] = $this->aConnectors;
     }
     $aAppData['Plugins']['ExternalServices'] = $aExternalServices;
     $oAccount = \api_Utils::GetDefaultAccount();
     if ($oAccount) {
         $oApiSocial = \CApi::Manager('social');
         $aSocials = $oApiSocial->getSocials($oAccount->IdAccount);
         $aUserServices = array();
         foreach ($aSocials as $oSocial) {
             if ($oSocial && $oSocial instanceof \CSocial) {
                 $aSocial = $oSocial->toArray();
                 $aSocial['ServiceName'] = '';
                 $aSocial['UserScopes'] = array();
                 if (in_array(strtolower($oSocial->TypeStr), $this->aEnableConnectors)) {
                     $aUserServices[strtolower($oSocial->TypeStr)] = $aSocial;
                 }
             }
         }
         $aResultUserServices = array();
         foreach ($this->aConnectors as $aConnector) {
             $sServiceType = strtolower($aConnector['Name']);
             if (!$aUserServices[$sServiceType]) {
                 $oSocial = new \CSocial();
                 $oSocial->TypeStr = $sServiceType;
                 $aSocial = $oSocial->toArray();
                 $aUserServices[$sServiceType] = $aSocial;
             }
             $aUserServices[$sServiceType]['ServiceName'] = $aConnector['Name'];
             $aUserServices[$sServiceType]['UserScopes'] = array();
             foreach ($aConnector['Scopes'] as $sScope) {
                 if (trim($sScope) !== '') {
                     $aUserServices[$sServiceType]['UserScopes'][$sScope] = in_array($sScope, $aUserServices[$sServiceType]['Scopes']);
                 }
             }
             $aResultUserServices[$sServiceType] = $aUserServices[$sServiceType];
         }
         $aAppData['Plugins']['ExternalServices']['Users'] = array_values($aResultUserServices);
     }
     $aAppData['AllowChangePassword'] = CApi::GetConf('plugins.external-services.allow-change-password', true);
 }