diff --git a/src/pvv/side/project.php b/src/pvv/side/project.php index 8f94375..ee96795 100644 --- a/src/pvv/side/project.php +++ b/src/pvv/side/project.php @@ -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; } } diff --git a/src/pvv/side/projectmanager.php b/src/pvv/side/projectmanager.php index c4ae7d6..7e14dfc 100644 --- a/src/pvv/side/projectmanager.php +++ b/src/pvv/side/projectmanager.php @@ -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; } } diff --git a/www/prosjekt/edit.php b/www/prosjekt/edit.php index 849168b..47180dc 100644 --- a/www/prosjekt/edit.php +++ b/www/prosjekt/edit.php @@ -36,16 +36,16 @@ $project = new pvv\side\Project( $attrs['mail'][0], 1 ); -if ($new == 0) { - $project = $projectManager->getByID($projectID); - $owner = $projectManager->getProjectOwner($projectID); +// if ($new == 0) { +// $project = $projectManager->getByID($projectID); +// $maintainers = $projectManager->getProjectMaintainers($projectID); - if ($owner['uname'] != $attrs['uid'][0]) { - header('HTTP/1.0 403 Forbidden'); - echo 'wrong user'; - exit; - } -} +// if ($owner['uname'] != $attrs['uid'][0]) { +// header('HTTP/1.0 403 Forbidden'); +// echo 'wrong user'; +// exit; +// } +// } ?> @@ -74,12 +74,48 @@ if ($new == 0) {

Prosjektnavn

Gi prosjektet ditt et passende navn

-
+

Beskrivelse (markdown)

Hva går prosjektet ditt ut på?

De første to linjene blir vist på prosjektkortet, prøv å gjøre de til et fint sammendrag eller intro!

- + + +

Beskrivelse på engelsk (markdown)

+

Gjenta på engelsk

+ + +

Gitea-link

+

Link til prosjektet på Gitea

+
+ +

Issue board-link

+

Link til issue board på Gitea

+
+ +

Wiki-link

+

Link til wiki-side

+
+ +

Programmeringsspråk

+

Hvilke språk brukes i prosjektet?

+
+ +

Teknologier

+

Hvilke teknologier brukes i prosjektet?

+
+ +

Nøkkelord

+

Nøkkelord som beskriver prosjektet

+
+ +

Lisens

+

Hvilken lisens bruker prosjektet?

+
+ +

Logo-URL

+

Link til logo for prosjektet

+
getID() . '" />'; ?> diff --git a/www/prosjekt/index.php b/www/prosjekt/index.php index 2d3d6bd..3084330 100644 --- a/www/prosjekt/index.php +++ b/www/prosjekt/index.php @@ -71,7 +71,6 @@ $projects = $projectManager->getAll();
Lag prosjekt - Mine prosjekter

requireAuth(); -$attrs = $as->getAttributes(); - -$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS); -$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); -$projectManager = new pvv\side\ProjectManager($pdo); -$projects = $projectManager->getByOwner($attrs['uid'][0]); - -$page = 1; -if (isset($_GET['page'])) { - $page = $_GET['page']; -} - -$filter = ''; -if (isset($_GET['filter'])) { - $filter = $_GET['filter']; -} - -// filter -$projects = array_values(array_filter( - $projects, - static fn($project) => (preg_match('/.*' . $filter . '.*/i', $project->getName()) || preg_match('/.*' . $filter . '.*/i', implode(' ', $project->getDescription()))) -)); -?> - - - - - - - - - - -Prosjektverkstedet - -
Prosjekt­verk­stedet
- - - - - -
-
-

Mine Prosjekter

- -
    - getID(); - - $owner = $projectManager->getProjectOwner($projectID); - if ($owner['uname'] != $attrs['uid'][0]) { - continue; - } - ?> - -
  • -
    -
    - -

    getName(); ?>

    -
    -

    ', array_slice($project->getDescription(), 0, 4)); ?>

    -
    -
    -
  • - - -
- - Forrige side'; - } - - if (($counter == $pageLimit) && (($pageLimit * $page) < count($projects))) { - echo 'Neste side'; - } - ?> -
- -
-

Verktøy

- Lag prosjekt -

Filter

- -

Navn

- '; ?>
- -
- -
- -
-
-