Skip to content

Commit

Permalink
Add DiscussionCategory rule
Browse files Browse the repository at this point in the history
Awards a badge if the user has posted in a specific category.
Compliments of Jan Hoos.
  • Loading branch information
hgtonight committed May 13, 2014
1 parent 9e6bd01 commit fcb166a
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 0 deletions.
55 changes: 55 additions & 0 deletions library/rules/class.discussioncategory.php
@@ -0,0 +1,55 @@
<?php if(!defined('APPLICATION')) exit();
/**
* This rule awards badges if a discussion is posted in the right category
*
* @author Jan Hoos
* @since 1.0
* @package Yaga
*/
class DiscussionCategory implements YagaRule {

public function Award($Sender, $User, $Criteria) {
$Discussion = $Sender->EventArguments['Discussion'];
$ID = ($Discussion->CategoryID);
if($ID == $Criteria->CategoryID) {
return $Discussion->InsertUserID;
}
else {
return FALSE;
}
}

public function Form($Form) {
$String = $Form->Label('Yaga.Rules.DiscussionCategory.Criteria.Head', 'DiscussionCategory');
$String .= $Form->CategoryDropDown('CategoryID');
return $String;
}

public function Validate($Criteria, $Form) {
$Validation = new Gdn_Validation();
$Validation->ApplyRules(array(
array(
'Name' => 'CategoryID', 'Validation' => array('Required', 'Integer')
),
));
$Validation->Validate($Criteria);
$Form->SetValidationResults($Validation->Results());
}

public function Hooks() {
return array('DiscussionModel_AfterSaveDiscussion');
}

public function Description() {
return Wrap(T('Yaga.Rules.DiscussionCategory.Desc'), 'div', array('class' => 'InfoMessage'));
}

public function Name() {
return T('Yaga.Rules.DiscussionCategory');
}

public function Interacts() {
return FALSE;
}

}
3 changes: 3 additions & 0 deletions locale/en-CA/definitions.php
Expand Up @@ -154,6 +154,9 @@
$Definition['Yaga.Rules.DiscussionBodyLength'] = 'OP Length';
$Definition['Yaga.Rules.DiscussionBodyLength.Desc'] = 'Award this badge if the user has a discussion that reaches the target number of characters. Make sure you enter a number less than or equal to %s.';
$Definition['Yaga.Rules.DiscussionBodyLength.Criteria.Head'] = 'How many characters?';
$Definition['Yaga.Rules.DiscussionCategory'] = 'Post in category';
$Definition['Yaga.Rules.DiscussionCategory.Desc'] = 'Award this badge if the user has started a discussion in the specified category.';
$Definition['Yaga.Rules.DiscussionCategory.Criteria.Head'] = 'Select Category:';
$Definition['Yaga.Rules.DiscussionCount'] = 'Discussion Count Total';
$Definition['Yaga.Rules.DiscussionCount.Desc'] = 'Award this badges if the total count of discussions a user has ever started meets the specified comparison.';
$Definition['Yaga.Rules.DiscussionCount.Criteria.Head'] = 'Total Discussions';
Expand Down

0 comments on commit fcb166a

Please sign in to comment.