public static function findByAuth(\components\auth\Auth $auth) { if ($auth->validate()) { $identity = new static(); $identityInfo = array_intersect_key($auth->identityInfo(), $identity->attributes); $identity->attributes = $identityInfo; $userSession = \Yii::$app->session; $userSession->set('identityInfo:' . $identity->getId(), $identityInfo); return $identity; } return null; }
/** * Get table info anf return as an array. * * @return array */ public static function getTableInfo() { $record = new static(); $tableName = $record->getFullTableName(); $info = array('tableName' => $tableName, 'primaryId' => $record->getId(), 'columns' => array()); $sql = null; $field = 'column_name'; $type = 'data_type'; $nullField = 'is_nullable'; // SQLite if ($record->interface->sql()->getDbType() == \Pop\Db\Sql::SQLITE) { $sql = 'PRAGMA table_info(\'' . $tableName . '\')'; $field = 'name'; $type = 'type'; $nullField = 'notnull'; // PostgreSQL } else { if ($record->interface->sql()->getDbType() == \Pop\Db\Sql::PGSQL) { $sql = 'SELECT * FROM information_schema.COLUMNS WHERE table_name = \'' . $tableName . '\' ORDER BY ordinal_position ASC'; // SQL Server } else { if ($record->interface->sql()->getDbType() == \Pop\Db\Sql::SQLSRV) { $sql = 'SELECT c.name \'column_name\', t.Name \'data_type\', c.is_nullable, c.column_id FROM sys.columns c INNER JOIN sys.types t ON c.system_type_id = t.system_type_id WHERE object_id = OBJECT_ID(\'' . $tableName . '\') ORDER BY c.column_id ASC'; // Oracle } else { if ($record->interface->sql()->getDbType() == \Pop\Db\Sql::ORACLE) { $sql = 'SELECT column_name, data_type, nullable FROM all_tab_cols where table_name = \'' . $tableName . '\''; $field = 'COLUMN_NAME'; $type = 'DATA_TYPE'; $nullField = 'NULLABLE'; // MySQL } else { $sql = 'SHOW COLUMNS FROM `' . $tableName . '`'; $field = 'Field'; $type = 'Type'; $nullField = 'Null'; } } } } $record->interface->sql()->adapter()->query($sql); while (($row = $record->interface->sql()->adapter()->fetch()) != false) { if ($record->interface->sql()->getDbType() == \Pop\Db\Sql::SQLITE) { $nullResult = $row[$nullField] ? false : true; } else { if ($record->interface->sql()->getDbType() == \Pop\Db\Sql::MYSQL) { $nullResult = strtoupper($row[$nullField]) != 'NO' ? true : false; } else { if ($record->interface->sql()->getDbType() == \Pop\Db\Sql::ORACLE) { $nullResult = strtoupper($row[$nullField]) != 'Y' ? true : false; } else { $nullResult = $row[$nullField]; } } } $info['columns'][$row[$field]] = array('type' => $row[$type], 'null' => $nullResult); } return $info; }