Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
| Total | |
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 | |
| 14 | namespace 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 | */ |
| 232 | spl_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 | */ |
| 265 | foreach ($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 | } |