Drupal Environment Reference
Directory / Build
- Real docroot: /home/darwus/drupalbeta/web (NOT /home/darwus/public_html/drupalbeta or any variant)
- Drupal version: 11.4.5
- PHP version: 8.4.20 (binary: /opt/alt/php84/usr/bin/php)
- Database: darwus_beta (MySQL/MariaDB)
- Public files: sites/default/files
- Private files: /home/darwus/drupalbeta/web/private
- Custom modules directory: web/modules/custom/
- Real error log: /home/darwus/drupalbeta/web/error_log (there are other error_log files on this account belonging to unrelated sites — e.g. drupaltest.emconalfa.net — do not trust a log without confirming which site it belongs to)
Custom Modules
- skyhawk_site_fixes — primary site-specific integration module. Contains the upload token system, mail hooks, reunion system, journal upload, PageMessageTrait.
- skyhawk_gallery — renders dir_listing nodes as filesystem image galleries. Contains PhotoContributionForm.php — the established working pattern for managed_file uploads on this site. Still uses Drupal messenger() popups (not yet converted to PageMessageTrait) — do not copy that part of the pattern.
- yp_memorial — displays YP memorial memories from Webform submissions.
- skyhawk_sdo_contact.zip, skyhawk_sdo_contact_patch.zip, skyhawk_sdo_router.zip — present on disk, not extracted/audited. See /blade/sdo-system-status.
Key Contrib Modules Installed (partial list, direct deps)
- drupal/dropzonejs — installed and enabled, but confirmed unused anywhere in custom code or config as of 2026-08-24. Do not assume it's wired into anything.
- drupal/webform, drupal/pathauto, drupal/token, drupal/redirect, drupal/simple_sitemap, drupal/simplenews
- drupal/entity_browser, drupal/entity_browser_block, drupal/entity_embed, drupal/embed
- drupal/views_bootstrap, drupal/views_bulk_operations, drupal/views_data_export, drupal/views_infinite_scroll
- drupal/ctools, drupal/devel, drupal/upgrade_status
- drupal/csv_importer, drupal/csv_serialization
- drupal/image_effects, drupal/file_mdm, drupal/sophron
- drupal/layout_builder_restrictions, drupal/layout_builder_styles
Established Patterns to Reuse
- File upload: Drupal's native managed_file form element with #multiple => TRUE, #upload_location, #upload_validators — see skyhawk_gallery/PhotoContributionForm.php and skyhawk_site_fixes/UploadTokenForm.php.
- Inline one-shot messages (no Drupal messenger popup): skyhawk_site_fixes/src/Traits/PageMessageTrait.php.
- Email sending: hook_mail() in skyhawk_site_fixes.module, dispatched via \Drupal::service('plugin.manager.mail')->mail().
- Per-request/token-gated routes: always call \Drupal::service('page_cache_kill_switch')->trigger() to prevent Drupal's page cache (default max-age 3600) from serving stale state.
A2 Command-Line Access
- Host:
65.181.120.151; user:darwus; SSH port:22. - Pixel connection:
ssh -p 22 darwus@65.181.120.151. - Normal command-line work occurs interactively at the A2 prompt. Pixel-to-A2 non-interactive SSH is not the normal Drupal/Drush execution method.
- Backup-download exception and Pixel operational details are maintained in Termux Notes. Database backup policy remains governed by the Rules.
Journal Index Architecture
- The Drupal-native
journal_indexcontent type and its Drupal Views are the authoritative live Journal Index architecture. - The former standalone raw SQL table
journal_indexwas a legacy Raven/import artifact and was retired on 2026-08-27 after live-use auditing. raven_journal_index_534.csvis retained as the historical Raven source data.- Do not recreate the standalone raw
journal_indexSQL table unless a future proven requirement specifically requires it.