public static function generateForSettings(BattleSettings $battleSetting) { $battle = Battle::doGetInstanceByCriteria(__CLASS__, array('settingsId' => $battleSetting->_id)); if (is_null($battle) || time() > $battle->updated->sec + 600) { if (is_null($battle)) { $battle = new Battle(); } $battle->data = Battle::generateBattle($battleSetting); $battle->updated = new \MongoDate(time()); $battle->settingsId = $battleSetting->_id; $battle->save(); } return $battle; }