root/trunk/lib/model/SnippetSnippetPeer.php

Revision 7, 2.8 kB (checked in by francois, 4 years ago)

refactored sidebar module and added latest comments in sidebar (+feed)

  • Property svn:mime-type set to text/x-php
  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
Line 
1 <?php
2
3   // include base peer class
4   require_once 'model/om/BaseSnippetSnippetPeer.php';
5  
6   // include object class
7   include_once 'model/SnippetSnippet.php';
8
9
10 /**
11  * Skeleton subclass for performing query and update operations on the 'sn_snippet' table.
12  *
13  *
14  *
15  * You should add additional methods to this class to meet the
16  * application requirements.  This class will only be generated as
17  * long as it does not already exist in the output directory.
18  *
19  * @package model
20  */   
21 class SnippetSnippetPeer extends BaseSnippetSnippetPeer
22 {
23   public static function getPager($page = 1, $max_per_page = 10, $sort = 'date')
24   {
25     $c = new Criteria();
26     if($sort != 'date')
27     {
28       $c->addDescendingOrderByColumn(self::AVERAGE_VOTE);
29     }
30     $c->addDescendingOrderByColumn(self::CREATED_AT);
31     $pager = new sfPropelPager('SnippetSnippet', $max_per_page);
32     $pager->setCriteria($c);
33     $pager->setPeerMethod('doSelectJoinSnippetUser');
34     $pager->setPage($page);
35     $pager->init();
36
37     return $pager;
38   }
39
40   public static function retrieveByComment($comment_id)
41   {
42     $c = new Criteria();
43     $c->add(SnippetCommentPeer::ID, $comment_id);
44     $c->addJoin(self::ID, SnippetCommentPeer::SNIPPET_ID);
45
46     return self::doSelectOne($c);
47   }
48
49   public static function getByUser($user, $max = 100, $sort = 'date')
50   {
51     $c = new Criteria();
52     $c->setLimit($max);
53     $c->addJoin(self::USER_ID, SnippetUserPeer::ID);
54     $c->add(SnippetUserPeer::ID, $user->getId());
55     if($sort != 'date')
56     {
57       $c->addDescendingOrderByColumn(self::AVERAGE_VOTE);
58     }
59     $c->addDescendingOrderByColumn(self::CREATED_AT);
60
61     return self::doSelectJoinSnippetUser($c);
62   }
63
64   public static function getRecentByTag($tags, $max = 100, $sort = 'date')
65   {
66     if (!$tags)
67     {
68       return array();
69     }
70     $nb_tags = count($tags);
71
72     $con = Propel::getConnection();
73     $query = '
74       SELECT *, '.self::CREATED_AT.' as creation_date
75       FROM '.self::TABLE_NAME.'
76       WHERE '.$nb_tags.' =
77       (
78         SELECT COUNT(DISTINCT '.SnippetTagPeer::NAME.') FROM '.SnippetTagPeer::TABLE_NAME.'
79         WHERE '.SnippetTagPeer::NAME.' IN ('.implode(', ', array_fill(0, $nb_tags, '?')).')
80         AND '.SnippetTagPeer::SNIPPET_ID.' = '.self::ID.'
81       )
82       ORDER BY ';
83     if($sort == 'popularity')
84     {
85       $query .= self::AVERAGE_VOTE.' DESC, ';
86     }
87     $query .= 'creation_date DESC';
88
89     $stmt = $con->prepareStatement($query);
90     $stmt->setLimit($max);
91     for ($i = 0; $i < $nb_tags; $i++)
92     {
93       $stmt->setString($i + 1, $tags[$i]);
94     }
95     $rs = $stmt->executeQuery(ResultSet::FETCHMODE_NUM);
96     $snippets = array();
97     while ($rs->next())
98     {
99       $snippet = new SnippetSnippet();
100       $snippet->hydrate($rs, 1);
101       $snippets[] = $snippet;
102     }
103
104     return $snippets;
105   }
106 }
107
Note: See TracBrowser for help on using the browser.