diff --git a/src/addcalendar.php b/src/addcalendar.php
index fff0536..6a6bd48 100644
--- a/src/addcalendar.php
+++ b/src/addcalendar.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/ajax/addpersontocompany.php b/src/ajax/addpersontocompany.php
index fb5d3c3..903fdb0 100644
--- a/src/ajax/addpersontocompany.php
+++ b/src/ajax/addpersontocompany.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/ajax/addsecuritykey.php b/src/ajax/addsecuritykey.php
index 9a98fd0..db914ab 100644
--- a/src/ajax/addsecuritykey.php
+++ b/src/ajax/addsecuritykey.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 secondFactor::checkAvailability();
diff --git a/src/ajax/addsecuritykey2.php b/src/ajax/addsecuritykey2.php
index 7818a11..90b3cab 100644
--- a/src/ajax/addsecuritykey2.php
+++ b/src/ajax/addsecuritykey2.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 secondFactor::checkAvailability();
diff --git a/src/ajax/completewebauthnauthentication.php b/src/ajax/completewebauthnauthentication.php
index 8996d42..94e3a05 100644
--- a/src/ajax/completewebauthnauthentication.php
+++ b/src/ajax/completewebauthnauthentication.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 
 if (!secondFactor::isAvailable() || security::userType() !== security::UNKNOWN || !isset($_SESSION["firstfactorid"]) || !secondFactor::isEnabled($_SESSION["firstfactorid"]) || !secondFactor::hasSecurityKeys($_SESSION["firstfactorid"]) || $_SERVER['REQUEST_METHOD'] !== "POST") {
diff --git a/src/ajax/startwebauthnauthentication.php b/src/ajax/startwebauthnauthentication.php
index 7dd504e..d501ef7 100644
--- a/src/ajax/startwebauthnauthentication.php
+++ b/src/ajax/startwebauthnauthentication.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 
 if (!secondFactor::isAvailable() || security::userType() !== security::UNKNOWN || !isset($_SESSION["firstfactorid"]) || !secondFactor::isEnabled($_SESSION["firstfactorid"]) || !secondFactor::hasSecurityKeys($_SESSION["firstfactorid"]) || $_SERVER['REQUEST_METHOD'] !== "POST") {
diff --git a/src/ajax/verifysecuritycode.php b/src/ajax/verifysecuritycode.php
index 9e5899e..a47ee03 100644
--- a/src/ajax/verifysecuritycode.php
+++ b/src/ajax/verifysecuritycode.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 
 if (!secondFactor::isAvailable() || security::userType() !== security::UNKNOWN || !isset($_SESSION["firstfactorid"]) || !secondFactor::isEnabled($_SESSION["firstfactorid"])) {
diff --git a/src/backupdb.php b/src/backupdb.php
index 1d8bcb0..44acbdc 100644
--- a/src/backupdb.php
+++ b/src/backupdb.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::HYPERADMIN);
 
diff --git a/src/calendars.php b/src/calendars.php
index bc4e908..d6d944a 100644
--- a/src/calendars.php
+++ b/src/calendars.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/categories.php b/src/categories.php
index 2ee8818..103b0f7 100644
--- a/src/categories.php
+++ b/src/categories.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/changepassword.php b/src/changepassword.php
index fd1d1ee..dff49d5 100644
--- a/src/changepassword.php
+++ b/src/changepassword.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER);
 security::checkWorkerUIEnabled();
diff --git a/src/companies.php b/src/companies.php
index 787f665..7f920af 100644
--- a/src/companies.php
+++ b/src/companies.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/config.default.php b/src/config.default.php
index 0c52ac6..d59c087 100644
--- a/src/config.default.php
+++ b/src/config.default.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 $conf = [];
 $conf["db"] = [];
 $conf["db"]["user"] = ""; // Enter the MySQL username
diff --git a/src/core.php b/src/core.php
index 1e280d0..0e563e2 100644
--- a/src/core.php
+++ b/src/core.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 // Core of the application
 
 const INTERNAL_CLASS_NAMESPACE = "Internal\\";
diff --git a/src/cron/cleansigninattempts.php b/src/cron/cleansigninattempts.php
index 946af49..e41127a 100644
--- a/src/cron/cleansigninattempts.php
+++ b/src/cron/cleansigninattempts.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 
 if (php_sapi_name() != "cli") {
diff --git a/src/cron/generateregistry.php b/src/cron/generateregistry.php
index b97d13b..45563d1 100644
--- a/src/cron/generateregistry.php
+++ b/src/cron/generateregistry.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 
 if (php_sapi_name() != "cli") {
diff --git a/src/cron/pendingvalidationsreminder.php b/src/cron/pendingvalidationsreminder.php
index aeec7cb..d15770d 100644
--- a/src/cron/pendingvalidationsreminder.php
+++ b/src/cron/pendingvalidationsreminder.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 
 if (php_sapi_name() != "cli") {
diff --git a/src/css/calendar.css b/src/css/calendar.css
index a6d979b..7e3e806 100644
--- a/src/css/calendar.css
+++ b/src/css/calendar.css
@@ -1,3 +1,21 @@
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 .calendar {
   margin: 10px auto 40px auto;
   border-collapse: collapse;
diff --git a/src/css/dashboard.css b/src/css/dashboard.css
index 7bec14f..805e57b 100644
--- a/src/css/dashboard.css
+++ b/src/css/dashboard.css
@@ -1,3 +1,21 @@
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 :root {
   --material-green: rgb(76,175,80);
 }
diff --git a/src/css/incidents.css b/src/css/incidents.css
index 2104748..a68c7dd 100644
--- a/src/css/incidents.css
+++ b/src/css/incidents.css
@@ -1,3 +1,21 @@
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 .incidents-wrapper {
   display: inline-block;
 }
diff --git a/src/css/index.css b/src/css/index.css
index e6b4c36..02744a3 100644
--- a/src/css/index.css
+++ b/src/css/index.css
@@ -1,3 +1,21 @@
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 .login {
   display: block;
   max-width: 400px;
diff --git a/src/css/schedule.css b/src/css/schedule.css
index d655252..0535761 100644
--- a/src/css/schedule.css
+++ b/src/css/schedule.css
@@ -1,3 +1,21 @@
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 .schedule {
   display: inline-flex;
   flex: none;
diff --git a/src/csvimport.php b/src/csvimport.php
index a34d190..c8f9402 100644
--- a/src/csvimport.php
+++ b/src/csvimport.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doactiveschedule.php b/src/doactiveschedule.php
index 326dff8..3f2eb41 100644
--- a/src/doactiveschedule.php
+++ b/src/doactiveschedule.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doaddcalendar.php b/src/doaddcalendar.php
index 085ebab..b79b779 100644
--- a/src/doaddcalendar.php
+++ b/src/doaddcalendar.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doaddcategory.php b/src/doaddcategory.php
index 2f706d3..6acabda 100644
--- a/src/doaddcategory.php
+++ b/src/doaddcategory.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doaddcompany.php b/src/doaddcompany.php
index 9765898..5480861 100644
--- a/src/doaddcompany.php
+++ b/src/doaddcompany.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doadddayschedule.php b/src/doadddayschedule.php
index aeae3ae..d86d870 100644
--- a/src/doadddayschedule.php
+++ b/src/doadddayschedule.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doadddayscheduletemplate.php b/src/doadddayscheduletemplate.php
index c0c8097..b1a3df8 100644
--- a/src/doadddayscheduletemplate.php
+++ b/src/doadddayscheduletemplate.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doaddincident.php b/src/doaddincident.php
index 645a9f9..8fc2ef6 100644
--- a/src/doaddincident.php
+++ b/src/doaddincident.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER);
 
diff --git a/src/doaddincidentattachment.php b/src/doaddincidentattachment.php
index 9e70a83..cb995d2 100644
--- a/src/doaddincidentattachment.php
+++ b/src/doaddincidentattachment.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
diff --git a/src/doaddincidentbulk.php b/src/doaddincidentbulk.php
index 349e979..66ad457 100644
--- a/src/doaddincidentbulk.php
+++ b/src/doaddincidentbulk.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doaddincidenttype.php b/src/doaddincidenttype.php
index fdef005..b3f3192 100644
--- a/src/doaddincidenttype.php
+++ b/src/doaddincidenttype.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doaddrecurringincident.php b/src/doaddrecurringincident.php
index deded14..1711396 100644
--- a/src/doaddrecurringincident.php
+++ b/src/doaddrecurringincident.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doaddschedule.php b/src/doaddschedule.php
index d91254f..2c977c6 100644
--- a/src/doaddschedule.php
+++ b/src/doaddschedule.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doaddscheduletemplate.php b/src/doaddscheduletemplate.php
index ab6df65..4d6185a 100644
--- a/src/doaddscheduletemplate.php
+++ b/src/doaddscheduletemplate.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doadduser.php b/src/doadduser.php
index af0951c..5556b02 100644
--- a/src/doadduser.php
+++ b/src/doadduser.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doaddworkhistoryitem.php b/src/doaddworkhistoryitem.php
index 64df048..114eb42 100644
--- a/src/doaddworkhistoryitem.php
+++ b/src/doaddworkhistoryitem.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/dobackupdb.php b/src/dobackupdb.php
index 1953cd3..352b24b 100644
--- a/src/dobackupdb.php
+++ b/src/dobackupdb.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::HYPERADMIN);
 
diff --git a/src/dochangepassword.php b/src/dochangepassword.php
index 179b0e8..ca7f96c 100644
--- a/src/dochangepassword.php
+++ b/src/dochangepassword.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER);
 security::checkWorkerUIEnabled();
diff --git a/src/docopytemplate.php b/src/docopytemplate.php
index 9ff412a..2651bac 100644
--- a/src/docopytemplate.php
+++ b/src/docopytemplate.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/dodeleteattachment.php b/src/dodeleteattachment.php
index 0f79981..4e7f254 100644
--- a/src/dodeleteattachment.php
+++ b/src/dodeleteattachment.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
diff --git a/src/dodeletecalendar.php b/src/dodeletecalendar.php
index ad0c673..01f23c3 100644
--- a/src/dodeletecalendar.php
+++ b/src/dodeletecalendar.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/dodeleteday.php b/src/dodeleteday.php
index 4328a42..7369ff2 100644
--- a/src/dodeleteday.php
+++ b/src/dodeleteday.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/dodeleteincident.php b/src/dodeleteincident.php
index d9750f4..89c5818 100644
--- a/src/dodeleteincident.php
+++ b/src/dodeleteincident.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
diff --git a/src/dodeleteincidentsbulk.php b/src/dodeleteincidentsbulk.php
index 07855cb..450be8d 100644
--- a/src/dodeleteincidentsbulk.php
+++ b/src/dodeleteincidentsbulk.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/dodeleteschedule.php b/src/dodeleteschedule.php
index 358a8d7..b80ff0a 100644
--- a/src/dodeleteschedule.php
+++ b/src/dodeleteschedule.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/dodeletescheduletemplate.php b/src/dodeletescheduletemplate.php
index f8104e7..0cc10de 100644
--- a/src/dodeletescheduletemplate.php
+++ b/src/dodeletescheduletemplate.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/dodeletesecuritykey.php b/src/dodeletesecuritykey.php
index 1252d7c..14fd0d2 100644
--- a/src/dodeletesecuritykey.php
+++ b/src/dodeletesecuritykey.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER);
 security::checkWorkerUIEnabled();
diff --git a/src/dodeletetemplateday.php b/src/dodeletetemplateday.php
index b4a19e4..c20f98c 100644
--- a/src/dodeletetemplateday.php
+++ b/src/dodeletetemplateday.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/dodeleteworkhistoryitem.php b/src/dodeleteworkhistoryitem.php
index c5116dd..bd93b80 100644
--- a/src/dodeleteworkhistoryitem.php
+++ b/src/dodeleteworkhistoryitem.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/dodisablesecondfactor.php b/src/dodisablesecondfactor.php
index 7ee3460..c292279 100644
--- a/src/dodisablesecondfactor.php
+++ b/src/dodisablesecondfactor.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
diff --git a/src/doeditcalendar.php b/src/doeditcalendar.php
index b58d207..b85646f 100644
--- a/src/doeditcalendar.php
+++ b/src/doeditcalendar.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doeditcategory.php b/src/doeditcategory.php
index 3d68e02..51da994 100644
--- a/src/doeditcategory.php
+++ b/src/doeditcategory.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doeditcompany.php b/src/doeditcompany.php
index 9129658..0326cfb 100644
--- a/src/doeditcompany.php
+++ b/src/doeditcompany.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doeditdayschedule.php b/src/doeditdayschedule.php
index 0cf775b..7fadb4a 100644
--- a/src/doeditdayschedule.php
+++ b/src/doeditdayschedule.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doeditdayscheduletemplate.php b/src/doeditdayscheduletemplate.php
index 36ecc4c..dbf0916 100644
--- a/src/doeditdayscheduletemplate.php
+++ b/src/doeditdayscheduletemplate.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doeditincident.php b/src/doeditincident.php
index 428079c..4f3c6d9 100644
--- a/src/doeditincident.php
+++ b/src/doeditincident.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
diff --git a/src/doeditincidentcomment.php b/src/doeditincidentcomment.php
index bc42d4d..1bd3312 100644
--- a/src/doeditincidentcomment.php
+++ b/src/doeditincidentcomment.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doeditincidenttype.php b/src/doeditincidenttype.php
index ca8ba35..16dca59 100644
--- a/src/doeditincidenttype.php
+++ b/src/doeditincidenttype.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doeditschedule.php b/src/doeditschedule.php
index d0706e4..ecef40f 100644
--- a/src/doeditschedule.php
+++ b/src/doeditschedule.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doeditscheduletemplate.php b/src/doeditscheduletemplate.php
index a08077a..983db78 100644
--- a/src/doeditscheduletemplate.php
+++ b/src/doeditscheduletemplate.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doedituser.php b/src/doedituser.php
index bf62372..6d4d017 100644
--- a/src/doedituser.php
+++ b/src/doedituser.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doeditworkhistoryitem.php b/src/doeditworkhistoryitem.php
index 042f528..f403890 100644
--- a/src/doeditworkhistoryitem.php
+++ b/src/doeditworkhistoryitem.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doenablesecondfactor.php b/src/doenablesecondfactor.php
index 47e1f6f..b77e8d0 100644
--- a/src/doenablesecondfactor.php
+++ b/src/doenablesecondfactor.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
diff --git a/src/doexport.php b/src/doexport.php
index ae9589e..5d29327 100644
--- a/src/doexport.php
+++ b/src/doexport.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER);
 security::checkWorkerUIEnabled();
diff --git a/src/doinvalidatebulkrecords.php b/src/doinvalidatebulkrecords.php
index a657efc..65369e8 100644
--- a/src/doinvalidatebulkrecords.php
+++ b/src/doinvalidatebulkrecords.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::HYPERADMIN);
 
diff --git a/src/doinvalidateincident.php b/src/doinvalidateincident.php
index 3a8ee5b..64fa205 100644
--- a/src/doinvalidateincident.php
+++ b/src/doinvalidateincident.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/doinvalidaterecord.php b/src/doinvalidaterecord.php
index 2799922..dad7059 100644
--- a/src/doinvalidaterecord.php
+++ b/src/doinvalidaterecord.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
diff --git a/src/domanuallygenerateregistry.php b/src/domanuallygenerateregistry.php
index e7482ab..be9f6b4 100644
--- a/src/domanuallygenerateregistry.php
+++ b/src/domanuallygenerateregistry.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::HYPERADMIN);
 
diff --git a/src/dorecovery.php b/src/dorecovery.php
index 7d57275..696640b 100644
--- a/src/dorecovery.php
+++ b/src/dorecovery.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 
 if (!security::checkParams("POST", [
diff --git a/src/dosendbulkpasswords.php b/src/dosendbulkpasswords.php
index 724fdb8..bc86ef5 100644
--- a/src/dosendbulkpasswords.php
+++ b/src/dosendbulkpasswords.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::HYPERADMIN);
 
diff --git a/src/dosethelpresource.php b/src/dosethelpresource.php
index 2b7295b..4e93773 100644
--- a/src/dosethelpresource.php
+++ b/src/dosethelpresource.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/dostartrecovery.php b/src/dostartrecovery.php
index b7060bc..7edcf6b 100644
--- a/src/dostartrecovery.php
+++ b/src/dostartrecovery.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 
 if (!$conf["enableRecovery"] || !$conf["mail"]["enabled"]) security::notFound();
diff --git a/src/dovalidate.php b/src/dovalidate.php
index 3f5084c..585a6c0 100644
--- a/src/dovalidate.php
+++ b/src/dovalidate.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER);
 
diff --git a/src/doverifyincident.php b/src/doverifyincident.php
index c6e58bf..c1e1758 100644
--- a/src/doverifyincident.php
+++ b/src/doverifyincident.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/dynamic/addincidentbulk.php b/src/dynamic/addincidentbulk.php
index afb04ba..228fa21 100644
--- a/src/dynamic/addincidentbulk.php
+++ b/src/dynamic/addincidentbulk.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/addworkhistoryitem.php b/src/dynamic/addworkhistoryitem.php
index 712c3f6..64263d5 100644
--- a/src/dynamic/addworkhistoryitem.php
+++ b/src/dynamic/addworkhistoryitem.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/authorsincident.php b/src/dynamic/authorsincident.php
index 25194f3..e95e608 100644
--- a/src/dynamic/authorsincident.php
+++ b/src/dynamic/authorsincident.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
diff --git a/src/dynamic/authorsrecord.php b/src/dynamic/authorsrecord.php
index 8888af3..fbe6619 100644
--- a/src/dynamic/authorsrecord.php
+++ b/src/dynamic/authorsrecord.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
diff --git a/src/dynamic/companyuser.php b/src/dynamic/companyuser.php
index 0acfac3..c0a398e 100644
--- a/src/dynamic/companyuser.php
+++ b/src/dynamic/companyuser.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
@@ -57,7 +76,7 @@
 
 <h4 class="mdl-dialog__title"><?=security::htmlsafe($p["name"])?></h4>
 <div class="mdl-dialog__content">
-<?php
+<?php //do-not-add-license-header-here
 $list = [];
 $list["visible"] = "";
 $list["hidden"] = "";
diff --git a/src/dynamic/copytemplate.php b/src/dynamic/copytemplate.php
index 0f127ba..f7b72a8 100644
--- a/src/dynamic/copytemplate.php
+++ b/src/dynamic/copytemplate.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/deleteattachment.php b/src/dynamic/deleteattachment.php
index 66b6b1f..a208180 100644
--- a/src/dynamic/deleteattachment.php
+++ b/src/dynamic/deleteattachment.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
diff --git a/src/dynamic/deletecalendar.php b/src/dynamic/deletecalendar.php
index 83f19cc..b73c45c 100644
--- a/src/dynamic/deletecalendar.php
+++ b/src/dynamic/deletecalendar.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/deleteday.php b/src/dynamic/deleteday.php
index d22206a..9a66a7e 100644
--- a/src/dynamic/deleteday.php
+++ b/src/dynamic/deleteday.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/deleteincident.php b/src/dynamic/deleteincident.php
index 8ba455c..d54fce3 100644
--- a/src/dynamic/deleteincident.php
+++ b/src/dynamic/deleteincident.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
diff --git a/src/dynamic/deleteincidentsbulk.php b/src/dynamic/deleteincidentsbulk.php
index b3a397c..b441197 100644
--- a/src/dynamic/deleteincidentsbulk.php
+++ b/src/dynamic/deleteincidentsbulk.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/deleteschedule.php b/src/dynamic/deleteschedule.php
index 52c14f9..f58ee29 100644
--- a/src/dynamic/deleteschedule.php
+++ b/src/dynamic/deleteschedule.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/deletescheduletemplate.php b/src/dynamic/deletescheduletemplate.php
index ad3a1ae..f2f1b14 100644
--- a/src/dynamic/deletescheduletemplate.php
+++ b/src/dynamic/deletescheduletemplate.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/deletesecuritykey.php b/src/dynamic/deletesecuritykey.php
index 8b62609..2de01ad 100644
--- a/src/dynamic/deletesecuritykey.php
+++ b/src/dynamic/deletesecuritykey.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
diff --git a/src/dynamic/deletetemplateday.php b/src/dynamic/deletetemplateday.php
index 63e0cb8..8043483 100644
--- a/src/dynamic/deletetemplateday.php
+++ b/src/dynamic/deletetemplateday.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/deleteworkhistoryitem.php b/src/dynamic/deleteworkhistoryitem.php
index 0dd5613..19a3ada 100644
--- a/src/dynamic/deleteworkhistoryitem.php
+++ b/src/dynamic/deleteworkhistoryitem.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/disablesecondfactor.php b/src/dynamic/disablesecondfactor.php
index ad9913e..5a174b8 100644
--- a/src/dynamic/disablesecondfactor.php
+++ b/src/dynamic/disablesecondfactor.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
@@ -21,7 +40,7 @@
   width: auto;
 }
 </style>
-<?php
+<?php //do-not-add-license-header-here
 }
 ?>
 
diff --git a/src/dynamic/editcategory.php b/src/dynamic/editcategory.php
index 1057df1..42a4c3d 100644
--- a/src/dynamic/editcategory.php
+++ b/src/dynamic/editcategory.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/editcompany.php b/src/dynamic/editcompany.php
index 1af315e..c21fe2b 100644
--- a/src/dynamic/editcompany.php
+++ b/src/dynamic/editcompany.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/editday.php b/src/dynamic/editday.php
index 3829b47..45633d6 100644
--- a/src/dynamic/editday.php
+++ b/src/dynamic/editday.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/editincident.php b/src/dynamic/editincident.php
index 808070e..07f644f 100644
--- a/src/dynamic/editincident.php
+++ b/src/dynamic/editincident.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
diff --git a/src/dynamic/editincidentcomment.php b/src/dynamic/editincidentcomment.php
index 8fd9dd6..2c98970 100644
--- a/src/dynamic/editincidentcomment.php
+++ b/src/dynamic/editincidentcomment.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
diff --git a/src/dynamic/editincidenttype.php b/src/dynamic/editincidenttype.php
index 2901a4f..a31780c 100644
--- a/src/dynamic/editincidenttype.php
+++ b/src/dynamic/editincidenttype.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/editschedule.php b/src/dynamic/editschedule.php
index c8d0b6a..fac8b8a 100644
--- a/src/dynamic/editschedule.php
+++ b/src/dynamic/editschedule.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/editscheduletemplate.php b/src/dynamic/editscheduletemplate.php
index 3c67d74..6bd964a 100644
--- a/src/dynamic/editscheduletemplate.php
+++ b/src/dynamic/editscheduletemplate.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/edittemplateday.php b/src/dynamic/edittemplateday.php
index 136ff1a..caeb170 100644
--- a/src/dynamic/edittemplateday.php
+++ b/src/dynamic/edittemplateday.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/edituser.php b/src/dynamic/edituser.php
index 36fb51c..d029d0e 100644
--- a/src/dynamic/edituser.php
+++ b/src/dynamic/edituser.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/editworkhistoryitem.php b/src/dynamic/editworkhistoryitem.php
index 14fd04c..0b65d85 100644
--- a/src/dynamic/editworkhistoryitem.php
+++ b/src/dynamic/editworkhistoryitem.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/enablesecondfactor.php b/src/dynamic/enablesecondfactor.php
index 633d36e..fd7184f 100644
--- a/src/dynamic/enablesecondfactor.php
+++ b/src/dynamic/enablesecondfactor.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
diff --git a/src/dynamic/exportcalendar.php b/src/dynamic/exportcalendar.php
index 47b88fa..ad60760 100644
--- a/src/dynamic/exportcalendar.php
+++ b/src/dynamic/exportcalendar.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/incidentattachments.php b/src/dynamic/incidentattachments.php
index 2402688..f9bcbac 100644
--- a/src/dynamic/incidentattachments.php
+++ b/src/dynamic/incidentattachments.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
diff --git a/src/dynamic/invalidateincident.php b/src/dynamic/invalidateincident.php
index ceeeac3..eae06f0 100644
--- a/src/dynamic/invalidateincident.php
+++ b/src/dynamic/invalidateincident.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/invalidaterecord.php b/src/dynamic/invalidaterecord.php
index 2dc0dfc..b1cedcd 100644
--- a/src/dynamic/invalidaterecord.php
+++ b/src/dynamic/invalidaterecord.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
diff --git a/src/dynamic/log.php b/src/dynamic/log.php
index 1c10dc5..7931a54 100644
--- a/src/dynamic/log.php
+++ b/src/dynamic/log.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
@@ -54,6 +73,6 @@
 <div class="mdl-dialog__actions">
   <button data-dyndialog-close class="mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--primary">Cerrar</button>
 </div>
-<?php
+<?php //do-not-add-license-header-here
 visual::renderTooltips();
 ?>
diff --git a/src/dynamic/sethelpresource.php b/src/dynamic/sethelpresource.php
index 2171dde..b67d42a 100644
--- a/src/dynamic/sethelpresource.php
+++ b/src/dynamic/sethelpresource.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::HYPERADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/dynamic/user.php b/src/dynamic/user.php
index d0aec1d..43f345f 100644
--- a/src/dynamic/user.php
+++ b/src/dynamic/user.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
@@ -28,7 +47,7 @@
   dynDialog.load("dynamic/disablesecondfactor.php?id=<?=(int)$p["id"]?>");
 });
 </dynscript>
-<?php
+<?php //do-not-add-license-header-here
 }
 ?>
 
diff --git a/src/dynamic/workhistory.php b/src/dynamic/workhistory.php
index 4c74000..fa7c7c9 100644
--- a/src/dynamic/workhistory.php
+++ b/src/dynamic/workhistory.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/editcalendar.php b/src/editcalendar.php
index ac0f8ca..c38bca8 100644
--- a/src/editcalendar.php
+++ b/src/editcalendar.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/export.php b/src/export.php
index ba178ee..6239a5f 100644
--- a/src/export.php
+++ b/src/export.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/export4worker.php b/src/export4worker.php
index 76b72ca..f1c9674 100644
--- a/src/export4worker.php
+++ b/src/export4worker.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER);
 
diff --git a/src/help.php b/src/help.php
index 2880272..68fa7f6 100644
--- a/src/help.php
+++ b/src/help.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::HYPERADMIN);
 
diff --git a/src/home.php b/src/home.php
index e2a5b94..cd08cf2 100644
--- a/src/home.php
+++ b/src/home.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/inc/api.php b/src/inc/api.php
index 9b606be..aa12ca2 100644
--- a/src/inc/api.php
+++ b/src/inc/api.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class api {
   public static function inputJson() {
     $string = trim(file_get_contents("php://input"));
diff --git a/src/inc/calendars.php b/src/inc/calendars.php
index a8b4a9f..213c6da 100644
--- a/src/inc/calendars.php
+++ b/src/inc/calendars.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class calendars {
   const TYPE_FESTIU = 0;
   const TYPE_FEINER = 1;
diff --git a/src/inc/calendarsView.php b/src/inc/calendarsView.php
index eddc230..46a3761 100644
--- a/src/inc/calendarsView.php
+++ b/src/inc/calendarsView.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class calendarsView {
   public static function renderCalendar($current, $ends, $selectedFunc, $disabled = false, $extra = false) {
     $interval = new DateInterval("P1D");
diff --git a/src/inc/categories.php b/src/inc/categories.php
index a75d998..d4b3453 100644
--- a/src/inc/categories.php
+++ b/src/inc/categories.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class categories {
   private static function parseEmails($string) {
     $string = str_replace(" ", "", $string);
diff --git a/src/inc/common.php b/src/inc/common.php
index 26d02aa..3dc12e0 100644
--- a/src/inc/common.php
+++ b/src/inc/common.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class common {
   public static function getDayTimestamp($originaltime) {
     $datetime = new DateTime();
diff --git a/src/inc/companies.php b/src/inc/companies.php
index 702151f..4646ca7 100644
--- a/src/inc/companies.php
+++ b/src/inc/companies.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class companies {
   public static function add($company, $cif) {
     global $con;
diff --git a/src/inc/csv.php b/src/inc/csv.php
index ce44c81..ed01c2a 100644
--- a/src/inc/csv.php
+++ b/src/inc/csv.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class csv {
   public static $fields = ["dni", "name", "category", "email", "companies"];
 
diff --git a/src/inc/db.php b/src/inc/db.php
index 293707a..91042df 100644
--- a/src/inc/db.php
+++ b/src/inc/db.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class db {
   const EXPORT_DB_FORMAT_SQL = 0;
 
diff --git a/src/inc/export.php b/src/inc/export.php
index 6800d50..f52f926 100644
--- a/src/inc/export.php
+++ b/src/inc/export.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class export {
   const FORMAT_PDF = 1;
   const FORMAT_DETAILEDPDF = 2;
diff --git a/src/inc/files.php b/src/inc/files.php
index 5f9cce2..4e84862 100644
--- a/src/inc/files.php
+++ b/src/inc/files.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class files {
   const NAME_LENGTH = 16;
   const MAX_SIZE = 6*1024*1024;
diff --git a/src/inc/help.php b/src/inc/help.php
index 3fe7179..2b77277 100644
--- a/src/inc/help.php
+++ b/src/inc/help.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class help {
   const PLACE_INCIDENT_FORM = 0;
   const PLACE_VALIDATION_PAGE = 1;
diff --git a/src/inc/helpView.php b/src/inc/helpView.php
index d6b642a..614b706 100644
--- a/src/inc/helpView.php
+++ b/src/inc/helpView.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class helpView {
   public static function renderHelpButton($place, $topRight = false, $margin = false) {
     $url = help::get($place);
diff --git a/src/inc/incidents.php b/src/inc/incidents.php
index 7664fe9..b558ed9 100644
--- a/src/inc/incidents.php
+++ b/src/inc/incidents.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class incidents {
   const STARTOFDAY = 0;
   const ENDOFDAY = 60*60*24;
diff --git a/src/inc/incidentsView.php b/src/inc/incidentsView.php
index ca646cb..1f90bc8 100644
--- a/src/inc/incidentsView.php
+++ b/src/inc/incidentsView.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class incidentsView {
   public static $limitOptions = [10, 15, 20, 30, 40, 50];
 
diff --git a/src/inc/intervals.php b/src/inc/intervals.php
index 10c31f7..98061e9 100644
--- a/src/inc/intervals.php
+++ b/src/inc/intervals.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class intervals {
   public static function wellFormed($i) {
     return (isset($i[0]) && isset($i[1]) && $i[0] <= $i[1]);
diff --git a/src/inc/listings.php b/src/inc/listings.php
index b3aa258..5c6977f 100644
--- a/src/inc/listings.php
+++ b/src/inc/listings.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class listings {
   public static function renderFilterDialog($form, $select) {
     global $_GET;
diff --git a/src/inc/mail.php b/src/inc/mail.php
index 7f3b353..e767d0f 100644
--- a/src/inc/mail.php
+++ b/src/inc/mail.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 use PHPMailer\PHPMailer\PHPMailer;
 use PHPMailer\PHPMailer\Exception;
 use PHPMailer\PHPMailer\SMTP;
diff --git a/src/inc/people.php b/src/inc/people.php
index deccc10..ddb3617 100644
--- a/src/inc/people.php
+++ b/src/inc/people.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class people {
   public static $filters = ["categories", "types", "companies"];
   public static $mysqlFilters = ["categories", "types"];
diff --git a/src/inc/recovery.php b/src/inc/recovery.php
index 1f8307b..a4057bc 100644
--- a/src/inc/recovery.php
+++ b/src/inc/recovery.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class recovery {
   const TOKEN_BYTES = 32;
   const EXPIRATION_TIME = 60*60*24;
diff --git a/src/inc/recurringIncidents.php b/src/inc/recurringIncidents.php
index b07bf66..258fba6 100644
--- a/src/inc/recurringIncidents.php
+++ b/src/inc/recurringIncidents.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class recurringIncidents {
   /*public static function oldAdd($worker, $type, $details, $ifirstday, $ilastday, $begins, $ends, $creator = "ME", $typedays, $days, $alreadyTimestamp = false) {
     global $con, $conf;
diff --git a/src/inc/registry.php b/src/inc/registry.php
index 363968d..8b09d14 100644
--- a/src/inc/registry.php
+++ b/src/inc/registry.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class registry {
   const LOGS_PAGINATION_LIMIT = 30;
   const REGISTRY_PAGINATION_LIMIT = 20;
diff --git a/src/inc/registryView.php b/src/inc/registryView.php
index 1767bc3..f068558 100644
--- a/src/inc/registryView.php
+++ b/src/inc/registryView.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class registryView {
   public static function renderRegistry(&$registry, &$companies, $scrollable = false, $showPersonAndCompany = true, $isForWorker = false, $isForValidationView = false) {
     global $conf, $renderRegistryAutoIncremental;
diff --git a/src/inc/schedules.php b/src/inc/schedules.php
index 87b5ed6..a987cc4 100644
--- a/src/inc/schedules.php
+++ b/src/inc/schedules.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class schedules {
   const STATUS_NO_ACTIVE_SCHEDULE = 0;
   const STATUS_HALFWAY_CONFIGURED_SCHEDULE = 1;
diff --git a/src/inc/schedulesView.php b/src/inc/schedulesView.php
index aab3a2f..69dfb3c 100644
--- a/src/inc/schedulesView.php
+++ b/src/inc/schedulesView.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class schedulesView {
   const HOUR_HEIGHT = 30;
 
diff --git a/src/inc/secondFactor.php b/src/inc/secondFactor.php
index 1b0de75..bcf8937 100644
--- a/src/inc/secondFactor.php
+++ b/src/inc/secondFactor.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../lib/GoogleAuthenticator/GoogleAuthenticator.php");
 require_once(__DIR__."/../lib/WebAuthn/WebAuthn.php");
 
diff --git a/src/inc/secondFactorView.php b/src/inc/secondFactorView.php
index 7ed9712..53c078c 100644
--- a/src/inc/secondFactorView.php
+++ b/src/inc/secondFactorView.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class secondFactorView {
   public static function renderSecret($secret) {
     for ($i = 0; $i < strlen($secret); $i++) {
diff --git a/src/inc/security.php b/src/inc/security.php
index 1d3159b..8c2214d 100644
--- a/src/inc/security.php
+++ b/src/inc/security.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class security {
   const HYPERADMIN = 0;
   const ADMIN = 2;
diff --git a/src/inc/validations.php b/src/inc/validations.php
index d3c310f..2b063f9 100644
--- a/src/inc/validations.php
+++ b/src/inc/validations.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class validations {
   const DEFAULT_REMINDER_GRACE_PERIOD = 3; // When sending email notifications about pending elements to verify,
                                    // only elements effective until the current day minus the grace period
diff --git a/src/inc/validationsView.php b/src/inc/validationsView.php
index b6b2b68..52df778 100644
--- a/src/inc/validationsView.php
+++ b/src/inc/validationsView.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class validationsView {
   public static function renderPendingValidations($userId) {
     $workers = workers::getPersonWorkers((int)$userId);
diff --git a/src/inc/visual.php b/src/inc/visual.php
index 02a3457..676d129 100644
--- a/src/inc/visual.php
+++ b/src/inc/visual.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class visual {
   const VIEW_ADMIN = 0;
   const VIEW_WORKER = 1;
diff --git a/src/inc/workers.php b/src/inc/workers.php
index 6c6e1d9..f004286 100644
--- a/src/inc/workers.php
+++ b/src/inc/workers.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 class workers {
   const AFFILIATION_STATUS_NOTWORKING = 0;
   const AFFILIATION_STATUS_WORKING = 1;
diff --git a/src/incidentattachment.php b/src/incidentattachment.php
index 9d4394d..17e8a01 100644
--- a/src/incidentattachment.php
+++ b/src/incidentattachment.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 security::checkWorkerUIEnabled();
diff --git a/src/incidents.php b/src/incidents.php
index fb693b1..477befd 100644
--- a/src/incidents.php
+++ b/src/incidents.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/incidenttypes.php b/src/incidenttypes.php
index faeb753..53702f3 100644
--- a/src/incidenttypes.php
+++ b/src/incidenttypes.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/includes/adminnav.php b/src/includes/adminnav.php
index 9f05730..6a775be 100644
--- a/src/includes/adminnav.php
+++ b/src/includes/adminnav.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::ADMIN, security::METHOD_NOTFOUND);
 
diff --git a/src/includes/head.php b/src/includes/head.php
index f375ecf..6282924 100644
--- a/src/includes/head.php
+++ b/src/includes/head.php
@@ -1,3 +1,25 @@
+<?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
+?>
+
 <meta charset="UTF-8">
 <meta name="description" content="">
 <meta name="viewport" content="width=device-width, initial-scale=1">
diff --git a/src/includes/workernav.php b/src/includes/workernav.php
index 51b6794..fcf75e7 100644
--- a/src/includes/workernav.php
+++ b/src/includes/workernav.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once(__DIR__."/../core.php");
 security::checkType(security::WORKER, security::METHOD_NOTFOUND);
 
diff --git a/src/index.php b/src/index.php
index f9a829a..d25ef96 100644
--- a/src/index.php
+++ b/src/index.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 
 if (security::isAllowed(security::ADMIN)) {
diff --git a/src/install.php b/src/install.php
index 30dfeff..327c8d3 100644
--- a/src/install.php
+++ b/src/install.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 if (php_sapi_name() != "cli") {
   exit();
 }
diff --git a/src/interstitialvalidations.php b/src/interstitialvalidations.php
index 6fdc37b..ef1d232 100644
--- a/src/interstitialvalidations.php
+++ b/src/interstitialvalidations.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER);
 
diff --git a/src/invalidatebulkrecords.php b/src/invalidatebulkrecords.php
index c6cf09e..c8ff443 100644
--- a/src/invalidatebulkrecords.php
+++ b/src/invalidatebulkrecords.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::HYPERADMIN);
 
diff --git a/src/js/calendar.js b/src/js/calendar.js
index 920bf98..d34a7ce 100644
--- a/src/js/calendar.js
+++ b/src/js/calendar.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 document.addEventListener("DOMContentLoaded", _ => {
   document.querySelectorAll("select").forEach(el => {
     el.addEventListener("change", _ => {
diff --git a/src/js/categories.js b/src/js/categories.js
index 412f585..f7f621e 100644
--- a/src/js/categories.js
+++ b/src/js/categories.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 window.addEventListener("load", function() {
   document.querySelector(".addcategory").addEventListener("click", function() {
     document.querySelector("#addcategory").showModal();
diff --git a/src/js/common.js b/src/js/common.js
index 445016e..dd433bf 100644
--- a/src/js/common.js
+++ b/src/js/common.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 /**
   * Functions hasClass(), addClass() and removeClass() developed by Jake Trent (http://jaketrent.com/post/addremove-classes-raw-javascript/)
   */
diff --git a/src/js/common_webauthn.js b/src/js/common_webauthn.js
index fa95364..07d42ff 100644
--- a/src/js/common_webauthn.js
+++ b/src/js/common_webauthn.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 /**
  * convert RFC 1342-like base64 strings to array buffer
  * @param {mixed} obj
diff --git a/src/js/companies.js b/src/js/companies.js
index aa8d9dd..b9e1bb8 100644
--- a/src/js/companies.js
+++ b/src/js/companies.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 window.addEventListener("load", function() {
   document.querySelector(".addcompany").addEventListener("click", function() {
     document.querySelector("#addcompany").showModal();
diff --git a/src/js/export.js b/src/js/export.js
index 9bdbbbe..85f52a4 100644
--- a/src/js/export.js
+++ b/src/js/export.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 function toggleTr(tr, show) {
   var checkbox = tr.querySelector("label").MaterialCheckbox;
   if (show) {
diff --git a/src/js/incidents.js b/src/js/incidents.js
index 0397cac..03121f8 100644
--- a/src/js/incidents.js
+++ b/src/js/incidents.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 function getFormData() {
   var incidents = [];
 
diff --git a/src/js/incidentsgeneric.js b/src/js/incidentsgeneric.js
index 5d1323f..56af82c 100644
--- a/src/js/incidentsgeneric.js
+++ b/src/js/incidentsgeneric.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 window.addEventListener("load", function() {
 
   document.querySelectorAll(".custom-actions-btn").forEach(el => {
diff --git a/src/js/incidenttypes.js b/src/js/incidenttypes.js
index 48e8ae4..96083db 100644
--- a/src/js/incidenttypes.js
+++ b/src/js/incidenttypes.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 window.addEventListener("load", function() {
   document.querySelector(".addincident").addEventListener("click", function() {
     document.querySelector("#addincident").showModal();
diff --git a/src/js/index.js b/src/js/index.js
index 8af86b3..f6d29ec 100644
--- a/src/js/index.js
+++ b/src/js/index.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 window.addEventListener("load", function() {
   if (document.querySelector("#recoverybtn")) {
     document.querySelector("#recoverybtn").addEventListener("click", function(e) {
diff --git a/src/js/invalidatebulkrecords.js b/src/js/invalidatebulkrecords.js
index cfbe2d5..5d84729 100644
--- a/src/js/invalidatebulkrecords.js
+++ b/src/js/invalidatebulkrecords.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 window.addEventListener("load", function() {
   document.querySelectorAll("tr[data-worker-id]").forEach(tr => {
     var checkbox = tr.querySelector("input[type=\"checkbox\"]");
diff --git a/src/js/registry.js b/src/js/registry.js
index 807c4fd..b88cce0 100644
--- a/src/js/registry.js
+++ b/src/js/registry.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 window.addEventListener("load", _ => {
   document.getElementById("showinvalidated").addEventListener("change", e => {
     document.getElementById("show-invalidated-form").submit();
diff --git a/src/js/schedule.js b/src/js/schedule.js
index d804872..bde5874 100644
--- a/src/js/schedule.js
+++ b/src/js/schedule.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 window.addEventListener("load", function() {
   document.querySelector(".addday").addEventListener("click", function() {
     document.querySelector("#addday").showModal();
diff --git a/src/js/scheduletemplates.js b/src/js/scheduletemplates.js
index a236064..76a927d 100644
--- a/src/js/scheduletemplates.js
+++ b/src/js/scheduletemplates.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 window.addEventListener("load", function() {
   document.querySelector(".addtemplate").addEventListener("click", function() {
     document.querySelector("#addtemplate").showModal();
diff --git a/src/js/secondfactor.js b/src/js/secondfactor.js
index f537146..81bf94b 100644
--- a/src/js/secondfactor.js
+++ b/src/js/secondfactor.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 function verify() {
   if (!document.getElementById("code").checkValidity()) {
     document.querySelector(".mdl-js-snackbar").MaterialSnackbar.showSnackbar({
diff --git a/src/js/securitykeys.js b/src/js/securitykeys.js
index 9f08e21..b835cb9 100644
--- a/src/js/securitykeys.js
+++ b/src/js/securitykeys.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 window.addEventListener("load", function() {
   document.querySelector(".addsecuritykey").addEventListener("click", function() {
     document.querySelector("#addsecuritykey").showModal();
diff --git a/src/js/sendbulkpasswords.js b/src/js/sendbulkpasswords.js
index bb6ac26..cc14ad7 100644
--- a/src/js/sendbulkpasswords.js
+++ b/src/js/sendbulkpasswords.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 window.addEventListener("load", function() {
   document.querySelectorAll("tr[data-person-id]").forEach(tr => {
     var checkbox = tr.querySelector("input[type=\"checkbox\"]");
diff --git a/src/js/userincidents.js b/src/js/userincidents.js
index 48e8ae4..96083db 100644
--- a/src/js/userincidents.js
+++ b/src/js/userincidents.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 window.addEventListener("load", function() {
   document.querySelector(".addincident").addEventListener("click", function() {
     document.querySelector("#addincident").showModal();
diff --git a/src/js/users.js b/src/js/users.js
index 9eb383e..a896763 100644
--- a/src/js/users.js
+++ b/src/js/users.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 window.addEventListener("load", function() {
   var datatable = $('.datatable').DataTable({
     paging:   false,
diff --git a/src/js/userschedule.js b/src/js/userschedule.js
index 0fa39cb..782162e 100644
--- a/src/js/userschedule.js
+++ b/src/js/userschedule.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 window.addEventListener("load", function() {
   document.querySelector(".addschedule").addEventListener("click", function() {
     document.querySelector("#addschedule").showModal();
diff --git a/src/js/validations.js b/src/js/validations.js
index cecd3b7..781f814 100644
--- a/src/js/validations.js
+++ b/src/js/validations.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 function getFormData() {
   var data = {
     "incidents": [],
diff --git a/src/js/workers.js b/src/js/workers.js
index 88ac687..b60d6e0 100644
--- a/src/js/workers.js
+++ b/src/js/workers.js
@@ -1,3 +1,21 @@
+/* (license-header)
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
 function getRawWorkers() {
   var parameters = [];
   document.querySelectorAll("tr[data-worker-id]").forEach(tr => {
diff --git a/src/logout.php b/src/logout.php
index cc13d12..2cd03a1 100644
--- a/src/logout.php
+++ b/src/logout.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 
 security::logout();
diff --git a/src/logs.php b/src/logs.php
index ddd74d9..416ec44 100644
--- a/src/logs.php
+++ b/src/logs.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/manuallygenerateregistry.php b/src/manuallygenerateregistry.php
index fb6d1bb..93e3268 100644
--- a/src/manuallygenerateregistry.php
+++ b/src/manuallygenerateregistry.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::HYPERADMIN);
 
diff --git a/src/pendingvalidations.php b/src/pendingvalidations.php
index 8757384..61235cb 100644
--- a/src/pendingvalidations.php
+++ b/src/pendingvalidations.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/powertools.php b/src/powertools.php
index f099aba..cd5d26a 100644
--- a/src/powertools.php
+++ b/src/powertools.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::HYPERADMIN);
 
diff --git a/src/recovery.php b/src/recovery.php
index 34a41df..666319d 100644
--- a/src/recovery.php
+++ b/src/recovery.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 
 if (!security::checkParams("GET", [
diff --git a/src/registry.php b/src/registry.php
index de1c123..e71fd90 100644
--- a/src/registry.php
+++ b/src/registry.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/schedule.php b/src/schedule.php
index 1839415..966e142 100644
--- a/src/schedule.php
+++ b/src/schedule.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER);
 security::checkWorkerUIEnabled();
diff --git a/src/scheduletemplate.php b/src/scheduletemplate.php
index 9a1f337..b111992 100644
--- a/src/scheduletemplate.php
+++ b/src/scheduletemplate.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/scheduletemplates.php b/src/scheduletemplates.php
index f0265d6..4afc6b2 100644
--- a/src/scheduletemplates.php
+++ b/src/scheduletemplates.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/security.php b/src/security.php
index 58275ed..54527d0 100644
--- a/src/security.php
+++ b/src/security.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER);
 security::checkWorkerUIEnabled();
diff --git a/src/securitykeys.php b/src/securitykeys.php
index f00625c..019dc67 100644
--- a/src/securitykeys.php
+++ b/src/securitykeys.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER);
 security::checkWorkerUIEnabled();
diff --git a/src/sendbulkpasswords.php b/src/sendbulkpasswords.php
index a5b9fce..9f9ee19 100644
--- a/src/sendbulkpasswords.php
+++ b/src/sendbulkpasswords.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::HYPERADMIN);
 
diff --git a/src/settings.php b/src/settings.php
index 67eda8b..28b3bab 100644
--- a/src/settings.php
+++ b/src/settings.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/signin.php b/src/signin.php
index 295416c..8dc0c54 100644
--- a/src/signin.php
+++ b/src/signin.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 
 if (!isset($_POST["username"]) || !isset($_POST["password"]) || empty($_POST["username"]) || empty($_POST["password"])) {
diff --git a/src/signinsecondfactor.php b/src/signinsecondfactor.php
index 9b5ecd1..f21d18e 100644
--- a/src/signinsecondfactor.php
+++ b/src/signinsecondfactor.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 
 if (security::userType() !== security::UNKNOWN || !isset($_SESSION["firstfactorid"]) || !secondFactor::isEnabled($_SESSION["firstfactorid"])) {
diff --git a/src/userincidents.php b/src/userincidents.php
index e46ee88..5cfef92 100644
--- a/src/userincidents.php
+++ b/src/userincidents.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER);
 security::checkWorkerUIEnabled();
diff --git a/src/userregistry.php b/src/userregistry.php
index 17bb29e..b69d14f 100644
--- a/src/userregistry.php
+++ b/src/userregistry.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER);
 security::checkWorkerUIEnabled();
diff --git a/src/users.php b/src/users.php
index d90faaf..582ad46 100644
--- a/src/users.php
+++ b/src/users.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/userschedule.php b/src/userschedule.php
index a3eebe5..8bd7f17 100644
--- a/src/userschedule.php
+++ b/src/userschedule.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER);
 security::checkWorkerUIEnabled();
diff --git a/src/validations.php b/src/validations.php
index f0bab4c..9038fc4 100644
--- a/src/validations.php
+++ b/src/validations.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER);
 
diff --git a/src/workercalendar.php b/src/workercalendar.php
index b795fc7..0915048 100644
--- a/src/workercalendar.php
+++ b/src/workercalendar.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER);
 security::checkWorkerUIEnabled();
diff --git a/src/workerhome.php b/src/workerhome.php
index 65aeef9..acbe55c 100644
--- a/src/workerhome.php
+++ b/src/workerhome.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER);
 security::checkWorkerUIEnabled();
diff --git a/src/workers.php b/src/workers.php
index f6318d5..689a59a 100644
--- a/src/workers.php
+++ b/src/workers.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::ADMIN);
 
diff --git a/src/workerschedule.php b/src/workerschedule.php
index 9ba43e6..365db3f 100644
--- a/src/workerschedule.php
+++ b/src/workerschedule.php
@@ -1,4 +1,23 @@
 <?php
+/*
+ * hores
+ * Copyright (c) 2023 Adrià Vilanova Martínez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.
+ * If not, see http://www.gnu.org/licenses/.
+ */
+
 require_once("core.php");
 security::checkType(security::WORKER);
 security::checkWorkerUIEnabled();
