Beispiel #1
0
 /**
  *
  * @param \Netrunnerdb\CardsBundle\Entity\Card $card
  * @param string $api
  * @return multitype:multitype: string number mixed NULL unknown
  */
 public function getCardInfo($card, $api = false)
 {
     static $cache = array();
     static $cacheApi = array();
     $locale = $this->request_stack->getCurrentRequest()->getLocale();
     if (!$api && isset($cache[$card->getId()]) && isset($cache[$card->getId()][$locale])) {
         return $cache[$card->getId()][$locale];
     }
     if ($api && isset($cacheApi[$card->getId()]) && isset($cacheApi[$card->getId()][$locale])) {
         return $cacheApi[$card->getId()][$locale];
     }
     $dbh = $this->doctrine->getConnection();
     $cardinfo = array("id" => $card->getId(), "last-modified" => $card->getTs()->format('c'), "code" => $card->getCode(), "title" => $card->getTitle($locale), "type" => $card->getType()->getName($locale), "type_code" => mb_strtolower($card->getType()->getName()), "subtype" => $card->getKeywords($locale), "subtype_code" => mb_strtolower($card->getKeywords()), "text" => $card->getText($locale), "advancementcost" => $card->getAdvancementCost(), "agendapoints" => $card->getAgendaPoints(), "baselink" => $card->getBaseLink(), "cost" => $card->getCost(), "faction" => $card->getFaction()->getName($locale), "faction_code" => $card->getFaction()->getCode(), "faction_letter" => $card->getFaction()->getCode() == 'neutral' ? '-' : substr($card->getFaction()->getCode(), 0, 1), "factioncost" => $card->getFactionCost(), "flavor" => $card->getFlavor($locale), "illustrator" => $card->getIllustrator(), "influencelimit" => $card->getInfluenceLimit(), "memoryunits" => $card->getMemoryUnits(), "minimumdecksize" => $card->getMinimumDeckSize(), "number" => $card->getNumber(), "quantity" => $card->getQuantity(), "id_set" => $card->getPack()->getId(), "setname" => $card->getPack()->getName($locale), "set_code" => $card->getPack()->getCode(), "side" => $card->getSide()->getName($locale), "side_code" => mb_strtolower($card->getSide()->getName()), "strength" => $card->getStrength(), "trash" => $card->getTrashCost(), "uniqueness" => $card->getUniqueness(), "limited" => $card->getLimited(), "cyclenumber" => $card->getPack()->getCycle()->getNumber());
     $cardinfo['url'] = $this->router->generate('netrunnerdb_netrunner_cards_zoom', array('card_code' => $card->getCode(), '_locale' => $locale), true);
     $cardinfo['imagesrc'] = "";
     $cardinfo['largeimagesrc'] = "";
     if ($locale != 'en' && file_exists($this->dir . DIRECTORY_SEPARATOR . $locale . DIRECTORY_SEPARATOR . $card->getCode() . ".png")) {
         $cardinfo['imagesrc'] = "/web/bundles/netrunnerdbcards/images/cards/{$locale}/" . $card->getCode() . ".png";
         if (file_exists($this->dir . DIRECTORY_SEPARATOR . "{$locale}-large" . DIRECTORY_SEPARATOR . $card->getCode() . ".png")) {
             $cardinfo['largeimagesrc'] = "/web/bundles/netrunnerdbcards/images/cards/{$locale}-large/" . $card->getCode() . ".png";
         }
     } else {
         if (file_exists($this->dir . DIRECTORY_SEPARATOR . "en" . DIRECTORY_SEPARATOR . $card->getCode() . ".png")) {
             $cardinfo['imagesrc'] = "/web/bundles/netrunnerdbcards/images/cards/en/" . $card->getCode() . ".png";
             if (file_exists($this->dir . DIRECTORY_SEPARATOR . "en-large" . DIRECTORY_SEPARATOR . $card->getCode() . ".png")) {
                 $cardinfo['largeimagesrc'] = "/web/bundles/netrunnerdbcards/images/cards/en-large/" . $card->getCode() . ".png";
             }
         }
     }
     if ($api) {
         unset($cardinfo['id']);
         unset($cardinfo['id_set']);
         $cardinfo = array_filter($cardinfo, function ($var) {
             return isset($var);
         });
         $cacheApi[$card->getId()][$locale] = $cardinfo;
     } else {
         $cardinfo['cssfaction'] = str_replace(" ", "-", mb_strtolower($card->getFaction()->getName()));
         $cache[$card->getId()][$locale] = $cardinfo;
     }
     return $cardinfo;
 }