/** * @param TabTable $tab * @param UserTable $user * @param int $ui * @param array $postdata */ public function getCBpluginComponent( /** @noinspection PhpUnusedParameterInspection */ $tab, /** @noinspection PhpUnusedParameterInspection */ $user, /** @noinspection PhpUnusedParameterInspection */ $ui, /** @noinspection PhpUnusedParameterInspection */ $postdata ) { $returnUrl = $this->input( 'return', null, GetterInterface::BASE64 ); if ( $returnUrl ) { $returnUrl = base64_decode( $returnUrl ); } try { $hybrid = new cbconnectHybrid(); } catch ( Exception $e ) { cbRedirect( ( $returnUrl ? $returnUrl : 'index.php' ), $e->getMessage(), 'error' ); return; } $provider = $this->input( 'provider', null, GetterInterface::STRING ); $providerId = null; if ( ! $provider ) { $providerId = $this->input( 'hauth_start', null, GetterInterface::STRING ); if ( ! $providerId ) { $providerId = $this->input( 'hauth_done', null, GetterInterface::STRING ); } $provider = $hybrid->getProviderFromId( $providerId ); } else { $providerId = $hybrid->getIdFromProvider( $provider ); } $action = $this->input( 'action', null, GetterInterface::STRING ); $hybridAuth = null; $error = null; try { $hybridAuth = $hybrid->getHybridAuth(); /** @var Hybrid_Storage $storage */ $storage = $hybridAuth->storage(); if ( $storage ) { if ( ! $returnUrl ) { $redirectUrl = $storage->get( 'redirect_url' ); if ( $redirectUrl ) { $returnUrl = base64_decode( $redirectUrl ); } } else { $storage->set( 'redirect_url', base64_encode( $returnUrl ) ); } } } catch ( Exception $e ) { $error = $e->getMessage(); } if ( ! $returnUrl ) { $returnUrl = 'index.php'; } if ( ( ! $hybridAuth ) || ( ! $this->params->get( $provider . '_enabled', false, GetterInterface::BOOLEAN ) ) ) { if ( ! $error ) { $error = CBTxt::T( 'PROVIDER_NOT_AVAILABLE', '[provider] is not available.', array( '[provider]' => $providerId ) ); } cbRedirect( $this->_returnUrl, $error, 'error' ); return; } $this->_hybrid = $hybrid; $this->_hybridAuth = $hybridAuth; $this->_provider = $provider; $this->_providerId = $providerId; $this->_providerField = $hybrid->getProviderField( $provider ); $this->_providerName = $hybrid->getProviderName( $provider ); $this->_returnUrl = $returnUrl; switch ( $action ) { case 'authenticate': $this->authenticate(); break; case 'endpoint': $this->endpoint(); break; } }
/** * Accessor: * Returns a field in specified format * * @param FieldTable $field * @param UserTable $user * @param string $output 'html', 'xml', 'json', 'php', 'csvheader', 'csv', 'rss', 'fieldslist', 'htmledit' * @param string $reason 'profile' for user profile view, 'edit' for profile edit, 'register' for registration, 'search' for searches * @param int $list_compare_types IF reason == 'search' : 0 : simple 'is' search, 1 : advanced search with modes, 2 : simple 'any' search * @return mixed */ public function getField( &$field, &$user, $output, $reason, $list_compare_types ) { $hybrid = new cbconnectHybrid(); $fieldName = $field->get( 'name' ); $provider = $hybrid->getProviderFromField( $fieldName ); $providerName = $hybrid->getProviderName( $provider ); $value = $user->get( $fieldName ); $return = null; switch( $output ) { case 'htmledit': if ( $reason == 'search' ) { $return = $this->_fieldSearchModeHtml( $field, $user, $this->_fieldEditToHtml( $field, $user, $reason, 'input', 'text', $value, null ), 'text', $list_compare_types ); } else { if ( Application::Cms()->getClientId() ) { $return = $this->_fieldEditToHtml( $field, $user, $reason, 'input', 'text', $value, null ); } elseif ( $value && ( $user->get( 'id' ) == Application::MyUser()->get( 'id' ) ) ) { $values = array(); $values[] = moscomprofilerHTML::makeOption( '1', CBTxt::T( 'UNLINK_PROVIDER_ACCOUNT', 'Unlink your [provider] account', array( '[provider]' => $providerName ) ) ); $return = $this->_fieldEditToHtml( $field, $user, $reason, 'input', 'multicheckbox', null, null, $values ); } elseif ( $value && ( ! Application::MyUser()->get( 'id' ) ) ) { $url = $hybrid->getProviderProfileURL( $provider, $value ); if ( $url ) { $url = '<a href="' . $url . '" target="_blank">' . CBTxt::T( 'PROVIDER_PROFILE', '[provider] profile', array( '[provider]' => $providerName ) ) . '</a>'; } if ( ! $url ) { $url = CBTxt::T( 'PROVIDER_PROFILE_ID', '[provider] profile id [provider_id]', array( '[provider]' => $providerName, '[provider_id]' => $value ) ); } $return = CBTxt::T( 'PROVIDER_PROFILE_LINKED_TO_ACCOUNT', 'Your [provider_profile] will be linked to this account.', array( '[provider]' => $providerName, '[provider_profile]' => $url, '[provider_id]' => $value ) ) . $this->_fieldEditToHtml( $field, $user, $reason, 'input', 'hidden', $value, null ); } } break; case 'html': case 'rss': if ( $value ) { $url = $hybrid->getProviderProfileURL( $provider, $value ); if ( $url ) { $value = '<a href="' . $url . '" target="_blank">' . CBTxt::T( 'VIEW_PROVIDER_PROFILE', 'View [provider] Profile', array( '[provider]' => $providerName ) ) . '</a>'; } } $return = $this->formatFieldValueLayout( $this->_formatFieldOutput( $field->get( 'name' ), $value, $output, false ), $reason, $field, $user, false ); break; default: $return = $this->_formatFieldOutput( $field->get( 'name' ), $value, $output ); break; } return $return; }