root/trunk/lib/helper/EventHelper.php

Revision 2, 4.2 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 use_helper('I18N', 'Date');
3
4 function _event_get_time($event)
5 {
6   return distance_of_time_in_words($event->getOccuredAt(null), time());
7 }
8
9 function _object_type($model)
10 {
11   return $model == 'sfGuardUser' ? 'person' : strtolower($model);
12 }
13
14 function _object_linkto_function($model, $name, $slug, $ucfirst = false)
15 {
16   $link = '';
17   switch (_object_type($model))
18   {
19     case 'application':
20       $name = sprintf(__('the %s application'), $name);
21       if ($ucfirst)
22       {
23         $name = ucfirst($name);
24       }
25       $link = link_to($name, '@application_page?slug='.$slug);
26     break;
27     case 'company':
28       if ($ucfirst)
29       {
30         $name = ucfirst($name);
31       }
32       $link = link_to($name, '@company_page?slug='.$slug);
33     break;
34     case 'job':
35       $link = sprintf('the %s job offer', link_to($name, '@job_page?slug='.$slug));
36       if ($ucfirst)
37       {
38         $link = ucfirst($link);
39       }
40     break;
41     case 'person':
42       $link = link_to($name, '@person_page?username='.$slug);
43     break;
44   }
45   return $link;
46 }
47
48 /**
49  * Format an event as a string containing links
50  *
51  * @param  Event $event
52  * @return string
53  */
54 function format_event($event)
55 {
56   $string = '';
57   $sourceLink = _object_linkto_function($event->getSourceModel(),
58                                         $event->getSourceName(),
59                                         $event->getSourceSlug());
60   $sourceLinkU = _object_linkto_function($event->getSourceModel(),
61                                          $event->getSourceName(),
62                                          $event->getSourceSlug(),
63                                          true);
64   if ($event->getTargetModel())
65   {
66     $targetLink = _object_linkto_function($event->getTargetModel(),
67                                           $event->getTargetName(),
68                                           $event->getTargetSlug());
69     $targetLinkU = _object_linkto_function($event->getTargetModel(),
70                                            $event->getTargetName(),
71                                            $event->getTargetSlug(),
72                                            true);
73   }
74   switch ($event->getType())
75   {
76     case 'addition':
77       $string = __('%source% added %target% %time% ago',
78                    array('%source%' => $sourceLinkU,
79                          '%target%' => $targetLink,
80                          '%time%'   => _event_get_time($event)));
81     break;
82     case 'connection':
83       $string = __('%source% has connected to %target% %time% ago',
84                    array('%source%' => $sourceLinkU,
85                          '%target%' => $targetLink,
86                          '%time%'   => _event_get_time($event)));
87     break;
88     case 'join':
89       $string = __('%user% registered %time% ago. Welcome, %user%!',
90                    array('%user%' => $sourceLink,
91                          '%time%' => _event_get_time($event)));
92     break;
93     case 'recommendation_addition':
94       $string = __('%recommender% has recommended %recommended% %time% ago',
95                    array('%recommender%' => $sourceLink,
96                          '%recommended%' => $targetLink,
97                          '%time%'        => _event_get_time($event)));
98     break;
99     case 'recommendation_update':
100       $string = __('%recommender% has updated his recommendation made for %recommended% %time% ago',
101                    array('%recommender%' => $sourceLink,
102                          '%recommended%' => $targetLink,
103                          '%time%'        => _event_get_time($event)));
104     break;
105     case 'relation':
106       $string = __('%source% is now related to %target% %time% ago',
107                    array('%source%' => $sourceLinkU,
108                          '%target%' => $targetLink,
109                          '%time%'   => _event_get_time($event)));
110     break;
111     case 'update':
112       $string = __('%target% has been updated by %source% %time% ago',
113                    array('%target%' => $targetLinkU,
114                             '%source%' => $sourceLink,
115                          '%time%'   => _event_get_time($event)));
116     break;
117     case 'update_profile':
118       $string = __('%user% updated his/her profile %time% ago',
119                    array('%user%' => $sourceLink,
120                          '%time%' => _event_get_time($event)));
121     break;
122   }
123  
124   return $string;
125 }
Note: See TracBrowser for help on using the browser.