1: <?php if(!defined('APPLICATION')) exit();
2:
3: 4: 5: 6: 7: 8: 9:
10: class DiscussionCount implements YagaRule{
11:
12: public function Award($Sender, $User, $Criteria) {
13: $Result = FALSE;
14: switch($Criteria->Comparison) {
15: case 'gt':
16: if($User->CountDiscussions > $Criteria->Target) {
17: $Result = TRUE;
18: }
19: break;
20: case 'lt':
21: if($User->CountDiscussions < $Criteria->Target) {
22: $Result = TRUE;
23: }
24: break;
25: default:
26: case 'gte':
27: if($User->CountDiscussions >= $Criteria->Target) {
28: $Result = TRUE;
29: }
30: break;
31: }
32:
33: return $Result;
34: }
35:
36: public function Form($Form) {
37: $Comparisons = array(
38: 'gt' => T('More than:'),
39: 'lt' => T('Less than:'),
40: 'gte' => T('More than or:')
41: );
42:
43: $String = $Form->Label('Yaga.Rules.DiscussionCount.Criteria.Head', 'DiscussionCount');
44: $String .= $Form->DropDown('Comparison', $Comparisons) . ' ';
45: $String .= $Form->Textbox('Target', array('class' => 'SmallInput'));
46:
47: return $String;
48: }
49:
50: public function Validate($Criteria, $Form) {
51: $Validation = new Gdn_Validation();
52: $Validation->ApplyRules(array(
53: array(
54: 'Name' => 'Target', 'Validation' => array('Required', 'Integer')
55: ),
56: array(
57: 'Name' => 'Comparison', 'Validation' => 'Required'
58: )
59: ));
60: $Validation->Validate($Criteria);
61: $Form->SetValidationResults($Validation->Results());
62: }
63:
64: public function Hooks() {
65: return array('Gdn_Dispatcher_AppStartup');
66: }
67:
68: public function Description() {
69: $Description = T('Yaga.Rules.DiscussionCount.Desc');
70: return Wrap($Description, 'div', array('class' => 'InfoMessage'));
71: }
72:
73: public function Name() {
74: return T('Yaga.Rules.DiscussionCount');
75: }
76:
77: public function Interacts() {
78: return FALSE;
79: }
80: }
81: