public function trace($state, $content) { if ($state > $this->highestTraceLevel) { $this->highestTraceLevel = $state; } $this->traces[] = FormatHelper::getInstance()->timestamp() . " [" . TraceHelper::getInstance()->traceLevelToString($state) . "] " . $content; }
public function setup() { $objectConfigs = $this->getConfig("Objects"); $tableConfigs = $this->getConfig("Tables"); $trace = TraceHelper::getInstance()->getTraceInstance("Database Service"); /* @var $objects TableModel[] */ $objects = array(); foreach ($objectConfigs as $objectConfig) { $tableModel = new TableModel(); $res = $tableModel->setConfig($objectConfig, true); if ($res === true) { $objects[$objectConfig["ObjectName"]] = $tableModel; } else { $trace->trace(TraceHelper::TRACE_LEVEL_ERROR, "Error in " . $objectConfig["ObjectName"] . ": " . TableModel::evaluateError($res)); return false; } } $this->tables = array(); foreach ($tableConfigs as $tableConfig) { $tableModel = new TableModel(); $res = $tableModel->setConfig($tableConfig); if ($res === true) { $this->tables[$tableConfig["ObjectName"]] = $tableModel; } else { $trace->trace(TraceHelper::TRACE_LEVEL_ERROR, "Error in " . $tableConfig["ObjectName"] . ": " . TableModel::evaluateError($res)); return false; } } //inheritance! foreach ($this->getTables() as $table) { $inst = $table->getInstance(); $classes = ReflectionHelper::getInstance()->getInheritanceTree($inst); unset($classes[0]); foreach ($classes as $class) { if (isset($objects[$class])) { $table->addProperties($objects[$class]->getProperties()); } else { $trace->trace(TraceHelper::TRACE_LEVEL_ERROR, "Base Class not found: " . $class . " for object of type " . $table->getObjectName()); return false; } } } //assert models are correctly configured $successful = true; foreach ($this->getTables() as $table) { $successful &= $table->testModel($trace); } if (!$successful) { $trace->trace(TraceHelper::TRACE_LEVEL_ERROR, "not all objects could setup correctly."); return false; } //create tables, recover data from existing table, drop table, recreate, and fill again foreach ($this->getTables() as $table) { //get data from old table; $sql = "SELECT * FROM " . $table->getTableName(); $stmt = $this->executeSql($sql, null, true, true); $oldContent = null; if ($stmt !== false) { $oldContent = $this->fetchAllToArray($stmt); } //drop table if (!$this->dropTableInternal($table->getTableName(), true)) { if (is_array($oldContent)) { $trace->trace(TraceHelper::TRACE_LEVEL_ERROR, "Cannot drop table " . $table->getTableName()); continue; } } //create new table $sql = $table->getCreateTableSql($this->getDatabaseDriver(), $table->getTableName()); if (!$this->executeSql($sql)) { $trace->trace(TraceHelper::TRACE_LEVEL_ERROR, "Cannot create table " . $table->getTableName()); continue; } //fill new table if old values exist if (is_array($oldContent)) { foreach ($oldContent as $entry) { $values = $table->getPreparedValues($this->getDatabaseDriver(), $entry); if (!$this->insertInternal($table->getTableName(), $values)) { $trace->trace(TraceHelper::TRACE_LEVEL_ERROR, "could not insert values: " . json_encode($values)); } } } } FileHelper::getInstance()->cacheFile(FileHelper::CACHED_FILE_DATASERVICE_TABLES, FileHelper::getInstance()->serializeObject($this->getTables())); return true; }
<?php /** * Created by PhpStorm. * User: Florian Moser * Date: 04.09.2015 * Time: 01:58 */ use famoser\phpFrame\Core\Logging\LogHelper; use famoser\phpFrame\Core\Tracing\TraceHelper; use famoser\phpFrame\Helpers\PartHelper; $logs = LogHelper::getInstance()->getLogs(); $traces = TraceHelper::getInstance()->getFullTrace(); if ($logs != null) { foreach ($logs as $log) { ?> <div class="col-md-12 content message <?php echo PartHelper::getInstance()->getLogClass($log); ?> "> <div class="col-md-11"> <?php echo PartHelper::getInstance()->getLogText($log); ?> </div> <div class="col-md-1"> <button class="close removebutton" data-remove-parent="2">×</button> </div> </div> <?php }