Пример #1
0
	/**
	 * 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;
	}