No description
- 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 |
||
|---|---|---|
| assets | ||
| bin | ||
| config | ||
| database | ||
| docs | ||
| includes | ||
| languages | ||
| logs | ||
| migrations | ||
| routes | ||
| src | ||
| views/admin/group-admin | ||
| .gitignore | ||
| CHANGELOG.md | ||
| docepasos-services-manager.php | ||
| PANELL_ADMIN_GRUPS.md | ||
| README.md | ||
| TODO.md | ||
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'usuarigroup_id: ID del gruprole: owner | memberstatus: active | inactivedate_approved: Data d'aprovació
wp_dpsm_group_services
Configuració de serveis per grup:
group_id: ID del grupservice_type: rocketchat | nextcloud | opencollective | bookmarksapi_url: URL de l'APIapi_key: Clau d'APIsettings: Configuració JSON
wp_dpsm_membership_requests
Sol·licituds de membresia:
user_id: ID de l'usuarigroup_id: ID del grupstatus: pending | approved | rejectedmessage: Missatge de sol·licituddate_requested: Data de sol·licitud
🚀 Instal·lació
- Pujar el plugin a
/wp-content/plugins/docepasos-services-manager/ - Activar el plugin des del menú de WordPress
- El plugin crearà automàticament:
- Taules de base de dades
- Rols personalitzats
- Pàgines necessàries
- Configuració per defecte
⚙️ Configuració
Configuració Inicial
- Anar a DocePasos > Configuració
- Activar els serveis desitjats
- Configurar estructura de subdominios
Crear un Grup
- Anar a DocePasos > Afegir Nou
- Completar:
- Títol del grup
- Descripció
- Slug (per subdomini)
- Serveis actius
- Visibilitat
- 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
- Selecciona un usuari de la llista desplegable
- Escull el rol: Propietari o Membre
- 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_groupsmanage_dpsm_servicesmanage_dpsm_membershipsview_dpsm_analytics
Propietari de Grup
manage_own_groupmanage_group_membersmanage_group_servicesview_group_analytics
Usuari de Grup
use_group_servicesview_group_info
Usuari Registrat
join_videoconferencesrequest_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