Keep and maintain your own magazines collection
Find a file
Raul Magdalena 14e6ba71c0 pushing
2026-02-26 15:19:49 +01:00
assets pushing 2026-02-26 15:19:49 +01:00
bin Release 0.1.0 - First Stable Version 🎉 2026-01-24 03:52:46 +01:00
controllers pushing 2026-02-26 15:19:49 +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 pushing 2026-02-26 15:19:49 +01:00
languages pushing 2026-02-26 15:19:49 +01:00
migrations v0.0.26: Sistema reusable de millora de dades incomplertes 2026-01-30 06:11:03 +01:00
models pushing 2026-02-26 15:19:49 +01:00
scripts Fix: Add rewrite rule for home page to redirect to magazines listing 2026-01-30 06:51:17 +01:00
services v0.1.1: Complete code cleanup & refactorization from junction table to user ownership model 2026-02-14 14:53:34 +01:00
tests v0.1.1: Complete code cleanup & refactorization from junction table to user ownership model 2026-02-14 14:53:34 +01:00
views pushing 2026-02-26 15:19:49 +01:00
.gitignore v0.1.2: Articles badge, database tools, and PHP 8.2+ fixes 2026-01-11 22:28:19 +01:00
.phpunit.result.cache Release 0.1.0 - First Stable Version 🎉 2026-01-24 03:52:46 +01:00
ARCHITECTURE.md v0.0.22 - Migració completa a nova arquitectura 2025-12-17 04:32:58 +01:00
CHANGELOG.md v0.1.1: Complete code cleanup & refactorization from junction table to user ownership model 2026-02-14 14:53:34 +01:00
composer.json Release 0.1.0 - First Stable Version 🎉 2026-01-24 03:52:46 +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
flush-rewrite-rules.php Release 0.1.0 - First Stable Version 🎉 2026-01-24 03:52:46 +01:00
LICENSE Initial commit v0.0.1 - Complete Magazines Collection plugin 2025-12-09 21:46:51 +01:00
magazines-collection.php pushing 2026-02-26 15:19:49 +01:00
phpunit.xml Release 0.1.0 - First Stable Version 🎉 2026-01-24 03:52:46 +01:00
README.md v0.0.33: Public access, gradient styling, green beta ribbon 2025-12-23 16:24:16 +01:00
ROADMAP.md v0.1.1: Complete code cleanup & refactorization from junction table to user ownership model 2026-02-14 14:53:34 +01:00
SECURITY-AUDIT-REPORT.md Release 0.1.0 - First Stable Version 🎉 2026-01-24 03:52:46 +01:00
STRUCTURE.md chore: prepare 0.0.34 release 2025-12-24 19:39:20 +01:00
TODO.md pushing 2026-02-26 15:19:49 +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.