Skip to content

PulseLMS Administrator Guide

Complete System Administration Documentation

Welcome to the comprehensive Administrator Guide for PulseLMS. This document provides detailed instructions for managing, configuring, and maintaining your learning management system. As an administrator, you have access to powerful tools for controlling every aspect of the platform.


Table of Contents

  1. Administrator Overview and Dashboard
  2. Site Administration Navigation
  3. System Configuration
  4. Security Settings
  5. Performance Optimization
  6. Plugin Management
  7. Theme Configuration
  8. Authentication Methods
  9. Email Configuration
  10. Scheduled Tasks (Cron)
  11. System Logs and Debugging
  12. Server Requirements
  13. Environment Checks
  14. Mobile Browser Access Configuration
  15. Web Services Configuration

1. Administrator Overview and Dashboard

1.1 Understanding the Administrator Role

As a PulseLMS administrator, you are responsible for the overall health, security, and functionality of the learning management system. Your responsibilities include:

Responsibility Description
User Management Creating, editing, and managing user accounts
Course Oversight Managing course categories and course-level settings
System Configuration Configuring site-wide settings and features
Security Implementing and monitoring security measures
Performance Optimizing system performance and resources
Maintenance Performing backups, updates, and troubleshooting
Integration Configuring external services and web services
Compliance Ensuring data privacy and regulatory compliance

1.2 Administrator Dashboard Overview

When you log into PulseLMS as an administrator, your dashboard provides a comprehensive overview of system status and quick access to administrative functions.

Dashboard Blocks Available to Administrators

Block Purpose Configuration Location
Site Administration Quick access to admin settings Automatically visible to admins
Course Overview View all courses in the system Dashboard preferences
Recently Accessed Courses Quick access to recent courses Dashboard preferences
Calendar View site-wide events Dashboard preferences
Private Files Personal file storage Dashboard preferences
Online Users Currently logged-in users Dashboard preferences
Latest Announcements Site-wide announcements Dashboard preferences
Logged In User Current user details Dashboard preferences
Admin Bookmarks Saved admin page shortcuts Dashboard preferences

Accessing the Administration Dashboard

  1. Log in to PulseLMS with your administrator credentials
  2. Click on Site administration in the navigation menu
  3. Alternatively, access via the gear icon in the top navigation bar
  4. The admin dashboard provides categorized access to all settings

1.3 Quick Administration Tasks

Most Common Administrative Tasks

Task Navigation Path Frequency
Add new user Site administration > Users > Add a new user As needed
Create course Site administration > Courses > Manage courses and categories As needed
Check system status Site administration > Server > Environment Weekly
Review logs Site administration > Reports > Logs Daily
Manage plugins Site administration > Plugins > Plugins overview Monthly
Check scheduled tasks Site administration > Server > Scheduled tasks Weekly
Purge caches Site administration > Development > Purge all caches As needed

1.4 Administrator Quick Actions Menu

PulseLMS provides quick access to frequently used administrative functions:

Quick Actions Available:
---------------------------------
[+] Add new user
[+] Add new course
[+] Upload users (CSV)
[+] Purge all caches
[+] View site logs
[+] Run scheduled tasks
[+] Site backup
[+] Check for updates

1.5 System Notifications for Administrators

Administrators receive special notifications about:

  • System Updates: New versions available
  • Plugin Updates: Available plugin upgrades
  • Security Alerts: Potential security issues
  • Environment Warnings: Server configuration problems
  • Task Failures: Scheduled task errors
  • User Reports: Flagged content or behavior

Configuring Admin Notifications

  1. Navigate to Site administration > Messaging > Notification settings
  2. Locate the "System alerts" section
  3. Configure preferred notification methods:
  4. Web notifications
  5. Email notifications
  6. Mobile push notifications

2. Site Administration Navigation

2.1 Site Administration Panel Structure

The Site Administration panel is organized into logical categories for easy navigation:

Site Administration
├── General
│   ├── Notifications
│   ├── Registration
│   └── Advanced features
├── Users
│   ├── Accounts
│   ├── Permissions
│   └── Privacy and policies
├── Courses
│   ├── Manage courses and categories
│   ├── Course default settings
│   └── Course request
├── Grades
│   ├── General settings
│   ├── Grade category settings
│   └── Grade item settings
├── Badges
│   ├── Badge settings
│   └── Manage badges
├── Competencies
│   └── Competency frameworks
├── H5P
│   └── Content types
├── Location
│   └── Location settings
├── Language
│   ├── Language settings
│   └── Language customization
├── Plugins
│   ├── Plugins overview
│   ├── Install plugins
│   └── [Plugin categories]
├── Security
│   ├── Site security settings
│   ├── HTTP security
│   └── Notifications
├── Appearance
│   ├── Themes
│   ├── Navigation
│   └── HTML settings
├── Front page
│   └── Front page settings
├── Server
│   ├── System paths
│   ├── Performance
│   ├── Session handling
│   └── Scheduled tasks
├── Reports
│   ├── Logs
│   ├── Live logs
│   └── Performance overview
└── Development
    ├── Debugging
    ├── Web service test client
    └── Purge caches

2.2 Navigation Methods

Method 1: Left Navigation Panel

The primary method for accessing administration settings is through the left navigation panel:

  1. Click the hamburger menu (three horizontal lines) if not visible
  2. Scroll to find Site administration
  3. Click to expand the administration tree
  4. Navigate through the hierarchical structure

Method 2: Search Functionality

Use the admin search to quickly find settings:

  1. At the top of Site Administration, locate the search box
  2. Type keywords related to the setting you need
  3. Results display matching settings and pages
  4. Click a result to navigate directly

Example Searches:

Search Term Results Include
"email" Email settings, SMTP configuration, notifications
"security" Security settings, password policy, IP blocking
"course" Course settings, categories, enrollment
"user" User policies, authentication, permissions
"backup" Automated backups, restore settings

Method 3: Direct URL Access

Experienced administrators can access settings directly via URL:

Common Admin URLs:
---------------------------------
/admin/index.php              - Main admin page
/admin/settings.php           - General settings
/admin/user.php               - User browse
/admin/category.php           - Course categories
/admin/tool/log/index.php     - System logs
/admin/settings.php?section=security - Security settings

2.3 Admin Bookmarks

Save frequently accessed admin pages for quick access:

  1. Navigate to any admin page
  2. Click the star icon next to the page title
  3. Access bookmarks via the "Admin bookmarks" block on your dashboard
Page Use Case
Scheduled tasks Monitor automated processes
Live logs Real-time activity monitoring
Browse list of users Quick user lookup
Plugins overview Plugin management
Environment check System health verification

2.4 Administration Interface Customization

Collapsible Sections

  • Click section headers to expand/collapse
  • State is preserved between sessions
  • Use "Expand all" / "Collapse all" when needed

Table Display Options

Configure how administrative tables display:

Setting Options Location
Items per page 10, 20, 50, 100 User preferences
Default sort order Ascending/Descending Column headers
Column visibility Show/Hide columns Table settings
Export format CSV, Excel, PDF Export dropdown

3. System Configuration

3.1 General Site Settings

Access via: Site administration > General > Site settings

Basic Site Information

Setting Description Example
Full site name Complete name of your PulseLMS instance "Acme Corporation Learning Portal"
Short name for site Abbreviated site name "AcmeLMS"
Site home summary Description shown on front page "Welcome to our training platform"
Default timezone System default timezone "America/New_York"
Default country Default country selection "United States"

Configuring Site Name

Step-by-Step Configuration:
---------------------------------
1. Navigate to Site administration > General > Site settings
2. Locate "Full site name" field
3. Enter your organization's LMS name
4. Locate "Short name for site" field
5. Enter an abbreviated version
6. Scroll to bottom and click "Save changes"

3.2 Front Page Settings

Access via: Site administration > Front page > Front page settings

Front Page Display Options

Option Description When to Use
Site news items Number of announcements to display Active announcement strategy
Courses per page Number of courses in listings Large course catalogs
Logged in users What logged-in users see Personalized experience
Not logged in users What guests see Public-facing sites
Include a topic section Add content section Additional information needed
Maximum category depth Category nesting level Deep category structures

Front Page Layout Configuration

Configure what appears on the front page:

For Logged-in Users: 1. News items / Site announcements 2. List of categories 3. List of courses 4. Combo list (categories and courses) 5. Enrolled courses 6. Course search box 7. None

For Guests/Not Logged In: 1. News items 2. List of categories 3. List of courses 4. Course search box 5. None

3.3 Advanced Features

Access via: Site administration > General > Advanced features

Enable or disable major system features:

Feature Description Default
Enable outcomes Competency-based outcomes Disabled
Enable comments Allow comments on content Enabled
Enable tags Tagging functionality Enabled
Enable notes Notes about users Enabled
Enable portfolios Portfolio integration Disabled
Enable web services API access Disabled
Enable messaging User-to-user messaging Enabled
Enable statistics Usage statistics Disabled
Enable RSS feeds RSS feed generation Disabled
Enable blogs User blogs Enabled
Enable badges Digital badges Enabled
Enable competencies Competency frameworks Enabled
Enable global search Site-wide search Disabled
Enable analytics Learning analytics Disabled

Enabling a Feature - Example: Web Services

Step-by-Step:
---------------------------------
1. Navigate to Site administration > General > Advanced features
2. Locate "Enable web services" checkbox
3. Check the box to enable
4. Click "Save changes"
5. Additional configuration required at:
   Site administration > Server > Web services

3.4 System Paths Configuration

Access via: Site administration > Server > System paths

Configure paths to external programs:

Path Setting Description Example Value
Path to du Disk usage command /usr/bin/du
Path to aspell Spell checker /usr/bin/aspell
Path to dot Graphviz for diagrams /usr/bin/dot
Path to ghostscript PDF processing /usr/bin/gs
Path to Python Python interpreter /usr/bin/python3
Path to LaTeX Mathematical notation /usr/bin/latex
Path to dvips DVI to PostScript /usr/bin/dvips

Verifying System Paths

# Commands to verify paths on server
which du          # Should return /usr/bin/du
which aspell      # Should return /usr/bin/aspell
which gs          # Should return /usr/bin/gs
which python3     # Should return /usr/bin/python3

3.5 Date and Time Settings

Access via: Site administration > Location > Location settings

Setting Description Options
Default timezone System default zone List of timezones
Force timezone Override user preferences Off or specific zone
Default country Default in forms List of countries
IP lookup service Geolocation provider hostip.info, geoplugin, etc.
Google Maps API key For location features Your API key

Timezone Configuration Best Practices

Scenario Recommendation
Single location organization Force timezone to that location
Multi-national organization Allow user timezone preferences
Compliance requirements Force timezone, document in policies
Mixed user base Default timezone, allow overrides

3.6 Site Policies Configuration

Access via: Site administration > Users > Privacy and policies > Site policies

Policy Setting Description Purpose
Site policy URL Link to terms of use Legal compliance
Site policy for guests Policy for non-authenticated Guest access compliance
Force users to agree Require acceptance Enforce acknowledgment
Privacy policy Data privacy statement GDPR/privacy compliance
Age of digital consent Minimum age requirement Child protection
Cookie policy Cookie usage disclosure Cookie law compliance

Creating a Site Policy

Step-by-Step:
---------------------------------
1. Create a page with your terms of service content
2. Upload to your site or host externally
3. Navigate to Site administration > Users > Privacy and policies
4. Enter the full URL in "Site policy URL"
5. Optionally set guest policy
6. Save changes
7. Users will be prompted to agree on next login

4. Security Settings

4.1 Site Security Settings Overview

Access via: Site administration > Security > Site security settings

PulseLMS provides comprehensive security controls:

Category Settings Included
IP Blocking IP whitelist/blacklist
Password Policy Complexity requirements
Anti-Spam CAPTCHA, email confirmation
Session Security Session handling, timeouts
HTTP Security HTTPS enforcement, headers
Form Protection Token validation, CSRF prevention

4.2 Password Policy Configuration

Enforce strong password requirements:

Setting Description Recommended Value
Password policy Enable password rules Enabled
Minimum length Minimum characters 12
Minimum digits Required numbers 1
Minimum lowercase Required lowercase letters 1
Minimum uppercase Required uppercase letters 1
Minimum non-alphanumeric Special characters 1
Consecutive characters Max identical chars 3
Password rotation Force periodic changes 90 days
Lock account Failed attempt lockout 5 attempts
Lock account duration Lockout period 30 minutes

Password Policy Implementation

Step-by-Step Configuration:
---------------------------------
1. Navigate to Site administration > Security > Site security settings
2. Scroll to "Password policy" section
3. Enable "Password policy" checkbox
4. Set minimum password length (recommend 12+)
5. Set minimum digit requirement (recommend 1)
6. Set minimum lowercase requirement (recommend 1)
7. Set minimum uppercase requirement (recommend 1)
8. Set minimum special character requirement (recommend 1)
9. Configure maximum consecutive identical characters
10. Save changes

Users will see password requirements when setting passwords.

4.3 IP Blocking Configuration

Control access by IP address:

Allowed IP List

Restrict access to specific IP addresses or ranges:

Format Examples:
---------------------------------
192.168.1.100          # Single IP
192.168.1.0/24         # CIDR notation (entire subnet)
192.168.1.100-200      # IP range
10.0.0.0/8             # Large private network

Blocked IP List

Block specific IPs from accessing the system:

Blocking Examples:
---------------------------------
45.33.32.156           # Block single IP
45.33.32.0/24          # Block entire subnet

Configuration Steps

  1. Navigate to Site administration > Security > Site security settings
  2. Locate "Allowed IP list" field
  3. Enter allowed IPs/ranges (one per line)
  4. Locate "Blocked IP list" field
  5. Enter blocked IPs/ranges (one per line)
  6. Save changes

Warning: Test carefully before applying IP restrictions. Incorrect configuration can lock out legitimate users including administrators.

4.4 HTTPS Configuration

Enforce secure connections:

Setting Description Recommendation
Cookies only through HTTPS Secure cookie flag Enable in production
HSTS HTTP Strict Transport Security Enable
Log in via HTTPS Force secure login Enable always

Enabling HTTPS-Only Mode

Prerequisites:
---------------------------------
1. Valid SSL certificate installed
2. HTTPS working correctly
3. All resources accessible via HTTPS

Configuration:
---------------------------------
1. Verify HTTPS works by accessing https://yoursite.com
2. Edit config.php file:
   $CFG->wwwroot = 'https://yoursite.com';
   $CFG->sslproxy = true; // If behind load balancer
3. Navigate to Site administration > Security > HTTP security
4. Enable "Cookies only through HTTPS"
5. Enable HSTS headers if desired
6. Save changes

4.5 Session Handling Security

Access via: Site administration > Server > Session handling

Setting Description Recommended Value
Timeout Session expiration 7200 seconds (2 hours)
Cookie prefix Session cookie name Custom prefix
Cookie path Cookie scope Site path
Session handler Storage mechanism Default or Redis
Keep session on timeout Preserve draft data Enabled

Session Timeout Configuration

Security vs. Usability Balance:
---------------------------------
Very Secure:      30 minutes (1800 seconds)
Balanced:         2 hours (7200 seconds)
Convenience:      8 hours (28800 seconds)
Very Permissive:  24 hours (86400 seconds)

Consider your use case:
- Public terminals: Use shorter timeouts
- Personal devices: Longer timeouts acceptable
- Sensitive data: Shorter timeouts recommended

4.6 Anti-Spam Measures

CAPTCHA Configuration

Access via: Site administration > Security > Site security settings

CAPTCHA Option Description Use Case
reCAPTCHA Google's CAPTCHA service High-security, internet-connected
Built-in Simple image CAPTCHA Offline or no Google dependency
None No CAPTCHA Trusted environments only

Configuring reCAPTCHA

Step-by-Step:
---------------------------------
1. Visit https://www.google.com/recaptcha/admin
2. Register your site to obtain keys
3. Navigate to Site administration > Security > Site security settings
4. Scroll to "ReCAPTCHA" section
5. Enter "reCAPTCHA site key"
6. Enter "reCAPTCHA secret key"
7. Choose reCAPTCHA type (v2 Checkbox or v3)
8. Save changes
9. Enable CAPTCHA on login, signup as needed

4.7 Account Lockout Policy

Protect against brute force attacks:

Configuration:
---------------------------------
Setting: Account lockout threshold
Value: 5 failed attempts

Setting: Account lockout duration
Value: 30 minutes (1800 seconds)

Setting: Lockout observation window
Value: 30 minutes (1800 seconds)

Effect: After 5 failed login attempts within 30 minutes,
the account is locked for 30 minutes.

4.8 Security Recommendations Checklist

Security Measure Priority Status
HTTPS enabled and enforced Critical [ ]
Strong password policy enabled Critical [ ]
Account lockout configured High [ ]
Session timeout appropriate High [ ]
reCAPTCHA on signup High [ ]
Admin notification for failures Medium [ ]
IP restrictions (if applicable) Medium [ ]
HSTS headers enabled Medium [ ]
Regular security audits High [ ]
Backup encryption enabled High [ ]

4.9 Security Audit Logging

Enable comprehensive security logging:

Log Type Location Retention
Login attempts Standard logs 365 days recommended
Failed logins Security log 365 days recommended
Permission changes Standard logs 365 days recommended
User modifications Standard logs As required
Admin actions Standard logs 365 days recommended

5. Performance Optimization

5.1 Performance Overview

PulseLMS performance depends on multiple factors:

Factor Impact Optimization Approach
Server Hardware High Adequate CPU, RAM, fast storage
Database Critical Query optimization, indexing
Caching High Multiple cache layers
PHP Configuration High OpCache, memory limits
Network Medium CDN, compression
Code Efficiency Medium Plugin review, updates

5.2 Cache Configuration

Access via: Site administration > Plugins > Caching > Configuration

Cache Types

Cache Type Description Storage Options
Application Long-lived data File, Redis, Memcached
Session User session data File, Database, Redis
Request Single request data Memory (static)
JavaScript/CSS Minified assets File system

Cache Store Comparison

Store Speed Scalability Persistence Use Case
File Good Limited Yes Single server
Database Slow Good Yes Not recommended
Redis Excellent Excellent Configurable Production recommended
Memcached Excellent Excellent No High-traffic sites
APCu Fastest Limited No Single server, high traffic

Redis Cache Configuration

Prerequisites:
---------------------------------
1. Redis server installed and running
2. PHP Redis extension installed

Configuration Steps:
---------------------------------
1. Navigate to Site administration > Plugins > Caching > Configuration
2. Under "Installed cache stores", click "Add instance" for Redis
3. Configure connection settings:
   - Store name: "Redis Cache"
   - Server: localhost (or Redis server IP)
   - Port: 6379
   - Password: (if configured)
   - Database: 0
4. Save changes
5. Under "Cache definitions", map caches to Redis store
6. Test caching is working correctly

Optimal Cache Mappings

Cache Definition Recommended Store Reason
Core/databasemeta Redis Frequently accessed
Core/eventinvalidation Redis Real-time updates
Core/coursecat Redis Course browsing
Core/langmenu File Rarely changes
Core/string APCu or Redis Very frequent access
Core/htmlpurifier File Rarely changes

5.3 Purging Caches

Access via: Site administration > Development > Purge all caches

When to Purge Caches

Situation Cache Action
After plugin installation Purge all caches
After theme changes Purge theme cache
After language changes Purge language cache
Debug issues Purge all caches
After config changes Purge all caches
Performance degradation Investigate then purge

Cache Purge Commands

Via Web Interface:
---------------------------------
Site administration > Development > Purge all caches

Via Command Line:
---------------------------------
php admin/cli/purge_caches.php

Selective Cache Purge:
---------------------------------
php admin/cli/purge_caches.php --cache=langmenu
php admin/cli/purge_caches.php --cache=theme

5.4 PHP Configuration Optimization

Setting Minimum Recommended Purpose
memory_limit 256M 512M Script memory
upload_max_filesize 50M 100M File uploads
post_max_size 50M 120M POST data size
max_execution_time 60 180 Script timeout
max_input_time 60 180 Input parsing timeout
max_input_vars 1000 5000 Form variables
opcache.enable 1 1 Code caching
opcache.memory_consumption 64 256 OpCache memory
opcache.interned_strings_buffer 8 16 String memory
opcache.max_accelerated_files 4000 10000 Cached files
opcache.revalidate_freq 2 60 Cache refresh

PHP Configuration File Example

; php.ini or php-fpm pool configuration

; Memory and Execution
memory_limit = 512M
upload_max_filesize = 100M
post_max_size = 120M
max_execution_time = 180
max_input_time = 180
max_input_vars = 5000

; OpCache Settings
opcache.enable = 1
opcache.enable_cli = 0
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 60
opcache.fast_shutdown = 1
opcache.validate_timestamps = 1

; Session Settings
session.gc_maxlifetime = 7200
session.cookie_secure = 1
session.cookie_httponly = 1

5.5 Database Optimization

MySQL/MariaDB Configuration

; my.cnf optimization for PulseLMS

[mysqld]
# InnoDB Settings
innodb_buffer_pool_size = 2G
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1

# Query Cache (MySQL 5.7 and earlier)
query_cache_type = 1
query_cache_size = 128M
query_cache_limit = 2M

# Connection Settings
max_connections = 200
wait_timeout = 600
interactive_timeout = 600

# Temp Tables
tmp_table_size = 64M
max_heap_table_size = 64M

# Thread Settings
thread_cache_size = 8

PostgreSQL Configuration

; postgresql.conf optimization

# Memory Settings
shared_buffers = 256MB
effective_cache_size = 1GB
work_mem = 16MB
maintenance_work_mem = 256MB

# Write Ahead Log
wal_buffers = 16MB
checkpoint_completion_target = 0.9

# Query Planner
random_page_cost = 1.1
effective_io_concurrency = 200

# Connection Settings
max_connections = 200

5.6 Performance Settings in PulseLMS

Access via: Site administration > Server > Performance

Setting Description Recommended
Cache JavaScript Minify and cache JS Yes (production)
Cache CSS Minify and cache CSS Yes (production)
Theme designer mode Disable caching for theming No (production)
Extra HTML caching Additional HTML cache Yes
Stats processing Usage statistics Enabled (off-peak)
Chart rendering Chart processing Appropriate to load

5.7 Cron and Background Tasks

Optimize scheduled task execution:

Optimization Description Implementation
Cron frequency Run cron appropriately Every 1-5 minutes
Off-peak heavy tasks Schedule intensive tasks overnight Task scheduling
Parallel execution Multiple cron processes Use cron helper
Task monitoring Track execution time Log review

5.8 Performance Monitoring

Key Performance Metrics

Metric Healthy Range Action if Exceeded
Page load time < 3 seconds Check cache, database
Database queries/page < 100 Review plugins, queries
Memory per request < 128MB Check plugins, data
Cron execution < 10 minutes Review task queue
Active users Depends on resources Scale infrastructure

Performance Monitoring Tools

Built-in Tools:
---------------------------------
Site administration > Server > Performance overview
Site administration > Reports > Logs (filter by performance)
Site administration > Development > Debugging

Command Line:
---------------------------------
php admin/cli/cron.php --execute --time-limit=60
php admin/cli/mysql_engine.php --list

5.9 Content Delivery Network (CDN)

For high-traffic sites, configure a CDN:

CDN Benefit Description
Reduced latency Content served from edge servers
Lower server load Static content offloaded
Better availability Distributed infrastructure
DDoS protection Traffic filtering

CDN Configuration Steps

  1. Set up CDN account (Cloudflare, CloudFront, etc.)
  2. Configure CDN to cache static content
  3. Update config.php with CDN URL
  4. Configure appropriate cache headers
  5. Test and verify functionality

6. Plugin Management

6.1 Plugin Overview

Access via: Site administration > Plugins > Plugins overview

PulseLMS supports numerous plugin types:

Plugin Type Description Example
Activity modules Learning activities Quiz, Assignment, Forum
Blocks Sidebar content Calendar, Online users
Question types Assessment questions Multiple choice, Essay
Authentication Login methods LDAP, OAuth2, SAML
Enrollment Course enrollment Self, Cohort, Manual
Repositories File storage Google Drive, Dropbox
Themes Visual appearance Custom themes
Admin tools Administrative utilities Log cleanup, Backup
Report builders Data reporting Custom reports
Text filters Content processing MathJax, Multimedia
Message outputs Notification channels Email, Slack
Local plugins Custom functionality Custom features

6.2 Installing Plugins

Method 1: Web Interface Installation

Step-by-Step:
---------------------------------
1. Navigate to Site administration > Plugins > Install plugins
2. Choose plugin source:
   - Upload ZIP file
   - Install from PulseLMS plugins directory
3. If uploading:
   - Click "Choose a file" or drag ZIP
   - Click "Install plugin from the ZIP file"
4. Review plugin information displayed
5. Click "Install plugin!"
6. Complete any database upgrades
7. Configure plugin settings as needed

Method 2: Command Line Installation

# Navigate to plugin directory
cd /var/www/html/pulselms

# Download plugin (example)
wget https://plugin-source.com/plugin.zip

# Unzip to appropriate directory
unzip plugin.zip -d mod/  # For activity modules
unzip plugin.zip -d blocks/  # For blocks
unzip plugin.zip -d local/  # For local plugins

# Set correct permissions
chown -R www-data:www-data mod/newplugin
chmod -R 755 mod/newplugin

# Run upgrade script
php admin/cli/upgrade.php

Method 3: Git Installation

# Clone plugin repository
cd /var/www/html/pulselms/mod
git clone https://github.com/developer/pluginname.git pluginname

# Set permissions
chown -R www-data:www-data pluginname

# Run upgrade
php admin/cli/upgrade.php

6.3 Plugin Directory Structure

Directory Plugin Types
/mod Activity modules
/blocks Blocks
/theme Themes
/auth Authentication plugins
/enrol Enrollment plugins
/repository Repository plugins
/local Local/custom plugins
/admin/tool Admin tools
/question/type Question types
/filter Text filters
/report Report plugins
/message/output Message outputs
/lib/editor Text editors
/plagiarism Plagiarism detection
/portfolio Portfolio plugins
/cache/stores Cache backends
/availability/condition Availability conditions
/customfield/field Custom field types

6.4 Plugin Updates

Checking for Updates

Automatic Check:
---------------------------------
Site administration > Notifications
- Shows available updates

Manual Check:
---------------------------------
Site administration > Plugins > Plugins overview
- Click "Check for available updates"

Updating Plugins

Step-by-Step Update:
---------------------------------
1. Backup your site (always before updates)
2. Navigate to Site administration > Plugins > Plugins overview
3. Identify plugins with available updates
4. For each plugin to update:
   a. Download new version
   b. Delete old plugin files (keep database)
   c. Upload new plugin files
   d. Run upgrade (automatic on login)
5. Test functionality after update
6. Clear caches if needed

Command Line Update

# Enable maintenance mode
php admin/cli/maintenance.php --enable

# Update plugin files (varies by method)
cd /var/www/html/pulselms/mod/pluginname
git pull origin main

# Run upgrade
php admin/cli/upgrade.php

# Disable maintenance mode
php admin/cli/maintenance.php --disable

6.5 Uninstalling Plugins

Web Interface Uninstall

Step-by-Step:
---------------------------------
1. Navigate to Site administration > Plugins > Plugins overview
2. Find the plugin to uninstall
3. Click "Uninstall" link
4. Confirm uninstallation
5. Plugin database tables are removed
6. Delete plugin files from server:
   rm -rf /path/to/plugin/directory

Important Uninstall Considerations

Consideration Description
Data loss User data may be permanently deleted
Dependencies Check if other plugins depend on this
Backup first Always backup before uninstalling
Testing Test in staging environment first
Course content Activity modules remove course content

6.6 Plugin Configuration

Each plugin has its own settings area:

Navigation Pattern:
---------------------------------
Site administration > Plugins > [Plugin Type] > [Plugin Name]

Examples:
---------------------------------
Site administration > Plugins > Activity modules > Quiz
Site administration > Plugins > Authentication > Manual accounts
Site administration > Plugins > Enrolments > Self enrolment
Site administration > Plugins > Blocks > Activity results

6.7 Plugin Troubleshooting

Problem Possible Cause Solution
Plugin not appearing Version mismatch Check version.php requirements
Installation fails File permissions Check write permissions
Database errors Upgrade not run Run admin/cli/upgrade.php
Conflicts Plugin incompatibility Check plugin dependencies
Performance issues Poorly coded plugin Review plugin, contact developer
Security warnings Outdated plugin Update or remove plugin

6.8 Plugin Security

Evaluating Plugin Security

Criterion What to Check
Source Official directory or trusted developer
Updates Recently updated and maintained
Reviews User feedback and ratings
Code quality Open source allows review
Documentation Well-documented usage
Support Active developer support

Plugin Security Best Practices

  1. Only install plugins from trusted sources
  2. Review plugin permissions and capabilities
  3. Test in staging environment before production
  4. Keep all plugins updated
  5. Remove unused plugins
  6. Monitor for security advisories
  7. Regularly audit installed plugins

7. Theme Configuration

7.1 Theme Management Overview

Access via: Site administration > Appearance > Themes

PulseLMS themes control the visual presentation of your site:

Theme Aspect Description
Layout Page structure and regions
Colors Color scheme and branding
Typography Fonts and text styling
Navigation Menu structure and placement
Responsiveness Mobile and tablet display
Blocks Block regions and styling

7.2 Theme Selection

Selecting a Theme

Step-by-Step:
---------------------------------
1. Navigate to Site administration > Appearance > Themes > Theme selector
2. Click "Change theme" button
3. Browse available themes
4. Click on theme to preview
5. Click "Use theme" to apply
6. Theme is immediately active

Theme Preview

Before applying a theme: 1. Click on the theme name 2. View preview screenshots 3. Check theme information (version, compatibility) 4. Test with preview link if available 5. Confirm selection

7.3 Theme Settings

Access via: Site administration > Appearance > Themes > [Theme Name]

Common Theme Settings

Setting Description Example Values
Brand color Primary theme color #1177d1
Logo Site logo image Uploaded image
Compact logo Small logo for navigation Uploaded image
Favicon Browser tab icon .ico or .png
Background image Page background Uploaded image
Login page image Login background Uploaded image
Preset Color/style presets Default, Architect, etc.
Custom CSS Additional styling CSS code
Custom SCSS SCSS variables SCSS code

Configuring Brand Colors

Step-by-Step:
---------------------------------
1. Navigate to theme settings
2. Locate "Brand color" setting
3. Enter hex color code: #1177d1
4. Or click color picker to select
5. Preview changes if available
6. Save changes
7. Purge theme caches to apply

7.4 Custom Logo Configuration

Logo Requirements

Logo Type Dimensions Format Usage
Main logo 200x75 px (max) PNG, JPG, SVG Header area
Compact logo 75x75 px (max) PNG, JPG, SVG Collapsed navigation
Favicon 32x32 px ICO, PNG Browser tab
Login logo Variable PNG, JPG, SVG Login page

Uploading Logos

Step-by-Step:
---------------------------------
1. Prepare logo files in correct dimensions
2. Navigate to theme settings
3. Find "Logo" file picker
4. Click or drag to upload logo file
5. Find "Compact logo" file picker
6. Upload compact version
7. Find "Favicon" file picker
8. Upload favicon file
9. Save changes
10. Purge caches if needed

7.5 Custom CSS and SCSS

Adding Custom CSS

/* Example custom CSS for theme */

/* Change header background */
.navbar {
    background-color: #003366 !important;
}

/* Modify button colors */
.btn-primary {
    background-color: #1177d1;
    border-color: #0d5ca3;
}

/* Adjust course card styling */
.card.dashboard-card {
    border-radius: 10px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

/* Custom footer styling */
#page-footer {
    background-color: #f5f5f5;
    padding: 20px;
}

Using SCSS Variables

// SCSS variables for theme customization

// Brand colors
$primary: #1177d1;
$secondary: #6c757d;
$success: #28a745;
$warning: #ffc107;
$danger: #dc3545;

// Typography
$font-family-base: 'Open Sans', sans-serif;
$font-size-base: 0.9375rem;

// Spacing
$spacer: 1rem;
$border-radius: 0.375rem;

// Navigation
$navbar-height: 60px;
$sidebar-width: 285px;

7.6 Theme Development Mode

For theme developers and testing:

Access via: Site administration > Appearance > Theme settings

Setting Description Production
Theme designer mode Disable theme caching Disabled
Allow category themes Per-category themes Optional
Allow course themes Per-course themes Optional
Allow user themes User theme selection Optional

Enabling Theme Designer Mode

Step-by-Step:
---------------------------------
1. Navigate to Site administration > Appearance > Theme settings
2. Check "Theme designer mode"
3. Save changes

WARNING: Only enable during active development.
         Significantly impacts performance.
         Disable in production.

7.7 Mobile Theme Considerations

Ensure themes are mobile-responsive:

Mobile Consideration Implementation
Responsive breakpoints Use CSS media queries
Touch targets Minimum 44x44 px
Font sizes Readable on small screens
Navigation Collapsible/hamburger menu
Images Responsive image sizes
Forms Touch-friendly inputs

7.8 Theme Backup and Restore

Backing Up Theme Customizations

What to Backup:
---------------------------------
1. Theme folder: /theme/yourtheme/
2. Custom CSS settings (copy from admin)
3. Uploaded logos and images
4. SCSS customizations
5. Theme configuration settings

Backup Command:
---------------------------------
tar -czvf theme_backup.tar.gz /var/www/html/pulselms/theme/yourtheme/

8. Authentication Methods

8.1 Authentication Overview

Access via: Site administration > Plugins > Authentication

PulseLMS supports multiple authentication methods:

Method Description Use Case
Manual accounts Admin-created accounts Small user bases
Email-based self-registration User self-signup Open registration
LDAP Directory service auth Enterprise/corporate
OAuth 2 Third-party OAuth Google, Microsoft, etc.
SAML 2.0 Single Sign-On Enterprise SSO
Shibboleth Federated identity Educational institutions
CAS Central Auth Service Multi-system environments
MNet PulseLMS network auth Connected PulseLMS sites
Web services Token-based auth API access
No authentication Guest access Public content

8.2 Managing Authentication Plugins

Access via: Site administration > Plugins > Authentication > Manage authentication

Authentication Plugin Priority

Priority Order:
---------------------------------
1. First matching enabled plugin authenticates
2. If authentication fails, try next plugin
3. Manual accounts always checked last
4. Disabled plugins are skipped

Recommended Order:
---------------------------------
1. SSO methods (SAML, OAuth, LDAP)
2. Email-based self-registration
3. Manual accounts (fallback)

Enable/Disable Authentication

Step-by-Step:
---------------------------------
1. Navigate to Manage authentication page
2. Click the eye icon to enable/disable
3. Use arrows to change order
4. Configure settings for each method
5. Test authentication before production use

8.3 Manual Accounts

The default authentication method for admin-created accounts:

Setting Description Recommendation
Enable Allow manual authentication Yes (always)
Lock account Days of inactivity before lock 180 days
Prevent account creation Block new manual accounts No
Expiration warning Days before expiration warning 10 days

8.4 Email-Based Self-Registration

Allow users to create their own accounts:

Setting Description Recommendation
Enable Allow self-registration Depends on policy
CAPTCHA Require CAPTCHA Yes (recommended)
Email domain Restrict to domains your-org.com
Default city Pre-filled city Organization city
Default country Pre-filled country Organization country

Configuring Self-Registration

Step-by-Step:
---------------------------------
1. Navigate to Site administration > Plugins > Authentication > Email-based self-registration
2. Enable the authentication plugin
3. Configure allowed email domains (if restricting):
   - yourcompany.com
   - partner.com
4. Set default location values
5. Enable CAPTCHA requirement
6. Configure email templates
7. Save changes

Security Consideration:
---------------------------------
Open self-registration can lead to spam accounts.
Consider:
- Email domain restrictions
- CAPTCHA requirement
- Manual approval workflow
- Email confirmation requirement

8.5 LDAP Authentication

Connect to enterprise directory services:

LDAP Settings

Setting Description Example
Host URL LDAP server address ldap://ldap.company.com
Version LDAP protocol version 3
LDAP encoding Character encoding utf-8
Bind DN Service account cn=admin,dc=company,dc=com
Bind password Service account password Secure password
User type Directory type posixAccount, Active Directory, etc.
Contexts User search location ou=users,dc=company,dc=com
Search subcontexts Search recursively Yes
User attribute Login attribute uid or sAMAccountName
Member attribute Group membership memberOf

LDAP Configuration Example

Active Directory Example:
---------------------------------
Host URL: ldap://dc1.company.com
Version: 3
Bind DN: CN=LMSService,OU=Services,DC=company,DC=com
User type: Active Directory
Contexts: OU=Users,DC=company,DC=com
User attribute: sAMAccountName
Member attribute: memberOf

OpenLDAP Example:
---------------------------------
Host URL: ldap://ldap.company.com
Version: 3
Bind DN: cn=admin,dc=company,dc=com
User type: posixAccount
Contexts: ou=people,dc=company,dc=com
User attribute: uid
Member attribute: memberOf

LDAP Field Mapping

PulseLMS Field LDAP Attribute Example
Username sAMAccountName / uid jsmith
First name givenName John
Last name sn Smith
Email mail [email protected]
ID number employeeNumber 12345
Department department Engineering
Phone telephoneNumber 555-1234

8.6 OAuth 2 Authentication

Configure OAuth 2 for third-party authentication:

Supported OAuth 2 Providers

Provider Setup Required Common Use
Google Google Cloud Console G Suite users
Microsoft Azure AD / Microsoft 365 Microsoft 365 users
Facebook Facebook Developers Social login
GitHub GitHub Developer Settings Developer communities
Custom Provider's admin console Custom OAuth servers

Google OAuth 2 Setup

Step-by-Step:
---------------------------------
1. Go to Google Cloud Console
2. Create new project or select existing
3. Enable Google+ API
4. Create OAuth 2.0 credentials
5. Configure consent screen
6. Add authorized redirect URI:
   https://your-pulselms.com/admin/oauth2callback.php
7. Copy Client ID and Client Secret
8. In PulseLMS:
   a. Navigate to Site administration > Server > OAuth 2 services
   b. Click "Create new service" > Google
   c. Enter Client ID and Secret
   d. Save changes
9. Enable OAuth 2 authentication
10. Test login functionality

8.7 SAML 2.0 / Single Sign-On

Enterprise SSO integration:

SAML Configuration

Setting Description Example
IdP entity ID Identity Provider ID https://idp.company.com
IdP SSO URL Login endpoint https://idp.company.com/sso
IdP X.509 cert Certificate for validation Certificate content
SP entity ID Service Provider ID https://lms.company.com
NameID format User identifier format emailAddress
Attribute mapping LDAP attribute mapping email, firstName, etc.

Implementing SAML SSO

Prerequisites:
---------------------------------
1. Install SAML authentication plugin
2. Obtain IdP metadata from your SSO provider
3. Generate or obtain SP certificate

Configuration Steps:
---------------------------------
1. Navigate to Site administration > Plugins > Authentication > SAML2
2. Enter IdP entity ID
3. Enter IdP SSO URL
4. Paste IdP X.509 certificate
5. Configure SP settings (or generate)
6. Map attributes:
   - Username: urn:oid:0.9.2342.19200300.100.1.1
   - Email: urn:oid:0.9.2342.19200300.100.1.3
   - First name: urn:oid:2.5.4.42
   - Last name: urn:oid:2.5.4.4
7. Export SP metadata for IdP configuration
8. Enable plugin and test

8.8 Multi-Factor Authentication (MFA)

Enhance security with MFA:

MFA Method Description Setup
Time-based OTP Authenticator apps User self-service
Email codes Code sent via email Automatic
Security keys Hardware keys (FIDO2) User registration
SMS codes Code via text message Requires SMS gateway

Enabling MFA

Step-by-Step:
---------------------------------
1. Navigate to Site administration > Plugins > Admin tools > Multi-factor authentication
2. Enable MFA
3. Configure available factors:
   - TOTP (authenticator app)
   - Email verification
   - Security keys
4. Set grace period for setup
5. Configure required factors
6. Save changes

User Experience:
---------------------------------
1. Users log in with username/password
2. Prompted to set up MFA on first login
3. Choose from available methods
4. Verify setup with code
5. Subsequent logins require MFA

8.9 Authentication Best Practices

Practice Description Priority
Use SSO when available Reduces password fatigue High
Enable MFA Adds security layer High
Audit authentication logs Monitor for anomalies Medium
Limit authentication methods Reduce complexity Medium
Document configuration Maintain setup records High
Test failover Ensure backup auth works Medium
Regular password rotation If not using SSO Medium
Secure bind credentials Protect LDAP passwords Critical

9. Email Configuration

9.1 Email Overview

Access via: Site administration > Server > Email > Outgoing mail configuration

Email is critical for PulseLMS operations:

Email Function Purpose
Account notifications New accounts, password resets
Course notifications Enrollment, completion, deadlines
Forum posts Discussion notifications
Assignment reminders Due date alerts
Grade notifications Grading updates
System alerts Admin notifications
Messaging User-to-user messages

9.2 SMTP Configuration

Configure outgoing email server:

Setting Description Example
SMTP hosts Mail server(s) smtp.company.com
SMTP security Encryption type TLS
SMTP port Server port 587
SMTP username Authentication user [email protected]
SMTP password Authentication password Secure password
SMTP Auth Type Authentication method LOGIN
No-reply address Sender address [email protected]
No-reply name Sender name PulseLMS

Common SMTP Configurations

Office 365 / Microsoft 365:

SMTP hosts: smtp.office365.com
SMTP security: TLS
SMTP port: 587
SMTP username: [email protected]
SMTP password: App password (if MFA enabled)
SMTP Auth Type: LOGIN

Google Workspace (G Suite):

SMTP hosts: smtp.gmail.com
SMTP security: TLS
SMTP port: 587
SMTP username: [email protected]
SMTP password: App password
SMTP Auth Type: LOGIN

Amazon SES:

SMTP hosts: email-smtp.us-east-1.amazonaws.com
SMTP security: TLS
SMTP port: 587
SMTP username: SMTP credentials from SES
SMTP password: SMTP credentials from SES
SMTP Auth Type: LOGIN

Mailgun:

SMTP hosts: smtp.mailgun.org
SMTP security: TLS
SMTP port: 587
SMTP username: [email protected]
SMTP password: Mailgun SMTP password
SMTP Auth Type: LOGIN

9.3 Testing Email Configuration

Test Email Feature

Step-by-Step:
---------------------------------
1. Navigate to Site administration > Server > Email > Test outgoing mail configuration
2. Enter a test email address
3. Click "Send a test message"
4. Check for success message
5. Verify email received in inbox
6. Check spam folder if not received

Command Line Email Test

# Test email from command line
php admin/cli/test_email.php --to=[email protected] --from=[email protected]

# Verbose output for debugging
php admin/cli/test_email.php --to=[email protected] --from=[email protected] --debug

9.4 Email Troubleshooting

Problem Possible Cause Solution
Email not sending Incorrect SMTP settings Verify server, port, credentials
Authentication failed Wrong username/password Reset credentials
Connection timeout Firewall blocking Check outbound port 25/587/465
Emails going to spam SPF/DKIM not configured Configure DNS records
Bounce messages Invalid recipient Verify addresses
Rate limiting Too many emails Use email queue

9.5 Email Queue and Processing

Configure email handling for high-volume sites:

Setting Description Recommendation
Email processing Queue vs. immediate Queue for high volume
Emails per cron Batch size per cron run 100-500
Max attempts Retry failed emails 3 attempts
Retry interval Time between retries 1 hour

Configuring Email Queue

Step-by-Step:
---------------------------------
1. Navigate to Site administration > Server > Email > Outgoing mail configuration
2. Enable "Email processing"
3. Set "Emails per cron run" to 500 (adjust based on volume)
4. Ensure cron runs frequently (every minute)
5. Monitor email queue:
   Site administration > Server > Task logs

9.6 Email Template Customization

Customize system email templates:

Available Templates

Template Purpose Location
Enrollment notification New course enrollment lang/en/moodle.php
Password reset Forgotten password lang/en/moodle.php
Forum digest Forum post summaries lang/en/forum.php
Assignment notification Submission reminders lang/en/assign.php
Grade notification Grade updates lang/en/grades.php

Customizing Email Templates

Step-by-Step:
---------------------------------
1. Navigate to Site administration > Language > Language customisation
2. Select English (or target language)
3. Click "Open language pack for editing"
4. Filter strings by component (e.g., "moodle")
5. Search for email template string
6. Enter custom text
7. Save changes

Common String Identifiers:
---------------------------------
emailconfirmation - Account confirmation
passwordforgotteninstructions2 - Password reset
newcourseemail - Course enrollment
gradenotification - Grade update

9.7 SPF, DKIM, and DMARC

Configure DNS for better email deliverability:

SPF Record

DNS TXT Record:
---------------------------------
v=spf1 include:_spf.google.com include:amazonses.com ~all

Purpose: Authorizes servers to send email for your domain

DKIM Configuration

Setup:
---------------------------------
1. Generate DKIM keys (via email service)
2. Add DNS TXT record for DKIM
3. Configure email service to sign emails

Example DNS Record:
---------------------------------
selector._domainkey.yourdomain.com TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqh..."

DMARC Policy

DNS TXT Record:
---------------------------------
_dmarc.yourdomain.com TXT "v=DMARC1; p=none; rua=mailto:[email protected]"

Policy Options:
- p=none: Monitor only
- p=quarantine: Send to spam
- p=reject: Block emails

9.8 Email Logging

Monitor email activity:

Log Type Location Information
Email queue Task logs Pending/sent emails
SMTP debug Debug mode Detailed SMTP conversation
Bounce reports Email service Failed deliveries
Send statistics Reports Volume and success rates

Enabling Email Debug Logging

Configuration:
---------------------------------
1. Navigate to Site administration > Development > Debugging
2. Set debug messages to "DEVELOPER"
3. Check "Display debug messages"
4. Send test email
5. Review debug output
6. Disable debug mode when done

10. Scheduled Tasks (Cron)

10.1 Cron Overview

Access via: Site administration > Server > Scheduled tasks

Scheduled tasks automate essential PulseLMS operations:

Task Category Description
Content Grade calculations, backup processing
Maintenance Log cleanup, cache purging
Communication Email digests, notifications
External External content sync, web services
Reports Statistics, analytics processing
Security Session cleanup, password expiry

10.2 Understanding Cron Jobs

What Cron Does

Cron Execution Flow:
---------------------------------
1. System cron triggers PulseLMS cron script
2. PulseLMS checks for due scheduled tasks
3. Tasks execute in priority order
4. Results logged to database
5. Next run time calculated
6. Process repeats on next trigger

Critical Cron-Dependent Functions

Function Without Cron
Email delivery Delayed or never sent
Forum digests Not generated
Grades Not calculated properly
Backups Not executed
Session cleanup Memory/database bloat
Content sync Not updated
Statistics Not processed

10.3 Configuring System Cron

Linux Cron Configuration

# Edit crontab for web server user
crontab -u www-data -e

# Add entry to run every minute
* * * * * /usr/bin/php /var/www/html/pulselms/admin/cli/cron.php >> /var/log/pulselms_cron.log 2>&1

# Alternative: Run every 5 minutes
*/5 * * * * /usr/bin/php /var/www/html/pulselms/admin/cli/cron.php >> /var/log/pulselms_cron.log 2>&1

# With execution time limit
* * * * * /usr/bin/php /var/www/html/pulselms/admin/cli/cron.php --time-limit=60 >> /var/log/pulselms_cron.log 2>&1

Windows Task Scheduler

Configuration:
---------------------------------
Program: C:\php\php.exe
Arguments: C:\inetpub\wwwroot\pulselms\admin\cli\cron.php
Start in: C:\inetpub\wwwroot\pulselms
Trigger: Every 1 minute
Run with highest privileges: Yes

10.4 Managing Scheduled Tasks

Task List Overview

Column Description
Name Task identifier
Component Plugin/component owner
Last run Previous execution time
Next run Scheduled next execution
Minute Cron minute setting
Hour Cron hour setting
Day Cron day of month
Month Cron month setting
Day of week Cron weekday setting
Disabled Task status

Editing Task Schedule

Step-by-Step:
---------------------------------
1. Navigate to Site administration > Server > Scheduled tasks
2. Find the task to modify
3. Click the settings icon
4. Modify timing settings:
   - Minute: 0-59 or * for any
   - Hour: 0-23 or * for any
   - Day: 1-31 or * for any
   - Month: 1-12 or * for any
   - Day of week: 0-6 or * for any
5. Optionally disable task
6. Save changes

Cron Expression Examples

Expression Meaning
* * * * * Every minute
*/5 * * * * Every 5 minutes
0 * * * * Every hour
0 0 * * * Daily at midnight
0 3 * * * Daily at 3 AM
0 0 * * 0 Weekly on Sunday
0 0 1 * * First of month
30 4 * * 1-5 Weekdays at 4:30 AM

10.5 Important Scheduled Tasks

Task Component Recommended Schedule Purpose
Send notifications message Every minute Email notifications
Forum digests mod_forum Daily Digest emails
Automated backups tool_backup Weekly/Daily Site backups
Log cleanup tool_log Weekly Clear old logs
Session cleanup core Hourly Clean expired sessions
Password expiry core Daily Check password expiry
Statistics core Daily Process statistics
Grade history core Daily Archive old grades
Recycle bin tool_recyclebin Daily Clean recycle bin
Question cleanup core_question Weekly Remove orphan questions

10.6 Running Tasks Manually

Via Web Interface

Step-by-Step:
---------------------------------
1. Navigate to Site administration > Server > Scheduled tasks
2. Find the desired task
3. Click "Run now" link
4. Task executes immediately
5. Check task log for results

Via Command Line

# Run all due scheduled tasks
php admin/cli/cron.php

# Run specific task
php admin/cli/scheduled_task.php --execute='\core\task\send_failed_login_notifications_task'

# List all available tasks
php admin/cli/scheduled_task.php --list

# Run task with verbose output
php admin/cli/scheduled_task.php --execute='\core\task\backup_cleanup_task' --showdebugging

10.7 Task Logs and Monitoring

Viewing Task Logs

Navigation:
---------------------------------
Site administration > Server > Task logs

Filter Options:
- Task name
- Result (success/failure)
- Time period
- Component

Log Interpretation

Log Entry Meaning
Task started Execution began
Task completed Successful completion
Task failed Error during execution
Seconds taken Execution duration
Database reads DB query count
Database writes DB modification count

10.8 Troubleshooting Cron

Problem Cause Solution
Tasks not running Cron not configured Set up system cron
Tasks late Insufficient cron frequency Run cron more often
Task timeouts Long-running task Increase time limit
Memory errors Large data processing Increase memory limit
Database locks Concurrent execution Configure lock timeout
Permission errors Wrong file ownership Fix file permissions

Cron Debug Mode

# Enable cron debugging
php admin/cli/cron.php --showdebugging

# Run with time profiling
php admin/cli/cron.php --showdebugging --showsql

11. System Logs and Debugging

11.1 Logging Overview

Access via: Site administration > Reports > Logs

PulseLMS provides comprehensive logging:

Log Type Purpose Location
Standard logs All user activity Database
Live logs Real-time activity Live view
Legacy logs Historical data Database (legacy)
Config changes Settings modifications Database
Task logs Scheduled task results Database
Backup logs Backup operations Database/Files
System logs Server errors Web server logs

11.2 Standard Log Reports

Accessing Logs

Navigation:
---------------------------------
Site administration > Reports > Logs

Filter Options:
- Course: Specific course or all
- Participants: Specific user or all
- Days: Last N days
- Activities: Specific activity or all
- Actions: CRUD operations
- Origin: Web, CLI, WS
- IP address: Specific IP

Log Export Options

Format Use Case Size Limit
HTML Quick viewing Browser memory
CSV Spreadsheet analysis Unlimited
Excel Office analysis Row limits apply
ODS Open format Row limits apply
JSON API/programming Unlimited

11.3 Live Logs

Access via: Site administration > Reports > Live logs

Real-time activity monitoring:

Feature Description
Auto-refresh Updates every few seconds
Recent activity Last 60 minutes
User identification Username, IP, browser
Action detail What was accessed
Context Course, activity, page

Using Live Logs

Use Cases:
---------------------------------
1. Monitor assessment activity during exams
2. Troubleshoot user-reported issues
3. Verify user actions in real-time
4. Security monitoring during incidents
5. Training observation

11.4 Debugging Configuration

Access via: Site administration > Development > Debugging

Debug Levels

Level Description When to Use
NONE No debugging Production
MINIMAL Fatal errors only Production fallback
NORMAL Standard errors Development
ALL All PHP messages Development
DEVELOPER Maximum detail Deep debugging

Debug Settings

Setting Description Production
Debug messages Message verbosity NONE
Display debug messages Show on screen No
Performance info Show load times No
Show origin of languages strings String debugging No
Show validator links HTML validation No
Show page information Page details No

11.5 Enabling Debug Mode

Temporary Debug via config.php

// Add to config.php for debugging
@error_reporting(E_ALL | E_STRICT);
@ini_set('display_errors', '1');
$CFG->debug = (E_ALL | E_STRICT);
$CFG->debugdisplay = 1;
$CFG->debugstringids = 1;
$CFG->perfdebug = 15;
$CFG->debugpageinfo = 1;

// Remove after debugging complete

Debug for Specific User

// Show debug only for admin user
$CFG->debugusers = '1'; // Admin user ID

// This allows debugging without affecting other users

11.6 Database Query Debugging

For performance investigation:

// In config.php
$CFG->dblogerror = true;        // Log database errors
$CFG->dblogquerytime = 0.2;     // Log queries over 0.2 seconds

// Enable full query logging (development only)
$CFG->debugsqltrace = true;     // Full stack trace for queries

11.7 Error Log Analysis

Web Server Logs

# Apache error log
tail -f /var/log/apache2/error.log

# Nginx error log
tail -f /var/log/nginx/error.log

# PHP-FPM log
tail -f /var/log/php8.1-fpm.log

Common Error Patterns

Error Likely Cause Resolution
Memory exhausted Large operation/bug Increase memory_limit
Maximum execution time Long-running process Increase max_execution_time
Permission denied File permission issue Fix file ownership
Database connection DB server/credentials Verify connection settings
Class not found Missing plugin/code Reinstall/update component
Session error Session handler issue Check session configuration

11.8 Debug Page Features

When debug mode is enabled, pages display:

Debug Information Shown:
---------------------------------
- PHP version and settings
- Database driver and version
- Memory usage (current/peak)
- Page generation time
- Included files count
- Database reads/writes
- Cache hits/misses
- Session handler information

11.9 Log Retention and Cleanup

Configure log retention:

Setting Location Recommendation
Standard log lifetime loglifetime setting 365 days
Legacy log cleanup Scheduled task Enable
Config changes log Automatic Permanent
Task logs loglifetime setting 30 days

Configuring Log Cleanup

Step-by-Step:
---------------------------------
1. Navigate to Site administration > Plugins > Logging > Standard log
2. Set "Log lifetime" (e.g., 365 days)
3. Navigate to Scheduled tasks
4. Find "Clean up logs" task
5. Ensure task is enabled
6. Logs older than specified will be deleted

12. Server Requirements

12.1 Minimum Server Requirements

Component Minimum Recommended
PHP Version 8.0 8.1 or 8.2
Database MariaDB 10.4 / MySQL 8.0 / PostgreSQL 13 Latest stable
Memory (RAM) 512 MB 2 GB+
Disk Space 200 MB (without data) 5 GB+
Web Server Apache 2.4 / Nginx 1.18 Latest stable

12.2 PHP Requirements

Required PHP Extensions

Extension Purpose Check Command
iconv Character encoding php -m | grep iconv
mbstring Multibyte strings php -m | grep mbstring
curl External connections php -m | grep curl
openssl Encryption php -m | grep openssl
tokenizer Code parsing php -m | grep tokenizer
xmlrpc XMLRPC services php -m | grep xmlrpc
soap SOAP web services php -m | grep soap
ctype Character classification php -m | grep ctype
zip File compression php -m | grep zip
gd Image processing php -m | grep gd
simplexml XML parsing php -m | grep simplexml
dom DOM manipulation php -m | grep dom
xml XML support php -m | grep xml
json JSON handling php -m | grep json
Extension Purpose
intl Internationalization
opcache Code caching
redis Redis caching
sodium Modern cryptography
exif Image metadata
fileinfo File type detection

PHP Configuration Check

# Check PHP version
php -v

# List loaded extensions
php -m

# Check specific extension
php -m | grep -i curl

# View PHP configuration
php -i | grep -i memory_limit
php -i | grep -i upload_max_filesize
php -i | grep -i post_max_size
php -i | grep -i max_execution_time

12.3 Database Requirements

MySQL/MariaDB

-- Required settings
innodb_file_per_table = 1
innodb_file_format = Barracuda
innodb_large_prefix = 1

-- Character set requirements
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

-- Check current settings
SHOW VARIABLES LIKE 'innodb_file_per_table';
SHOW VARIABLES LIKE 'character_set_server';
SHOW VARIABLES LIKE 'collation_server';

PostgreSQL

-- PostgreSQL requirements
- Version 13.0 or higher
- UTF-8 encoding
- Standard PostgreSQL extensions

-- Check version
SELECT version();

-- Check encoding
SHOW server_encoding;

12.4 Web Server Configuration

Apache Configuration

<VirtualHost *:443>
    ServerName lms.company.com
    DocumentRoot /var/www/html/pulselms

    <Directory /var/www/html/pulselms>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    # PHP-FPM configuration
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost"
    </FilesMatch>

    # Security headers
    Header always set X-Content-Type-Options nosniff
    Header always set X-Frame-Options SAMEORIGIN
    Header always set X-XSS-Protection "1; mode=block"

    # SSL configuration
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/lms.crt
    SSLCertificateKeyFile /etc/ssl/private/lms.key

    ErrorLog ${APACHE_LOG_DIR}/pulselms_error.log
    CustomLog ${APACHE_LOG_DIR}/pulselms_access.log combined
</VirtualHost>

Nginx Configuration

server {
    listen 443 ssl http2;
    server_name lms.company.com;
    root /var/www/html/pulselms;

    ssl_certificate /etc/ssl/certs/lms.crt;
    ssl_certificate_key /etc/ssl/private/lms.key;

    index index.php index.html;

    # Security headers
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-XSS-Protection "1; mode=block";

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ ^(.+\.php)(.*)$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }

    location /dataroot/ {
        internal;
        alias /var/www/pulselmsdata/;
    }

    # Deny access to sensitive files
    location ~ /\.ht {
        deny all;
    }

    location ~ ^/(config\.php|install\.php|upgrade\.txt) {
        deny all;
    }
}

12.5 File System Requirements

Directory Structure

Directory Purpose Permissions
/var/www/html/pulselms Web root 755
/var/www/pulselmsdata Data directory 750
/var/www/pulselmsdata/filedir Uploaded files 750
/var/www/pulselmsdata/cache Cache files 750
/var/www/pulselmsdata/temp Temporary files 750
/var/www/pulselmsdata/sessions PHP sessions 750

Setting Permissions

# Set ownership
chown -R www-data:www-data /var/www/html/pulselms
chown -R www-data:www-data /var/www/pulselmsdata

# Set directory permissions
find /var/www/html/pulselms -type d -exec chmod 755 {} \;
find /var/www/pulselmsdata -type d -exec chmod 750 {} \;

# Set file permissions
find /var/www/html/pulselms -type f -exec chmod 644 {} \;
find /var/www/pulselmsdata -type f -exec chmod 640 {} \;

# Config file protection
chmod 640 /var/www/html/pulselms/config.php

12.6 Memory and Resource Sizing

User Capacity Guidelines

Concurrent Users RAM CPU Cores Notes
< 50 2 GB 2 Small organization
50-200 4 GB 4 Medium organization
200-500 8 GB 8 Large organization
500-1000 16 GB 16 Enterprise
1000+ 32 GB+ 32+ Multi-server setup

Disk Space Planning

Component Approximate Size
PulseLMS code 500 MB
Database (per 100 users) 500 MB
Uploaded files (per 100 users) 5 GB (varies greatly)
Cache files 2 GB
Log files 1 GB
Backups 2x data size

13. Environment Checks

13.1 Environment Check Overview

Access via: Site administration > Server > Environment

The environment check verifies:

  • PHP version and configuration
  • Database version and settings
  • Required PHP extensions
  • Recommended settings
  • Security configurations

13.2 Running Environment Check

Step-by-Step:
---------------------------------
1. Navigate to Site administration > Server > Environment
2. System automatically runs checks
3. Review results:
   - Green checkmarks: Passed
   - Orange warnings: Recommended improvements
   - Red X: Critical issues
4. Address any critical issues
5. Consider addressing warnings

13.3 Environment Check Results

Status Indicators

Icon Meaning Action
Green check Requirement met None needed
Orange warning Not optimal Recommended fix
Red X Requirement not met Must fix
Gray info Information only Review

Common Check Categories

Category Checks
PHP version Minimum and recommended version
PHP settings Memory, execution time, etc.
PHP extensions Required and optional
Database Version and configuration
Server Unicode, file permissions
Security HTTPS, security headers

13.4 Resolving Common Issues

PHP Memory Limit Too Low

Issue: memory_limit below 256M

Resolution (php.ini):
---------------------------------
memory_limit = 512M

Or (PHP-FPM pool):
---------------------------------
php_admin_value[memory_limit] = 512M

Missing PHP Extension

Issue: Required extension not installed

Resolution (Debian/Ubuntu):
---------------------------------
apt-get install php8.1-curl php8.1-gd php8.1-mbstring

Resolution (RHEL/CentOS):
---------------------------------
yum install php-curl php-gd php-mbstring

Then restart PHP-FPM:
---------------------------------
systemctl restart php8.1-fpm

Database Collation Issue

Issue: Incorrect database collation

Resolution (MySQL):
---------------------------------
ALTER DATABASE pulselms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

13.5 PHP Info Page

View detailed PHP configuration:

Access:
---------------------------------
Site administration > Server > PHP info

Information Displayed:
---------------------------------
- PHP version and build
- Loaded configuration file
- Loaded extensions
- Configuration directives
- Environment variables
- HTTP headers

13.6 Pre-Upgrade Checks

Before upgrading PulseLMS:

Checklist:
---------------------------------
[ ] Run environment check
[ ] Verify PHP version compatibility
[ ] Check database version compatibility
[ ] Review plugin compatibility
[ ] Backup database and files
[ ] Notify users of maintenance
[ ] Test in staging environment
[ ] Document current configuration

13.7 Health Check Monitoring

Implement ongoing health monitoring:

Check Frequency Alert Threshold
Cron status Every 5 minutes > 15 minutes since last run
Disk space Every hour < 10% free
Database connections Continuous > 90% max
Memory usage Continuous > 90%
PHP errors Continuous Any fatal errors
SSL certificate Daily < 30 days to expiry

14. Mobile Browser Access Configuration

14.1 Mobile Browser Access Overview

PulseLMS is fully accessible on mobile devices through any modern web browser. There is no separate mobile app - simply visit PulseLMS using your phone or tablet's browser for a responsive, mobile-optimized experience.

Access Method Description
Mobile Browser Full responsive experience via Chrome, Safari, Firefox, or Edge on any mobile device
Progressive Web App (PWA) Add PulseLMS to your home screen for an app-like experience

14.2 Enabling Mobile Web Services

Access via: Site administration > Mobile > Mobile settings

Basic Mobile Configuration

Setting Description Recommendation
Enable mobile web services Allow mobile browser connectivity Enable
Authenticated users only Require login Enable
Force login Require login for mobile access Enable
Type of login QR code, browser, manual All methods
QR code type Login QR type Enhanced

Enabling Mobile Services

Step-by-Step:
---------------------------------
1. Navigate to Site administration > Mobile > Mobile settings
2. Check "Enable web services for mobile devices"
3. Configure login options
4. Save changes
5. Navigate to Site administration > Server > Web services > Overview
6. Verify "Enable web services" is checked
7. Navigate to Plugins > Protocols
8. Enable "REST protocol"
9. Test mobile browser connection

14.3 Mobile Browser Features

Configure available features for mobile browser users:

Feature Description Toggle Location
Push notifications Browser notification alerts Mobile settings
File downloads Download course files Mobile settings
Messaging Mobile messaging Mobile settings
Calendar sync Device calendar integration Mobile settings
QR scanner Scan attendance QR codes Mobile settings

14.4 Mobile Web Appearance

Customize mobile web branding:

Setting Description Requirement
Mobile CSS Custom styling CSS code
Mobile logo Logo display on mobile Image file
Color scheme Theme colors Hex colors
Custom language strings Text customization Language strings

14.5 Push Notification Configuration

Enable push notifications for mobile users:

Notification Type Description
New messages Private message received
Forum posts New discussion replies
Assignment deadlines Due date reminders
Grade updates New grade available
Course announcements Important updates

Configuring Push Notifications

Step-by-Step:
---------------------------------
1. Navigate to Site administration > Mobile > Mobile settings
2. Locate "Enable push notifications"
3. Register for push notification service (if required)
4. Configure notification types
5. Test notification delivery

14.6 Mobile Content Restrictions

Control what content is available on mobile:

Setting Options Purpose
Disabled features Select features to disable Limit functionality
Custom menu items Configure navigation Customize experience
Download limits File size restrictions Bandwidth control
Offline content What's available offline Storage management

14.7 Mobile Security Considerations

Security Measure Implementation
HTTPS required Enforce SSL for all connections
Token expiry Set appropriate token lifetime
Device registration Track registered devices
Session management Configure mobile sessions
Data encryption Enable at-rest encryption

14.8 Testing Mobile Access

Testing Checklist

Test Expected Result
Mobile browser access Site loads responsively
Site connection Connects without errors
Login Authentication succeeds
Course access Courses display correctly
Activity completion Tracks properly
Content download Files download correctly
Push notifications Browser notifications received

15. Web Services Configuration

15.1 Web Services Overview

Access via: Site administration > Server > Web services

Web services enable:

Use Case Description
Mobile browser access Mobile web connectivity
External systems Third-party integrations
Automation Scripted operations
Custom apps Custom application development
Data sync External data synchronization
SSO integration Authentication systems

15.2 Enabling Web Services

Step-by-Step:
---------------------------------
1. Navigate to Site administration > General > Advanced features
2. Enable "Web services"
3. Navigate to Site administration > Server > Web services > Overview
4. Follow the setup wizard:
   a. Enable web services: Check box
   b. Enable protocols: REST protocol
   c. Create service: Define new or use existing
   d. Create user: Service account
   e. Assign capabilities: Grant permissions
   f. Create token: Generate access token
   g. Test service: Verify functionality

15.3 Web Service Protocols

Protocol Description Use Case
REST RESTful API Most integrations
SOAP SOAP services Legacy systems
XML-RPC XML remote procedure Older systems
AMF Action Message Format Flash applications

Enabling REST Protocol

Step-by-Step:
---------------------------------
1. Navigate to Site administration > Server > Web services > Manage protocols
2. Click the eye icon next to "REST protocol"
3. Status changes to enabled
4. REST services now available

15.4 External Services

Create custom services for specific purposes:

Creating a Service

Step-by-Step:
---------------------------------
1. Navigate to Site administration > Server > Web services > External services
2. Click "Add" button
3. Configure service:
   - Name: "Course Management API"
   - Short name: "course_mgmt"
   - Enabled: Yes
   - Authorized users only: Yes (for security)
   - Required capability: (if restricting by role)
4. Save changes
5. Click "Add functions"
6. Select functions for this service:
   - core_course_get_courses
   - core_course_create_courses
   - core_user_get_users
   - etc.
7. Save function selection

Common Web Service Functions

Function Purpose Example Use
core_user_create_users Create users User provisioning
core_user_get_users Retrieve users User lookup
core_course_create_courses Create courses Course creation
core_course_get_courses Get course info Course catalog
enrol_manual_enrol_users Enroll users Enrollment automation
core_grades_get_grades Retrieve grades Grade export
mod_assign_get_submissions Get assignments Assignment tracking

15.5 Token Management

Tokens provide API access:

Creating a Token

Step-by-Step:
---------------------------------
1. Navigate to Site administration > Server > Web services > Manage tokens
2. Click "Create token"
3. Configure token:
   - User: Select service account user
   - Service: Select target service
   - IP restriction: Limit by IP (recommended)
   - Valid until: Expiration date (optional)
4. Save changes
5. Copy generated token securely
6. Token displayed only once

Token Security Best Practices

Practice Description
IP restriction Limit tokens to specific IPs
Separate accounts Create dedicated service users
Minimum permissions Grant only needed capabilities
Regular rotation Rotate tokens periodically
Monitoring Log and monitor token usage
Secure storage Store tokens securely
Expiration Set token expiration dates

15.6 API Usage Examples

REST API Authentication

# Token in URL parameter (less secure)
curl "https://lms.company.com/webservice/rest/server.php?wstoken=YOUR_TOKEN&wsfunction=core_webservice_get_site_info&moodlewsrestformat=json"

# Token in header (more secure)
curl -X POST "https://lms.company.com/webservice/rest/server.php" \
  -H "Authorization: YOUR_TOKEN" \
  -d "wsfunction=core_webservice_get_site_info" \
  -d "moodlewsrestformat=json"

Common API Operations

# Get site information
curl "https://lms.company.com/webservice/rest/server.php?wstoken=TOKEN&wsfunction=core_webservice_get_site_info&moodlewsrestformat=json"

# Get courses
curl "https://lms.company.com/webservice/rest/server.php?wstoken=TOKEN&wsfunction=core_course_get_courses&moodlewsrestformat=json"

# Create user
curl -X POST "https://lms.company.com/webservice/rest/server.php" \
  -d "wstoken=TOKEN" \
  -d "wsfunction=core_user_create_users" \
  -d "moodlewsrestformat=json" \
  -d "users[0][username]=newuser" \
  -d "users[0][password]=SecurePass123!" \
  -d "users[0][firstname]=John" \
  -d "users[0][lastname]=Doe" \
  -d "users[0][email][email protected]"

# Enroll user in course
curl -X POST "https://lms.company.com/webservice/rest/server.php" \
  -d "wstoken=TOKEN" \
  -d "wsfunction=enrol_manual_enrol_users" \
  -d "moodlewsrestformat=json" \
  -d "enrolments[0][roleid]=5" \
  -d "enrolments[0][userid]=42" \
  -d "enrolments[0][courseid]=10"

15.7 Web Service Logs

Monitor API usage:

Navigation:
---------------------------------
Site administration > Server > Web services > Web services overview

Information Available:
---------------------------------
- Token usage statistics
- Function call counts
- Error rates
- User activity

15.8 Troubleshooting Web Services

Problem Cause Solution
Invalid token Token expired/invalid Generate new token
Function not available Not in service Add function to service
Permission denied Missing capability Grant capability to user
Service disabled Protocol not enabled Enable REST protocol
IP blocked IP restriction Update allowed IPs
Invalid parameters Wrong function parameters Check API documentation

15.9 Web Service Security

Security Measure Implementation
HTTPS only Enforce SSL for all API calls
IP restrictions Limit by source IP
Token rotation Regular token refresh
Audit logging Log all API access
Rate limiting Prevent abuse
Capability review Minimal permissions
Dedicated users Separate service accounts

Appendix A: Quick Reference Tables

A.1 Important File Locations

File/Directory Purpose
/var/www/html/pulselms Web root
/var/www/html/pulselms/config.php Main configuration
/var/www/pulselmsdata Data directory
/var/www/pulselmsdata/filedir Uploaded files
/var/www/pulselmsdata/sessions Session files
/var/log/apache2/pulselms_error.log Error log

A.2 CLI Commands Reference

Command Purpose
php admin/cli/cron.php Run scheduled tasks
php admin/cli/purge_caches.php Clear all caches
php admin/cli/upgrade.php Run database upgrade
php admin/cli/maintenance.php Maintenance mode
php admin/cli/install.php Command-line install
php admin/cli/reset_password.php Reset user password
php admin/cli/mysql_engine.php Database engine management

A.3 Default Port Reference

Service Port Purpose
HTTP 80 Unencrypted web
HTTPS 443 Encrypted web
MySQL 3306 Database
PostgreSQL 5432 Database
Redis 6379 Cache
Memcached 11211 Cache
LDAP 389 Directory
LDAPS 636 Secure directory
SMTP 25/587/465 Email

A.4 Role Capability Quick Reference

Capability Manager Teacher Student
Create courses Yes No No
Manage enrollments Yes Yes No
Grade activities Yes Yes No
Submit assignments No No Yes
View reports Yes Yes Limited
Manage plugins No No No
Site configuration No No No

Appendix B: Maintenance Procedures

B.1 Regular Maintenance Schedule

Task Frequency Procedure
Backup verification Daily Verify backup completion
Log review Daily Check for errors
Disk space check Weekly Monitor available space
Security updates Weekly Apply security patches
Performance review Weekly Check response times
Database optimization Monthly Run optimize scripts
Plugin updates Monthly Update plugins
User audit Quarterly Review user accounts
Security audit Quarterly Full security review
Disaster recovery test Annually Test restore procedures

B.2 Backup Procedures

Daily Backup Routine:
---------------------------------
1. Automated backup via scheduled task
2. Backup includes:
   - Database dump
   - Data directory files
   - Configuration files
3. Verify backup completion
4. Test restore periodically

Manual Backup Command:
---------------------------------
# Database backup
mysqldump -u root -p pulselms > backup_$(date +%Y%m%d).sql

# Data directory backup
tar -czvf datadir_$(date +%Y%m%d).tar.gz /var/www/pulselmsdata/

# Configuration backup
cp /var/www/html/pulselms/config.php config.php.backup

B.3 Update Procedures

Pre-Update Checklist:
---------------------------------
[ ] Review release notes
[ ] Check PHP/database compatibility
[ ] Backup database and files
[ ] Notify users of maintenance
[ ] Enable maintenance mode
[ ] Test in staging environment

Update Steps:
---------------------------------
1. Enable maintenance mode
2. Backup current installation
3. Download new version
4. Replace code files (preserve config.php)
5. Run upgrade script
6. Clear caches
7. Verify functionality
8. Disable maintenance mode

Appendix C: Troubleshooting Guide

C.1 Common Issues and Solutions

Issue Symptoms Solution
White screen Blank page Enable debugging, check logs
Login loop Can't stay logged in Clear cookies, check sessions
Slow performance Long load times Check caching, database
Email not sending Missing notifications Verify SMTP settings
File upload fails Upload errors Check size limits, permissions
Database errors Error messages Check connection, run upgrade
Cron not running Delayed tasks Verify cron configuration
Plugin errors After installation Disable plugin, check compatibility

C.2 Emergency Access

If locked out of PulseLMS:

Reset Admin Password:
---------------------------------
php admin/cli/reset_password.php --username=admin --password=NewSecurePassword123!

Disable Maintenance Mode:
---------------------------------
php admin/cli/maintenance.php --disable

Or via database:
---------------------------------
UPDATE mdl_config SET value = '0' WHERE name = 'maintenance_enabled';

Disable Problem Plugin:
---------------------------------
Rename plugin directory:
mv /var/www/html/pulselms/mod/problemplugin /var/www/html/pulselms/mod/problemplugin.disabled

Appendix D: Glossary

Term Definition
Activity Interactive course content (quiz, assignment, forum)
Block Content display area in the sidebar
Capability Permission to perform specific action
Category Organizational container for courses
Cohort Site-wide group for enrollment
Context Level at which permissions apply
Cron Scheduled task execution system
Data directory Server location for uploaded files
Enrollment User registration in a course
Plugin Extension that adds functionality
Role Collection of capabilities
Theme Visual appearance template
Token API authentication credential
Web service API for external access

Appendix E: Contact and Support

E.1 Support Resources

Resource Purpose Access
Documentation This guide and others /docs/ directory
System logs Error investigation Site admin > Reports > Logs
Community forums Peer support Community website
Professional support Enterprise assistance Support contract

E.2 Reporting Issues

When reporting issues, include:

  1. PulseLMS version number
  2. PHP version
  3. Database type and version
  4. Browser used
  5. Error messages (exact text)
  6. Steps to reproduce
  7. Recent changes made
  8. Relevant log entries

PulseLMS Administrator Guide v1.0 Last Updated: January 2026 Document: 30-ADMIN-GUIDE.md