phpcr/src/PHPCR/RepositoryInterface.php
Copyright 2008-2011 Karsten Dambekalns karsten@typo3.org
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
\PHPCR\RepositoryInterface
The Repository object is usually acquired through an implementation of the RepositoryFactoryInterface.
PHPCR Note: This interface has been simplified compared to JCR:
- getDescriptor returns array on multivalue, single variable otherwise
- removed isSingleValueDescriptor
- removed getDescriptorValue and getDescriptorValues as ValueInterface has been dropped. Use getDescriptor to get the variable value.
- Api
Constants
SPEC_VERSION_DESC
= "jcr.specification.version"
For JCR 2.0 the value of this descriptor is the string "2.0".
- Api
SPEC_NAME_DESC
= "jcr.specification.name"
For JCR 2.0 the value of this descriptor is the string "Content Repository for Java Technology API".
- Api
REP_VENDOR_DESC
= "jcr.repository.vendor"
The descriptor returned for this key is a String.
- Api
REP_VENDOR_URL_DESC
= "jcr.repository.vendor.url"
The descriptor returned for this key is a String.
- Api
REP_NAME_DESC
= "jcr.repository.name"
The descriptor returned for this key is a String.
- Api
REP_VERSION_DESC
= "jcr.repository.version"
The descriptor returned for this key is a String.
- Api
WRITE_SUPPORTED
= "write.supported"
Returns true if and only if repository content can be updated through the JCR API (as opposed to having read-only access).
- Api
IDENTIFIER_STABILITY
= "identifier.stability"
Returns one of the following RepositoryInterface constants indicating the stability of identifiers:
- IDENTIFIER_STABILITY_METHOD_DURATION - Identifiers may change between method calls.
- IDENTIFIER_STABILITY_SAVE_DURATION - Identifers are guaranteed stable within a single save/refresh cycle.
- IDENTIFIER_STABILITY_SESSION_DURATION - Identifiers are guaranteed stable within a single session.
- IDENTIFIER_STABILITY_INDEFINITE_DURATION - Identifers are guaranteed to be stable forever.
- Api
IDENTIFIER_STABILITY_METHOD_DURATION
= "identifier.stability.method.duration"
Indicates that identifiers may change between method calls.
- Api
IDENTIFIER_STABILITY_SAVE_DURATION
= "identifier.stability.save.duration"
Indicates that identifiers are guaranteed stable within a single save/refresh cycle.
- Api
IDENTIFIER_STABILITY_SESSION_DURATION
= "identifier.stability.session.duration"
Indicates that identifiers are guaranteed stable within a single session.
- Api
IDENTIFIER_STABILITY_INDEFINITE_DURATION
= "identifier.stability.indefinite.duration"
Indicates that identifiers are guaranteed to be stable forever.
- Api
OPTION_XML_EXPORT_SUPPORTED
= "option.xml.export.supported"
Returns true if and only if XML export is supported.
- Api
OPTION_XML_IMPORT_SUPPORTED
= "option.xml.import.supported"
Returns true if and only if XML import is supported.
- Api
OPTION_UNFILED_CONTENT_SUPPORTED
= "option.unfiled.content.supported"
Returns true if and only if unfiled content is supported.
- Api
OPTION_VERSIONING_SUPPORTED
= "option.versioning.supported"
Returns true if and only if full versioning is supported.
- Api
OPTION_SIMPLE_VERSIONING_SUPPORTED
= "option.simple.versioning.supported"
Returns true if and only if simple versioning is supported.
- Api
OPTION_ACTIVITIES_SUPPORTED
= "option.activities.supported"
Returns true if and only if activities are supported.
- Api
OPTION_BASELINES_SUPPORTED
= "option.baselines.supported"
Returns true if and only if configurations and baselines are supported.
- Api
OPTION_ACCESS_CONTROL_SUPPORTED
= "option.access.control.supported"
Returns true if and only if access control is supported.
- Api
OPTION_LOCKING_SUPPORTED
= "option.locking.supported"
Returns true if and only if locking is supported.
- Api
OPTION_OBSERVATION_SUPPORTED
= "option.observation.supported"
Returns true if and only if asynchronous observation is supported.
- Api
OPTION_JOURNALED_OBSERVATION_SUPPORTED
= "option.journaled.observation.supported"
Returns true if and only if journaled observation is supported.
- Api
OPTION_RETENTION_SUPPORTED
= "option.retention.supported"
Returns true if and only if retention and hold are supported.
- Api
OPTION_LIFECYCLE_SUPPORTED
= "option.lifecycle.supported"
Returns true if and only if lifecycles are supported.
- Api
OPTION_TRANSACTIONS_SUPPORTED
= "option.transactions.supported"
Returns true if and only if transactions are supported.
- Api
OPTION_WORKSPACE_MANAGEMENT_SUPPORTED
= "option.workspace.management.supported"
Returns true if and only if workspace management is supported.
- Api
OPTION_UPDATE_PRIMARY_NODETYPE_SUPPORTED
= "option.update.primary.nodetype.supported"
Returns true if and only if the primary node type of an existing node can be updated.
- Api
OPTION_UPDATE_MIXIN_NODETYPES_SUPPORTED
= "option.update.mixin.nodetypes.supported"
Returns true if and only if the mixin node types of an existing node can be added and removed.
- Api
OPTION_SHAREABLE_NODES_SUPPORTED
= "option.shareable.nodes.supported"
Returns true if and only if the creation of shareable nodes is supported.
- Api
OPTION_NODE_TYPE_MANAGEMENT_SUPPORTED
= "option.node.type.management.supported"
Returns true if and only if node type management is supported.
- Api
OPTION_NODE_AND_PROPERTY_WITH_SAME_NAME_SUPPORTED
= "option.node.and.property.with.same.name.supported"
Returns true if and only if node and property with same name is supported.
- Api
NODE_TYPE_MANAGEMENT_INHERITANCE
= "node.type.management.inheritance"
Returns one of the following RepositoryInterface constants indicating the level of support for node type inheritance:
NODE_TYPE_MANAGEMENT_INHERITANCE_MINIMAL Registration of primary node types is limited to those which have onlynt:base as supertype. Registration of mixin node types is limited to those without any supertypes.
NODE_TYPE_MANAGEMENT_INHERITANCE_SINGLE Registration of primary node types is limited to those with exactly one supertype. Registration of mixin node types is limited to those with at most one supertype.
NODE_TYPE_MANAGEMENT_INHERITANCE_MULTIPLE Primary node types can be registered with one or more supertypes. Mixin node types can be registered with zero or more supertypes.
- Api
NODE_TYPE_MANAGEMENT_INHERITANCE_MINIMAL
= "node.type.management.inheritance.minimal"
Indicates that registration of primary node types is limited to those which have only nt:base as supertype. Registration of mixin node types is limited to those without any supertypes.
- Api
NODE_TYPE_MANAGEMENT_INHERITANCE_SINGLE
= "node.type.management.inheritance.single"
Indicates that registration of primary node types is limited to those with exactly one supertype. Registration of mixin node types is limited to those with at most one supertype.
- Api
NODE_TYPE_MANAGEMENT_INHERITANCE_MULTIPLE
= "node.type.management.inheritance.multiple"
Indicates that primary node types can be registered with one or more supertypes. Mixin node types can be registered with zero or more supertypes.
- Api
NODE_TYPE_MANAGEMENT_OVERRIDES_SUPPORTED
= "node.type.management.overrides.supported"
Returns true if and only if override of inherited property or child node definitions is supported.
- Api
NODE_TYPE_MANAGEMENT_PRIMARY_ITEM_NAME_SUPPORTED
= "node.type.management.primary.item.name.supported"
Returns true if and only if primary items are supported.
- Api
NODE_TYPE_MANAGEMENT_ORDERABLE_CHILD_NODES_SUPPORTED
= "node.type.management.orderable.child.nodes.supported"
Returns true if and only if preservation of child node ordering is supported.
- Api
NODE_TYPE_MANAGEMENT_RESIDUAL_DEFINITIONS_SUPPORTED
= "node.type.management.residual.definitions.supported"
Returns true if and only if residual property and child node definitions are supported.
- Api
NODE_TYPE_MANAGEMENT_AUTOCREATED_DEFINITIONS_SUPPORTED
= "node.type.management.autocreated.definitions.supported"
Returns true if and only if autocreated properties and child nodes are supported.
- Api
NODE_TYPE_MANAGEMENT_SAME_NAME_SIBLINGS_SUPPORTED
= "node.type.management.same.name.siblings.supported"
Returns true if and only if same-name sibling child nodes are supported.
- Api
NODE_TYPE_MANAGEMENT_PROPERTY_TYPES
= "node.type.management.property.types"
Returns an array holding the PropertyType constants for the property types (including UNDEFINED, if supported) that a registered node type can specify, or a zero-length array if registered node types cannot specify property definitions.
- Api
NODE_TYPE_MANAGEMENT_MULTIVALUED_PROPERTIES_SUPPORTED
= "node.type.management.multivalued.properties.supported"
Returns true if and only if multivalue properties are supported.
- Api
NODE_TYPE_MANAGEMENT_MULTIPLE_BINARY_PROPERTIES_SUPPORTED
= "node.type.management.multiple.binary.properties.supported"
Returns true if and only if registration of a node types with more than one BINARY property is permitted.
- Api
NODE_TYPE_MANAGEMENT_VALUE_CONSTRAINTS_SUPPORTED
= "node.type.management.value.constraints.supported"
Returns true if and only value-constraints are supported.
- Api
NODE_TYPE_MANAGEMENT_UPDATE_IN_USE_SUPPORTED
= "node.type.management.update.in.use.supported"
Indicates that you can change node definitions that are in-use by existing nodes
Note: JCR 2.0 had a typo with both the constant name and the value (suported instead of supported). PHPCR implementations talking with legacy backends should not break on this issue.
- Api
QUERY_LANGUAGES
= "query.languages"
Returns an array holding the constants representing the supported query languages, or a zero-length if query is not supported.
- Api
QUERY_STORED_QUERIES_SUPPORTED
= "query.stored.queries.supported"
Returns true if and only if stored queries are supported.
- Api
QUERY_FULL_TEXT_SEARCH_SUPPORTED
= "query.full.text.search.supported"
Returns true if and only if full-text search is supported.
- Api
QUERY_JOINS
= "query.joins"
Returns one of the following RepositoryInterface constants indicating the level of support for joins in queries:
- QUERY_JOINS_NONE - Joins are not supported. Queries are limited to a single selector.
- QUERY_JOINS_INNER - Inner joins are supported.
- QUERY_JOINS_INNER_OUTER - Inner and outer joins are supported.
- Api
QUERY_JOINS_NONE
= "query.joins.none"
Indicates that joins are not supported. Queries are limited to a single selector.
- Api
QUERY_JOINS_INNER
= "query.joins.inner"
Indicates that inner joins are supported.
- Api
Methods
getDescriptor(string $key) : mixed
Get the value(s) for this key.
If this is documented as a boolean property, this method returns a boolean, otherwise a string.
Name | Type | Description |
---|---|---|
$key | string | a descriptor key. |
Type | Description |
---|---|
mixed | a descriptor value in string or boolean form or an array of strings or booleans for multivalue descriptors |
- Api
getDescriptorKeys() : array
Returns a string array holding all descriptor keys available for this implementation.
Both, the standard descriptors defined by the string constants in this interface and any implementation-specific descriptors. Used in conjunction with getDescriptor($key) to query information about this repository implementation.
Type | Description |
---|---|
array | a string array holding all descriptor keys |
- Api
isStandardDescriptor(string $key) : boolean
Determines if the given identifier is a standard descriptor.
Returns true if $key is a standard descriptor defined by the string constants in this interface and false if it is either a valid implementation-specific key or not a valid key.
Name | Type | Description |
---|---|---|
$key | string | a descriptor key. |
Type | Description |
---|---|
boolean | whether $key is a standard descriptor. |
- Api
login(\PHPCR\CredentialsInterface $credentials = null, string $workspaceName = null) : \PHPCR\SessionInterface
Authenticates the user using the supplied credentials.
If workspaceName is recognized as the name of an existing workspace in the repository and authorization to access that workspace is granted, then a new Session object is returned. The format of the string workspaceName depends upon the implementation. If credentials is null, it is assumed that authentication is handled by a mechanism external to the repository itself and that the repository implementation exists within a context (for example, an application server) that allows it to handle authorization of the request for access to the specified workspace.
If workspaceName is null, a default workspace is automatically selected by the repository implementation. This may, for example, be the "home workspace" of the user whose credentials were passed, though this is entirely up to the configuration and implementation of the repository. Alternatively, it may be a "null workspace" that serves only to provide the method WorkspaceInterface::getAccessibleWorkspaceNames(), allowing the client to select from among available "real" workspaces.
Note: The Java API defines this method with multiple differing signatures.
Name | Type | Description |
---|---|---|
$credentials | \PHPCR\CredentialsInterface | The credentials of the user |
$workspaceName | string | the name of a workspace |
Type | Description |
---|---|
\PHPCR\SessionInterface | a valid session for the user to access the repository |
Exception | Description |
---|---|
\PHPCR\LoginException | if authentication or authorization (for the specified workspace) fails |
\PHPCR\NoSuchWorkspaceException | if the specified workspaceName is not recognized |
\PHPCR\RepositoryException | if another error occurs |
- Api