示例#1
0
 /**
  * Login using a 2-key (username, password)
  * 
  * @param string $username The authentication username
  * @param string $password The authentication password
  * 
  * @return boolean The authentication result (true or false)
  */
 public function login($username, $password)
 {
     $tableName = $this->config['table'];
     $userField = $this->config['user'];
     $passField = $this->config['pass'];
     $table = $this->app->call('db')->getTable($tableName);
     $filter = new Filter($table);
     $filter->columns('*')->where("{$userField} = ? and {$passField} = ?", array($username, $password))->limit(0, 1);
     $table->filter($filter);
     $result = $table->toArray();
     if (count($result)) {
         $this->app->call('session')->set($this->sessionKey, $username);
         return true;
     }
     return false;
 }
示例#2
0
 /**
  * Loads table values with limit
  * 
  * @param \Duality\Structure\Database\Filter $filter The filter object
  * 
  * @return \Duality\Structure\Database\Table This table
  * 
  * @since 0.18.0
  */
 public function filter(Filter $filter)
 {
     $sql = $this->database->getSelect($filter->getSelect(), $this->getName(), $filter->getWhere(), $filter->getGroupBy(), $filter->getOffset(), $filter->getLimit());
     $stm = $this->database->getPDO()->prepare($sql);
     $stm->execute($filter->getWhereValues());
     $this->rows->reset();
     $columns = $filter->getSelect() == '*' ? $this->getColumns() : explode(',', $filter->getSelect());
     while ($trow = $stm->fetch(\PDO::FETCH_ASSOC)) {
         $row = $this->makeTableRow();
         foreach ($columns as $column) {
             $row->addData(new Property((string) $column), $trow[(string) $column]);
         }
         $this->rows->set($trow[$this->primaryKey], $row);
     }
     return $this;
 }
示例#3
0
 /**
  * Test database table
  * 
  * @requires extension pdo
  */
 public function testTable()
 {
     $config = array('db' => array('dsn' => DB_DSN, 'user' => DB_USER, 'pass' => DB_PASS));
     $app = new \Duality\App(dirname(__FILE__), $config);
     $db = $app->call('db');
     $db->setName('duality');
     $table = new Table($db);
     $table->setName('dummy');
     $schema = array('id' => 'auto', 'email' => 'varchar(80)');
     $sql = $db->getDropTable($table);
     $db->getPDO()->exec($sql);
     $sql = $db->getCreateTable($table, $schema);
     $db->getPDO()->exec($sql);
     $expected = array();
     $table->setColumns($schema);
     $result = $table->toArray();
     $this->assertEquals($expected, $result);
     $table->setPrimaryKey('id');
     $expected = array(1 => array('id' => 1, 'email' => 'dummy1'));
     $table->add(1, array('email' => 'dummy1'));
     $result = $table->find()->toArray();
     $this->assertEquals($expected, $result);
     $expected = array(1 => array('id' => 1, 'email' => 'dummy2'));
     $table->set(1, array('id' => 1, 'email' => 'dummy2'));
     $result = $table->find()->toArray();
     $this->assertEquals($expected, $result);
     $expected = array(1 => array('id' => 1, 'email' => 'dummy2'));
     $table->find(0, 10, 'id = ?', array(1));
     $result = $table->toArray();
     $this->assertEquals($expected, $result);
     $expected = array(1 => array('id' => 1, 'email' => 'dummy2'));
     $filter = new Filter($table);
     $filter->columns('id,email')->where('id = ?', array(1))->group('id')->limit(0, 10);
     $table->filter($filter);
     $result = $table->toArray();
     $this->assertEquals($expected, $result);
     $expected = array('id' => 1, 'email' => 'dummy2');
     $result = $table->get(1);
     $this->assertEquals($expected, $result);
     $result = $table->has(1);
     $this->assertTrue($result);
     $expected = array(1 => array('id' => 1, 'email' => 'dummy2'));
     $result = $table->find()->toArray();
     $this->assertEquals($expected, $result);
     $expected = array(1 => array('id' => 1, 'email' => 'dummy3'), 2 => array('id' => 2, 'email' => 'dummy4'));
     $data = array(1 => array('email' => 'dummy3'), 2 => array('email' => 'dummy4'));
     $table->importArray($data);
     $result = $table->find()->toArray();
     $this->assertEquals($expected, $result);
     $expected = $expected = array(2 => array('id' => 2, 'email' => 'dummy4'));
     $table->remove(1);
     $result = $table->find()->toArray();
     $this->assertEquals($expected, $result);
     $expected = array();
     $table->reset();
     $result = $table->find()->toArray();
     $this->assertEquals($expected, $result);
     $result = $db->getTable('dummy');
     $this->assertInstanceOf('\\Duality\\Structure\\Database\\Table', $result);
     $sql = $db->getDropTable($table);
     $db->getPDO()->exec($sql);
     $result = $db->getTable('dummy');
     $this->assertFalse($result);
     // Clean up
     $this->cleanUp();
 }