No description
Find a file
Raul Magdalena cd14273289 Fix: Correccions crítiques post v0.1.0
- Fix sintaxi GroupService.php: tancament duplicat de classe
- View helper: suport per views/ i src/Views/ (fallback)
- Autoloader: afegit logging per debug de classes no trobades
- TODO.md actualitzat amb tasques completades
2026-01-01 17:52:18 +01:00
assets Afegit metabox millorat per gestionar membres i propietaris 2026-01-01 01:18:18 +01:00
bin v0.1.0: Panel d'Administració de Grups complet 2026-01-01 17:44:30 +01:00
config v0.1.0: Panel d'Administració de Grups complet 2026-01-01 17:44:30 +01:00
database v0.1.0: Panel d'Administració de Grups complet 2026-01-01 17:44:30 +01:00
docs v0.1.0: Panel d'Administració de Grups complet 2026-01-01 17:44:30 +01:00
includes Fix: Correccions crítiques post v0.1.0 2026-01-01 17:52:18 +01:00
languages v0.1.0: Panel d'Administració de Grups complet 2026-01-01 17:44:30 +01:00
logs v0.1.0: Panel d'Administració de Grups complet 2026-01-01 17:44:30 +01:00
migrations v0.1.0: Panel d'Administració de Grups complet 2026-01-01 17:44:30 +01:00
routes v0.1.0: Panel d'Administració de Grups complet 2026-01-01 17:44:30 +01:00
src Fix: Correccions crítiques post v0.1.0 2026-01-01 17:52:18 +01:00
views/admin/group-admin v0.1.0: Panel d'Administració de Grups complet 2026-01-01 17:44:30 +01:00
.gitignore Initial commit: Arquitectura MVC completa v0.0.1 2026-01-01 14:17:38 +01:00
CHANGELOG.md v0.1.0: Panel d'Administració de Grups complet 2026-01-01 17:44:30 +01:00
docepasos-services-manager.php v0.1.0: Panel d'Administració de Grups complet 2026-01-01 17:44:30 +01:00
PANELL_ADMIN_GRUPS.md v0.1.0: Panel d'Administració de Grups complet 2026-01-01 17:44:30 +01:00
README.md Actualitzat README amb documentació completa de gestió de membres 2026-01-01 01:19:53 +01:00
TODO.md Fix: Correccions crítiques post v0.1.0 2026-01-01 17:52:18 +01:00

DocePasos Services Manager

Plugin de WordPress per a la gestió completa de grups i serveis a DocePasos.org.

📋 Característiques

Sistema de Rols

  • Administrador: Accés complet a tots els grups i configuració
  • Propietari de Grup: Gestiona els seus grups, membres i serveis
  • Usuari de Grup: Accés als serveis dels grups on és membre
  • Usuari Registrat: Accés només a videoconferències públiques

Gestió de Grups

  • Custom Post Type per a grups amb metaboxes personalitzades
  • Assignació de slug únic per cada grup (subdomini)
  • Configuració de serveis actius per grup
  • Gestió de visibilitat (públic/privat)
  • Sistema d'aprovació de membres opcional

Serveis Integrats

  • Rocket.Chat: Xat en temps real
  • Nextcloud: Emmagatzematge al núvol
  • Nextcloud Bookmarks: Gestió de favorits
  • OpenCollective: Gestió financera
  • Videoconferències: Sessions de vídeo públiques

Sistema de Membresies

  • Sol·licitud d'accés a grups
  • Aprovació/rebuig per propietaris
  • Notificacions per email
  • Gestió de membres
  • Històric de sol·licituds

Perfils d'Usuari

  • Avatar personalitzat
  • Camps addicionals (telèfon, organització, ubicació)
  • Llista de grups on pertany l'usuari
  • Dashboard personalitzat

📁 Estructura del Plugin

docepasos-services-manager/
├── admin/
│   ├── class-admin.php              # Menús i pàgines d'administració
│   └── views/
│       ├── dashboard.php             # Dashboard principal
│       ├── requests.php              # Gestió de sol·licituds
│       └── settings.php              # Pàgina de configuració
├── includes/
│   ├── class-autoloader.php         # Autoloader de classes
│   ├── class-core.php               # Classe principal del plugin
│   ├── class-activator.php          # Activació (taules DB, rols)
│   ├── class-deactivator.php        # Desactivació
│   ├── class-roles.php              # Gestió de rols i permisos
│   ├── class-groups.php             # CPT de grups
│   ├── class-membership.php         # Sistema de membresies
│   ├── class-profile.php            # Perfils d'usuari
│   └── integrations/
│       ├── class-rocketchat.php     # API Rocket.Chat
│       ├── class-nextcloud.php      # API Nextcloud
│       ├── class-opencollective.php # Integració OpenCollective
│       └── class-bookmarks.php      # Nextcloud Bookmarks
├── public/
│   ├── class-frontend.php           # Shortcodes i frontend
│   └── views/
│       └── user-dashboard.php       # Dashboard d'usuari
├── assets/
│   ├── css/
│   │   ├── public.css               # Estils públics
│   │   └── admin.css                # Estils d'administració
│   └── js/
│       ├── public.js                 # Scripts públics
│       └── admin.js                  # Scripts d'administració
└── docepasos-services-manager.php   # Fitxer principal

🗄️ Base de Dades

Taules Creades

wp_dpsm_memberships

Gestió de relacions usuari-grup:

  • user_id: ID de l'usuari
  • group_id: ID del grup
  • role: owner | member
  • status: active | inactive
  • date_approved: Data d'aprovació

wp_dpsm_group_services

Configuració de serveis per grup:

  • group_id: ID del grup
  • service_type: rocketchat | nextcloud | opencollective | bookmarks
  • api_url: URL de l'API
  • api_key: Clau d'API
  • settings: Configuració JSON

wp_dpsm_membership_requests

Sol·licituds de membresia:

  • user_id: ID de l'usuari
  • group_id: ID del grup
  • status: pending | approved | rejected
  • message: Missatge de sol·licitud
  • date_requested: Data de sol·licitud

🚀 Instal·lació

  1. Pujar el plugin a /wp-content/plugins/docepasos-services-manager/
  2. Activar el plugin des del menú de WordPress
  3. El plugin crearà automàticament:
    • Taules de base de dades
    • Rols personalitzats
    • Pàgines necessàries
    • Configuració per defecte

⚙️ Configuració

Configuració Inicial

  1. Anar a DocePasos > Configuració
  2. Activar els serveis desitjats
  3. Configurar estructura de subdominios

Crear un Grup

  1. Anar a DocePasos > Afegir Nou
  2. Completar:
    • Títol del grup
    • Descripció
    • Slug (per subdomini)
    • Serveis actius
    • Visibilitat
  3. Assignar propietaris inicials

Configurar Serveis Externs

Rocket.Chat

// A la configuració del grup, afegir:
- URL API: https://chat.nom-grup.docepasos.org
- Token d'API: [obtenir des de Rocket.Chat]
- User ID: [obtenir des de Rocket.Chat]

Nextcloud

// A la configuració del grup, afegir:
- URL API: https://cloud.nom-grup.docepasos.org
- Usuari API: [usuari admin Nextcloud]
- Password: [contrasenya admin Nextcloud]

<EFBFBD> Gestió de Membres i Propietaris

Des del Dashboard de WordPress

Quan edites un grup, trobaràs el metabox "Membres del Grup" amb les següents opcions:

Afegir nous membres

  1. Selecciona un usuari de la llista desplegable
  2. Escull el rol: Propietari o Membre
  3. Clica el botó "Afegir"

Gestionar membres existents

  • Canviar rol: Clica el botó "→ Membre" o "👑 Propietari" per canviar el rol
  • Eliminar: Clica la ✖ per eliminar un membre del grup

Des de la línia de comandes

Script Bash (add-group-owner.sh)

# Afegir un propietari a un grup
./add-group-owner.sh username grup-slug

# Exemple
./add-group-owner.sh raul tecnologia

WP-CLI directament

# Executar l'script d'exemple
wp eval-file add-owner-example.php

Des del codi PHP

Afegir un propietari

$membership = \DPSM\Core::get_instance()->get_component('membership');

$result = $membership->add_group_owner(
    $user_id,           // ID de l'usuari
    $group_id,          // ID del grup
    get_current_user_id() // Qui l'afegeix
);

if (is_wp_error($result)) {
    echo $result->get_error_message();
} else {
    echo 'Propietari afegit correctament';
}

Funcions auxiliars disponibles (add-owner-example.php)

// Afegir propietari per nom d'usuari i slug de grup
dpsm_add_owner_by_login('username', 'grup-slug');

// Afegir múltiples propietaris a un grup
dpsm_add_multiple_owners('grup-slug', ['user1', 'user2', 'user3']);

Eliminar un membre

$membership = \DPSM\Core::get_instance()->get_component('membership');
$result = $membership->remove_member($user_id, $group_id);

Obtenir membres d'un grup

$roles = \DPSM\Core::get_instance()->get_component('roles');

// Obtenir només propietaris
$owners = $roles->get_group_members($group_id, 'owner');

// Obtenir només membres regulars
$members = $roles->get_group_members($group_id, 'member');

// Obtenir tots els membres
$all_members = $roles->get_group_members($group_id);

<EFBFBD>📝 Shortcodes

[dpsm_user_dashboard]

Mostra el dashboard personalitzat de l'usuari amb els seus grups.

[dpsm_user_profile]

Formulari d'edició del perfil d'usuari.

[dpsm_groups_list]

Llista de grups disponibles.

Atributs:

  • per_page: Nombre de grups per pàgina (default: 12)
  • show_private: Mostrar grups privats (default: false)

[dpsm_group_services]

Mostra els serveis actius d'un grup.

Atributs:

  • group_id: ID del grup (default: grup actual)

🔌 Hooks i Filtres

Actions

// Quan s'aprova una membresia
do_action('dpsm_membership_approved', $user_id, $group_id, $approver_id);

// Quan es rebutja una membresia
do_action('dpsm_membership_rejected', $user_id, $group_id, $rejecter_id);

// Quan s'elimina un membre
do_action('dpsm_member_removed', $user_id, $group_id, $remover_id);

// Quan s'actualitza un perfil
do_action('dpsm_profile_updated', $user_id);

Filters

// Modificar URL d'OpenCollective
apply_filters('dpsm_group_opencollective_url', $url, $group_id);

🌐 Estructura de Subdominios

Cada grup té els seus serveis en subdominios:

Grup: "exemple"
├── chat.exemple.docepasos.org      → Rocket.Chat
├── cloud.exemple.docepasos.org     → Nextcloud
├── bookmarks.exemple.docepasos.org → Bookmarks
├── collective.exemple.docepasos.org → OpenCollective
└── meet.exemple.docepasos.org      → Videoconferències

🔐 Permisos i Capabilities

Administrador

  • manage_dpsm_groups
  • manage_dpsm_services
  • manage_dpsm_memberships
  • view_dpsm_analytics

Propietari de Grup

  • manage_own_group
  • manage_group_members
  • manage_group_services
  • view_group_analytics

Usuari de Grup

  • use_group_services
  • view_group_info

Usuari Registrat

  • join_videoconferences
  • request_group_membership

🛠️ Desenvolupament

Afegir Nova Integració

namespace DPSM\Integrations;

class NouServei {
    public function __construct() {
        add_action('dpsm_membership_approved', [$this, 'sync_user'], 10, 3);
    }
    
    public function sync_user($user_id, $group_id, $approver_id) {
        // Implementar sincronització
    }
    
    public static function get_service_url($group_id) {
        $slug = get_post_meta($group_id, '_dpsm_group_slug', true);
        return "https://servei.{$slug}.docepasos.org";
    }
}

Registrar la Integració

A class-core.php, afegir a init_integrations():

$this->components['nou_servei'] = new Integrations\NouServei();

📧 Suport

Per qüestions o problemes, contactar amb l'equip de DocePasos.

📄 Llicència

GPL v2 or later

🔄 Changelog

Vegeu CHANGELOG.md per a l'historial complet de canvis.

0.0.1 (2025-12-31)

  • Llançament inicial
  • Sistema de grups i membresies
  • Integracions amb serveis externs
  • Dashboards personalitzats
  • Sistema de perfils amb avatars

Desenvolupat per DocePasos Team | https://docepasos.org