dantleech / phpcr-taxonomy-bundle
Taxonomy Bundle for PHPCR-ODM
Installs: 40
Dependents: 0
Suggesters: 0
Security: 0
Stars: 6
Watchers: 5
Forks: 1
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=5.3.3
- doctrine/phpcr-bundle: ~1.0
- doctrine/phpcr-odm: ~1.0
- jms/metadata: ~1.5
- symfony/framework-bundle: ~2.2
Requires (Dev)
- symfony-cmf/routing-bundle: ~1.1
- symfony-cmf/testing: ~1.1
- symfony/monolog-bundle: ~2.2
This package is auto-updated.
Last update: 2024-10-29 04:30:52 UTC
README
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