protected function applyCredentials(IcingaDoctrine_Query &$query)
 {
     AppKitLogger::verbose("Parsing credentials: %s", $this->view["credentials"]);
     foreach (array("host", "service") as $affects) {
         // add a group for all credential WHERE statements
         if (!empty($this->view["credentials"])) {
             $query->addDqlQueryPart("where", "[[CREDSTART]]", true);
         }
         foreach ($this->view["credentials"] as $credentialDefinition) {
             if (!isset($credentialDefinition["affects"])) {
                 AppKit::error("Missing definition of \"affects\" in credential %s!", $credentialDefinition["name"]);
             }
             if ($credentialDefinition["affects"] != $affects) {
                 continue;
             }
             switch ($credentialDefinition["type"]) {
                 case "auto":
                     throw new AppKitModelException('Auto credential is deprecated');
                     break;
                 case "custom":
                     AppKitLogger::verbose("Applying custom credential %s (%s)", $credentialDefinition["name"], $credentialDefinition["dql"]);
                     $this->applyCustomCredential($credentialDefinition["dql"], $query, $this->getCredentialValues($credentialDefinition["name"]));
                     break;
                 case "dql":
                     AppKitLogger::verbose("Applying dql credentials %s (%s)", $credentialDefinition["name"]);
                     $this->applyDQLCalls($query, $credentialDefinition["calls"], $this->getCredentialValues($credentialDefinition["name"]));
                     break;
                 default:
                     $extender = $this->getContext()->getModel("Views.Extender." . ucfirst($credentialDefinition["type"]) . "Extender", "Api");
                     $extender->extend($query, $credentialDefinition["params"]);
             }
         }
         // end the group
         if (!empty($this->view["credentials"])) {
             $query->addDqlQueryPart("where", "[[CREDEND]]", true);
         }
     }
     $query->replaceCredentialMarkers();
 }