WIP: revamp projects: redesign webpage

This commit is contained in:
2025-03-18 23:53:43 +01:00
parent 8ed7a3014b
commit 6758b630ac
5 changed files with 177 additions and 185 deletions

View File

@@ -6,30 +6,91 @@ namespace pvv\side;
class Project {
private $id;
private $name;
private $descr;
private $active;
private $title;
private $descrition_en;
private $description_no;
private $gitea_link;
private $issue_board_link;
private $wiki_link;
private $languages;
private $technologies;
private $keywords;
private $license;
private $logo_url;
public function __construct($id, $name, $descr, $active) {
public function __construct(
int $id,
string $title,
string $description_en,
string $description_no,
string $gitea_link,
string $issue_board_link,
string $wiki_link,
string $languages,
string $technologies,
string $keywords,
string $license,
string $logo_url
) {
$this->id = $id;
$this->name = $name;
$this->descr = explode("\n", $descr);
$this->active = $active;
$this->title = $title;
$this->description_en = explode("\n", $description_en);
$this->description_no = explode("\n", $description_no);
$this->gitea_link = $gitea_link;
$this->issue_board_link = $issue_board_link;
$this->wiki_link = $wiki_link;
$this->languages = $languages;
$this->technologies = $technologies;
$this->keywords = $keywords;
$this->license = $license;
$this->logo_url = $logo_url;
}
public function getID() {
return $this->id;
}
public function getName() {
return $this->name;
public function getTitle() {
return $this->title;
}
public function getDescription() {
return $this->descr;
public function getDescriptionEn() {
return $this->description_en;
}
public function getActive() {
return $this->active;
public function getDescriptionNo() {
return $this->description_no;
}
public function getGiteaLink() {
return $this->gitea_link;
}
public function getIssueBoardLink() {
return $this->issue_board_link;
}
public function getWikiLink() {
return $this->wiki_link;
}
public function getLanguages() {
return $this->languages;
}
public function getTechnologies() {
return $this->technologies;
}
public function getKeywords() {
return $this->keywords;
}
public function getLicense() {
return $this->license;
}
public function getLogoURL() {
return $this->logo_url;
}
}

View File

@@ -12,7 +12,7 @@ class ProjectManager {
}
public function getAll() {
$query = 'SELECT * FROM projects ORDER BY id ASC';
$query = 'SELECT * FROM project ORDER BY id ASC';
$statement = $this->pdo->prepare($query);
$statement->execute();
@@ -20,9 +20,17 @@ class ProjectManager {
foreach ($statement->fetchAll() as $dbProj) {
$project = new Project(
$dbProj['id'],
$dbProj['name'],
$dbProj['description'],
$dbProj['active']
$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;
}
@@ -31,7 +39,7 @@ class ProjectManager {
}
public function getByID($id) {
$query = 'SELECT * FROM projects WHERE id=:id LIMIT 1';
$query = 'SELECT * FROM project WHERE id=:id LIMIT 1';
$statement = $this->pdo->prepare($query);
$statement->bindParam(':id', $id, \PDO::PARAM_INT);
$statement->execute();
@@ -43,14 +51,28 @@ class ProjectManager {
return new Project(
$dbProj['id'],
$dbProj['name'],
$dbProj['description'],
$dbProj['active']
$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 projectmembers WHERE uname=: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();
@@ -68,9 +90,17 @@ class ProjectManager {
foreach ($statement->fetchAll() as $dbProj) {
$project = new Project(
$dbProj['id'],
$dbProj['name'],
$dbProj['description'],
$dbProj['active']
$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;
}
@@ -79,42 +109,28 @@ class ProjectManager {
return $projects;
}
public function getProjectMembers($id) {
$query = 'SELECT * FROM projectmembers WHERE projectid=:id';
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();
$members = [];
$maintainers = [];
foreach ($statement->fetchAll() as $dbUsr) {
$members[] = [
$maintainers[] = [
'name' => $dbUsr['name'],
'uname' => $dbUsr['uname'],
'link' => $dbOwner['link'],
'mail' => $dbUsr['mail'],
'role' => $dbUsr['role'],
'lead' => $dbUsr['lead'],
'owner' => $dbUsr['owner'],
];
}
return $members;
}
public function getProjectOwner($id) {
$query = 'SELECT * FROM projectmembers WHERE (projectid=:id AND owner=1)';
$statement = $this->pdo->prepare($query);
$statement->bindParam(':id', $id, \PDO::PARAM_STR);
$statement->execute();
$dbOwner = $statement->fetch();
return [
'name' => $dbOwner['name'],
'uname' => $dbOwner['uname'],
'mail' => $dbOwner['mail'],
'role' => $dbOwner['role'],
'lead' => $dbOwner['lead'],
'owner' => $dbOwner['owner'],
];
return maintainers;
}
}