<?php declare(strict_types=1); namespace pvv\side; class ProjectManager { private $pdo; public function __construct(\PDO $pdo) { $this->pdo = $pdo; } public function getAll() { $query = 'SELECT * FROM project ORDER BY id ASC'; $statement = $this->pdo->prepare($query); $statement->execute(); $projects = []; foreach ($statement->fetchAll() as $dbProj) { $project = new Project( $dbProj['id'], $dbProj['title'], $dbProj['description_en'], $dbProj['description_no'], $dbProj['gitea_link'], $dbProj['issue_board_link'], $dbProj['wiki_link'], $dbProj['languages'], $dbProj['technologies'], $dbProj['keywords'], $dbProj['license'], $dbProj['logo_url'] ); $projects[] = $project; } return $projects; } public function getByID($id) { $query = 'SELECT * FROM project WHERE id=:id LIMIT 1'; $statement = $this->pdo->prepare($query); $statement->bindParam(':id', $id, \PDO::PARAM_INT); $statement->execute(); $dbProj = $statement->fetch(); if (!$dbProj) { return false; } return new Project( $dbProj['id'], $dbProj['title'], $dbProj['description_en'], $dbProj['description_no'], $dbProj['gitea_link'], $dbProj['issue_board_link'], $dbProj['wiki_link'], $dbProj['languages'], $dbProj['technologies'], $dbProj['keywords'], $dbProj['license'], $dbProj['logo_url'] ); } public function getByOwner($uname) { $query = ' SELECT projectid FROM project JOIN project__project_maintainer ON project.id = project__project_maintainer.project_id JOIN project_maintainer ON project__project_maintainer.uname = project_maintainer.uname WHERE project_maintainer.uname = :uname '; $statement = $this->pdo->prepare($query); $statement->bindParam(':uname', $uname, \PDO::PARAM_STR); $statement->execute(); $projectIDs = $statement->fetchAll(); $projects = []; foreach ($projectIDs as $id) { $id = $id['projectid']; $query = 'SELECT * FROM projects WHERE id=:id'; $statement = $this->pdo->prepare($query); $statement->bindParam(':id', $id, \PDO::PARAM_INT); $statement->execute(); foreach ($statement->fetchAll() as $dbProj) { $project = new Project( $dbProj['id'], $dbProj['title'], $dbProj['description_en'], $dbProj['description_no'], $dbProj['gitea_link'], $dbProj['issue_board_link'], $dbProj['wiki_link'], $dbProj['languages'], $dbProj['technologies'], $dbProj['keywords'], $dbProj['license'], $dbProj['logo_url'] ); $projects[] = $project; } } return $projects; } public function getProjectMaintainers($id) { $query = ' SELECT id FROM project JOIN project__project_maintainer ON project.id = project__project_maintainer.project_id JOIN project_maintainer ON project__project_maintainer.uname = project_maintainer.uname WHERE project.id = :id '; $statement = $this->pdo->prepare($query); $statement->bindParam(':id', $id, \PDO::PARAM_STR); $statement->execute(); $maintainers = []; foreach ($statement->fetchAll() as $dbUsr) { $maintainers[] = [ 'name' => $dbUsr['name'], 'uname' => $dbUsr['uname'], 'link' => $dbOwner['link'], 'mail' => $dbUsr['mail'], ]; } return maintainers; } }