Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
20.00% covered (danger)
20.00%
3 / 15
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2
3/**
4 * Legacy Class Aliases for Backward Compatibility
5 *
6 * This file provides class_alias mappings for legacy non-namespaced classes
7 * to their new PSR-4 namespaced locations. Usage of legacy class names will
8 * trigger deprecation warnings to encourage migration to the new namespaces.
9 *
10 * @package BuyerKiosk\Compatibility
11 * @deprecated These aliases will be removed in a future release.
12 */
13
14namespace BuyerKiosk\Compatibility;
15
16/**
17 * Legacy class name to new namespace mapping.
18 *
19 * Format: 'LegacyClassName' => 'BuyerKiosk\\Namespace\\ClassName'
20 *
21 * Classes are organized by their target namespace:
22 * - Core: Base domain models (Store, Buy, BuyQueue, etc.)
23 * - Core\Loyalty: Loyalty program classes
24 * - Core\Robot: Automation/robot classes
25 */
26$legacyClassMap = [
27    // Core Domain Models (extend Store or are standalone)
28    'Store' => \BuyerKiosk\Core\Store::class,
29    'Buy' => \BuyerKiosk\Core\Buy::class,
30    'BuyQueue' => \BuyerKiosk\Core\BuyQueue::class,
31    'Customer' => \BuyerKiosk\Core\Customer::class,
32    'Employee' => \BuyerKiosk\Core\Employee::class,
33    'CompletedBuys' => \BuyerKiosk\Core\CompletedBuys::class,
34    'DeletedBuy' => \BuyerKiosk\Core\DeletedBuy::class,
35    'CustomerAlerts' => \BuyerKiosk\Core\CustomerAlerts::class,
36    'BuyerStats' => \BuyerKiosk\Core\BuyerStats::class,
37    'PrintLog' => \BuyerKiosk\Core\PrintLog::class,
38
39    // Store Utility Models
40    'TextInvoice' => \BuyerKiosk\Core\TextInvoice::class,
41    'ContactNumber' => \BuyerKiosk\Core\ContactNumber::class,
42    'TextLog' => \BuyerKiosk\Core\TextLog::class,
43    'EstimatedWaitTime' => \BuyerKiosk\Core\EstimatedWaitTime::class,
44    'DashboardStats' => \BuyerKiosk\Core\DashboardStats::class,
45    'StoreStat' => \BuyerKiosk\Core\StoreStat::class,
46    'EmployeeDaily' => \BuyerKiosk\Core\EmployeeDaily::class,
47    'MobileAPIKey' => \BuyerKiosk\Core\MobileAPIKey::class,
48    'InstallKey' => \BuyerKiosk\Core\InstallKey::class,
49    'ReceiptCoupon' => \BuyerKiosk\Core\ReceiptCoupon::class,
50    'RemoteCheckIn' => \BuyerKiosk\Core\RemoteCheckIn::class,
51    'TaskList' => \BuyerKiosk\Core\TaskList::class,
52    'TaskGroup' => \BuyerKiosk\Core\TaskGroup::class,
53    'Task' => \BuyerKiosk\Core\Task::class,
54    'BuyReport' => \BuyerKiosk\Core\BuyReport::class,
55    'DeletedBuyReport' => \BuyerKiosk\Core\DeletedBuyReport::class,
56    'SystemBuyReport' => \BuyerKiosk\Core\SystemBuyReport::class,
57
58    // ShiftNotes Classes
59    'ShiftNotes' => \BuyerKiosk\Core\ShiftNotes\ShiftNotes::class,
60    'ShiftNotesDateRange' => \BuyerKiosk\Core\ShiftNotes\ShiftNotesDateRange::class,
61
62    // SMS Classes
63    'Nexmo' => \BuyerKiosk\Core\Nexmo::class,
64    'sendSMS' => \BuyerKiosk\Core\SendSMS::class,
65    'receiveSMS' => \BuyerKiosk\Core\ReceiveSMS::class,
66
67    // Utility Classes
68    'RandomStringGenerator' => \BuyerKiosk\Core\RandomStringGenerator::class,
69    'Database' => \BuyerKiosk\Core\Database::class,
70    'Alert' => \BuyerKiosk\Core\Alert::class,
71    'QueueItem' => \BuyerKiosk\Core\QueueItem::class,
72    'Referral' => \BuyerKiosk\Core\Referral::class,
73    'Referrals' => \BuyerKiosk\Core\Referrals::class,
74    'Template' => \BuyerKiosk\Core\Template::class,
75    'TriggerStats' => \BuyerKiosk\Core\TriggerStats::class,
76    'SignInLog' => \BuyerKiosk\Core\SignInLog::class,
77    'PasswordHash' => \BuyerKiosk\Core\PasswordHash::class,
78
79    // Robot Classes
80    'Robot' => \BuyerKiosk\Core\Robot\Robot::class,
81    'TriggerRobot' => \BuyerKiosk\Core\Robot\TriggerRobot::class,
82    'MassSMSRobot' => \BuyerKiosk\Core\Robot\MassSMSRobot::class,
83    'MassSMSFinder' => \BuyerKiosk\Core\Robot\MassSMSFinder::class,
84
85    // Loyalty Classes
86    'LoyaltyGroup' => \BuyerKiosk\Core\Loyalty\LoyaltyGroup::class,
87    'LoyaltyCustomer' => \BuyerKiosk\Core\Loyalty\LoyaltyCustomer::class,
88    'LoyaltyConfig' => \BuyerKiosk\Core\Loyalty\LoyaltyConfig::class,
89    'LoyaltyTrigger' => \BuyerKiosk\Core\Loyalty\LoyaltyTrigger::class,
90    'LoyaltyCoupon' => \BuyerKiosk\Core\Loyalty\LoyaltyCoupon::class,
91    'LoyaltyMassSMS' => \BuyerKiosk\Core\Loyalty\LoyaltyMassSMS::class,
92    'LoyaltySMSMessage' => \BuyerKiosk\Core\Loyalty\LoyaltySMSMessage::class,
93    'LoyaltyUsageReport' => \BuyerKiosk\Core\Loyalty\LoyaltyUsageReport::class,
94    'LoyaltyData' => \BuyerKiosk\Core\Loyalty\LoyaltyData::class,
95    'LoyaltyResponse' => \BuyerKiosk\Core\Loyalty\LoyaltyResponse::class,
96    'LoyaltyMessage' => \BuyerKiosk\Core\Loyalty\LoyaltyMessage::class,
97    'LoyaltyOutgoing' => \BuyerKiosk\Core\Loyalty\LoyaltyOutgoing::class,
98    'LoyaltyPointReport' => \BuyerKiosk\Core\Loyalty\LoyaltyPointReport::class,
99    'LoyaltyUUID' => \BuyerKiosk\Core\Loyalty\LoyaltyUUID::class,
100
101    // SellerMarketing Classes (migrated from UserFrosting\SellerMarketing)
102    'UserFrosting\\SellerMarketing\\BaseTrigger' => \BuyerKiosk\SellerMarketing\BaseTrigger::class,
103    'UserFrosting\\SellerMarketing\\DaysSinceSoldTrigger' => \BuyerKiosk\SellerMarketing\DaysSinceSoldTrigger::class,
104    'UserFrosting\\SellerMarketing\\SmsQueue' => \BuyerKiosk\SellerMarketing\SmsQueue::class,
105    'UserFrosting\\SellerMarketing\\SmsWorker' => \BuyerKiosk\SellerMarketing\SmsWorker::class,
106    'UserFrosting\\SellerMarketing\\TriggerProcessor' => \BuyerKiosk\SellerMarketing\TriggerProcessor::class,
107    'UserFrosting\\SellerMarketing\\Triggers\\TriggerInterface' => \BuyerKiosk\SellerMarketing\Triggers\TriggerInterface::class,
108
109    // TextMessageService Classes (migrated from BuyerKiosk root to BuyerKiosk\SMS\TextMessageService)
110    'BuyerKiosk\\TextMessageService' => \BuyerKiosk\SMS\TextMessageService\TextMessageService::class,
111    'BuyerKiosk\\TextSenderInterface' => \BuyerKiosk\SMS\TextMessageService\TextSenderInterface::class,
112    'BuyerKiosk\\FloodProtector' => \BuyerKiosk\SMS\TextMessageService\FloodProtector::class,
113    'BuyerKiosk\\TwilioTextSender' => \BuyerKiosk\SMS\TextMessageService\TwilioTextSender::class,
114    'BuyerKiosk\\VonageTextSender' => \BuyerKiosk\SMS\TextMessageService\VonageTextSender::class,
115
116    // SyncApp Classes (migrated from BuyerKiosk root to BuyerKiosk\SyncApp)
117    'BuyerKiosk\\DownloadSyncApp' => \BuyerKiosk\SyncApp\DownloadSyncApp::class,
118    'BuyerKiosk\\DownloadDigitalSignSyncApp' => \BuyerKiosk\SyncApp\DownloadDigitalSignSyncApp::class,
119
120    // ResalePerks Classes (namespace changed from ResalePerks to BuyerKiosk\ResalePerks)
121    'ResalePerks\\Base' => \BuyerKiosk\ResalePerks\Base::class,
122    'ResalePerks\\Contact' => \BuyerKiosk\ResalePerks\Contact::class,
123    'ResalePerks\\Feed' => \BuyerKiosk\ResalePerks\Feed::class,
124    'ResalePerks\\FeedItem' => \BuyerKiosk\ResalePerks\FeedItem::class,
125    'ResalePerks\\Post' => \BuyerKiosk\ResalePerks\Post::class,
126    'ResalePerks\\RemoteCheckIn' => \BuyerKiosk\ResalePerks\RemoteCheckIn::class,
127    'ResalePerks\\StoreFeed' => \BuyerKiosk\ResalePerks\StoreFeed::class,
128
129    // Core Controllers (migrated from UserFrosting namespace to BuyerKiosk\Core\Controllers)
130    'UserFrosting\\BaseController' => \BuyerKiosk\Core\Controllers\BaseController::class,
131    'UserFrosting\\AccountController' => \BuyerKiosk\Core\Controllers\AccountController::class,
132    'UserFrosting\\AdminController' => \BuyerKiosk\Core\Controllers\AdminController::class,
133    'UserFrosting\\UserController' => \BuyerKiosk\Core\Controllers\UserController::class,
134    'UserFrosting\\GroupController' => \BuyerKiosk\Core\Controllers\GroupController::class,
135    'UserFrosting\\InstallController' => \BuyerKiosk\Core\Controllers\InstallController::class,
136    'UserFrosting\\EmployeeApiController' => \BuyerKiosk\Core\Controllers\EmployeeApiController::class,
137    'UserFrosting\\EmployeeInvitationController' => \BuyerKiosk\Core\Controllers\EmployeeInvitationController::class,
138    'UserFrosting\\UserEmployeeLinkController' => \BuyerKiosk\Core\Controllers\UserEmployeeLinkController::class,
139
140    // Feature Controllers - Workbook (migrated from BuyerKiosk\Workbook to BuyerKiosk\Workbook\Controllers)
141    'BuyerKiosk\\Workbook\\WorkbookPageController' => \BuyerKiosk\Workbook\Controllers\WorkbookPageController::class,
142    'BuyerKiosk\\Workbook\\TasksApiController' => \BuyerKiosk\Workbook\Controllers\TasksApiController::class,
143    'BuyerKiosk\\Workbook\\NotesApiController' => \BuyerKiosk\Workbook\Controllers\NotesApiController::class,
144    'BuyerKiosk\\Workbook\\WhiteboardApiController' => \BuyerKiosk\Workbook\Controllers\WhiteboardApiController::class,
145    'BuyerKiosk\\Workbook\\KPIApiController' => \BuyerKiosk\Workbook\Controllers\KPIApiController::class,
146    'BuyerKiosk\\Workbook\\ScheduleApiController' => \BuyerKiosk\Workbook\Controllers\ScheduleApiController::class,
147    'BuyerKiosk\\Workbook\\TimePunchController' => \BuyerKiosk\Workbook\Controllers\TimePunchController::class,
148    'BuyerKiosk\\Workbook\\BackstockPanelController' => \BuyerKiosk\Workbook\Controllers\BackstockPanelController::class,
149
150    // Feature Controllers - Backstock
151    'BuyerKiosk\\Backstock\\BackstockController' => \BuyerKiosk\Backstock\Controllers\BackstockController::class,
152    'BuyerKiosk\\Backstock\\BinController' => \BuyerKiosk\Backstock\Controllers\BinController::class,
153    'BuyerKiosk\\Backstock\\LocationsController' => \BuyerKiosk\Backstock\Controllers\LocationsController::class,
154    'BuyerKiosk\\Backstock\\CategoriesController' => \BuyerKiosk\Backstock\Controllers\CategoriesController::class,
155    'BuyerKiosk\\Backstock\\ActionsController' => \BuyerKiosk\Backstock\Controllers\ActionsController::class,
156    'BuyerKiosk\\Backstock\\NoteController' => \BuyerKiosk\Backstock\Controllers\NoteController::class,
157    'BuyerKiosk\\Backstock\\EventController' => \BuyerKiosk\Backstock\Controllers\EventController::class,
158    'BuyerKiosk\\Backstock\\ReportController' => \BuyerKiosk\Backstock\Controllers\ReportController::class,
159
160    // Feature Controllers - Support
161    'BuyerKiosk\\Support\\SupportPageController' => \BuyerKiosk\Support\Controllers\SupportPageController::class,
162    'BuyerKiosk\\Support\\SupportApiController' => \BuyerKiosk\Support\Controllers\SupportApiController::class,
163    'BuyerKiosk\\Support\\SupportAdminController' => \BuyerKiosk\Support\Controllers\SupportAdminController::class,
164    'BuyerKiosk\\Support\\SupportAdminPageController' => \BuyerKiosk\Support\Controllers\SupportAdminPageController::class,
165
166    // Feature Controllers - Cash
167    'BuyerKiosk\\Cash\\CashActivityController' => \BuyerKiosk\Cash\Controllers\CashActivityController::class,
168    'BuyerKiosk\\Cash\\SafeConfigurationController' => \BuyerKiosk\Cash\Controllers\SafeConfigurationController::class,
169
170    // Feature Controllers - DigitalSign
171    'BuyerKiosk\\DigitalSign\\LoopController' => \BuyerKiosk\DigitalSign\Controllers\LoopController::class,
172    'BuyerKiosk\\DigitalSign\\SlideController' => \BuyerKiosk\DigitalSign\Controllers\SlideController::class,
173    'BuyerKiosk\\DigitalSign\\UploadController' => \BuyerKiosk\DigitalSign\Controllers\UploadController::class,
174    'BuyerKiosk\\DigitalSign\\GlobalSlideController' => \BuyerKiosk\DigitalSign\Controllers\GlobalSlideController::class,
175    'BuyerKiosk\\DigitalSign\\CorpUploadController' => \BuyerKiosk\DigitalSign\Controllers\CorpUploadController::class,
176    'BuyerKiosk\\DigitalSign\\SlideScheduleController' => \BuyerKiosk\DigitalSign\Controllers\SlideScheduleController::class,
177
178    // Feature Controllers - FiveStars
179    'BuyerKiosk\\FiveStars\\BaseController' => \BuyerKiosk\FiveStars\Controllers\BaseController::class,
180    'BuyerKiosk\\FiveStars\\RewardController' => \BuyerKiosk\FiveStars\Controllers\RewardController::class,
181    'BuyerKiosk\\FiveStars\\StoreController' => \BuyerKiosk\FiveStars\Controllers\StoreController::class,
182    'BuyerKiosk\\FiveStars\\FakeDataGenerator' => \BuyerKiosk\FiveStars\Controllers\FakeDataGenerator::class,
183
184    // Feature Controllers - QuickBooks
185    'BuyerKiosk\\QuickBooks\\QuickBooksController' => \BuyerKiosk\QuickBooks\Controllers\QuickBooksController::class,
186
187    // Feature Controllers - WhenIWork
188    'BuyerKiosk\\WhenIWork\\EmployeesController' => \BuyerKiosk\WhenIWork\Controllers\EmployeesController::class,
189    'BuyerKiosk\\WhenIWork\\FinancialsController' => \BuyerKiosk\WhenIWork\Controllers\FinancialsController::class,
190
191    // Feature Controllers - ConstantContact
192    'BuyerKiosk\\ConstantContact\\ConstantContactController' => \BuyerKiosk\ConstantContact\Controllers\ConstantContactController::class,
193    'BuyerKiosk\\ConstantContact\\ConstantContactService' => \BuyerKiosk\ConstantContact\Controllers\ConstantContactService::class,
194
195    // Feature Controllers - Other Features
196    'BuyerKiosk\\SellerMarketing\\SellerMarketingController' => \BuyerKiosk\SellerMarketing\Controllers\SellerMarketingController::class,
197    'BuyerKiosk\\MobileApi\\MobileApiController' => \BuyerKiosk\MobileApi\Controllers\MobileApiController::class,
198    'BuyerKiosk\\Stats\\StatsApiController' => \BuyerKiosk\Stats\Controllers\StatsApiController::class,
199    'BuyerKiosk\\Sales\\SalesController' => \BuyerKiosk\Sales\Controllers\SalesController::class,
200    'BuyerKiosk\\CustomerSurvey\\CustomerSurveyController' => \BuyerKiosk\CustomerSurvey\Controllers\CustomerSurveyController::class,
201    'BuyerKiosk\\CustomerAlert\\CustomerAlertController' => \BuyerKiosk\CustomerAlert\Controllers\CustomerAlertController::class,
202    'BuyerKiosk\\Customers\\CustomersListController' => \BuyerKiosk\Customers\Controllers\CustomersListController::class,
203    'BuyerKiosk\\SMS\\BuySMSController' => \BuyerKiosk\SMS\Controllers\BuySMSController::class,
204    'BuyerKiosk\\Shopify\\ProductController' => \BuyerKiosk\Shopify\Controllers\ProductController::class,
205    'BuyerKiosk\\SimpleQueue\\SimpleQueueController' => \BuyerKiosk\SimpleQueue\Controllers\SimpleQueueController::class,
206    'BuyerKiosk\\ServiceQueue\\ServiceQueueController' => \BuyerKiosk\ServiceQueue\Controllers\ServiceQueueController::class,
207    'BuyerKiosk\\DailyReport\\EmailReportController' => \BuyerKiosk\DailyReport\Controllers\EmailReportController::class,
208    'BuyerKiosk\\Billing\\BillingController' => \BuyerKiosk\Billing\Controllers\BillingController::class,
209
210    // Feature Controllers - BuyerKiosk subfolder
211    'BuyerKiosk\\BuyerKiosk\\CustomerController' => \BuyerKiosk\BuyerKiosk\Controllers\CustomerController::class,
212    'BuyerKiosk\\BuyerKiosk\\SignInLogController' => \BuyerKiosk\BuyerKiosk\Controllers\SignInLogController::class,
213    'BuyerKiosk\\BuyerKiosk\\StoreController' => \BuyerKiosk\BuyerKiosk\Controllers\StoreController::class,
214
215    // Short-form aliases for route files using incomplete namespaces
216    // These map the old patterns found in route files to proper PSR-4 paths
217    'BuyerKiosk\\StoreController' => \BuyerKiosk\BuyerKiosk\Controllers\StoreController::class,
218    'BuyerKiosk\\CustomerController' => \BuyerKiosk\BuyerKiosk\Controllers\CustomerController::class,
219    'BuyerKiosk\\CustomersListController' => \BuyerKiosk\Customers\Controllers\CustomersListController::class,
220];
221
222/**
223 * Register a custom autoloader that emits deprecation warnings for legacy class usage.
224 *
225 * This autoloader is registered with prepend=true to catch legacy class names
226 * before Composer's classmap autoloader resolves them.
227 *
228 * When a legacy class name is requested:
229 * 1. A deprecation warning is triggered (E_USER_DEPRECATED)
230 * 2. The class_alias is already registered, so PHP will use the aliased class
231 */
232spl_autoload_register(function ($class) use ($legacyClassMap) {
233    // Check if this is a legacy class we're tracking (both namespaced and non-namespaced)
234    if (isset($legacyClassMap[$class])) {
235        $newClass = $legacyClassMap[$class];
236
237        // Emit deprecation warning (suppressed with @ to not break production)
238        @trigger_error(
239            sprintf(
240                'Class "%s" is deprecated since PSR-4 migration, use "%s" instead.',
241                $class,
242                $newClass
243            ),
244            E_USER_DEPRECATED
245        );
246
247        // Create the alias on-demand when the legacy class name is requested
248        // This works for both namespaced and non-namespaced legacy class names
249        if (!class_exists($class, false) && !interface_exists($class, false)) {
250            // Load the target class first (via Composer's autoloader)
251            if (class_exists($newClass) || interface_exists($newClass)) {
252                @class_alias($newClass, $class, false);
253            }
254        }
255    }
256}, true, true); // prepend=true, throw=true
257
258/**
259 * Register class aliases.
260 *
261 * These aliases map legacy class names to their new PSR-4 namespaced classes.
262 * Note: Aliases are only created when the target class actually exists.
263 * This allows incremental migration - aliases for unmigrated classes simply won't work.
264 */
265foreach ($legacyClassMap as $legacyName => $newName) {
266    // Only create alias if the new class file will exist
267    // The alias will fail gracefully if the class doesn't exist yet
268    // (Composer will handle the actual class loading)
269    if (!class_exists($legacyName, false) && !interface_exists($legacyName, false)) {
270        // Suppress errors for classes not yet migrated
271        @class_alias($newName, $legacyName, false);
272    }
273}