public static function votedown($data)
 {
     $out = array();
     if (!MyUser::isloggedin()) {
         throw new APIException("User ist nicht angemeldet.", 100);
     }
     if (MyUser::getKarmaPoints() < 100) {
         throw new APIException("Du benötigst 100 Karma-Punkte um einen negativen Vote zu geben.", 200);
     }
     if (!isset($data["question"])) {
         throw new APIException("Benötigter Parameter fehlt (question).", 50);
     }
     $db = new SQL(0);
     $row = $db->cmdrow(0, 'SELECT * FROM questions WHERE id={0}', array($data["question"] + 0));
     if (!isset($row["id"])) {
         throw new APIException("Diese Frage existiert nicht (mehr)", 300);
     }
     if ($row["author"] == MyUser::id()) {
         throw new APIException("Sie dürfen nicht auf Ihre eigene Frage voten", 301);
     }
     $raw = $db->cmdrow(0, 'SELECT * FROM question_votes WHERE question={0} AND user={1} LIMIT 0,1', array($data["question"] + 0, MyUser::id()));
     $w = array();
     $w["question"] = $data["question"] + 0;
     $w["user"] = MyUser::id();
     $w["vote"] = -1;
     $db->CreateUpdate(0, "question_votes", $w);
     $db->cmd(0, 'UPDATE questions as T1 SET count_votes = (SELECT sum(vote) FROM question_votes WHERE question=T1.id) WHERE id={0} LIMIT 1', false, array($w["question"]));
     $out["sumvotes"] = self::getVotes(array("question" => $w["question"]));
     if (!isset($raw["id"])) {
         Karma::RuleAction("VOTEDOWN_QUESTION", array("user" => $row["author"], "question" => $w["question"]));
     }
     Badge::add(9, MyUser::id(), array("question" => $w["question"]));
     //Kritiker: für downvote
     return $out;
 }
 public function processImportBadges($badges, $badges_lang, $id_lang)
 {
     $formated_badges_lang = array();
     foreach ($badges_lang as $lang) {
         $formated_badges_lang[$lang->id_ps_badge] = array('name' => array($id_lang => $lang->name), 'description' => array($id_lang => $lang->description), 'group_name' => array($id_lang => $lang->group_name));
     }
     $current_badges = array();
     $result = Db::getInstance()->ExecuteS('SELECT id_ps_badge FROM ' . _DB_PREFIX_ . 'badge');
     foreach ($result as $row) {
         $current_badges[] = (int) $row['id_ps_badge'];
     }
     $cond_ids = $this->getFormatedConditionsIds();
     foreach ($badges as $badge) {
         try {
             //if badge already exist we update language data
             if (in_array((int) $badge->id_ps_badge, $current_badges)) {
                 $bdg = new Badge(Badge::getIdByIdPs((int) $badge->id_ps_badge));
                 $bdg->name[$id_lang] = $formated_badges_lang[$badge->id_ps_badge]['name'][$id_lang];
                 $bdg->description[$id_lang] = $formated_badges_lang[$badge->id_ps_badge]['description'][$id_lang];
                 $bdg->group_name[$id_lang] = $formated_badges_lang[$badge->id_ps_badge]['group_name'][$id_lang];
                 $bdg->update();
                 unset($current_badges[(int) array_search($badge->id_ps_badge, $current_badges)]);
             } else {
                 $badge_data = array_merge((array) $badge, $formated_badges_lang[$badge->id_ps_badge]);
                 $bdg = new Badge();
                 $bdg->hydrate($badge_data, (int) $id_lang);
                 $bdg->add();
                 foreach ($badge->conditions as $cond) {
                     Db::getInstance()->insert('condition_badge', array('id_condition' => $cond_ids[$cond], 'id_badge' => $bdg->id));
                 }
             }
             unset($bdg);
         } catch (Exception $e) {
             continue;
         }
     }
     // Delete badges that are not in the file anymore
     foreach ($current_badges as $id_ps_badge) {
         $bdg = new Badge(Badge::getIdByIdPs((int) $id_ps_badge));
         $bdg->delete();
     }
 }