root/trunk/lib/model/JobPeer.php

Revision 2, 3.9 kB (checked in by nperriault, 8 months ago)

First commit of the extracted code from production, I hope no passwd has been forgotten :-)

Line 
1 <?php
2 /**
3  * Subclass for performing query and update operations on the 'jobs' table.
4  *
5  * @package lib.model
6  */
7 class JobPeer extends BaseJobPeer
8 {
9
10   protected static
11     $companies = null,
12     $countries = null;
13
14   /**
15    * Get recent jobs
16    *
17    * @param int      $number  (default 10)
18    * @param Criteria $c
19    * @return array
20    */
21   public static function getRecent($number = 10, Criteria $c = null)
22   {
23     if (!$c instanceof Critreria)
24     {
25       $c = new Criteria;
26     }
27
28     $criterion = $c->getNewCriterion (
29       self::EXPIRES_AT, date('Y-m-d H:i:s'), Criteria::GREATER_EQUAL
30     )->addOr($c->getNewCriterion (
31       self::EXPIRES_AT, null, Criteria::ISNULL
32     ));
33     $c->addAnd($criterion);
34
35     $c->addDescendingOrderByColumn(self::CREATED_AT);
36     $c->addAscendingOrderByColumn(self::EXPIRES_AT);
37     $c->setLimit($number);
38     return self::doSelect($c);
39   }
40
41   public static function retrieveBySlug($slug, $peer_method = null)
42   {
43     $c = new Criteria();
44     $c->add(self::SLUG, $slug);
45     if ($peer_method)
46     {
47       if (!is_callable(sprintf('%s::%s', __CLASS__, $peer_method)))
48       {
49         throw new PropelException(sprintf('Peer method "%s" does not exist',
50                                           $peer_method));
51       }
52       $c->setLimit(1);
53       $objects = call_user_func(array(__CLASS__, $peer_method), $c);
54       if (!is_null($objects) && isset($objects[0]))
55       {
56         return $objects[0];
57       }
58       else
59       {
60         return null;
61       }
62     }
63     else
64     {
65       return self::doSelectOne($c);
66     }
67   }
68
69   public static function retrieveCompanies($country = null, $reload = false)
70   {
71     if (is_null(self::$companies) or $reload)
72     {
73       $companies = array();
74       $c = new Criteria();
75       $c->clearSelectColumns();
76       $c->addSelectColumn(CompanyPeer::NAME);
77       $c->addSelectColumn(CompanyPeer::SLUG);
78       $c->addSelectColumn(CompanyPeer::COUNTRY);
79       $c->add(self::COMPANY_ID, null, Criteria::ISNOTNULL);
80       $c->addJoin(self::COMPANY_ID, CompanyPeer::ID);
81
82       if ($country)
83       {
84         $c->addJoin(self::COMPANY_ID, CompanyPeer::ID);
85         $c->add(CompanyPeer::COUNTRY, $country);
86       }
87
88       $criterion = $c->getNewCriterion (
89         JobPeer::EXPIRES_AT, date('Y-m-d H:i:s'), Criteria::GREATER_EQUAL
90       )->addOr($c->getNewCriterion (
91         JobPeer::EXPIRES_AT, null, Criteria::ISNULL
92       ));
93       $c->addAnd($criterion);
94
95       $c->addGroupByColumn(CompanyPeer::ID);
96       $c->addAscendingOrderByColumn(CompanyPeer::NAME);
97       $rs = self::doSelectRS($c);
98       while ($rs->next())
99       {
100         if ($rs->getString(2) != '')
101         {
102           $companies[$rs->getString(2)] = sprintf('%s (%s)',
103                                         $rs->getString(1),
104                                         format_country($rs->getString(3)));
105         }
106       }
107       asort($companies);
108       self::$companies = $companies;
109     }
110     return self::$companies;
111   }
112
113   public static function retrieveCountries($reload = false)
114   {
115     if (is_null(self::$countries) or $reload)
116     {
117       sfLoader::loadHelpers('I18N');
118       $countries = array();
119       $c = new Criteria();
120       $c->clearSelectColumns();
121       $c->addSelectColumn(self::COUNTRY);
122       $c->add(self::COUNTRY, null, Criteria::ISNOTNULL);
123
124       $criterion = $c->getNewCriterion (
125         JobPeer::EXPIRES_AT, date('Y-m-d H:i:s'), Criteria::GREATER_EQUAL
126       )->addOr($c->getNewCriterion (
127         JobPeer::EXPIRES_AT, null, Criteria::ISNULL
128       ));
129       $c->addAnd($criterion);
130
131       $c->addGroupByColumn(self::COUNTRY);
132       $c->addAscendingOrderByColumn(self::COUNTRY);
133       $rs = self::doSelectRS($c);
134       while ($rs->next())
135       {
136         if ($rs->getString(1) != '')
137         {
138           $countries[$rs->getString(1)] = format_country($rs->getString(1));
139         }
140       }
141       asort($countries);
142       self::$countries = $countries;
143     }
144     return self::$countries;
145   }
146
147 }
148
Note: See TracBrowser for help on using the browser.