コード例 #1
0
 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();
 }
コード例 #2
0
 /**
  * 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;
 }
コード例 #3
0
 /**
  * @param BaseEntity $entity
  * @return boolean
  */
 public function delete($entity)
 {
     if (!$entity->canDelete()) {
         Logging::warning('Datensatz kann nicht gelöscht werden ' . (string) $this);
         return false;
     }
     $entityName = Database::getEntityName($this->definition->name);
     Database::delete()->from($entityName)->where("{$this->definition->primaryKey} = {$entity->id}")->execute();
     return true;
 }