Current Path :
/
var
/
softaculous
/
osclassified
/
Or
Select Your Path :
Upload File :
New :
File
Dir
//var/softaculous/osclassified/changelog.txt
Osclass 8.4.0 ------------------------ - IMPORTANT: Minimum PHP version to run Osclass has changed from 7.2 to 7.4 (based on library dependencies). - Public profile listing search escapes the keyword and only allows known sort columns. - TinyMCE listing descriptions keep formatting tags and drop scripts and event handlers. - Search keywords with accents stay intact in friendly search URLs. - Keyword fields show &, quotes and angle brackets as typed. - IMPORTANT: Listing statistics now store daily measures on t_item_stats (views, premium views, and optional traffic, contact, commerce and lifecycle counters). Collection defaults to standard views, premium views, phone clicks, engaged views, logged-in views, minutes viewed, alert emails, contact forms and reports. Other measures are enabled in Statistics settings (and Listing settings) with Essential, Engagement, Commerce and Full presets. User summary and listing charts default to six measures. Statistics settings recommend 4 to 6 so the plot stays readable. Chart colors use a 16-color Tableau 10/20 palette so default measures stay distinct. The same colors are used in user charts and admin Statistics. Plugins can change the palette with osc_item_stats_palette, remap keys with osc_item_stats_colors, or override one measure with osc_item_stats_color. Front-office user summary charts and inline counters are added through configurable hooks (default user_items_top). An optional user listing chart uses item_top. User summary and listing charts are HTML/SVG. Each has its own chart type (default line). Other types: bar, area, stacked bar or stacked area. Chart measures can include listings published and listings live, counted from listing records. User summary chart: period tabs span the full width, the plot has a border, Y-axis ticks are whole numbers with no repeats, and the totals table under the chart is omitted. The views measure label is Standard views. User and listing SVG charts scale to the container width (no fixed height letterboxing on narrow screens). Point tooltips use a small HTML tip on hover and tap, with a larger invisible hit target around each point. Chart CSS/JS (user-stats.css, user-stats.js) are printed with the chart markup once per page. Admin Statistics starts on Overview. Listing details sits under Listings in the menu and replaces the old Reports stats page and plots listing measures with filters, totals, KPI cards for the selected measures, and CSV download. The CSV is written without fputcsv so PHP 8.4 does not add a deprecation notice to the file. Statistics page gaps (cards, columns, chart boxes) are 16px. Period buttons on admin Statistics are Last 30 days, Last 3 months, Last 12 months and All time. User summary and listing charts let the admin pick which tabs to show (Last 7 days, 14 days, 30 days, 90 days, 3 months, 6 months, 12 months, 24 months, All time). Install and upgrade preselect Last 30 days, Last 90 days, Last 12 months and All time. A period picked on a user chart is stored in the session and used on other user charts for that visit. It is not added to the page URL. Google Charts uses the current loader. Dashboard listing charts use the last 30 days and the same Google Charts helper as Statistics pages. Statistics page charts can be added on the dashboard from Backoffice widget settings. Each chart on that page has a Hide checkbox and a column selector on the same row. Period charts (line, area, bar) default to column 2. Mix charts (pie, donut, stacked bar, ranked bars) default to column 3 and can be moved to column 1. Install and upgrade show five charts in column 2, with Listing views first (standard views, premium views and the other Listing details measures), then Listing statistics, Comments statistics, Report statistics and User statistics. Other charts start hidden. Listing views (Overview and dashboard) plots the Listing details measures and uses the same period heading as Statistics (Views in the last 30 days: n. Premium views: n). Other dashboard chart headings show the all-time total, then Last 30 days and the period count. Plugins write counters with osc_increase_item_stat() from PHP. osc_increase_item_stats() updates the same measure for many listing ids in one query. Do not send orders, favorites or similar through the public item_stats AJAX action. Public item_stats AJAX requires the session CSRF token (octoken), accepts one measure per request, and ignores action counters even if a plugin filter lists them. Item-page clicks can use data-osc-stat with phone_clicks, contactother_clicks, shares or custom1-3. Filter osc_item_stats_ajax_measures extends that public AJAX allowlist. Phone and other-contact clicks use configurable CSS selectors. Engaged views use a configurable visible-time threshold (Statistics settings), default 15 seconds. Item-page stats JS waits until the listing config is printed, then records engaged views and minutes viewed. The last tick uses sendBeacon when the tab is closed. Minutes viewed count one full visible minute at a time. Alert-match and days-active counters were not added. Alert emails still increment i_num_alerts_sent. Comment counters stay in sync with active comments (including rating > 0). Custom 1-3 stay disabled until enabled. Daily cron can repair mismatched comment counters from t_item_comment (capped, does not scan all listings). Views, clicks and similar are event counters and are not recalculated. Automatic purge of listing statistic rows older than a retention period (default 24 months) is configured in Statistics settings. Daily cron and Tools > Cleanup use the same setting. One view per session uses a compact osc_seen session map (bucket => id => 1). osc_session_seen() and osc_is_item_viewed_in_session() share that store. Search, home and premium impressions, listing views and click measures use it. Minutes viewed uses osc_session_seen_inc() in the same map. User summary and listing charts can be shown to all signed-in users or only company accounts (user.b_company). Plugins extend the audience list with osc_item_stats_chart_audience_options and the allow check with osc_item_stats_user_can_see_charts. Statistics overview and listing, user, comment and alert pages use a 65/35 layout. Chart bands pair 2 main charts with 3 support charts, or 3 main with 2 support. In a band, the right stack (including 16px gaps) matches the left stack height. Latest listings, users, comments and alerts tables take two chart slots (two cards plus the 16px gap). Google Charts is drawn to the box size and redraws on window resize, zoom and orientation change. Overview keeps KPI cards, area charts for views and new listings, a bar of root categories, and pie/donut mix charts for status. Listings statistics (left column) and a dashboard chart in column 1 use a stacked bar of parent and child category counts. KPI summary cards are on Overview, Listings, Users, Comments, Alerts and Listing details. Tablets keep the 65/35 split; columns stack below 827px. Cards that count the selected period show percent change versus the previous window of the same length (Last 7 days versus the 7 days before that), always with a + or - sign. When the previous window is 0 the card shows +0%. Snapshot cards (Personal, Company) stay all-time totals with no comparison. Period charts show the selected-period total under the widget title (for example, New listings in the last 30 days: 34). Snapshot charts keep the widget title only. Collect from logged-in visitors only does not skip alert-email counters. User summary cards use the same measures as the chart. Admin and user-chart period values are checked against the period lists used on those pages. Statistics settings use the same form layout and save flow as other admin settings pages. Chart type, measures, period tabs and CSS selectors stay as saved. If collect checkboxes do not match a named preset, the preset is stored as custom. Listing settings uses the same preset rule. User statistics split new users, new listings and comments into three main charts, with type/status columns on the right and country/region charts in a later band. Alert statistics is a separate page: new alerts, new subscribers, emails sent, matched listings, active alerts by day with expired overlay, account type (guest, personal, company), frequency, status (active, inactive, expired), country and latest alerts. Unsubscribed alerts are not counted. Frequency uses Instant, Hourly, Daily, Weekly and Custom. Expired KPI and daily series count alerts that reached their expire date in the period. Listing statistics keep new listings and views in the first band (country, region and price on the right). Category, phone and latest listings sit in the second band. Alert totals on that page open the Alerts statistics page. Admin Statistics remembers the selected period the same way listing tables remember rows per page (cookie). It stays selected when you leave and come back, until you pick another period. A first visit uses the default period from Statistics settings. Time series: area for volume, line for trend, scatter for daily points, stepped area for comments, combo for two related series (columns plus a line, or area plus bars). Percent stacked area for composition over time (alert account type, comments from registered vs guest). Drag across a period chart to zoom; right-click to reset. Ranked country and region lists use horizontal bars colored by value. Listings by category uses a stacked bar: parent categories on the axis and child categories as stacks. Mixes with fewer than 8 values use pie or donut. Views and premium views stay overlaid, not stacked, because premium views are a subset. Comment statistics add pie and donut charts for rating (with vs without), comments vs replies, and status (pending validation, active, blocked). Blocked includes spam. Mix charts use the same period as the comments chart. Latest lists show an extra line: comments use the commenter name, comment text and a Rating: X of 5 label when a rating is set (not 0); listings show contact name and city; users show email, country and account type; alerts show expired, active or inactive, frequency and account type. Country and region support charts show the top 10 values and group the rest as Other. Listings by category is a stacked bar of parent and child counts; smaller groups are Other. Admin Statistics pages expose hooks so plugins can add charts: admin_stats_load (queue data with osc_admin_stats_add_chart), admin_stats_header, admin_stats_kpi, admin_stats_main, admin_stats_side, admin_stats_after, admin_stats_settings_form and admin_stats_settings_post. Filters: admin_stats_charts, admin_stats_plugin_charts, admin_stats_details_data. Chart types: line, area, stacked area, percent stacked area, stepped area, scatter, combo, column, pie, donut, bar, stacked bar. - IMPORTANT: New Reports feature replaces legacy "Mark as" feature. Logged in users can now report listings and users (from listing detail and public profile) with reason, comment and optional attachment (setting with allowed extensions, stored in oc-content/uploads/report/). Report conversation: reporter, reported user (optional feedback) and admin can reply on report via front report page or backoffice. Reported user can send one front reply when status is Awaiting feedback; status then changes to In progress. New backoffice section Reports with manage reports data table (search, filters, bulk actions, row actions), report edit page with comments history and settings page. New settings: enable/disable reports, daily reports limit per user, email notifications, reported user feedback, auto-close, retention and attachments. New email templates: email_report_admin and email_report_user (variable event/message/comment placeholders). New admin toolbar notifications for new reports and unseen replies, new dashboard widget with report statistics. New friendly urls report/item/{id}, report/user/{id}, report/view/{id} with permalink settings. New database tables t_report and t_report_comment created, report columns (spam, misclassified, duplicated, offensive, expired) dropped from t_item_stats. Old "Mark as" pages, reported listings and stats columns have been removed. Compatibility kept so old themes do not break: osc_item_mark_url, osc_item_mark_disable (false when reports are enabled so sigma 8.3.1 Mark as UI still shows), ItemActions::mark($id, $as), Item::clearStat(), Item::countByMarkas(), osc_item_link_spam / osc_item_link_bad_category / osc_item_link_repeated / osc_item_link_offensive / osc_item_link_expired, osc_admin_toolbar_spam (empty stub). Mark as urls and Mark as form posts now open the report form and select the matching reason. Report reason select starts with an empty required "Select a reason..." option. Report reasons can be listing-only, user-only or both (filters: osc_report_reason_types, osc_report_reason_applies, osc_report_reasons_for_type). Report form field wrappers now include input-box class so theme form styles apply. osc_report_item_url and osc_report_user_url accept optional item/user id and optional reason (current listing or profile user if omitted). osc_can_report_item and osc_can_report_user hide the report link for own listing or profile (guests still see it). osc_report_source_label returns the source label. osc_report_url accepts optional reason. Website contact form can fully replace contact email with Contact form reports (type webcontact, no target id). Option is in General settings, disabled by default. Guests follow contact form rules, not report login or daily limits. Hooks: pre_contact_post, filter contact_send_mail. - IMPORTANT: Backoffice data tables has been refactored. Most of columns in backoffice are now sortable. Every data table has pagination, per page selection and filter options. Item filter options has been greatly expanded (quick search bar). User filter included columns has been expanded. New row actions added across multiple data tables (Show logs with same id, show alerts from same user, ...). New bulk actions added in multiple sections. New class created to create custom data tables in plugins/themes (CustomDataTable.php) with dedicated helper functions (hCustomDataTable.php). Refactored ordering/positioning features in data tables (ie Static pages). - IMPORTANT: Theme widgets are multilingual. Widget HTML is stored per locale in t_widget_description. Code (s_code) and CSS (s_css) are the same for all locales. Each widget has a unique internal name used in CSS as wdg-{name}. Device visibility is CSS-based: all, mobile (0-767px) or desktop (768px+). Empty widgets print nothing: no wrapper and no empty style tag. osc_count_widgets() counts only widgets that have content or code. Older themes keep using osc_show_widgets(), osc_show_widget_content(), osc_show_widgets_by_description() and osc_show_widgets_by_hook() from hUtils.php. New helper: osc_widget() (alias of osc_show_widgets). Also osc_count_widgets(), osc_has_widgets(), osc_widget_content(), osc_widget_code(). Custom sections and locale-strict are in widget settings, opened with the gear on Manage widgets. Locale-strict mode shows content only in the current locale. Single-locale widgets keep one content field for all locales. Manage widgets is a data table with section filter, position (within the same section), bulk delete and row actions. - IMPORTANT: Alerts feature redesign and improvements. Alerts sending functionality was completely rewritten to more stable and predictable model. New constant defined MAX_ITEMS_PER_ALERT to limit maximum number of items in single alert (defaults to 50). Alerts form now support "v2" for advanced json replies in front. It is possible to integrate via hidden input alert_version=v2. New feature: alerts expiration + relevant settings (User settings). Expirations enables admin to control and configure default expirations, non-expiring alerts etc. Until now, all alerts were non-expiring. Stock English alert notification emails include alert name, frequency, created and expire dates, a search link and a My Account > Alerts link. Intro text uses {ALERT_INTRO} so hourly, daily, weekly and instant each use the matching period. Extra placeholders: {ALERT_ID}, {ALERT_NAME}, {ALERT_FREQUENCY}, {ALERT_DATE}, {ALERT_EXPIRE_DATE}, {ALERT_TRIGGERS}, {USER_ALERTS_LINK}. Upgrade replaces unmodified en_US bodies only; other locales get the My Account sentence if that placeholder is missing. Unsubscribe from an email link: first click shows You have been unsubscribed from this alert. A repeat click shows an info message that the alert is already unsubscribed. If you are logged in as a different account, a warning names the alert email. The secret is still honored. - Duplicate English flashes and labels now share one msgid where the meaning is the same (settings saved, cannot, email, listing, required fields, admin page titles). Object-specific sentences stay separate. FineUploader tokens and generic bulk "selected items" are unchanged. en_US core, messages, GUI theme, and Sigma theme catalogs were scanned from source and compiled. - IMPORTANT: Currencies table in backoffice has been redesigned. Manage currencies page now supports row actions, sorting, filtering, pagination etc. Added exchange rate feature for currencies. - IMPORTANT: Categories management has been redesigned - following standard data tables structure. New manage categories page created with standalone edit category page. Old category management redesigned and moved to "Quick management" section. Category bulk actions support enable, disable, delete, price field and configurable expiration lengths. Settings > General > Category settings: choose which expiration options appear in bulk actions (3 days to 48 months). Defaults: 14 days, 1 month, 3 months. Months convert to days (30 per month; 12/24/36/48 months use 365 days per year). - IMPORTANT: Custom fields management has been redesigned - following standard data tables structure. New manage custom fields page created with standalone edit category page. Old custom fields redesigned and moved to "Quick management" section. - IMPORTANT: Static pages url is now generated based on current user locale title - not by internal page anymore. Static page urls are now localized and match to content locale they present. - Languages table has been redesign. - Sigma theme removal of deprecated donate box and multisite reference. - Added new filter item_delete_image that can help manage item image removals. - Fixed built-in auto-cron so it does not run on every page load: it uses MINUTELY t_cron (at most once per 5 minutes), claims d_next_exec before the self-request, never nests another cron self-request, and updates t_cron before cron job logic. - Osclass unzip will now use ZipArchive::CREATE insetead of ZipArchive::OVERWRITE (4). Osclass will now support also other types of zip archives (with back slashes \ and missing explicit folder definitions insize zip). - Fix missing space in backoffice header links title. - Fix in ajax uploader on function getOriginalName if file is invalid. - Removed legacy meta tags in front & back. - Removed location as required fields in backoffice - Hooks in validation forms now does not require comma to be issued to continue with rules. - Fixed problems with jquery validate in backoffice - item form. Added additional-methods js library for jquery validate. - Location fields are no more required in backoffice. - Fixed overrides of canonical url on search page. - Fixed listing and category URLs using a slug from another locale instead of the current user locale. - Enhance canonical tag keeps the current locale. It no longer forces the default language code. - Duplicate category slugs now use a hyphen suffix (for-sale-1) instead of an underscore (for-sale_1). Listing URLs rewrite an existing uniqueness suffix on output; old underscore URLs still resolve. Stored slugs are not rewritten on upgrade. - Hreflang tags generate a listing URL and a search URL for each enabled front-office locale (category slugs and listing title for that locale). Other pages still swap only the language prefix. - Long-format language codes in the URL (en-us) no longer send listing clicks back to the home page. The backoffice Home link opens the front office in the site default locale. - Fixed extra white spaces on Sigma theme being added on some pages (before html tags). - Redis cache fixed issues. - jQuery UI default asset has been downgraded from v1.10.2 to v1.8.24 that is more compatible with jquery version osclass use in backoffice. - Added new backoffice feature Automatic Cleanup Settings into general settings in backoffice. - Added new backoffice feature "Send message" that allows to e-mail users from backoffice via popup. - Cascading cateogries select on publish page, when publishing in parent categories is not enabled, jquery validation will not enforce selection of most detailed category level (dynamic). - Numerous small updates and improvements, minor error notices fixed. - Backoffice & core code has been refactored and optimized. - Added new feature in backoffice widgets - maximize box that enlarge given box to full page view. - Tools > Configuration info in backoffice has been expanded with additional details. - Manage admins page has been optimized and new row action added - link to Manage action logs to see logs by admin. - New option added into Settings > Optimization: Database optimization that allow to optimize all Osclass database tables automatically (check, analyze, optimize, flush). - Regenerate images section and operations has been optimized and now works smoothly in small batches and can handle thousands of images without negative user experience. Added settings to control batch size for both actions - regenerate & refresh images. - Edit comments page has been improved with various action buttons. New feature to add comment from backoffice. - Tools > Backup data has been optimized and now show previous backups with download & delete actions. - Tools > Statistics has been added, now merge Location & Category statistics and add User statistics as well to be re-calculated. Layout has been optimized as well. - Enhanced security on latest search feature + improved stop words validation. - When updating expiration date, Osclass will now check date correctness and completeness and avoid updating item with invalid date. - Added install recommendation and handler functions for mb_strlen and mb_substr functions to be available in PHP. Osclass 8.3.1 2026-01-13 ------------------------ - IMPORTANT: Osclass now fully supports PHP 8.5 version. This includes update of all major libraries used by Osclass - incl. PHP mailer. - Fixed backoffice bug with search items (by item id). - Enhanced curl with headers and descriptive information. - Enhancements in Debug/Error log section in backoffice: It is now possible to select any file ending with .log located in oc-content folder (also osclass pay logs). UI improvements. - Major rework on Session and Cookie classes and way how these are defined and stored in browser. Update may cause users & admins to be logged out from Osclass. All cookies are now stored with "httponly" set to True, means they cannot be read by Javascript. In order to be able to read Cookie in Javascript, it's key must contain one of following: "_unsercure", "_unsec", "_js" or start with "ocjs_" and cannot start with "oc_", example: my_id_unsercure, secret_key_unsecure. Besides that, all cookies, when SSL is used, has "secure" set to True, so they can only be transmitted over HTTPS. These changes will significantly increase Osclass security and protects the cookie from being exposed to man-in-the-middle attacks on unencrypted connections, as well as cross-site scripting. New standardized functions created to manage cookies: _get, _set, _drop. This fix specific issues when non-friendly urls are stored into cookies causing problems to persist stable cookies like Saved Items Plugin. Cookies are now by default encoded, to avoid issues with mod_security and WAF (Access denied with code 403, ... Cookie outside range: 1-255, ...Invalid character in request). Cookies key (name) is sanitized and unsupported characters are removed from key. - Emoji update: Osclass will try to convert whole database into utf8mb4 for better compatiblity. This includes change in connection, database and table charset & collate (utf8mb4 / utf8mb4_unicode_ci). All these are changed by Osclass upgrade, but this process may be extensive! By default Osclass convert everything in upgrade process. If you getting errors for any reason, set constant UPGRADE_UTF8MB4_SOFT to do just soft charset/collate upgrade. In that case only some tables are converted and others may require manual upgrage in PhpMyAdmin. Use function osc_utf8mb4_sqls() to see list of remaining SQLs or just execute these directly on database (may take a while). - New helper functions osc_{get/set/drop}_{view/cookie/session/param}. - Improved management and work with sorting types on search page. - Search controller now use "iPerPage" param instead of "iPagesize", besides that allows logged admin to set also higher values (beyond general setting). - Added new functions osc_get_prev_url() and osc_get_next_url() to be able to generate prev/next meta tags (head). - Correction of osc_search_url() to no include iPage into URL in case it's <= 1. - Fixed possible incorrect redirects after user login, caused by invalid URLs being saved into user navigation history. - Comment settings link is now visible in Settings menu. - Fixed bug with cache and search page, where cache cause pagination not to work. Improved cache key generation on search page, added fix to mask dynamic time & timestamp values. Added more conditions, filters and hooks included in key generation (does not apply to alerts). - New feature in backoffice - Email templates, that checks and removes duplicated email templates created as mistake (usually failed plugin uninstall/reinstall). - It is now possible to create theme routes, where file points to theme directory, or to file in "custom" or "plugins" folder in theme directory. - Fixed bug with user stats calculation (item counts) those now only include active listings and active comments. - Fixed bug that incorrectly shown if email is visible on item page or not (in item form). - New dedicated function osc_static_page_url_from_page($page, $locale = '') for static page URL generation created, that works in similar way as function for item URLs - New layout for locations management in backoffice to improve user experience. - Fixed bug on Sigma theme, when posting of comments for unregistered was disabled, whole comment section was hidden. Now only form to post comment is hidden. - Fixed bug when it was possible to post comment using different email then email of logged user. - When subdomain type is enabled/disabled, frontend cookies are dropped to avoid problems with duplicated cookies (different cookie domains). Users may also need to clean browser cookies. - Fixed bug when user items url was returning 404 page after upgrade to Osclass 8.3.0. - New warnings and checks added into Osclass core those will notify admin on home page e.g. about hourly cron not running properly or having built-in cron enabled. - Added 2 new functions to help quickly add/drop email templates: osc_email_template_create($internal_name, $title, $text), osc_email_template_delete($internal_name). - Fixed & improved feature that enable users to resend validation (activation) link. Link can be sent just once a 5 minutes. - Comment reply email notification will now be sent to author of comment that user is replying to - if it's not identical email. - Added support for routes super parameter "sParams", where value of 1 merged sParams are exploded into separate params. sParams=param1,value1/param2,value2/param3,value3/... ==> param1=value1, param2=value2, param3,value3... This helps to easily create and support versatile URLs like custom plugin search, where there are multiple optional parameters and creating many routes does not make sense. - Added support for routes query parameters, those are correctly stored as param values. If there are params at the end of url in form: ?param1=value1¶m2=value2&... these are stored as param1=value1, param2=value2, etc. Before, this query string would likely be attached to last specified route param, if exists. - Improved cleaning of static files cache (css, js) when optimization is enabled. - Improved API key validation and other features related to external URL response. - Added extra action buttons to user profile edit in backoffice. - When searching plugin in backoffice, search term is persistent (stored in session) and not automatically cleaned. This helps to search & manage plugins, so after plugin action same selection of plugins is shown. - Added option to block site indexing by search engines in Backoffice > Settings > Block indexing. - Implemented order by "relevance" on search page, when search pattern is not empty. - Fixed pagination problem with custom search rules. - Added option to manually sync languages added into Osclass with file system (po files). - Upgrade process (automated from osclass-classifieds.com) will now handle if oc-admin or oc-content folder is renamed. For manual upgrades (by uploading & extracting zip), manual folder name change is required. - Improved TinyMCE editor on mobile devices. - Temp folder (oc-content/uploads/temp) is now regularly cleaned using daily cron. - Action logs improvements. - Alerts are not send to banned email address anymore. - Fixed issue with sending alert emails to non-registered users.