Keep and maintain your own magazines collection
Find a file
Raul Magdalena 468f49bd54 v0.0.55: Collections index view, topics filtering, and translations
- Added /collections/ route with user_collection filtering
- Fixed topics filtering by correcting field names (topic, not topic_name)
- Fixed collections access control for public collections
- Fixed collection detail view issue retrieval (added_date field)
- Added collection ID to permalinks for unique identification
- Added Spanish translations for global search
- Added topics count to user collection stats
2026-01-17 05:31:32 +01:00
assets v0.0.55: Collections index view, topics filtering, and translations 2026-01-17 05:31:32 +01:00
controllers v0.0.55: Collections index view, topics filtering, and translations 2026-01-17 05:31:32 +01:00
database/migrations v0.1.2: Articles badge, database tools, and PHP 8.2+ fixes 2026-01-11 22:28:19 +01:00
docs v0.0.17: Breadcrumb navigation, issue covers, pagination and performance improvements 2025-12-14 13:51:07 +01:00
includes v0.0.55: Collections index view, topics filtering, and translations 2026-01-17 05:31:32 +01:00
languages v0.0.55: Collections index view, topics filtering, and translations 2026-01-17 05:31:32 +01:00
models v0.0.55: Collections index view, topics filtering, and translations 2026-01-17 05:31:32 +01:00
services v0.0.23: Fix AJAX parameters, SQL queries, implement user filtering 2025-12-19 08:04:10 +01:00
tests v0.0.53: Complete database schema synchronization after rollback 2026-01-16 07:51:10 +01:00
views v0.0.55: Collections index view, topics filtering, and translations 2026-01-17 05:31:32 +01:00
.gitignore v0.1.2: Articles badge, database tools, and PHP 8.2+ fixes 2026-01-11 22:28:19 +01:00
ARCHITECTURE.md v0.0.22 - Migració completa a nova arquitectura 2025-12-17 04:32:58 +01:00
CHANGELOG.md v0.0.55: Collections index view, topics filtering, and translations 2026-01-17 05:31:32 +01:00
composer.json Add automatic update system via Plugin Update Checker 2025-12-31 08:20:37 +01:00
composer.phar v0.0.53: Add three-column layout from v0.1.1 (no database changes) 2026-01-16 06:39:07 +01:00
LICENSE Initial commit v0.0.1 - Complete Magazines Collection plugin 2025-12-09 21:46:51 +01:00
magazines-collection.php v0.0.55: Collections index view, topics filtering, and translations 2026-01-17 05:31:32 +01:00
phpunit.xml v0.0.22 - Migració completa a nova arquitectura 2025-12-17 04:32:58 +01:00
README.md v0.0.33: Public access, gradient styling, green beta ribbon 2025-12-23 16:24:16 +01:00
ROADMAP.md feat: Add user collections system (v0.0.18) 2025-12-16 19:52:36 +01:00
STRUCTURE.md chore: prepare 0.0.34 release 2025-12-24 19:39:20 +01:00
TODO.md v0.0.55: Collections index view, topics filtering, and translations 2026-01-17 05:31:32 +01:00
update-info.json v0.0.55: Collections index view, topics filtering, and translations 2026-01-17 05:31:32 +01:00

Magazines Collection

A comprehensive WordPress plugin to manage and maintain your own magazines collection and periodical publications.

Description

Magazines Collection is a complete management system for cataloging magazines, issues, articles, and authors. The plugin provides both an administrative interface for content management and a public-facing interface for readers.

Features

Core Functionality

  • Complete Magazine Management

    • Catalog magazines with detailed information (name, description, ISSN)
    • Configure editors, languages, periodicity, and topics
    • Organize magazines by multiple topics (many-to-many relationship)
  • Issue Management

    • Track individual issues with volume and number
    • Upload cover images for each issue
    • Manage publication dates
    • Link issues to their parent magazines
  • Article Management

    • Catalog articles within issues
    • Full article information: title, abstract, pages
    • Associate articles with authors
    • Tag articles with multiple labels (many-to-many relationship)
  • Author Management

    • Maintain author profiles
    • Full biography support with rich text editor (TinyMCE)
    • Track all publications by author

User Roles & Permissions

The plugin implements three user roles with different capabilities:

  • Administrator

    • Full access to all features
    • Can create, edit, and delete all content
    • Access to settings and configuration
    • Capabilities: read_magazines, edit_magazines, delete_magazines
  • Author (Editor)

    • Can view and edit content
    • Cannot delete content
    • No access to settings
    • Capabilities: read_magazines, edit_magazines
  • Subscriber (Viewer)

    • Read-only access through public interface
    • Cannot edit or create content
    • Clean, modern reading interface
    • Capabilities: read_magazines

Admin Interface (Administrators & Authors)

  • Full MVC architecture with separation of concerns
  • WordPress-native admin interface
  • CRUD operations for all entities
  • Form validation and error handling
  • Success/error messages with transients
  • Inline forms for many-to-many relationships
  • AJAX-powered dynamic form elements
  • WordPress media library integration
  • Search and filter capabilities
  • Pagination for large datasets

Public Interface (Viewers)

  • Modern, clean reading interface
  • Responsive design with CSS Grid
  • Navigation between related content:
    • Magazines → Issues → Articles → Authors
  • Real-time search functionality
  • Cover image display for issues
  • Full article abstracts and keywords
  • Author biographies and publications list
  • User info and logout functionality

Technical Features

  • MVC Architecture

    • Models: Data access layer with CRUD operations
    • Views: Separate admin and public templates
    • Controllers: Request handling and business logic
  • Database Structure

    • 9 custom tables with proper relationships
    • Foreign key constraints
    • CASCADE and SET NULL operations
    • Optimized indexes
  • Internationalization

    • Ready for translation
    • Text domain: magazines-collection
    • Included languages: English (default), Spanish, Catalan
    • Compiled .mo files included
  • Security

    • WordPress nonces for form submissions
    • Capability checks on all operations
    • Input sanitization and validation
    • SQL injection prevention with prepared statements
    • XSS protection with output escaping
  • WordPress Integration

    • Follows WordPress coding standards
    • PHPDoc documentation throughout
    • Uses WordPress APIs (wpdb, transients, media library)
    • Proper activation/deactivation hooks
    • Clean uninstall with data removal

Installation

  1. Upload the magazines-collection folder to /wp-content/plugins/
  2. Activate the plugin through the 'Plugins' menu in WordPress
  3. The plugin will automatically create the necessary database tables
  4. Access the plugin through the 'Magazines' menu in the admin sidebar

Usage

For Administrators

  1. Navigate to Magazines > Settings to configure:

    • Editors
    • Periodicity options
    • Languages
    • Topics
    • Article labels
  2. Navigate to Magazines > Authors to add authors with biographies

  3. Create magazines with all required information

  4. Add issues to magazines with cover images

  5. Create articles within issues, associating them with authors and labels

For Authors/Editors

  1. Access the Magazines menu
  2. Create and edit magazines, issues, articles, and authors
  3. Cannot access settings or delete content

For Viewers/Subscribers

  1. Access the Magazines menu
  2. Automatically redirected to public reading interface
  3. Browse magazines, issues, articles, and authors
  4. Use search to find specific content
  5. Navigate between related content

Views Architecture

The plugin implements a clear separation between administrative and public-facing views:

views/
├── admin/              # Backend/administrative views
│   ├── articles/
│   ├── magazines/
│   ├── issues/
│   ├── authors/
│   ├── editors/
│   ├── topics/
│   ├── labels/
│   ├── languages/
│   ├── periodicity/
│   ├── collections/
│   ├── dashboard/
│   └── components/
└── public/             # Frontend/public-facing views
    ├── articles/
    ├── magazines/
    ├── issues/
    ├── authors/
    ├── editors/
    ├── topics/
    ├── labels/
    ├── languages/
    ├── periodicities/
    ├── countries/
    ├── collections/
    └── components/

Admin Views Structure

Administrative views follow a consistent CRUD pattern:

  • index.php: List/table view with all entities
  • create.php: Form to create a new entity
  • edit.php: Form to edit an existing entity
  • view.php: Read-only detailed view of an entity

Loaded via controllers:

include MAGAZINES_COLLECTION_PATH . 'views/admin/articles/create.php';

Public Views Structure

Public-facing views use a simpler pattern:

  • index.php: List/archive view for browsing
  • detail.php: Single entity detail view

Loaded via Template Loader:

'magazines' => 'magazines/index.php',
'magazine' => 'magazines/detail.php',

Components

Reusable components are organized separately:

  • admin/components/: Admin-specific shared components (pagination, data tables, headers)
  • public/components/: Public-facing shared components (templates, navigation, grids)

This architecture ensures:

  • Clear separation of concerns
  • Better code organization
  • Easier maintenance and scaling
  • Consistent patterns throughout the plugin
  • Clean security boundaries

Database Schema

The plugin creates 9 tables:

  • wp_mc_editors - Magazine publishers/editors
  • wp_mc_periodicity - Publication frequency
  • wp_mc_language - Publication languages
  • wp_mc_topics - Magazine topics/categories
  • wp_mc_labels - Article keywords/tags
  • wp_mc_magazines - Main magazine catalog
  • wp_mc_magazine_topics - Many-to-many: magazines ↔ topics
  • wp_mc_authors - Article authors
  • wp_mc_issues - Magazine issues
  • wp_mc_articles - Individual articles
  • wp_mc_article_labels - Many-to-many: articles ↔ labels

Requirements

  • WordPress 5.0 or higher
  • PHP 7.0 or higher
  • MySQL 5.6 or higher

Changelog

See CHANGELOG.md for detailed version history.

License

This plugin is licensed under the GPL v2 or later.

Author

Created with ❤️ for magazine collectors and publishers.

Support

For support, please open an issue in the repository.