/** * @param ScavengerHuntGame $game * @return bool */ public function save(ScavengerHuntGame $game) { $data = $game->getData(); foreach ($data['articles'] as $k => $v) { $data['articles'][$k] = $v->getAll(); } $fields = array('wiki_id' => $game->getWikiId(), 'game_name' => $game->getName(), 'game_is_enabled' => $game->isEnabled(), 'game_data' => serialize($data)); $oldGame = null; $db = $this->getDb(DB_MASTER); if ($game->getId()) { $oldGame = $this->findById($game->getId()); $db->update(self::GAMES_TABLE_NAME, $fields, array("game_id" => $game->getId()), __METHOD__); } else { $db->insert(self::GAMES_TABLE_NAME, $fields, __METHOD__); $game->setId($db->insertId()); } $db->commit(__METHOD__); $this->clearCache($oldGame, $game); return true; }