Files
zibo-dashboard/public/userarea/scadenzario/INSTALLATION.md
T
2026-04-18 16:44:53 +03:00

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.