Repository navigation
Technical Plugin PayPerViewLive
Defines paid live-event plans and purchase/entitlement behavior.
Audience: developers, advanced administrators and AI-assisted diagnosis. Plugin catalog.
- Review date: 2026-10-29. Method: static source analysis; runtime/provider behavior was not exercised.
- Code ownership: independently versioned plugin repository.
- Reported version:
7.5. - Source revision:
7d63190ccc1f5337e8ad96e06323d9d98520bc0f. - Entry class file: PayPerViewLive.php.
Confirm the installed plugin version independently of the Streamer version. Configuration defaults below are not a dump of this installation's saved settings.
| Plugin | Required by declaration | Source reason |
|---|---|---|
| YPTWallet | Required | Charges PPV live purchases to the user wallet balance |
| Live | Required | Gates access to live streams, its core purpose |
Literal runtime plugin references: Live, YPTWallet. These calls do not mean every referenced plugin is mandatory.
| Override | Implementation |
|---|---|
getTags() |
PayPerViewLive.php:21 |
getDataObjectAdvanced() |
PayPerViewLive.php:54 |
getPluginMenu() |
PayPerViewLive.php:90 |
getLivePanel() |
PayPerViewLive.php:96 |
getModeYouTubeLive($users_id_live_owner) |
PayPerViewLive.php:103 |
profileTabName($users_id) |
PayPerViewLive.php:254 |
profileTabContent($users_id) |
PayPerViewLive.php:261 |
getLiveApplicationArray() |
PayPerViewLive.php:271 |
These are direct assignments inside getEmptyDataObject(), not evaluated effective defaults. Stored plugins.object_data, globals, structured values and conditional branches may alter runtime behavior. Private/default credential values are omitted.
| Field | Literal default or expression type | Literal source label/help | Evidence |
|---|---|---|---|
payPerViewLabel |
"Pay-per-view Live" |
— | source |
payPerViewBuyLabel |
"Buy Now" |
— | source |
thanksForPurchase |
"Thanks for the purchase" |
— | source |
reminderText |
Computed/structured; inspect source | — | source |
ifNeedToPayRedirectURL |
'' |
if need to pay, redirect to this URL: If you use this option you may need the API to enable the PPV | source |
This inventory distinguishes implementation files from an API specification. Includes, templates, callbacks and CLI workers are not interchangeable HTTP endpoints. Request-field names below are direct source references, not a complete schema or permission declaration.
| File | Source role | Direct request fields observed |
|---|---|---|
| Objects/Ppvlive_plans.php | class/helper implementation | — |
| Objects/Ppvlive_purchases.php | class/helper implementation | — |
| Objects/Ppvlive_schedule.php | class/helper implementation | sort |
| Objects/Ppvlive_users_parameters.php | class/helper implementation | — |
| PayPerViewLive.php | plugin entry class |
ppv_schedule_id, redirectUri, users_id
|
| View/Ppvlive_plans/add.json.php | JSON entry point; inspect caller and guard |
description, hours_valid, id, max_duration_in_minutes, name, percentage_siteowner, percentage_user, status, users_id, value
|
| View/Ppvlive_plans/delete.json.php | JSON entry point; inspect caller and guard | id |
| View/Ppvlive_plans/index.php | PHP page/include/worker; inspect caller | — |
| View/Ppvlive_plans/index_body.php | PHP page/include/worker; inspect caller | — |
| View/Ppvlive_plans/index_head.php | PHP page/include/worker; inspect caller | — |
| View/Ppvlive_plans/list.json.php | JSON entry point; inspect caller and guard | — |
| View/Ppvlive_purchases/add.json.php | JSON entry point; inspect caller and guard |
id, parameters, ppvlive_schedule_id, status, type, users_id, value_paid
|
| View/Ppvlive_purchases/delete.json.php | JSON entry point; inspect caller and guard | id |
| View/Ppvlive_purchases/index.php | PHP page/include/worker; inspect caller | — |
| View/Ppvlive_purchases/index_body.php | PHP page/include/worker; inspect caller | — |
| View/Ppvlive_purchases/index_head.php | PHP page/include/worker; inspect caller | — |
| View/Ppvlive_purchases/list.json.php | JSON entry point; inspect caller and guard | — |
| View/Ppvlive_schedule/add.json.php | JSON entry point; inspect caller and guard |
description, id, live_ends, live_starts, parameters, ppvlive_plans_id, start_sell_in, startsel1, status, users_id
|
| View/Ppvlive_schedule/delete.json.php | JSON entry point; inspect caller and guard | id |
| View/Ppvlive_schedule/index.php | PHP page/include/worker; inspect caller | — |
| View/Ppvlive_schedule/index_body.php | PHP page/include/worker; inspect caller | — |
| View/Ppvlive_schedule/index_head.php | PHP page/include/worker; inspect caller | — |
| View/Ppvlive_schedule/list.json.php | JSON entry point; inspect caller and guard |
future, sort, users_id
|
| View/Ppvlive_users_parameters/add.json.php | JSON entry point; inspect caller and guard |
id, parameters, users_id
|
| View/Ppvlive_users_parameters/delete.json.php | JSON entry point; inspect caller and guard | id |
| View/Ppvlive_users_parameters/index.php | PHP page/include/worker; inspect caller | — |
| View/Ppvlive_users_parameters/index_body.php | PHP page/include/worker; inspect caller | — |
| View/Ppvlive_users_parameters/index_head.php | PHP page/include/worker; inspect caller | — |
| View/Ppvlive_users_parameters/list.json.php | JSON entry point; inspect caller and guard | — |
| View/buy.php | PHP page/include/worker; inspect caller |
plans_id, ppvlive_schedule_id, redirectUri, sort, users_id
|
| View/editor.php | PHP page/include/worker; inspect caller | — |
| View/panel.php | PHP page/include/worker; inspect caller | — |
| View/profileTabContent.php | PHP page/include/worker; inspect caller | sort |
| install/install.sql | schema/migration SQL | — |
| install/updateV4.1.sql | schema/migration SQL | — |
| remindMe.json.php | JSON entry point; inspect caller and guard |
deleteIfExists, minutesEarlier, ppvlive_schedule_id
|
| remindMe.php | PHP page/include/worker; inspect caller | ppvlive_schedule_id |
| subscribePlan.php | PHP page/include/worker; inspect caller | ppvlive_schedule_id |
Tables named in available CREATE TABLE statements: ppvlive_plans, ppvlive_purchases, ppvlive_schedule, ppvlive_users_parameters.
Apply installation/update behavior through the owning plugin; this reference is not a script for running historical migrations manually.
Visibility and implementation semantics must be checked in source. Nonempty string defaults are represented as . This is a symbol reference, not a stable public API promise.
| Function or method | Source |
|---|---|
getPluginDependencies() |
14 |
getTags() |
21 |
getDescription() |
29 |
getName() |
39 |
getUUID() |
44 |
getPluginVersion() |
49 |
getDataObjectAdvanced() |
54 |
getEmptyDataObject() |
61 |
canCreatePPV() |
82 |
getPluginMenu() |
90 |
getLivePanel() |
96 |
getModeYouTubeLive($users_id_live_owner) |
103 |
getLinkToBuy($users_id) |
123 |
canUserWatchNow($users_id, $users_id_live_owner) |
138 |
userHasASchedule($users_id, $time) |
155 |
getAllPlansFromUser($users_id) |
160 |
getSubscriptionToPlan($users_id, $ppvlive_schedule_id) |
165 |
getPaymentDetails($scheduleId) |
171 |
completeWalletCheckout($usersId, $scheduleId, $expectedValue, $expectedEnd) |
193 |
canUserWatchLive($users_id, $ppvlive_schedule_id) |
225 |
profileTabName($users_id) |
254 |
profileTabContent($users_id) |
261 |
getLiveApplicationArray() |
271 |
setLiveScheduleReminder($ppvlive_schedule_id, $minutesEarlier = 0, $deleteIfExists = false) |
320 |
getLiveScheduleReminders($ppvlive_schedule_id) |
397 |
getLiveScheduleReminderBaseNameType($ppvlive_schedule_id, $minutesEarlier = '') |
403 |
getScheduleReminderOptions($ppvlive_schedule_id) |
413 |
API_set_payperview($parameters) |
489 |
API_set_payperview_delete($parameters) |
572 |
API_get_payperview($parameters) |
639 |
These symbols are grouped by source file; inspect the class declaration and visibility before calling them.
Declared classes: Ppvlive_plans.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
9 |
getTableName() |
13 |
getAllUsers() |
17 |
getAllActive() |
21 |
setId($id) |
42 |
setValue($value) |
46 |
setName($name) |
50 |
setDescription($description) |
55 |
setStatus($status) |
60 |
setHours_valid($hours_valid) |
64 |
setUsers_id($users_id) |
68 |
setPercentage_siteowner($percentage_siteowner) |
72 |
setPercentage_user($percentage_user) |
76 |
setMax_duration_in_minutes($max_duration_in_minutes) |
80 |
getId() |
85 |
getValue() |
89 |
getName() |
93 |
getDescription() |
97 |
getStatus() |
101 |
getHours_valid() |
105 |
getUsers_id() |
109 |
getPercentage_siteowner() |
113 |
getPercentage_user() |
117 |
getMax_duration_in_minutes() |
121 |
save() |
125 |
Declared classes: Ppvlive_purchases.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
9 |
getTableName() |
13 |
getAllPpvlive_schedule() |
17 |
getAllUsers() |
42 |
setId($id) |
67 |
setPpvlive_schedule_id($ppvlive_schedule_id) |
71 |
setUsers_id($users_id) |
75 |
setStatus($status) |
79 |
setValue_paid($value_paid) |
83 |
setParameters($parameters) |
87 |
setType($type) |
91 |
getId() |
95 |
getPpvlive_schedule_id() |
99 |
getUsers_id() |
103 |
getStatus() |
107 |
getValue_paid() |
111 |
getParameters() |
115 |
getType() |
119 |
getPurchase($users_id, $ppvlive_schedule_id) |
124 |
getAllFromUser($users_id) |
145 |
getAll() |
171 |
Declared classes: Ppvlive_schedule.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
10 |
getTableName() |
14 |
getAllPpvlive_plans($status = "") |
18 |
getAllUsers() |
44 |
setId($id) |
62 |
setPpvlive_plans_id($ppvlive_plans_id) |
66 |
setUsers_id($users_id) |
70 |
setLive_starts($live_starts) |
74 |
setLive_ends($live_ends) |
79 |
setStatus($status) |
86 |
setStart_sell_in($start_sell_in) |
90 |
setParameters($parameters) |
97 |
getId() |
104 |
getPpvlive_plans_id() |
108 |
getUsers_id() |
112 |
getLive_starts() |
116 |
getLive_ends() |
120 |
getStatus() |
124 |
getStart_sell_in() |
128 |
getParameters() |
132 |
save() |
136 |
getAll($users_id=0, $future=false, $activeOnly=true, $notStarted=false ) |
208 |
getSchedule($users_id, $time) |
281 |
getScheduleFromID($id) |
324 |
Declared classes: Ppvlive_users_parameters.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
9 |
getTableName() |
13 |
getAllUsers() |
17 |
setId($id) |
38 |
setUsers_id($users_id) |
42 |
setParameters($parameters) |
46 |
getId() |
51 |
getUsers_id() |
55 |
getParameters() |
59 |
- Check the installed/enabled version and the dependencies/settings above.
- Identify the actual failing page, request, callback or worker and correlate its timestamp with the AVideo log.
- Follow the linked method and caller. Check business-state changes and output artifacts as well as HTTP status.
- Reproduce the relevant workflow in a test environment. External provider, Encoder, live-server, storage, payment and authenticated flows require their real integrations.
Shared diagnostic workflow. This page is not a security audit or a claim of end-to-end validation.
Start
Install and update
- Install on Ubuntu 24.04 or 26.04
- Installation Setup Page
- Scheduler cron job (required)
- Set up email
- Use HTTPS
- Own Encoder
- Docker
- Update AVideo
- Backup
- Secure file permissions
- Server command-line tools
- Hidden configuration options
Videos
- Upload a video
- Local Encoder (on your computer)
- Bulk upload by FTP
- Import a channel
- Publish on YouTube and social media
- Privacy options
- Only for logged-in users
- Resolutions by user group
- Storage options
- Move and protect video files
- Video does not play
Users
Live
- Make a live stream
- Stream with OBS
- Own live server
- One live server, many sites
- Live server install errors
- Live does not play
Plugins
Problems
Other
- Translate your site
- Write a plugin (developers)
- Technical reference (developers and advanced administrators)
Old and retired guides