示例#1
0
export function getSiteComputedAttributes( state, siteId ) {
	const site = getRawSite( state, siteId );
	if ( ! site ) {
		return null;
	}

	const computedAttributes = {
		domain: getSiteDomain( state, siteId ),
		hasConflict: isSiteConflicting( state, siteId ),
		is_customizable: !! canCurrentUser( state, siteId, 'edit_theme_options' ),
		is_previewable: !! isSitePreviewable( state, siteId ),
		options: getSiteOptions( state, siteId ),
		slug: getSiteSlug( state, siteId ),
		title: getSiteTitle( state, siteId ),
	};

	// If a WordPress.com site has a mapped domain create a `wpcom_url`
	// attribute to allow site selection with either domain.
	if ( getSiteOption( state, siteId, 'is_mapped_domain' ) && ! isJetpackSite( state, siteId ) ) {
		computedAttributes.wpcom_url = withoutHttp( getSiteOption( state, siteId, 'unmapped_url' ) );
	}

	// we only need to use the unmapped URL for conflicting sites
	if ( computedAttributes.hasConflict ) {
		computedAttributes.URL = getSiteOption( state, siteId, 'unmapped_url' );
	}

	return computedAttributes;
}
示例#2
0
export function canCurrentUserUseAds( state, siteId = null ) {
	if ( ! siteId ) {
		siteId = getSelectedSiteId( state );
	}
	const site = getSite( state, siteId );
	const canUserManageOptions = canCurrentUser( state, siteId, 'manage_options' );
	return site && site.options.wordads && canUserManageOptions;
}
示例#3
0
export function canCurrentUserUpgradeSite( state, siteId = null ) {
	if ( ! siteId ) {
		siteId = getSelectedSiteId( state );
	}
	const canUserManageOptions = canCurrentUser( state, siteId, 'manage_options' );
	if ( ! canUserManageOptions ) {
		return false;
	}

	const isPaid = isCurrentPlanPaid( state, siteId );
	return ! isPaid || isCurrentUserCurrentPlanOwner( state, siteId );
}
示例#4
0
export function canCurrentUserUseStore( state, siteId = null ) {
	if ( ! siteId ) {
		siteId = getSelectedSiteId( state );
	}
	const canUserManageOptions = canCurrentUser( state, siteId, 'manage_options' );
	const isSiteAT = !! isSiteAutomatedTransfer( state, siteId );

	const hasSitePendingAT = hasSitePendingAutomatedTransfer( state, siteId );
	const transferStatus = getAutomatedTransferStatus( state, siteId );
	const siteHasBackgroundTransfer = hasSitePendingAT && transferStatus !== transferStates.ERROR;

	return (
		( canUserManageOptions && isSiteAT ) ||
		( config.isEnabled( 'signup/atomic-store-flow' ) && siteHasBackgroundTransfer )
	);
}
示例#5
0
function canDeleteSite( state, siteId ) {
	const canManageOptions = canCurrentUser( state, siteId, 'manage_options' );

	if ( ! siteId || ! canManageOptions ) {
		// Current user doesn't have manage options to delete the site
		return false;
	}

	if ( isJetpackSite( state, siteId ) && ! isSiteAutomatedTransfer( state, siteId ) ) {
		// Current user can't delete a Jetpack site, but can request to delete an Atomic site
		return false;
	}

	if ( isVipSite( state, siteId ) ) {
		// Current user can't delete a VIP site
		return false;
	}

	return true;
}
	return siteIds.some( siteId => canCurrentUser( state, siteId, 'manage_options' ) );
示例#7
0
export const canUserEditSettingsOfSelectedSite = state => {
	const siteId = getSelectedSiteId( state );
	return siteId ? canCurrentUser( state, siteId, 'manage_options' ) : false;
};