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(); } }