Osclass 8.4.0: Statistics, Reports, Rewritten Alerts and New Admin Tables

Osclass 8.4.0 adds daily listing statistics with charts, a Reports system that replaces "Mark as", a rewritten alerts engine, and redesigned admin tables for most backoffice sections. The minimum PHP version is now 7.4.

Several changes touch the database, themes and plugins. Back up your files and database, and test your theme and plugins on a staging copy before you upgrade a live site.

Requirements

  • The minimum PHP version changed from 7.2 to 7.4, based on library dependencies.

Listing Statistics and Charts

Listing statistics are now stored as daily measures in t_item_stats. This covers views, premium views, phone clicks, engaged views, logged-in views, minutes viewed, alert emails, contact forms and reports. Other measures can be enabled in Statistics settings with the Essential, Engagement, Commerce and Full presets.

  • Users see summary and listing charts on the front office. Choose line, bar, area, stacked bar or stacked area, and the periods to show. Charts can be limited to company accounts.
  • Admin Statistics starts on Overview and has separate pages for listings, users, comments and alerts. KPI cards show the change against the previous period.
  • Listing details has filters, totals, KPI cards and CSV download.
  • Dashboard charts can be added, hidden and moved between columns from the widget settings.
  • Old statistics rows are removed after a retention period. The default is 24 months.
  • Admin Statistics remembers the period you selected.
  • Plugins can add charts to admin Statistics pages with hooks, and can write counters with osc_increase_item_stat() and osc_increase_item_stats().

The public item_stats AJAX action now requires the session CSRF token and accepts one measure per request. Do not send orders, favorites or similar counters through it.

Reports Replace "Mark as"

Logged-in users can report listings and users from the listing page and the public profile. A report has a reason, a comment and an optional attachment.

  • The reporter, the reported user and the admin can reply on the report page.
  • The reported user can send one reply while the status is Awaiting feedback.
  • New Reports section in the backoffice with a data table, an edit page with comment history, and settings.
  • Settings include a daily limit per user, email notifications, auto-close, retention and attachment types.
  • New email templates: email_report_admin and email_report_user.
  • New admin toolbar notifications, a dashboard widget and friendly URLs for reports.
  • The website contact form can optionally be handled as a report instead of an email. This is off by default.

The old "Mark as" pages, reported listings list and the related t_item_stats columns were removed. Old themes keep working through compatibility functions, and Mark as links now open the report form with the matching reason. Two new database tables are created: t_report and t_report_comment.

Alerts Rewrite

  • Alert sending was rewritten to be more stable and predictable.
  • Each alert email is limited to 50 listings. Change this with MAX_ITEMS_PER_ALERT.
  • Alerts can now expire. Set the defaults in User settings. Until now, all alerts never expired.
  • The alert form supports JSON replies. Add the hidden input alert_version=v2 to use it.
  • Alert emails show the alert name, frequency, created and expiry dates, a search link and a link to My Account > Alerts. New placeholders are available for these values.
  • Upgrade replaces unmodified en_US alert email bodies only.
  • Unsubscribing from an email link shows a clear message. A second click says the alert is already unsubscribed.

Backoffice Data Tables

  • Most backoffice tables now have sortable columns, pagination, rows per page and filters.
  • Item and user filters are expanded, including a quick search bar for items.
  • New row actions, such as showing logs or alerts for the same user, and new bulk actions.
  • Plugins and themes can build their own tables with CustomDataTable.php and the helper functions in hCustomDataTable.php.
  • Currencies, categories, custom fields, languages and widgets use the same table layout.
  • Currencies now support exchange rates.
  • Categories have a standalone edit page. Bulk actions can enable, disable, delete, set the price field and set the expiration length. Choose which expiration options appear under Settings > General > Category settings. The old category and custom field screens moved to Quick management.

Multilingual Widgets

  • Widget content is stored per language. Code and CSS are shared by all languages.
  • Each widget has a unique name, used in CSS as wdg-{name}. Visibility on mobile (0 to 767px) or desktop (768px and up) is handled with CSS.
  • Empty widgets print nothing.
  • Locale-strict mode shows a widget only in the current language.
  • New helpers: osc_widget(), osc_count_widgets(), osc_has_widgets(), osc_widget_content() and osc_widget_code(). Older themes keep using the existing widget functions.

URLs and SEO

  • Static page URLs are now built from the page title in the current user language.
  • Duplicate category slugs use a hyphen suffix (for-sale-1) instead of an underscore. Old URLs still work and stored slugs are not changed on upgrade.
  • Hreflang tags now point to the listing URL and the search URL in each enabled language.
  • The canonical tag keeps the current language instead of forcing the default one.
  • Fixed listing and category URLs that used a slug from another language.
  • Long language codes such as en-us no longer send listing clicks to the home page.
  • Search keywords with accents stay intact in friendly search URLs.

Security and Input

  • Listing descriptions keep formatting tags and drop scripts and event handlers.
  • Public profile listing search escapes the keyword and only accepts known sort columns.
  • Stronger protection and better stop word checks on the latest search feature.
  • Keyword fields show &, quotes and angle brackets as typed.

New Admin Tools

  • Automatic Cleanup settings in General settings.
  • "Send message" lets you email a user from the backoffice in a popup.
  • Settings > Optimization has a new database optimization option that checks, analyzes and optimizes all Osclass tables.
  • Image regeneration runs in small batches and handles thousands of images. Batch size is configurable.
  • Tools > Backup data lists earlier backups with download and delete actions.
  • Tools > Statistics merges location and category statistics and adds user statistics.
  • Edit comments page has more action buttons, and you can add a comment from the backoffice.
  • Manage admins links to the action logs of each admin.
  • Dashboard widgets can be enlarged to full page.
  • Tools > Configuration info shows more details.

Fixes and Smaller Changes

  • The built-in auto-cron no longer runs on every page load. It runs at most once every 5 minutes.
  • Zip extraction now handles archives with backslashes and missing folder entries.
  • Redis cache issues fixed.
  • The default jQuery UI was changed from 1.10.2 to 1.8.24 for better compatibility with the backoffice jQuery version.
  • Location fields are no longer required in the backoffice item form. jQuery validation problems in that form are fixed.
  • On the publish page, category selection is no longer forced down to the last level when publishing in parent categories is disabled.
  • Expiration dates are checked before saving, so a listing is never saved with an invalid date.
  • New filter item_delete_image for managing listing image removal.
  • Duplicate English texts with the same meaning now share one translation string.
  • Sigma theme: removed the deprecated donate box and fixed extra white space before HTML tags.
  • The installer recommends mb_strlen and mb_substr, with fallback functions when they are missing.
  • Legacy meta tags removed from the front office and backoffice. Deprecated code removed.

Summary

Osclass 8.4.0 gives admins and users real statistics, replaces the old "Mark as" flow with a proper reporting workflow, and makes alerts predictable. Most backoffice screens now share one table layout.

Before you upgrade, check that your server runs PHP 7.4 or newer, make a full backup, and test custom themes and plugins on a staging copy.