PHPackages                             stuki/workspace - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. stuki/workspace

ActiveZf-module[Database &amp; ORM](/categories/database)

stuki/workspace
===============

Doctrine 2 Workspaces

0241PHP

Since Jun 11Pushed 12y ago1 watchersCompare

[ Source](https://github.com/StukiOrg/Workspace)[ Packagist](https://packagist.org/packages/stuki/workspace)[ RSS](/packages/stuki-workspace/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

Workspace
=========

[](#workspace)

[![Build Status](https://camo.githubusercontent.com/e725077861cf4b4d3033bd40848e76cf480d89ab225928dd9508dc661bfc552c/68747470733a2f2f7472617669732d63692e6f72672f5374756b694f72672f576f726b73706163652e706e67)](https://travis-ci.org/StukiOrg/Workspace)

A workspace module for Doctrine 2. This module creates an entity to workspace specified targets for every user to work within their own workspace. Users may request their workspace be merged into master from any revision.

About
=====

[](#about)

This module takes a configuration of entities to include in the workspace and creates entities to workspace them. The workspaceed entites become a workspace for each user. As the user creates, updates, and deletes data the changes are logged to their workspace. The user may request their workspace be merged to master. Merge requests are handled by privileged users. As revisions are approved they are merged into the master database.

This is accomplished by evaluating each entity when it is fetched from the ORM. The entity will be changed to the latest revision for the current user within their workspace.

Install
=======

[](#install)

Require Workspace with composer

```
php composer.phar require "stuki/workspace": "dev-master"
```

Enable Workspace in `config/application.config.php`:

```
return array(
    'modules' => array(
        'Workspace'
        ...
    ),
```

Copy `config/workspace.global.php.dist` to `config/autoload/workspace.global.php` and edit setting as

```
return array(
    'workspace' => array(
        'datetimeFormat' => 'r',
        'paginatorLimit' => 20,

        'tableNamePrefix' => '',
        'tableNameSuffix' => '_workspace',
        'revisionTableName' => 'Revision',
        'revisionEntityTableName' => 'RevisionEntity',

        'entities' => array(
            'Db\Entity\Song' => array(),
            'Db\Entity\Performer' => array(),
        ),
    ),
);
```

Use the Doctrine command line tool to update the database and create the workspaceing tables:

```
vendor/bin/doctrine-module orm:schema-tool:update
```

Terminology
-----------

[](#terminology)

WorkspaceEntity - A generated entity which maps to the Target workspaceable entity. This stores the values for the Target entity at the time a Revision is created.

Revision - An entity which stores the timestap, comment, an user for a single entity manager flush which contains workspaceable entities.

RevisionEntity - A mapping entity which maps an WorkspaceEntity to a Revision and maps to a Target workspaceed entity. This entity can rehydrate a Target entity and WorkspaceEntity. This also stores the revision type when the Target was workspaceed. INS, UPD, and DEL map to insert, update, and delete. The primary keys of the Target are stored as an array and can be used to rehydrate a Target.

Target entity - An workspaceable entity specified as string in the workspace configuration.

Authentication
--------------

[](#authentication)

You may configure a custom entity to serve as the user entity for mapping revisions to users. You may configure a custom authentication service too. By default these map to ZfcUserDoctrineORM\\Entity\\User and zfcuser\_auth\_service. For example to use a custom entity and service Db\\Entity\\User for an entity and Zend\\Authentication\\AuthenticationService would work.

The user entity must implement getDisplayName, getId, and getEmail. The authentication service must implement hasIdentity and getIdentity which returns an instance of the current user entity.

Interfaces are not used so ZfcUser can be used out of the box.

Routing
-------

[](#routing)

To map a route to an workspaceed entity include route information in the workspace =&gt; entities config

```
    'Db\Entity\Song' => array(
        'route' => 'default',
        'defaults' => array(
            'controller' => 'song',
            'action' => 'detail',
        ),
    ),

```

Identifier column values from the workspaceed entity will be added to defaults to generate urls through routing.

```
