Пример #1
0
 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;
 }
Пример #2
0
 /**
  * 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;
 }