diff --git a/src/LabsDao.php b/src/LabsDao.php index 9304b21..f106a3a 100644 --- a/src/LabsDao.php +++ b/src/LabsDao.php @@ -1,75 +1,81 @@ . */ namespace Tools\Admin; use Wikimedia\Slimapp\Dao\AbstractDao; /** - * Data access objcet for Labs database + * Data access object for Labs database */ class LabsDao extends AbstractDao { + public function __construct( $dsn, $user, $pass, $logger = null ) { + parent::__construct( $dsn, $user, $pass, $logger ); + // FIXME: Horrible hack for T164971 + $this->db->exec( 'set names latin1' ); + } + public function getAllUsers() { $users = []; $records = $this->fetchAll( 'SELECT * FROM users' ); foreach ( $records as $idx => $row ) { $users[$row['name']] = $row; } return $users; } public function getAllTools() { $tools = []; $records = $this->fetchAll( 'SELECT * FROM tools ORDER BY name ASC' ); foreach ( $records as $idx => $row ) { $tools[$row['name']] = $this->toolsRowToArray( $row ); } return $tools; } public function getTool( $name ) { $row = $this->fetch( 'SELECT * FROM tools WHERE name = ?', [ $name ] ); if ( $row ) { return $this->toolsRowToArray( $row ); } else { return false; } } protected function toolsRowToArray( $row ) { $info = null; if ( $row['toolinfo'] != '' ) { $info = json_decode( $row['toolinfo'], true ); } if ( $info === null ) { $info = [ [ 'description' => $row['description'] ] ]; } if ( !array_key_exists( 0, $info ) ) { $info = [ $info ]; } $row['toolinfo'] = $info; $row['maintainers'] = explode( ' ', $row['maintainers'] ); sort( $row['maintainers'] ); return $row; } }