2017 © Pedro Peláez
 

symfony-bundle phpcr-taxonomy-bundle

Taxonomy Bundle for PHPCR-ODM

image

dantleech/phpcr-taxonomy-bundle

Taxonomy Bundle for PHPCR-ODM

  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

PHPCR Taxonomy Bundle

Build Status Latest Stable Version Total Downloads, (*1)

What works:, (*2)

  • Automatically creating tag objects at spsecified paths
    • Paths effectively act as taxonomies
  • Automatic tag object association with target document
  • Taxon referrer count, because PHPCR-ODM doesn't do aggregation. (for tag clouds for example)
  • Command to "fix" or initialize taxon referrer counts

What is planned:, (*3)

  • Orphan removal
  • Static taxonomies - i.e. specify if new taxons can be created.
  • Hierachical tagging, e.g. specify "Laptops > Levono > X200" as a tag, creating a 3 level heierachy.

This is a very specific taxonomy bundle for PHPCR., (*4)

Basic Usage

For each document you wish to be tagged you need to add two property annotations, @Taxons and @TaxonObjects. The first will automatically be mapped to an array, the second will contain a collection of the actual taxon objects., (*5)

namespace DTL\PhpcrTaxonomyBundle\Tests\Resources\Document;

use Doctrine\ODM\PHPCR\Mapping\Annotations as PHPCR;
use DTL\PhpcrTaxonomyBundle\Metadata\Annotations as PhpcrTaxonomy;

/**
 * @PHPCR\Document(referenceable=true)
 */
class Post
{
    /**
     * @PHPCR\Id()
     */
    public $id;

    /**
     * @PHPCR\ParentDocument()
     */
    public $parent;

    /**
     * @PhpcrTaxonomy\Taxons(path="/test/taxons")
     */
    public $tags;

    /**
     * @PhpcrTaxonomy\TaxonObjects()
     */
    public $tagObjects;
}

Tags can be set as follows:, (*6)

$post = new Post();
$post->tags = array('one', 'two');

The parent document for each taxon is determined by the path property of the Taxons annotation. It must exist before persisting the document., (*7)

Alternative Taxon Classes

You can specify an alternative taxon class as follows:, (*8)

namespace DTL\PhpcrTaxonomyBundle\Tests\Resources\Document;

use Doctrine\ODM\PHPCR\Mapping\Annotations as PHPCR;
use DTL\PhpcrTaxonomyBundle\Metadata\Annotations as PhpcrTaxonomy;

/**
 * @PHPCR\Document(referenceable=true)
 */
class Post
{
    // ...

    /**
     * @PhpcrTaxonomy\Taxons(path="/test/taxons", taxonClass="MyBundle\MyTaxonClass")
     */
    public $tags;
}

Taxon Referrer Count

The Doctrine subscriber automatically records the number of referrers each taxon document has. For example if a taxon is used by 5 posts, then that taxon has 5 referrers., (*9)

This is especially useful if you want to show a tag cloud which weights taxons by the number of times that they are referenced., (*10)

Note that if you implement a custom taxon document you must implement both getReferrerCount and setReferrerCount and store the field as a Long., (*11)

The taxon referrer count for each taxon is updated whenever a taxon is associated or disassociated with a document. If for some reason this data becomes corrupted you can launch the following command to reinitialize this data:, (*12)

$ php app/console phpcr-taxonomy:update-referrer-count

The Versions