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¶
- Administrator Overview and Dashboard
- Site Administration Navigation
- System Configuration
- Security Settings
- Performance Optimization
- Plugin Management
- Theme Configuration
- Authentication Methods
- Email Configuration
- Scheduled Tasks (Cron)
- System Logs and Debugging
- Server Requirements
- Environment Checks
- Mobile Browser Access Configuration
- 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¶
- Log in to PulseLMS with your administrator credentials
- Click on Site administration in the navigation menu
- Alternatively, access via the gear icon in the top navigation bar
- 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¶
- Navigate to Site administration > Messaging > Notification settings
- Locate the "System alerts" section
- Configure preferred notification methods:
- Web notifications
- Email notifications
- 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:
- Click the hamburger menu (three horizontal lines) if not visible
- Scroll to find Site administration
- Click to expand the administration tree
- Navigate through the hierarchical structure
Method 2: Search Functionality¶
Use the admin search to quickly find settings:
- At the top of Site Administration, locate the search box
- Type keywords related to the setting you need
- Results display matching settings and pages
- 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:
- Navigate to any admin page
- Click the star icon next to the page title
- Access bookmarks via the "Admin bookmarks" block on your dashboard
Recommended Bookmarks for Administrators¶
| 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¶
- Navigate to Site administration > Security > Site security settings
- Locate "Allowed IP list" field
- Enter allowed IPs/ranges (one per line)
- Locate "Blocked IP list" field
- Enter blocked IPs/ranges (one per line)
- 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¶
Recommended PHP Settings¶
| 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¶
- Set up CDN account (Cloudflare, CloudFront, etc.)
- Configure CDN to cache static content
- Update config.php with CDN URL
- Configure appropriate cache headers
- 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¶
- Only install plugins from trusted sources
- Review plugin permissions and capabilities
- Test in staging environment before production
- Keep all plugins updated
- Remove unused plugins
- Monitor for security advisories
- 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 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 Cloud Console | G Suite users | |
| Microsoft | Azure AD / Microsoft 365 | Microsoft 365 users |
| 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 |
Recommended PHP Extensions¶
| 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 |
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:
- PulseLMS version number
- PHP version
- Database type and version
- Browser used
- Error messages (exact text)
- Steps to reproduce
- Recent changes made
- Relevant log entries
PulseLMS Administrator Guide v1.0 Last Updated: January 2026 Document: 30-ADMIN-GUIDE.md