Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Phpcr Taxonomy Bundle Laravel Package

dantleech/phpcr-taxonomy-bundle

View on GitHub
Deep Wiki
Context7

PHPCR Taxonomy Bundle

Build Status Latest Stable Version Total Downloads

What works:

  • 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:

  • 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.

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.

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:

$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.

Alternative Taxon Classes

You can specify an alternative taxon class as follows:

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.

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

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

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:

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

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
comsave/common
alecsammon/php-raml-parser
chrome-php/wrench
lendable/composer-license-checker
typhoon/reflection
mesilov/moneyphp-percentage
mike42/gfx-php
bookdown/themes
aura/view
aura/html
aura/cli
povils/phpmnd
nayjest/manipulator
omnipay/tests
psr-mock/http-message-implementation
psr-mock/http-factory-implementation
psr-mock/http-client-implementation
voku/email-check
voku/urlify
rtheunissen/guzzle-log-middleware