/**
  * A question has been voted on 
  * This method will determine what type
  * of vote has been cast and what karma to give.
  * 
  * Key Votes:
  * - up vote on question
  * - up vote on answer
  * - marked as best answer
  *
  * @param type $event
  */
 public static function onQuestionVoteAfterSave($event)
 {
     switch ($event->sender->vote_type) {
         case "up":
             // Only vote on questions and answers
             switch ($event->sender->vote_on) {
                 case "question":
                     Karma::model()->addKarma('question_up_vote', $event->sender->created_by);
                     break;
                 case "answer":
                     Karma::model()->addKarma('answer_up_vote', $event->sender->created_by);
                     break;
             }
             break;
         case "accepted_answer":
             Karma::model()->addKarma('accepted_answer', $event->sender->created_by);
             break;
     }
 }
 /**
  * Deletes a karma record
  */
 public function actionDelete()
 {
     $id = (int) Yii::app()->request->getQuery('id');
     $doit = (int) Yii::app()->request->getQuery('doit');
     $karma = Karma::model()->resetScope()->findByPk($id);
     if ($karma == null) {
         throw new CHttpException(404, "Karma record not found");
     }
     if ($doit == 2) {
         $this->forcePostRequest();
         $karma->delete();
         $this->redirect($this->createUrl('index'));
     }
     $this->render('delete', array('model' => $karma));
 }
 /** 
  * Private method that handles assinging
  * karma to a user
  * @param string $karma_name
  * @param int $user_id
  * @return bool
  */
 public function addKarma($karma_name, $user_id)
 {
     // First find the karma record
     $karma = Karma::model()->findByAttributes(array('name' => $karma_name));
     if ($karma) {
         KarmaUser::model()->attachKarma($user_id, $karma->id);
         return true;
     } else {
         return false;
     }
 }