/**
  * Errechnet den aktuellen Bewertungsdurchschnitt für das übergebene Entity
  *
  * @param $entityName
  * @param $id
  * @return mixed
  */
 public static function durchschnittFuer($entityName, $id)
 {
     $sql = 'select avg(ko_bewertung) wert from kommentare where ko_element_tabelle = :tabelle and ko_element_id = :element_id';
     Database::getInstance()->query($sql, ['tabelle' => $entityName, 'element_id' => $id]);
     $row = Database::getInstance()->fetch();
     return $row->wert;
 }
 public static function doesExists($userId, $rolleId)
 {
     $sql = 'select count(*) anzahl from userrollen where ur_user = :user and ur_rolle = :rolle';
     Database::getInstance()->query($sql, array('user' => $userId, 'rolle' => $rolleId));
     $row = Database::getInstance()->fetch();
     return $row['anzahl'] > 0;
 }
 /**
  * Die Daten werden geladen und die einzelnen Checkboxen
  * zugeordnet.
  */
 protected function load()
 {
     // Daten laden
     $this->lookupentity->searchDataset($this->filter, false, 0, 100);
     $field = $this->textfield;
     while ($row = Database::getInstance()->fetch()) {
         $this->lookupentity->loadFromRow($row);
         $this->addBox($row[$this->valuefield], $this->lookupentity->{$field}, $this->id . '[]', false);
     }
     $this->loaded = true;
 }
 /**
  * Gibt den Wert des ersten Felds, des ersten Datensatzes zurück
  * @param array $parameter
  * @param null $db
  * @return mixed
  */
 public function scalar(&$parameter = array(), $db = null)
 {
     $this->limit(1);
     $this->open($parameter, $db);
     $row = $this->db->fetch();
     if ($row === false) {
         return -1;
     }
     $this->db->closeStatement();
     return reset($row);
 }
 /**
  * Commitet die gerade aktive Transaction
  */
 public static function commitTransaction()
 {
     Database::getInstance()->pdo->commit();
 }
 /**
  * Erstellt einen Query-Builder für dieses Entity und gibt diesen zurück.
  * Es werden keine Felder hinzugefügt!
  *
  * @param bool $addFelder
  * @return QueryBuilder
  */
 public static function createSelectBuilder($addFelder = false)
 {
     // Via late static binding eine Instanz der Klasse erzeugen
     $classname = get_called_class();
     $temp = new $classname();
     $entity = Database::getEntityName($temp->definition->name);
     $builder = Database::select()->table($entity);
     // Felder
     if ($addFelder) {
         $builder->field($entity . '.*');
         foreach ($temp->lookupFelder as $feld) {
             /** @var ModelFieldLookup $feld */
             $relationTable = Database::getEntityName($feld->getRelationName());
             // TODO: Wenn Type-Safe dann Absturz
             if ($feld->field != '') {
                 $builder->field("{$relationTable}.{$feld->field} {$feld->name}");
             }
         }
         foreach ($temp->felder as $feld) {
             if ($feld instanceof ModelFieldCalc) {
                 $builder->field("({$feld->getFormula()}) as {$feld->name}");
             }
         }
     }
     // Joins
     foreach ($temp->relationen as $relation) {
         /** @var $relation Relation */
         $foreigntable = Database::getEntityName($relation->foreignEntity);
         if ($relation->alias === '') {
             $alias = $entity;
         } else {
             $alias = $relation->alias;
         }
         $additionalCriteria = '';
         if ($relation->joinCriteria !== '') {
             $additionalCriteria = ' and ' . $relation->joinCriteria;
         }
         $builder->join($relation->join, "{$foreigntable} {$relation->name}", "{$alias}.{$relation->field} = {$relation->name}.{$relation->foreignField} {$additionalCriteria}");
     }
     return $builder;
 }
 /**
  * Startet die Verarbeitung des aktuellen Aufrufs.
  *
  * @param boolean $admin true, falls Aufruf der Administration
  */
 public static function start($admin = false)
 {
     // Bootstrapping der konkreten App aufrufen (vor dem Laden der Session!)
     // Beim Laden der Session werden u.a. schon DB-Abfragen ausgeführt. Einstellungen,
     // die die DB betreffen müssen also vorher (!) gemacht werden.
     include Environment::get()->srcDir . '/Bootstrap.php';
     $application = self::getInstance();
     $application->startSession();
     Debug::init();
     // Konkrete Applikation initialisieren (nach dem Laden der Session!)
     include Environment::get()->srcDir . '/InitApplication.php';
     // Request parsen und ausführen
     $request = $application->parseRequest();
     $request = self::sanitizeRequest($request, $admin);
     $application->handleRequest($request);
     // DB Verbindung garantiert trennen
     Database::getInstance()->close();
 }
 public function search()
 {
     // TODO: Was macht das denn hier?
     Application::getInstance()->setCurrentPage(new Page(98));
     $sql = "select\n                pa_bezeichnung, pa_link, te_text \n              from cmsartikel\n                join texte on te_element = CONCAT('cmsartikel.', ca_id, '.intro') and te_sprache = 1\n                join pages on pa_parameter = CONCAT('id=', ca_id)\n \n              where upper(te_text) like upper(:suchbegriff)";
     $db = Database::getInstance();
     $db->query($sql, array('suchbegriff' => '%' . $this->request->suchbegriff . '%'));
     $this->hits = array();
     while ($row = $db->fetch()) {
         $this->hits[] = array('page' => $row['pa_bezeichnung'], 'link' => $row['pa_link'], 'text' => $this->getShortText($row['te_text']));
     }
 }
<?php

use NewFrontiers\Framework\Core\ConfigurationProvider;
use NewFrontiers\Framework\Database\Database;
use Nostromo\Contracts\Facades\Configuration;
use NewFrontiers\Framework\Core\Application;
use Symfony\Component\EventDispatcher\EventDispatcher;
// Registrieren der benötigten Services
Application::register('configuration', ConfigurationProvider::getInstance());
Application::register('module', new \NewFrontiers\Provider\Module\XmlModuleProvider());
Application::register('logging', new \NewFrontiers\Provider\Logging\MemoryLoggingProvider());
Application::register('routing', new \NewFrontiers\Provider\Routing\SitemapRoutingProvider());
Application::register('security', new \NewFrontiers\Provider\Security\SqlSecurityProvider());
Application::register('cache', new NewFrontiers\Provider\Cache\SessionCacheProvider());
Application::register('dispatcher', new EventDispatcher());
Application::register('default_database', new Database());
// Datenbank-Engine auf MySQL setzen
Database::getInstance()->setEngine(Configuration::get('database.engine', Database::DB_MYSQL));
 public function loadAnonymous()
 {
     $table = Database::getEntityName('user');
     $id = Database::getInstance()->skalar("select us_id from {$table} where us_anonymous = 1");
     $user = new User($id);
     $_SESSION['id'] = $user->id;
     $_SESSION['sp_id'] = $user->us_sprache;
     $_SESSION['name'] = 'nicht angemeldet';
     $_SESSION['loggedin'] = false;
     $this->loadRollen($user->id);
     Site::flushCache();
 }
 protected function addMenuitems()
 {
     Logging::info('Bearbeite Menü');
     // TODO: Site dynamisieren
     $db = Database::getInstance();
     $db->query('select pa_link from pages where pa_site = 2 and pa_ausblenden = 0');
     while ($row = $db->fetch()) {
         if ($row['pa_link'] != '') {
             $link = Configuration::get('site.url') . '/' . rawurlencode($row['pa_link']);
             $this->addItem($link, 0.5, 'daily');
         }
     }
 }
 public function byBuilder(QueryBuilder $builder)
 {
     $result = [];
     $db = Database::getInstance();
     // Das alte Statement wird zwischengespeichert, so dass dieses beim Aufruf der
     // neuen Query nicht automatisch gestartet wird.
     $oldStatement = $db->getStatement();
     $db->setStatement();
     $parameter = array();
     $db->query($builder->generateQuery($parameter), $parameter);
     // Auch das jetzige Statement wird zwischengepsiehcert, da Queries, die u.U. beim
     // Laden der Datensätze ausgeführt werden nicht diese Query zu machen
     $statement = $db->getStatement();
     $db->setStatement();
     while ($row = $db->fetch($statement)) {
         /** @var BaseEntity $obj */
         $obj = $this->getNewInstanceOfEntity();
         $obj->loadFromRow($row);
         $result[] = $obj;
     }
     // Aktuelles Statement schließen und den alten Zustand wieder herstellen
     $statement->closeCursor();
     $db->setStatement($oldStatement);
     unset($statement, $oldStatement);
     return $result;
 }
 private function executeCreateIndex()
 {
     $feld = $this->fields[0];
     $sql = "CREATE INDEX idx_{$this->table}_{$feld->name} ON {$this->table} ({$feld->name})";
     Database::getInstance()->execute($sql);
 }
 /**
  * Diese Methode überprüft ob sichtbare Unterpunkte zu diesem Menüpunkt
  * existieren und aktualisiert das Feld entsprechend. Der Datensatz wird
  * automatisch gespeichert.
  * @param bool $force Falls true, wird hasChildren auf jeden Fall auf 1 gesetzt.
  */
 public function recalcChildren($force = false)
 {
     if ($force) {
         $this->pa_haschildren = 1;
         $this->save();
         return;
     }
     $sql = 'select count(*) anzahl from pages where pa_parent  = :id and pa_ausblenden = 0';
     $anzahl = Database::getInstance()->skalar($sql, array('id' => $this->id));
     $this->pa_haschildren = 0;
     if ((int) $anzahl >= 1) {
         $this->pa_haschildren = 1;
     }
     $this->save();
 }