29bc7ead7e
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: Cascade Main → Dev / Cascade main → branches (push) Successful in 2s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
Community profiles, connections, and activity streams for Joomla — replacing Community Builder with native Joomla 5/6 architecture. Core platform: - Profiles with custom fields (EAV), avatars, and bio - Bidirectional connections with approval workflow - User lists/directory configurations - DI container pattern, SubscriberInterface, PSR-4 namespaces Registration Guard (ported from MokoCBRegGuard): - 8 spam detection checks: IP frequency, StopForumSpam, DNSBL, subnet burst, email domain, username patterns, IP reputation, birthday - Weighted risk scoring with configurable thresholds - Dual-mode: blocks high-risk before save, logs medium-risk after save - Email notifications for flagged registrations Field Privacy (ported from MokoCBPrivacy): - Per-user Facebook-style field visibility overrides - Privacy levels: public, registered, friends, private - Floor enforcement: users can only tighten, never loosen admin defaults - GDPR-ready export and delete methods Activity Stream (Facebook-style): - User-authored status posts with per-post visibility - Facebook 6 reactions (like, love, haha, wow, sad, angry) - 2-level threaded comments (comments + replies) - Three feed types: news feed, community, profile - Denormalized like/comment counts Discussion Forum: - Categories with sub-categories and ordering - Topics with sticky, locked, status, view counts - Threaded replies with post likes - Read tracking via high-water mark (unread indicators) - Activity stream integration for new topics/replies User Groups (Facebook Groups / CB GroupJive): - Three group types: open, closed, secret - Role hierarchy: owner, admin, member - Membership state machine: pending, active, invited, banned - Group wall with posts, likes, flat comments - Member management with approve/remove - Secret groups hidden from non-member discovery Infrastructure: - 21 database tables with proper indexes - 5 versioned SQL migrations (01.00.00–01.04.00) - PHPStan level 5, Joomla coding standards - 13 Gitea CI workflows - Atomic user cleanup (all data removed in transaction on deletion) Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
33 lines
1.2 KiB
Plaintext
33 lines
1.2 KiB
Plaintext
# Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
#
|
|
# PHPStan configuration for Joomla extension repositories.
|
|
# Extends the base MokoStandards config and adds Joomla framework class stubs
|
|
# so PHPStan can resolve Factory, CMSApplication, User, Table, etc.
|
|
# without requiring a full Joomla installation.
|
|
|
|
parameters:
|
|
level: 5
|
|
|
|
paths:
|
|
- src
|
|
|
|
excludePaths:
|
|
- vendor
|
|
- node_modules
|
|
|
|
# Joomla framework stubs — resolved via the enterprise package from vendor/
|
|
stubFiles:
|
|
- vendor/mokoconsulting-tech/enterprise/templates/stubs/joomla.php
|
|
|
|
# Suppress errors that are structural in Joomla's service-container architecture
|
|
ignoreErrors:
|
|
# Joomla's service-based dependency injection returns mixed from getApplication()
|
|
- '#Cannot call method .+ on Joomla\\CMS\\Application\\CMSApplication\|null#'
|
|
# Factory::getX() patterns are safe at runtime even when nullable in stubs
|
|
- '#Call to static method [a-zA-Z]+\(\) on an interface#'
|
|
|
|
reportUnmatchedIgnoredErrors: false
|
|
checkMissingIterableValueType: false
|
|
checkGenericClassInNonGenericObjectType: false
|