Recruitment Reference Public

Data and Screen Reference

A compact reference of the screens, data records, routes, permissions, and supporting files that make up the Recruitment module package.

Guide version: r2 Module version: 1.6.0 Updated: 2026-07-22 Estimated time: 5 min 2 views
Reference

Data and Screen Reference

A compact reference of screens, data records, routes, and supporting files found in the module package.

Slug: recruitmentVersion: 1.4.0Category: Human ResourceReviewed: 2026-07-16

Screens and Views

Controllers

  • Applicants_api - index, view
  • Job_interviews
  • Job_offers
  • Job_portal - index, list_data, quick_view, view, list_random_data, companies, company, modal_form, saved, saved_jobs_data, saved_jobs_summary, upload_file, validate_file, check_application_email, submit_job_application, report_job_modal_form
  • Job_positions
  • Recruitment
  • Recruitments_api - index, view, applicants

View files

  • job_positions/index.php
  • job_positions/modal_form.php
  • recruitment/applicant_header.php
  • recruitment/applicant_view.php
  • recruitment/categories.php
  • recruitment/comment_row.php
  • recruitment/edit_comment_modal_form.php
  • recruitment/entries.php
  • recruitment/file_view.php
  • recruitment/hire_modal_form.php
  • recruitment/index.php
  • recruitment/interviews/interviews_panel.php
  • recruitment/interviews/modal_form.php
  • recruitment/job_portal/applicant_tips.php
  • recruitment/job_portal/companies.php
  • recruitment/job_portal/company.php
  • recruitment/job_portal/index.php
  • recruitment/job_portal/modal_form.php
  • recruitment/job_portal/offer.php
  • recruitment/job_portal/quick_view.php
  • recruitment/job_portal/report_company_modal.php
  • recruitment/job_portal/report_job_modal.php
  • recruitment/job_portal/saved.php
  • recruitment/job_portal/sidebar/companies.php
  • recruitment/job_portal/sidebar/saved_jobs.php
  • recruitment/job_portal/sidebar/saved_jobs_module.php
  • recruitment/job_portal/view.php
  • recruitment/kanban.php
  • recruitment/kanban_view.php
  • recruitment/modal_form.php
  • recruitment/modal_form_application_status.php
  • recruitment/modal_form_assign_label.php
  • recruitment/modal_form_category.php
  • recruitment/modal_form_remarks.php
  • recruitment/offers/modal_form.php
  • recruitment/offers/offers_panel.php
  • recruitment/view.php

New Screens (v1.4.0)

SEO & Google for Jobs editor

Opened from the row menu on Job Postings, or directly at hrs/recruitment/seo/{id}. Requires the recruitment_seo permission (admins always have access). Edit the search title and meta description, social share overrides, and advanced settings; review the Google for Jobs eligibility score (90+ Good, 70+ Needs review, below Poor) with its issue checklist, live previews of the search result, share card, and Google for Jobs card, and a read-only panel of the posting facts the markup is built from.

Posting Analytics

Opened from the row menu on Job Postings, or directly at hrs/recruitment/posting_analytics/{id}. Requires the recruitment_analytics permission. Shows KPI tiles, 7/30/90-day presets, the daily Views & Applications trend chart, the Views to Hired funnel, views by source, devices, top referrer sites, fill progress, and all-time counters.

New Job Postings columns

  • Views - the posting's all-time view count; the tooltip shows the unique-visitor count.
  • SEO - the color-coded Google for Jobs eligibility score; click it to open the SEO editor.

Data Records

Models

  • Application_consents_model.php
  • Job_applications_model.php
  • Job_comments_model.php
  • Job_interviews_model.php
  • Job_offers_model.php
  • Job_positions_model.php
  • Recruitment_banner_model.php
  • Recruitment_categories_model.php
  • Recruitment_model.php
  • Recruitment_statuses_model.php

Database tables

  • job_hiring
  • job_applications
  • job_hiring_categories
  • recruitment_status
  • recruitment_banner
  • job_comments
  • job_offers
  • application_consents
  • job_interviews
  • job_positions

New Data (v1.4.0)

New tables

  • job_posting_meta - the per-posting SEO record (search, social, and advanced settings plus the eligibility score).
  • job_analytics_events - the raw view and apply event log; entries are automatically deleted after the retention window.
  • job_analytics_daily - anonymous daily totals per traffic source that power the analytics charts.
  • job_indexing_queue - queued search-engine pings awaiting dispatch, with automatic retries.

New job_hiring columns

  • Google-for-Jobs fields: employment_type, work_arrangement, location_city, location_region, location_country, date_posted, valid_through, salary_currency, salary_unit, direct_apply
  • Lifecycle stamps: closed_at, close_reason, auto_close, delisted_at
  • Analytics counters: view_count, unique_view_count, apply_start_count, last_viewed_at

Routes and Entry Points

RouteTarget
hrs/recruitmentrecruitment/index
hrs/recruitment/(.+)recruitment/$1
hrs/job_positionsjob_positions/index
hrs/job_positions/(.+)job_positions/$1
job-portaljob_portal/index
job-portal/(:any)job_portal/$1
job-portal/(:any)/(:any)job_portal/$1/$2

New Public Endpoints

EndpointPurpose
/job-portal/sitemap.xmlLive jobs sitemap listing every open, indexable posting across all tenant companies; registered in the main sitemap and robots.txt.
/job-portal/og-image/{uuid}/{version}Stable share-image URL for a posting's banner, so social previews keep working when files live on cloud (S3) storage.

Closed or expired postings stay reachable for people holding the link but answer HTTP 410 with an "applications closed" notice, so search engines drop the page; reopening the posting restores it.

Supporting Files

Migrations

  • 20260704173138_add_position_and_salary_band_to_job_hiring.php
  • 20260704173529_create_job_offers_table.php
  • 20260704183704_create_application_consents_table.php
  • 20260704183705_create_job_interviews_table.php

Seeders

  • RecruitmentOpenJobsSeeder.php

Tests

  • RecruitmentTest.php
  • JobSeoAnalyticsTest.php

Helpers

  • recruitment_helper.php

Libraries

No module libraries were found.

API configs

  • api_routes.php
  • api_scope.php

Scheduled Jobs

JobSchedulePurpose
recruitment_retention_purgeDaily at 03:00Existing job - removes applicant data that has passed the retention window.
recruitment_aggregate_job_analyticsHourly at :20New in v1.4.0 - rolls raw view and apply events into the daily totals behind the analytics charts.
recruitment_expire_job_postingsDaily at 01:15New in v1.4.0 - closes open postings whose application deadline has passed (reason "expired"); individual postings can opt out of auto-close.
recruitment_dispatch_job_indexingEvery 15 minutesNew in v1.4.0 - sends queued search-engine pings (IndexNow and the Google Indexing API) with automatic retries.

All four jobs run per tenant and skip cleanly until php erpat migrate:modules has been run.

Activity Log Events

EventRecorded when
publish:job_hiringA job posting is published to the public job portal.
close:job_hiringA job posting is closed by a user.
auto_expire:job_hiringThe nightly sweep closes a posting whose application deadline has passed.
update:job_seoA posting's SEO & Google for Jobs settings are saved.
Was this guide helpful?

Report a content problem