76 lines
2.2 KiB
Markdown
76 lines
2.2 KiB
Markdown
# Installation — Scadenzario
|
|
|
|
## 1. Database
|
|
|
|
Run the schema script:
|
|
|
|
```bash
|
|
mysql -u <user> -p <database> < public/userarea/scadenzario/sql/1_create_tables.sql
|
|
```
|
|
|
|
This creates 5 tables:
|
|
|
|
| Table | Purpose |
|
|
|---|---|
|
|
| `scad_deadlines` | Main deadline records |
|
|
| `scad_deadline_employee` | M2M assignment of individual employees |
|
|
| `scad_deadline_attachments` | File attachments |
|
|
| `scad_deadline_histories` | Audit log (created/updated/completed/...) |
|
|
| `scad_deadline_notifications` | Sent-notification log (deduplication) |
|
|
|
|
Departments are stored as a comma-separated string in `scad_deadlines.departments` (matching `employees.department` values). No separate `departments` table.
|
|
|
|
## 2. Filesystem permissions
|
|
|
|
The `attachments/` folder must be writable by the web server:
|
|
|
|
```bash
|
|
chmod 755 public/userarea/scadenzario/attachments
|
|
chown www-data:www-data public/userarea/scadenzario/attachments
|
|
```
|
|
|
|
The included `.htaccess` denies direct web access. Files are served only through the auth-protected `ajax/download_attachment.php` endpoint.
|
|
|
|
## 3. SMTP configuration
|
|
|
|
Email notifications use the project-wide SMTP settings in `.env`:
|
|
|
|
```env
|
|
MAIL_MAILER=smtp
|
|
MAIL_HOST=smtp.example.com
|
|
MAIL_PORT=465
|
|
MAIL_USERNAME=your_user
|
|
MAIL_PASSWORD=your_password
|
|
MAIL_ENCRYPTION=ssl
|
|
MAIL_FROM_ADDRESS=scadenzario@your-domain.com
|
|
MAIL_FROM_NAME="Scadenzario"
|
|
APP_URL=https://your-domain.com
|
|
```
|
|
|
|
## 4. Cron schedule
|
|
|
|
Add to the system crontab (run as the web user):
|
|
|
|
```cron
|
|
0 7 * * * php /var/www/html/public/userarea/scadenzario/cron/send_notifications.php >> /var/log/scadenzario.log 2>&1
|
|
```
|
|
|
|
This sends notifications daily at 07:00 for:
|
|
|
|
- **Approaching** — `due_date <= today + notification_days` (per-deadline lead time)
|
|
- **Overdue** — `due_date < today`
|
|
|
|
Completed deadlines are skipped. Recipients without an `auth_user_id` are silently skipped.
|
|
|
|
## 5. Linking employees to auth users
|
|
|
|
For an employee to receive email notifications:
|
|
|
|
1. The corresponding `auth_users` row must exist with a valid `email`.
|
|
2. Set `employees.auth_user_id` to that user ID:
|
|
```sql
|
|
UPDATE employees SET auth_user_id = <user_id> WHERE id = <employee_id>;
|
|
```
|
|
|
|
Employees without `auth_user_id` are silently skipped by the cron.
|