Entity/TagRepository.php
author ymh <ymh.work@gmail.com>
Thu, 17 Nov 2011 11:29:26 +0100
changeset 34 21fab44f46fe
parent 2 13f43f53d0ba
child 42 0e57c730bb18
permissions -rwxr-xr-x
add event on tag changed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
13f43f53d0ba first implementation
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
13f43f53d0ba first implementation
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
13f43f53d0ba first implementation
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
namespace IRI\Bundle\WikiTagBundle\Entity;
13f43f53d0ba first implementation
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
13f43f53d0ba first implementation
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
use Doctrine\ORM\EntityRepository;
13f43f53d0ba first implementation
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
13f43f53d0ba first implementation
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
/**
13f43f53d0ba first implementation
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 * TagRepository
13f43f53d0ba first implementation
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 *
13f43f53d0ba first implementation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
 * This class was generated by the Doctrine ORM. Add your own custom
13f43f53d0ba first implementation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
 * repository methods below.
13f43f53d0ba first implementation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
 */
13f43f53d0ba first implementation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
class TagRepository extends EntityRepository
13f43f53d0ba first implementation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
{
34
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    15
    public function getTagCloud($max_tags)
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    16
    {
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    17
        $qb = $this->getEntityManager()->createQueryBuilder();
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    18
        $qb->select('t.id', 't.label', 'COUNT( dt.id ) AS nb_docs');
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    19
        $qb->from('WikiTagBundle:Tag','t');
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    20
        $qb->leftJoin('t.documents', 'dt', 'WITH', 't = dt.tag');
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    21
        $qb->addGroupBy('t.id');
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    22
        $qb->addOrderBy('nb_docs','DESC');
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    23
        $qb->setMaxResults($max_tags);
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    24
        
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    25
        $query = $qb->getQuery();
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    26
        return $query->getResult();
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    27
    }
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    28
    
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    29
    public function getCompletion($seed)
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    30
    {
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    31
        $qb = $this->getEntityManager()->createQueryBuilder();
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    32
        $qb->select('t.label');
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    33
        $qb->from('WikiTagBundle:Tag','t');
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    34
        $qb->where($qb->expr()->orx(
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    35
            $qb->expr()->like('t.label',$qb->expr()->literal("%".addcslashes(mysql_real_escape_string($seed),"%_"))),
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    36
            $qb->expr()->like('t.label',$qb->expr()->literal("% ".addcslashes(mysql_real_escape_string($seed),"%_")."%"))
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    37
        ));
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    38
        
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    39
        $query = $qb->getQuery();
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    40
        
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    41
        return $query->getResult();
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    42
        
21fab44f46fe add event on tag changed
ymh <ymh.work@gmail.com>
parents: 2
diff changeset
    43
    }
2
13f43f53d0ba first implementation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
}