/** * 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(); }