diff --git a/vendor/autoload.php b/vendor/autoload.php index 13ff09361..6663882d7 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -14,10 +14,7 @@ if (PHP_VERSION_ID < 50600) { echo $err; } } - trigger_error( - $err, - E_USER_ERROR - ); + throw new RuntimeException($err); } require_once __DIR__ . '/composer/autoload_real.php'; diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php index 6d29bff66..2052022fd 100644 --- a/vendor/composer/InstalledVersions.php +++ b/vendor/composer/InstalledVersions.php @@ -26,6 +26,12 @@ use Composer\Semver\VersionParser; */ class InstalledVersions { + /** + * @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to + * @internal + */ + private static $selfDir = null; + /** * @var mixed[]|null * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null @@ -322,6 +328,18 @@ class InstalledVersions self::$installedIsLocalDir = false; } + /** + * @return string + */ + private static function getSelfDir() + { + if (self::$selfDir === null) { + self::$selfDir = strtr(__DIR__, '\\', '/'); + } + + return self::$selfDir; + } + /** * @return array[] * @psalm-return list}> @@ -336,7 +354,7 @@ class InstalledVersions $copiedLocalDir = false; if (self::$canGetVendors) { - $selfDir = strtr(__DIR__, '\\', '/'); + $selfDir = self::getSelfDir(); foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { $vendorDir = strtr($vendorDir, '\\', '/'); if (isset(self::$installedByVendor[$vendorDir])) { diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index f4e8d199c..b36b951dc 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -30,6 +30,16 @@ return array( 'AWS\\CRT\\OptionValue' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Options.php', 'AWS\\CRT\\Options' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Options.php', 'App\\Console\\Commands\\AssignDefaultPlanToUsers' => $baseDir . '/app/Console/Commands/AssignDefaultPlanToUsers.php', + 'App\\Console\\Commands\\ImportLegacyRamesebData' => $baseDir . '/app/Console/Commands/ImportLegacyRamesebData.php', + 'App\\Console\\Commands\\ImportRameData' => $baseDir . '/app/Console/Commands/ImportRameData.php', + 'App\\Console\\Commands\\RecalculateAttendance' => $baseDir . '/app/Console/Commands/RecalculateAttendance.php', + 'App\\Console\\Commands\\SimulatePayslips' => $baseDir . '/app/Console/Commands/SimulatePayslips.php', + 'App\\Console\\Commands\\SyncLegacyDailyShifts' => $baseDir . '/app/Console/Commands/SyncLegacyDailyShifts.php', + 'App\\Console\\Commands\\SyncLegacyDepartments' => $baseDir . '/app/Console/Commands/SyncLegacyDepartments.php', + 'App\\Console\\Commands\\SyncLegacyFixedOverrides' => $baseDir . '/app/Console/Commands/SyncLegacyFixedOverrides.php', + 'App\\Console\\Commands\\SyncLegacyLateHours' => $baseDir . '/app/Console/Commands/SyncLegacyLateHours.php', + 'App\\Console\\Commands\\SyncLegacyLeaves' => $baseDir . '/app/Console/Commands/SyncLegacyLeaves.php', + 'App\\Console\\Commands\\SyncLegacySalaries' => $baseDir . '/app/Console/Commands/SyncLegacySalaries.php', 'App\\Console\\Kernel' => $baseDir . '/app/Console/Kernel.php', 'App\\Events\\UserCreated' => $baseDir . '/app/Events/UserCreated.php', 'App\\Helpers\\AssetHelper' => $baseDir . '/app/Helpers/AssetHelper.php', @@ -138,6 +148,7 @@ return array( 'App\\Http\\Controllers\\OfferController' => $baseDir . '/app/Http/Controllers/OfferController.php', 'App\\Http\\Controllers\\OfferTemplateController' => $baseDir . '/app/Http/Controllers/OfferTemplateController.php', 'App\\Http\\Controllers\\OnboardingChecklistController' => $baseDir . '/app/Http/Controllers/OnboardingChecklistController.php', + 'App\\Http\\Controllers\\OvertimeApplicationController' => $baseDir . '/app/Http/Controllers/OvertimeApplicationController.php', 'App\\Http\\Controllers\\OzowPaymentController' => $baseDir . '/app/Http/Controllers/OzowPaymentController.php', 'App\\Http\\Controllers\\PaiementPaymentController' => $baseDir . '/app/Http/Controllers/PaiementPaymentController.php', 'App\\Http\\Controllers\\PayHerePaymentController' => $baseDir . '/app/Http/Controllers/PayHerePaymentController.php', @@ -175,6 +186,7 @@ return array( 'App\\Http\\Controllers\\Settings\\WorkingDaysSettingController' => $baseDir . '/app/Http/Controllers/Settings/WorkingDaysSettingController.php', 'App\\Http\\Controllers\\ShiftController' => $baseDir . '/app/Http/Controllers/ShiftController.php', 'App\\Http\\Controllers\\SkrillPaymentController' => $baseDir . '/app/Http/Controllers/SkrillPaymentController.php', + 'App\\Http\\Controllers\\StatutoryBracketController' => $baseDir . '/app/Http/Controllers/StatutoryBracketController.php', 'App\\Http\\Controllers\\StripePaymentController' => $baseDir . '/app/Http/Controllers/StripePaymentController.php', 'App\\Http\\Controllers\\TapPaymentController' => $baseDir . '/app/Http/Controllers/TapPaymentController.php', 'App\\Http\\Controllers\\TerminationController' => $baseDir . '/app/Http/Controllers/TerminationController.php', @@ -301,8 +313,10 @@ return array( 'App\\Models\\Offer' => $baseDir . '/app/Models/Offer.php', 'App\\Models\\OfferTemplate' => $baseDir . '/app/Models/OfferTemplate.php', 'App\\Models\\OnboardingChecklist' => $baseDir . '/app/Models/OnboardingChecklist.php', + 'App\\Models\\OvertimeApplication' => $baseDir . '/app/Models/OvertimeApplication.php', 'App\\Models\\PaymentSetting' => $baseDir . '/app/Models/PaymentSetting.php', 'App\\Models\\PayoutRequest' => $baseDir . '/app/Models/PayoutRequest.php', + 'App\\Models\\PayrollAdjustment' => $baseDir . '/app/Models/PayrollAdjustment.php', 'App\\Models\\PayrollEntry' => $baseDir . '/app/Models/PayrollEntry.php', 'App\\Models\\PayrollRun' => $baseDir . '/app/Models/PayrollRun.php', 'App\\Models\\Payslip' => $baseDir . '/app/Models/Payslip.php', @@ -321,6 +335,7 @@ return array( 'App\\Models\\SalaryComponent' => $baseDir . '/app/Models/SalaryComponent.php', 'App\\Models\\Setting' => $baseDir . '/app/Models/Setting.php', 'App\\Models\\Shift' => $baseDir . '/app/Models/Shift.php', + 'App\\Models\\StatutoryBracket' => $baseDir . '/app/Models/StatutoryBracket.php', 'App\\Models\\Termination' => $baseDir . '/app/Models/Termination.php', 'App\\Models\\TimeEntry' => $baseDir . '/app/Models/TimeEntry.php', 'App\\Models\\TrainingAssessment' => $baseDir . '/app/Models/TrainingAssessment.php', @@ -343,6 +358,7 @@ return array( 'App\\Services\\DynamicStorageService' => $baseDir . '/app/Services/DynamicStorageService.php', 'App\\Services\\EmailTemplateService' => $baseDir . '/app/Services/EmailTemplateService.php', 'App\\Services\\MailConfigService' => $baseDir . '/app/Services/MailConfigService.php', + 'App\\Services\\PayrollService' => $baseDir . '/app/Services/PayrollService.php', 'App\\Services\\StorageConfigService' => $baseDir . '/app/Services/StorageConfigService.php', 'App\\Services\\UserService' => $baseDir . '/app/Services/UserService.php', 'App\\Services\\WebhookService' => $baseDir . '/app/Services/WebhookService.php', @@ -2222,6 +2238,7 @@ return array( 'Database\\Seeders\\LeaveBalanceSeeder' => $baseDir . '/database/seeders/LeaveBalanceSeeder.php', 'Database\\Seeders\\LeavePolicySeeder' => $baseDir . '/database/seeders/LeavePolicySeeder.php', 'Database\\Seeders\\LeaveTypeSeeder' => $baseDir . '/database/seeders/LeaveTypeSeeder.php', + 'Database\\Seeders\\LegacyRosterSyncSeeder' => $baseDir . '/database/seeders/LegacyRosterSyncSeeder.php', 'Database\\Seeders\\MediaItemSeeder' => $baseDir . '/database/seeders/MediaItemSeeder.php', 'Database\\Seeders\\MeetingAttendeeSeeder' => $baseDir . '/database/seeders/MeetingAttendeeSeeder.php', 'Database\\Seeders\\MeetingMinuteSeeder' => $baseDir . '/database/seeders/MeetingMinuteSeeder.php', @@ -2243,14 +2260,17 @@ return array( 'Database\\Seeders\\PlanRequestSeeder' => $baseDir . '/database/seeders/PlanRequestSeeder.php', 'Database\\Seeders\\PlanSeeder' => $baseDir . '/database/seeders/PlanSeeder.php', 'Database\\Seeders\\PromotionSeeder' => $baseDir . '/database/seeders/PromotionSeeder.php', + 'Database\\Seeders\\PropagateRosterSeeder' => $baseDir . '/database/seeders/PropagateRosterSeeder.php', 'Database\\Seeders\\ReferralSeeder' => $baseDir . '/database/seeders/ReferralSeeder.php', 'Database\\Seeders\\ReferralSettingSeeder' => $baseDir . '/database/seeders/ReferralSettingSeeder.php', 'Database\\Seeders\\ResignationSeeder' => $baseDir . '/database/seeders/ResignationSeeder.php', + 'Database\\Seeders\\RestrictEmployeeRoleSeeder' => $baseDir . '/database/seeders/RestrictEmployeeRoleSeeder.php', 'Database\\Seeders\\ReviewCycleSeeder' => $baseDir . '/database/seeders/ReviewCycleSeeder.php', 'Database\\Seeders\\RoleSeeder' => $baseDir . '/database/seeders/RoleSeeder.php', 'Database\\Seeders\\SalaryComponentSeeder' => $baseDir . '/database/seeders/SalaryComponentSeeder.php', 'Database\\Seeders\\ShiftSeeder' => $baseDir . '/database/seeders/ShiftSeeder.php', 'Database\\Seeders\\StaffRoleSeeder' => $baseDir . '/database/seeders/StaffRoleSeeder.php', + 'Database\\Seeders\\StatutoryBracketSeeder' => $baseDir . '/database/seeders/StatutoryBracketSeeder.php', 'Database\\Seeders\\TerminationSeeder' => $baseDir . '/database/seeders/TerminationSeeder.php', 'Database\\Seeders\\TimeEntrySeeder' => $baseDir . '/database/seeders/TimeEntrySeeder.php', 'Database\\Seeders\\TrainingProgramSeeder' => $baseDir . '/database/seeders/TrainingProgramSeeder.php', @@ -10339,6 +10359,23 @@ return array( 'Ramsey\\Uuid\\UuidInterface' => $vendorDir . '/ramsey/uuid/src/UuidInterface.php', 'Ramsey\\Uuid\\Validator\\GenericValidator' => $vendorDir . '/ramsey/uuid/src/Validator/GenericValidator.php', 'Ramsey\\Uuid\\Validator\\ValidatorInterface' => $vendorDir . '/ramsey/uuid/src/Validator/ValidatorInterface.php', + 'Rats\\Zkteco\\Lib\\Helper\\Attendance' => $vendorDir . '/rats/zkteco/src/Lib/Helper/Attendance.php', + 'Rats\\Zkteco\\Lib\\Helper\\Connect' => $vendorDir . '/rats/zkteco/src/Lib/Helper/Connect.php', + 'Rats\\Zkteco\\Lib\\Helper\\Device' => $vendorDir . '/rats/zkteco/src/Lib/Helper/Device.php', + 'Rats\\Zkteco\\Lib\\Helper\\Face' => $vendorDir . '/rats/zkteco/src/Lib/Helper/Face.php', + 'Rats\\Zkteco\\Lib\\Helper\\Fingerprint' => $vendorDir . '/rats/zkteco/src/Lib/Helper/Fingerprint.php', + 'Rats\\Zkteco\\Lib\\Helper\\Os' => $vendorDir . '/rats/zkteco/src/Lib/Helper/Os.php', + 'Rats\\Zkteco\\Lib\\Helper\\Pin' => $vendorDir . '/rats/zkteco/src/Lib/Helper/Pin.php', + 'Rats\\Zkteco\\Lib\\Helper\\Platform' => $vendorDir . '/rats/zkteco/src/Lib/Helper/Platform.php', + 'Rats\\Zkteco\\Lib\\Helper\\SerialNumber' => $vendorDir . '/rats/zkteco/src/Lib/Helper/SerialNumber.php', + 'Rats\\Zkteco\\Lib\\Helper\\Ssr' => $vendorDir . '/rats/zkteco/src/Lib/Helper/Ssr.php', + 'Rats\\Zkteco\\Lib\\Helper\\Time' => $vendorDir . '/rats/zkteco/src/Lib/Helper/Time.php', + 'Rats\\Zkteco\\Lib\\Helper\\User' => $vendorDir . '/rats/zkteco/src/Lib/Helper/User.php', + 'Rats\\Zkteco\\Lib\\Helper\\Util' => $vendorDir . '/rats/zkteco/src/Lib/Helper/Util.php', + 'Rats\\Zkteco\\Lib\\Helper\\Version' => $vendorDir . '/rats/zkteco/src/Lib/Helper/Version.php', + 'Rats\\Zkteco\\Lib\\Helper\\WorkCode' => $vendorDir . '/rats/zkteco/src/Lib/Helper/WorkCode.php', + 'Rats\\Zkteco\\Lib\\ZKTeco' => $vendorDir . '/rats/zkteco/src/Lib/ZKTeco.php', + 'Rats\\Zkteco\\Providers\\ZktecoServiceProvider' => $vendorDir . '/rats/zkteco/src/Providers/ZktecoServiceProvider.php', 'Razorpay\\Api\\Account' => $vendorDir . '/razorpay/razorpay/src/Account.php', 'Razorpay\\Api\\Addon' => $vendorDir . '/razorpay/razorpay/src/Addon.php', 'Razorpay\\Api\\Api' => $vendorDir . '/razorpay/razorpay/src/Api.php', @@ -12524,6 +12561,7 @@ return array( 'Termwind\\ValueObjects\\Node' => $vendorDir . '/nunomaduro/termwind/src/ValueObjects/Node.php', 'Termwind\\ValueObjects\\Style' => $vendorDir . '/nunomaduro/termwind/src/ValueObjects/Style.php', 'Termwind\\ValueObjects\\Styles' => $vendorDir . '/nunomaduro/termwind/src/ValueObjects/Styles.php', + 'Tests\\Feature\\PayrollDataGapTest' => $baseDir . '/tests/Feature/PayrollDataGapTest.php', 'Tests\\Feature\\PlanAccessTest' => $baseDir . '/tests/Feature/PlanAccessTest.php', 'Tests\\Feature\\RazorpaySettingsTest' => $baseDir . '/tests/Feature/RazorpaySettingsTest.php', 'Tests\\Feature\\StripePaymentTest' => $baseDir . '/tests/Feature/StripePaymentTest.php', diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index b626a60e0..df172e8c3 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -64,6 +64,7 @@ return array( 'Sabberworm\\CSS\\' => array($vendorDir . '/sabberworm/php-css-parser/src'), 'Razorpay\\Tests\\' => array($vendorDir . '/razorpay/razorpay/tests'), 'Razorpay\\Api\\' => array($vendorDir . '/razorpay/razorpay/src'), + 'Rats\\Zkteco\\' => array($vendorDir . '/rats/zkteco/src'), 'Ramsey\\Uuid\\' => array($vendorDir . '/ramsey/uuid/src'), 'Ramsey\\Collection\\' => array($vendorDir . '/ramsey/collection/src'), 'RachidLaasri\\LaravelInstaller\\' => array($vendorDir . '/rachidlaasri/laravel-installer/src'), diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index df33372fd..7ae41c951 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -61,38 +61,38 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 ); public static $prefixLengthsPsr4 = array ( - 'v' => + 'v' => array ( 'voku\\' => 5, ), - 'p' => + 'p' => array ( 'phpDocumentor\\Reflection\\' => 25, ), - 'Z' => + 'Z' => array ( 'ZipStream\\' => 10, ), - 'Y' => + 'Y' => array ( 'YooKassa\\Validator\\' => 19, 'YooKassa\\' => 9, ), - 'W' => + 'W' => array ( 'WpOrg\\Requests\\' => 15, 'Whoops\\' => 7, 'WhichBrowser\\' => 13, 'Webmozart\\Assert\\' => 17, ), - 'T' => + 'T' => array ( 'TijsVerkoyen\\CssToInlineStyles\\' => 31, 'Tighten\\Ziggy\\' => 14, 'Tests\\' => 6, 'Termwind\\' => 9, ), - 'S' => + 'S' => array ( 'Symfony\\Polyfill\\Uuid\\' => 22, 'Symfony\\Polyfill\\Php83\\' => 23, @@ -138,15 +138,16 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'Sentry\\' => 7, 'Sabberworm\\CSS\\' => 15, ), - 'R' => + 'R' => array ( 'Razorpay\\Tests\\' => 15, 'Razorpay\\Api\\' => 13, + 'Rats\\Zkteco\\' => 12, 'Ramsey\\Uuid\\' => 12, 'Ramsey\\Collection\\' => 18, 'RachidLaasri\\LaravelInstaller\\' => 30, ), - 'P' => + 'P' => array ( 'Psy\\' => 4, 'Psr\\SimpleCache\\' => 16, @@ -172,16 +173,16 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'PHPUnit\\Architecture\\' => 21, 'PHPStan\\PhpDocParser\\' => 21, ), - 'O' => + 'O' => array ( 'OpenAI\\' => 7, ), - 'N' => + 'N' => array ( 'Nyholm\\Psr7\\' => 12, 'NunoMaduro\\Collision\\' => 21, ), - 'M' => + 'M' => array ( 'Monolog\\' => 8, 'Mollie\\Api\\' => 11, @@ -190,7 +191,7 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'Matrix\\' => 7, 'Masterminds\\' => 12, ), - 'L' => + 'L' => array ( 'League\\Uri\\' => 11, 'League\\MimeTypeDetection\\' => 25, @@ -207,19 +208,19 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'LaraBug\\' => 8, 'Lab404\\Impersonate\\' => 19, ), - 'J' => + 'J' => array ( 'JmesPath\\' => 9, 'Jean85\\' => 7, ), - 'I' => + 'I' => array ( 'Iyzipay\\' => 8, 'Inertia\\' => 8, 'Illuminate\\Support\\' => 19, 'Illuminate\\' => 11, ), - 'H' => + 'H' => array ( 'Http\\Promise\\' => 13, 'Http\\Message\\MultipartStream\\' => 29, @@ -229,7 +230,7 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'Http\\Client\\Common\\' => 19, 'Http\\Client\\' => 12, ), - 'G' => + 'G' => array ( 'GuzzleHttp\\UriTemplate\\' => 23, 'GuzzleHttp\\Psr7\\' => 16, @@ -237,7 +238,7 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'GuzzleHttp\\' => 11, 'GrahamCampbell\\ResultType\\' => 26, ), - 'F' => + 'F' => array ( 'Fruitcake\\Cors\\' => 15, 'FontLib\\' => 8, @@ -245,11 +246,11 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'FedaPay\\' => 8, 'Faker\\' => 6, ), - 'E' => + 'E' => array ( 'Egulias\\EmailValidator\\' => 23, ), - 'D' => + 'D' => array ( 'Ds\\' => 3, 'Dotenv\\' => 7, @@ -267,7 +268,7 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'Database\\Factories\\' => 19, 'DASPRiD\\Enum\\' => 13, ), - 'C' => + 'C' => array ( 'Cron\\' => 5, 'Composer\\Semver\\' => 16, @@ -280,14 +281,14 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'Carbon\\Doctrine\\' => 16, 'Carbon\\' => 7, ), - 'B' => + 'B' => array ( 'Brick\\Math\\' => 11, 'Barryvdh\\DomPDF\\' => 16, 'Barryvdh\\Debugbar\\' => 18, 'BaconQrCode\\' => 12, ), - 'A' => + 'A' => array ( 'Aws\\' => 4, 'App\\' => 4, @@ -295,370 +296,374 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 ); public static $prefixDirsPsr4 = array ( - 'voku\\' => + 'voku\\' => array ( 0 => __DIR__ . '/..' . '/voku/portable-ascii/src/voku', ), - 'phpDocumentor\\Reflection\\' => + 'phpDocumentor\\Reflection\\' => array ( 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src', 1 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src', 2 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src', ), - 'ZipStream\\' => + 'ZipStream\\' => array ( 0 => __DIR__ . '/..' . '/maennchen/zipstream-php/src', ), - 'YooKassa\\Validator\\' => + 'YooKassa\\Validator\\' => array ( 0 => __DIR__ . '/..' . '/yoomoney/yookassa-sdk-validator/src', ), - 'YooKassa\\' => + 'YooKassa\\' => array ( 0 => __DIR__ . '/..' . '/yoomoney/yookassa-sdk-php/lib', ), - 'WpOrg\\Requests\\' => + 'WpOrg\\Requests\\' => array ( 0 => __DIR__ . '/..' . '/rmccue/requests/src', ), - 'Whoops\\' => + 'Whoops\\' => array ( 0 => __DIR__ . '/..' . '/filp/whoops/src/Whoops', ), - 'WhichBrowser\\' => + 'WhichBrowser\\' => array ( 0 => __DIR__ . '/..' . '/whichbrowser/parser/src', ), - 'Webmozart\\Assert\\' => + 'Webmozart\\Assert\\' => array ( 0 => __DIR__ . '/..' . '/webmozart/assert/src', ), - 'TijsVerkoyen\\CssToInlineStyles\\' => + 'TijsVerkoyen\\CssToInlineStyles\\' => array ( 0 => __DIR__ . '/..' . '/tijsverkoyen/css-to-inline-styles/src', ), - 'Tighten\\Ziggy\\' => + 'Tighten\\Ziggy\\' => array ( 0 => __DIR__ . '/..' . '/tightenco/ziggy/src', ), - 'Tests\\' => + 'Tests\\' => array ( 0 => __DIR__ . '/../..' . '/tests', ), - 'Termwind\\' => + 'Termwind\\' => array ( 0 => __DIR__ . '/..' . '/nunomaduro/termwind/src', ), - 'Symfony\\Polyfill\\Uuid\\' => + 'Symfony\\Polyfill\\Uuid\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-uuid', ), - 'Symfony\\Polyfill\\Php83\\' => + 'Symfony\\Polyfill\\Php83\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-php83', ), - 'Symfony\\Polyfill\\Php80\\' => + 'Symfony\\Polyfill\\Php80\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-php80', ), - 'Symfony\\Polyfill\\Mbstring\\' => + 'Symfony\\Polyfill\\Mbstring\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', ), - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => + 'Symfony\\Polyfill\\Intl\\Normalizer\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer', ), - 'Symfony\\Polyfill\\Intl\\Idn\\' => + 'Symfony\\Polyfill\\Intl\\Idn\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn', ), - 'Symfony\\Polyfill\\Intl\\Grapheme\\' => + 'Symfony\\Polyfill\\Intl\\Grapheme\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme', ), - 'Symfony\\Polyfill\\Ctype\\' => + 'Symfony\\Polyfill\\Ctype\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', ), - 'Symfony\\Contracts\\Translation\\' => + 'Symfony\\Contracts\\Translation\\' => array ( 0 => __DIR__ . '/..' . '/symfony/translation-contracts', ), - 'Symfony\\Contracts\\Service\\' => + 'Symfony\\Contracts\\Service\\' => array ( 0 => __DIR__ . '/..' . '/symfony/service-contracts', ), - 'Symfony\\Contracts\\HttpClient\\' => + 'Symfony\\Contracts\\HttpClient\\' => array ( 0 => __DIR__ . '/..' . '/symfony/http-client-contracts', ), - 'Symfony\\Contracts\\EventDispatcher\\' => + 'Symfony\\Contracts\\EventDispatcher\\' => array ( 0 => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts', ), - 'Symfony\\Component\\Yaml\\' => + 'Symfony\\Component\\Yaml\\' => array ( 0 => __DIR__ . '/..' . '/symfony/yaml', ), - 'Symfony\\Component\\VarDumper\\' => + 'Symfony\\Component\\VarDumper\\' => array ( 0 => __DIR__ . '/..' . '/symfony/var-dumper', ), - 'Symfony\\Component\\Uid\\' => + 'Symfony\\Component\\Uid\\' => array ( 0 => __DIR__ . '/..' . '/symfony/uid', ), - 'Symfony\\Component\\Translation\\' => + 'Symfony\\Component\\Translation\\' => array ( 0 => __DIR__ . '/..' . '/symfony/translation', ), - 'Symfony\\Component\\String\\' => + 'Symfony\\Component\\String\\' => array ( 0 => __DIR__ . '/..' . '/symfony/string', ), - 'Symfony\\Component\\Routing\\' => + 'Symfony\\Component\\Routing\\' => array ( 0 => __DIR__ . '/..' . '/symfony/routing', ), - 'Symfony\\Component\\Process\\' => + 'Symfony\\Component\\Process\\' => array ( 0 => __DIR__ . '/..' . '/symfony/process', ), - 'Symfony\\Component\\OptionsResolver\\' => + 'Symfony\\Component\\OptionsResolver\\' => array ( 0 => __DIR__ . '/..' . '/symfony/options-resolver', ), - 'Symfony\\Component\\Mime\\' => + 'Symfony\\Component\\Mime\\' => array ( 0 => __DIR__ . '/..' . '/symfony/mime', ), - 'Symfony\\Component\\Mailer\\' => + 'Symfony\\Component\\Mailer\\' => array ( 0 => __DIR__ . '/..' . '/symfony/mailer', ), - 'Symfony\\Component\\HttpKernel\\' => + 'Symfony\\Component\\HttpKernel\\' => array ( 0 => __DIR__ . '/..' . '/symfony/http-kernel', ), - 'Symfony\\Component\\HttpFoundation\\' => + 'Symfony\\Component\\HttpFoundation\\' => array ( 0 => __DIR__ . '/..' . '/symfony/http-foundation', ), - 'Symfony\\Component\\HttpClient\\' => + 'Symfony\\Component\\HttpClient\\' => array ( 0 => __DIR__ . '/..' . '/symfony/http-client', ), - 'Symfony\\Component\\Finder\\' => + 'Symfony\\Component\\Finder\\' => array ( 0 => __DIR__ . '/..' . '/symfony/finder', ), - 'Symfony\\Component\\Filesystem\\' => + 'Symfony\\Component\\Filesystem\\' => array ( 0 => __DIR__ . '/..' . '/symfony/filesystem', ), - 'Symfony\\Component\\EventDispatcher\\' => + 'Symfony\\Component\\EventDispatcher\\' => array ( 0 => __DIR__ . '/..' . '/symfony/event-dispatcher', ), - 'Symfony\\Component\\ErrorHandler\\' => + 'Symfony\\Component\\ErrorHandler\\' => array ( 0 => __DIR__ . '/..' . '/symfony/error-handler', ), - 'Symfony\\Component\\CssSelector\\' => + 'Symfony\\Component\\CssSelector\\' => array ( 0 => __DIR__ . '/..' . '/symfony/css-selector', ), - 'Symfony\\Component\\Console\\' => + 'Symfony\\Component\\Console\\' => array ( 0 => __DIR__ . '/..' . '/symfony/console', ), - 'Symfony\\Component\\Clock\\' => + 'Symfony\\Component\\Clock\\' => array ( 0 => __DIR__ . '/..' . '/symfony/clock', ), - 'Svg\\' => + 'Svg\\' => array ( 0 => __DIR__ . '/..' . '/dompdf/php-svg-lib/src/Svg', ), - 'Stripe\\' => + 'Stripe\\' => array ( 0 => __DIR__ . '/..' . '/stripe/stripe-php/lib', ), - 'Spatie\\TemporaryDirectory\\' => + 'Spatie\\TemporaryDirectory\\' => array ( 0 => __DIR__ . '/..' . '/spatie/temporary-directory/src', ), - 'Spatie\\Permission\\' => + 'Spatie\\Permission\\' => array ( 0 => __DIR__ . '/..' . '/spatie/laravel-permission/src', ), - 'Spatie\\MediaLibrary\\' => + 'Spatie\\MediaLibrary\\' => array ( 0 => __DIR__ . '/..' . '/spatie/laravel-medialibrary/src', ), - 'Spatie\\LaravelPackageTools\\' => + 'Spatie\\LaravelPackageTools\\' => array ( 0 => __DIR__ . '/..' . '/spatie/laravel-package-tools/src', ), - 'Spatie\\Image\\' => + 'Spatie\\Image\\' => array ( 0 => __DIR__ . '/..' . '/spatie/image/src', ), - 'Spatie\\ImageOptimizer\\' => + 'Spatie\\ImageOptimizer\\' => array ( 0 => __DIR__ . '/..' . '/spatie/image-optimizer/src', ), - 'SimpleSoftwareIO\\QrCode\\' => + 'SimpleSoftwareIO\\QrCode\\' => array ( 0 => __DIR__ . '/..' . '/simplesoftwareio/simple-qrcode/src', ), - 'Sentry\\' => + 'Sentry\\' => array ( 0 => __DIR__ . '/..' . '/sentry/sentry/src', ), - 'Sabberworm\\CSS\\' => + 'Sabberworm\\CSS\\' => array ( 0 => __DIR__ . '/..' . '/sabberworm/php-css-parser/src', ), - 'Razorpay\\Tests\\' => + 'Razorpay\\Tests\\' => array ( 0 => __DIR__ . '/..' . '/razorpay/razorpay/tests', ), - 'Razorpay\\Api\\' => + 'Razorpay\\Api\\' => array ( 0 => __DIR__ . '/..' . '/razorpay/razorpay/src', ), - 'Ramsey\\Uuid\\' => + 'Rats\\Zkteco\\' => + array ( + 0 => __DIR__ . '/..' . '/rats/zkteco/src', + ), + 'Ramsey\\Uuid\\' => array ( 0 => __DIR__ . '/..' . '/ramsey/uuid/src', ), - 'Ramsey\\Collection\\' => + 'Ramsey\\Collection\\' => array ( 0 => __DIR__ . '/..' . '/ramsey/collection/src', ), - 'RachidLaasri\\LaravelInstaller\\' => + 'RachidLaasri\\LaravelInstaller\\' => array ( 0 => __DIR__ . '/..' . '/rachidlaasri/laravel-installer/src', ), - 'Psy\\' => + 'Psy\\' => array ( 0 => __DIR__ . '/..' . '/psy/psysh/src', ), - 'Psr\\SimpleCache\\' => + 'Psr\\SimpleCache\\' => array ( 0 => __DIR__ . '/..' . '/psr/simple-cache/src', ), - 'Psr\\Log\\' => + 'Psr\\Log\\' => array ( 0 => __DIR__ . '/..' . '/psr/log/src', ), - 'Psr\\Http\\Message\\' => + 'Psr\\Http\\Message\\' => array ( 0 => __DIR__ . '/..' . '/psr/http-factory/src', 1 => __DIR__ . '/..' . '/psr/http-message/src', ), - 'Psr\\Http\\Client\\' => + 'Psr\\Http\\Client\\' => array ( 0 => __DIR__ . '/..' . '/psr/http-client/src', ), - 'Psr\\EventDispatcher\\' => + 'Psr\\EventDispatcher\\' => array ( 0 => __DIR__ . '/..' . '/psr/event-dispatcher/src', ), - 'Psr\\Container\\' => + 'Psr\\Container\\' => array ( 0 => __DIR__ . '/..' . '/psr/container/src', ), - 'Psr\\Clock\\' => + 'Psr\\Clock\\' => array ( 0 => __DIR__ . '/..' . '/psr/clock/src', ), - 'Psr\\Cache\\' => + 'Psr\\Cache\\' => array ( 0 => __DIR__ . '/..' . '/psr/cache/src', ), - 'PhpParser\\' => + 'PhpParser\\' => array ( 0 => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser', ), - 'PhpOption\\' => + 'PhpOption\\' => array ( 0 => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption', ), - 'PhpOffice\\PhpWord\\' => + 'PhpOffice\\PhpWord\\' => array ( 0 => __DIR__ . '/..' . '/phpoffice/phpword/src/PhpWord', ), - 'PhpOffice\\PhpSpreadsheet\\' => + 'PhpOffice\\PhpSpreadsheet\\' => array ( 0 => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet', ), - 'PhpOffice\\Math\\' => + 'PhpOffice\\Math\\' => array ( 0 => __DIR__ . '/..' . '/phpoffice/math/src/Math', ), - 'Pest\\Plugin\\' => + 'Pest\\Plugin\\' => array ( 0 => __DIR__ . '/..' . '/pestphp/pest-plugin/src', ), - 'Pest\\Mutate\\' => + 'Pest\\Mutate\\' => array ( 0 => __DIR__ . '/..' . '/pestphp/pest-plugin-mutate/src', ), - 'Pest\\Laravel\\' => + 'Pest\\Laravel\\' => array ( 0 => __DIR__ . '/..' . '/pestphp/pest-plugin-laravel/src', ), - 'Pest\\Arch\\' => + 'Pest\\Arch\\' => array ( 0 => __DIR__ . '/..' . '/pestphp/pest-plugin-arch/src', ), - 'Pest\\' => + 'Pest\\' => array ( 0 => __DIR__ . '/..' . '/pestphp/pest/src', ), - 'Paytabscom\\Laravel_paytabs\\' => + 'Paytabscom\\Laravel_paytabs\\' => array ( 0 => __DIR__ . '/..' . '/paytabscom/laravel_paytabs/src', ), - 'ParaTest\\' => + 'ParaTest\\' => array ( 0 => __DIR__ . '/..' . '/brianium/paratest/src', ), - 'PHPUnit\\Architecture\\' => + 'PHPUnit\\Architecture\\' => array ( 0 => __DIR__ . '/..' . '/ta-tikoma/phpunit-architecture-test/src', ), - 'PHPStan\\PhpDocParser\\' => + 'PHPStan\\PhpDocParser\\' => array ( 0 => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src', ), - 'OpenAI\\' => + 'OpenAI\\' => array ( 0 => __DIR__ . '/..' . '/openai-php/client/src', ), - 'Nyholm\\Psr7\\' => + 'Nyholm\\Psr7\\' => array ( 0 => __DIR__ . '/..' . '/nyholm/psr7/src', ), - 'NunoMaduro\\Collision\\' => + 'NunoMaduro\\Collision\\' => array ( 0 => __DIR__ . '/..' . '/nunomaduro/collision/src', ), - 'Monolog\\' => + 'Monolog\\' => array ( 0 => __DIR__ . '/..' . '/monolog/monolog/src/Monolog', ), - 'Mollie\\Api\\' => + 'Mollie\\Api\\' => array ( 0 => __DIR__ . '/..' . '/mollie/mollie-api-php/src', ), - 'Mockery\\' => + 'Mockery\\' => array ( 0 => __DIR__ . '/..' . '/mockery/mockery/library/Mockery', ), - 'MercadoPago\\' => + 'MercadoPago\\' => array ( 0 => __DIR__ . '/..' . '/mercadopago/dx-php/src/MercadoPago', 1 => __DIR__ . '/..' . '/mercadopago/dx-php/tests', @@ -666,294 +671,294 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 3 => __DIR__ . '/..' . '/mercadopago/dx-php/src/MercadoPago/Entities', 4 => __DIR__ . '/..' . '/mercadopago/dx-php/src/MercadoPago/Entities/Shared', ), - 'Matrix\\' => + 'Matrix\\' => array ( 0 => __DIR__ . '/..' . '/markbaker/matrix/classes/src', ), - 'Masterminds\\' => + 'Masterminds\\' => array ( 0 => __DIR__ . '/..' . '/masterminds/html5/src', ), - 'League\\Uri\\' => + 'League\\Uri\\' => array ( 0 => __DIR__ . '/..' . '/league/uri', 1 => __DIR__ . '/..' . '/league/uri-interfaces', ), - 'League\\MimeTypeDetection\\' => + 'League\\MimeTypeDetection\\' => array ( 0 => __DIR__ . '/..' . '/league/mime-type-detection/src', ), - 'League\\Flysystem\\Local\\' => + 'League\\Flysystem\\Local\\' => array ( 0 => __DIR__ . '/..' . '/league/flysystem-local', ), - 'League\\Flysystem\\AwsS3V3\\' => + 'League\\Flysystem\\AwsS3V3\\' => array ( 0 => __DIR__ . '/..' . '/league/flysystem-aws-s3-v3', ), - 'League\\Flysystem\\' => + 'League\\Flysystem\\' => array ( 0 => __DIR__ . '/..' . '/league/flysystem/src', ), - 'League\\Config\\' => + 'League\\Config\\' => array ( 0 => __DIR__ . '/..' . '/league/config/src', ), - 'League\\CommonMark\\' => + 'League\\CommonMark\\' => array ( 0 => __DIR__ . '/..' . '/league/commonmark/src', ), - 'Laravel\\Tinker\\' => + 'Laravel\\Tinker\\' => array ( 0 => __DIR__ . '/..' . '/laravel/tinker/src', ), - 'Laravel\\SerializableClosure\\' => + 'Laravel\\SerializableClosure\\' => array ( 0 => __DIR__ . '/..' . '/laravel/serializable-closure/src', ), - 'Laravel\\Sail\\' => + 'Laravel\\Sail\\' => array ( 0 => __DIR__ . '/..' . '/laravel/sail/src', ), - 'Laravel\\Prompts\\' => + 'Laravel\\Prompts\\' => array ( 0 => __DIR__ . '/..' . '/laravel/prompts/src', ), - 'Laravel\\Pail\\' => + 'Laravel\\Pail\\' => array ( 0 => __DIR__ . '/..' . '/laravel/pail/src', ), - 'LaraBug\\' => + 'LaraBug\\' => array ( 0 => __DIR__ . '/..' . '/larabug/larabug/src', ), - 'Lab404\\Impersonate\\' => + 'Lab404\\Impersonate\\' => array ( 0 => __DIR__ . '/..' . '/lab404/laravel-impersonate/src', ), - 'JmesPath\\' => + 'JmesPath\\' => array ( 0 => __DIR__ . '/..' . '/mtdowling/jmespath.php/src', ), - 'Jean85\\' => + 'Jean85\\' => array ( 0 => __DIR__ . '/..' . '/jean85/pretty-package-versions/src', ), - 'Iyzipay\\' => + 'Iyzipay\\' => array ( 0 => __DIR__ . '/..' . '/iyzico/iyzipay-php/src/Iyzipay', ), - 'Inertia\\' => + 'Inertia\\' => array ( 0 => __DIR__ . '/..' . '/inertiajs/inertia-laravel/src', ), - 'Illuminate\\Support\\' => + 'Illuminate\\Support\\' => array ( 0 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Macroable', 1 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Collections', 2 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Conditionable', ), - 'Illuminate\\' => + 'Illuminate\\' => array ( 0 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate', ), - 'Http\\Promise\\' => + 'Http\\Promise\\' => array ( 0 => __DIR__ . '/..' . '/php-http/promise/src', ), - 'Http\\Message\\MultipartStream\\' => + 'Http\\Message\\MultipartStream\\' => array ( 0 => __DIR__ . '/..' . '/php-http/multipart-stream-builder/src', ), - 'Http\\Message\\' => + 'Http\\Message\\' => array ( 0 => __DIR__ . '/..' . '/php-http/message-factory/src', 1 => __DIR__ . '/..' . '/php-http/message/src', ), - 'Http\\Factory\\Guzzle\\' => + 'Http\\Factory\\Guzzle\\' => array ( 0 => __DIR__ . '/..' . '/http-interop/http-factory-guzzle/src', ), - 'Http\\Discovery\\' => + 'Http\\Discovery\\' => array ( 0 => __DIR__ . '/..' . '/php-http/discovery/src', ), - 'Http\\Client\\Common\\' => + 'Http\\Client\\Common\\' => array ( 0 => __DIR__ . '/..' . '/php-http/client-common/src', ), - 'Http\\Client\\' => + 'Http\\Client\\' => array ( 0 => __DIR__ . '/..' . '/php-http/httplug/src', ), - 'GuzzleHttp\\UriTemplate\\' => + 'GuzzleHttp\\UriTemplate\\' => array ( 0 => __DIR__ . '/..' . '/guzzlehttp/uri-template/src', ), - 'GuzzleHttp\\Psr7\\' => + 'GuzzleHttp\\Psr7\\' => array ( 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src', ), - 'GuzzleHttp\\Promise\\' => + 'GuzzleHttp\\Promise\\' => array ( 0 => __DIR__ . '/..' . '/guzzlehttp/promises/src', ), - 'GuzzleHttp\\' => + 'GuzzleHttp\\' => array ( 0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src', ), - 'GrahamCampbell\\ResultType\\' => + 'GrahamCampbell\\ResultType\\' => array ( 0 => __DIR__ . '/..' . '/graham-campbell/result-type/src', ), - 'Fruitcake\\Cors\\' => + 'Fruitcake\\Cors\\' => array ( 0 => __DIR__ . '/..' . '/fruitcake/php-cors/src', ), - 'FontLib\\' => + 'FontLib\\' => array ( 0 => __DIR__ . '/..' . '/dompdf/php-font-lib/src/FontLib', ), - 'Fidry\\CpuCoreCounter\\' => + 'Fidry\\CpuCoreCounter\\' => array ( 0 => __DIR__ . '/..' . '/fidry/cpu-core-counter/src', ), - 'FedaPay\\' => + 'FedaPay\\' => array ( 0 => __DIR__ . '/..' . '/fedapay/fedapay-php/lib', ), - 'Faker\\' => + 'Faker\\' => array ( 0 => __DIR__ . '/..' . '/fakerphp/faker/src/Faker', ), - 'Egulias\\EmailValidator\\' => + 'Egulias\\EmailValidator\\' => array ( 0 => __DIR__ . '/..' . '/egulias/email-validator/src', ), - 'Ds\\' => + 'Ds\\' => array ( 0 => __DIR__ . '/..' . '/php-ds/php-ds/src', ), - 'Dotenv\\' => + 'Dotenv\\' => array ( 0 => __DIR__ . '/..' . '/vlucas/phpdotenv/src', ), - 'Dompdf\\' => + 'Dompdf\\' => array ( 0 => __DIR__ . '/..' . '/dompdf/dompdf/src', ), - 'Doctrine\\Persistence\\' => + 'Doctrine\\Persistence\\' => array ( 0 => __DIR__ . '/..' . '/doctrine/persistence/src/Persistence', ), - 'Doctrine\\Inflector\\' => + 'Doctrine\\Inflector\\' => array ( 0 => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector', ), - 'Doctrine\\Deprecations\\' => + 'Doctrine\\Deprecations\\' => array ( 0 => __DIR__ . '/..' . '/doctrine/deprecations/src', ), - 'Doctrine\\Common\\Lexer\\' => + 'Doctrine\\Common\\Lexer\\' => array ( 0 => __DIR__ . '/..' . '/doctrine/lexer/src', ), - 'Doctrine\\Common\\Annotations\\' => + 'Doctrine\\Common\\Annotations\\' => array ( 0 => __DIR__ . '/..' . '/doctrine/annotations/lib/Doctrine/Common/Annotations', ), - 'Doctrine\\Common\\' => + 'Doctrine\\Common\\' => array ( 0 => __DIR__ . '/..' . '/doctrine/common/src', 1 => __DIR__ . '/..' . '/doctrine/event-manager/src', ), - 'Dflydev\\DotAccessData\\' => + 'Dflydev\\DotAccessData\\' => array ( 0 => __DIR__ . '/..' . '/dflydev/dot-access-data/src', ), - 'DeepCopy\\' => + 'DeepCopy\\' => array ( 0 => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy', ), - 'DebugBar\\' => + 'DebugBar\\' => array ( 0 => __DIR__ . '/..' . '/php-debugbar/php-debugbar/src/DebugBar', ), - 'Database\\Seeders\\' => + 'Database\\Seeders\\' => array ( 0 => __DIR__ . '/../..' . '/database/seeders', 1 => __DIR__ . '/..' . '/laravel/pint/database/seeders', ), - 'Database\\Factories\\' => + 'Database\\Factories\\' => array ( 0 => __DIR__ . '/../..' . '/database/factories', 1 => __DIR__ . '/..' . '/laravel/pint/database/factories', ), - 'DASPRiD\\Enum\\' => + 'DASPRiD\\Enum\\' => array ( 0 => __DIR__ . '/..' . '/dasprid/enum/src', ), - 'Cron\\' => + 'Cron\\' => array ( 0 => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron', ), - 'Composer\\Semver\\' => + 'Composer\\Semver\\' => array ( 0 => __DIR__ . '/..' . '/composer/semver/src', ), - 'Composer\\Pcre\\' => + 'Composer\\Pcre\\' => array ( 0 => __DIR__ . '/..' . '/composer/pcre/src', ), - 'Composer\\CaBundle\\' => + 'Composer\\CaBundle\\' => array ( 0 => __DIR__ . '/..' . '/composer/ca-bundle/src', ), - 'Complex\\' => + 'Complex\\' => array ( 0 => __DIR__ . '/..' . '/markbaker/complex/classes/src', ), - 'CoinGate\\' => + 'CoinGate\\' => array ( 0 => __DIR__ . '/..' . '/coingate/coingate-php/lib', ), - 'Clue\\StreamFilter\\' => + 'Clue\\StreamFilter\\' => array ( 0 => __DIR__ . '/..' . '/clue/stream-filter/src', ), - 'Cashfree\\' => + 'Cashfree\\' => array ( 0 => __DIR__ . '/..' . '/cashfree/cashfree-pg/lib', ), - 'Carbon\\Doctrine\\' => + 'Carbon\\Doctrine\\' => array ( 0 => __DIR__ . '/..' . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine', ), - 'Carbon\\' => + 'Carbon\\' => array ( 0 => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon', ), - 'Brick\\Math\\' => + 'Brick\\Math\\' => array ( 0 => __DIR__ . '/..' . '/brick/math/src', ), - 'Barryvdh\\DomPDF\\' => + 'Barryvdh\\DomPDF\\' => array ( 0 => __DIR__ . '/..' . '/barryvdh/laravel-dompdf/src', ), - 'Barryvdh\\Debugbar\\' => + 'Barryvdh\\Debugbar\\' => array ( 0 => __DIR__ . '/..' . '/barryvdh/laravel-debugbar/src', ), - 'BaconQrCode\\' => + 'BaconQrCode\\' => array ( 0 => __DIR__ . '/..' . '/bacon/bacon-qr-code/src', ), - 'Aws\\' => + 'Aws\\' => array ( 0 => __DIR__ . '/..' . '/aws/aws-sdk-php/src', ), - 'App\\' => + 'App\\' => array ( 0 => __DIR__ . '/../..' . '/app', 1 => __DIR__ . '/..' . '/laravel/pint/app', @@ -985,6 +990,16 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'AWS\\CRT\\OptionValue' => __DIR__ . '/..' . '/aws/aws-crt-php/src/AWS/CRT/Options.php', 'AWS\\CRT\\Options' => __DIR__ . '/..' . '/aws/aws-crt-php/src/AWS/CRT/Options.php', 'App\\Console\\Commands\\AssignDefaultPlanToUsers' => __DIR__ . '/../..' . '/app/Console/Commands/AssignDefaultPlanToUsers.php', + 'App\\Console\\Commands\\ImportLegacyRamesebData' => __DIR__ . '/../..' . '/app/Console/Commands/ImportLegacyRamesebData.php', + 'App\\Console\\Commands\\ImportRameData' => __DIR__ . '/../..' . '/app/Console/Commands/ImportRameData.php', + 'App\\Console\\Commands\\RecalculateAttendance' => __DIR__ . '/../..' . '/app/Console/Commands/RecalculateAttendance.php', + 'App\\Console\\Commands\\SimulatePayslips' => __DIR__ . '/../..' . '/app/Console/Commands/SimulatePayslips.php', + 'App\\Console\\Commands\\SyncLegacyDailyShifts' => __DIR__ . '/../..' . '/app/Console/Commands/SyncLegacyDailyShifts.php', + 'App\\Console\\Commands\\SyncLegacyDepartments' => __DIR__ . '/../..' . '/app/Console/Commands/SyncLegacyDepartments.php', + 'App\\Console\\Commands\\SyncLegacyFixedOverrides' => __DIR__ . '/../..' . '/app/Console/Commands/SyncLegacyFixedOverrides.php', + 'App\\Console\\Commands\\SyncLegacyLateHours' => __DIR__ . '/../..' . '/app/Console/Commands/SyncLegacyLateHours.php', + 'App\\Console\\Commands\\SyncLegacyLeaves' => __DIR__ . '/../..' . '/app/Console/Commands/SyncLegacyLeaves.php', + 'App\\Console\\Commands\\SyncLegacySalaries' => __DIR__ . '/../..' . '/app/Console/Commands/SyncLegacySalaries.php', 'App\\Console\\Kernel' => __DIR__ . '/../..' . '/app/Console/Kernel.php', 'App\\Events\\UserCreated' => __DIR__ . '/../..' . '/app/Events/UserCreated.php', 'App\\Helpers\\AssetHelper' => __DIR__ . '/../..' . '/app/Helpers/AssetHelper.php', @@ -1093,6 +1108,7 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'App\\Http\\Controllers\\OfferController' => __DIR__ . '/../..' . '/app/Http/Controllers/OfferController.php', 'App\\Http\\Controllers\\OfferTemplateController' => __DIR__ . '/../..' . '/app/Http/Controllers/OfferTemplateController.php', 'App\\Http\\Controllers\\OnboardingChecklistController' => __DIR__ . '/../..' . '/app/Http/Controllers/OnboardingChecklistController.php', + 'App\\Http\\Controllers\\OvertimeApplicationController' => __DIR__ . '/../..' . '/app/Http/Controllers/OvertimeApplicationController.php', 'App\\Http\\Controllers\\OzowPaymentController' => __DIR__ . '/../..' . '/app/Http/Controllers/OzowPaymentController.php', 'App\\Http\\Controllers\\PaiementPaymentController' => __DIR__ . '/../..' . '/app/Http/Controllers/PaiementPaymentController.php', 'App\\Http\\Controllers\\PayHerePaymentController' => __DIR__ . '/../..' . '/app/Http/Controllers/PayHerePaymentController.php', @@ -1130,6 +1146,7 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'App\\Http\\Controllers\\Settings\\WorkingDaysSettingController' => __DIR__ . '/../..' . '/app/Http/Controllers/Settings/WorkingDaysSettingController.php', 'App\\Http\\Controllers\\ShiftController' => __DIR__ . '/../..' . '/app/Http/Controllers/ShiftController.php', 'App\\Http\\Controllers\\SkrillPaymentController' => __DIR__ . '/../..' . '/app/Http/Controllers/SkrillPaymentController.php', + 'App\\Http\\Controllers\\StatutoryBracketController' => __DIR__ . '/../..' . '/app/Http/Controllers/StatutoryBracketController.php', 'App\\Http\\Controllers\\StripePaymentController' => __DIR__ . '/../..' . '/app/Http/Controllers/StripePaymentController.php', 'App\\Http\\Controllers\\TapPaymentController' => __DIR__ . '/../..' . '/app/Http/Controllers/TapPaymentController.php', 'App\\Http\\Controllers\\TerminationController' => __DIR__ . '/../..' . '/app/Http/Controllers/TerminationController.php', @@ -1256,8 +1273,10 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'App\\Models\\Offer' => __DIR__ . '/../..' . '/app/Models/Offer.php', 'App\\Models\\OfferTemplate' => __DIR__ . '/../..' . '/app/Models/OfferTemplate.php', 'App\\Models\\OnboardingChecklist' => __DIR__ . '/../..' . '/app/Models/OnboardingChecklist.php', + 'App\\Models\\OvertimeApplication' => __DIR__ . '/../..' . '/app/Models/OvertimeApplication.php', 'App\\Models\\PaymentSetting' => __DIR__ . '/../..' . '/app/Models/PaymentSetting.php', 'App\\Models\\PayoutRequest' => __DIR__ . '/../..' . '/app/Models/PayoutRequest.php', + 'App\\Models\\PayrollAdjustment' => __DIR__ . '/../..' . '/app/Models/PayrollAdjustment.php', 'App\\Models\\PayrollEntry' => __DIR__ . '/../..' . '/app/Models/PayrollEntry.php', 'App\\Models\\PayrollRun' => __DIR__ . '/../..' . '/app/Models/PayrollRun.php', 'App\\Models\\Payslip' => __DIR__ . '/../..' . '/app/Models/Payslip.php', @@ -1276,6 +1295,7 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'App\\Models\\SalaryComponent' => __DIR__ . '/../..' . '/app/Models/SalaryComponent.php', 'App\\Models\\Setting' => __DIR__ . '/../..' . '/app/Models/Setting.php', 'App\\Models\\Shift' => __DIR__ . '/../..' . '/app/Models/Shift.php', + 'App\\Models\\StatutoryBracket' => __DIR__ . '/../..' . '/app/Models/StatutoryBracket.php', 'App\\Models\\Termination' => __DIR__ . '/../..' . '/app/Models/Termination.php', 'App\\Models\\TimeEntry' => __DIR__ . '/../..' . '/app/Models/TimeEntry.php', 'App\\Models\\TrainingAssessment' => __DIR__ . '/../..' . '/app/Models/TrainingAssessment.php', @@ -1298,6 +1318,7 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'App\\Services\\DynamicStorageService' => __DIR__ . '/../..' . '/app/Services/DynamicStorageService.php', 'App\\Services\\EmailTemplateService' => __DIR__ . '/../..' . '/app/Services/EmailTemplateService.php', 'App\\Services\\MailConfigService' => __DIR__ . '/../..' . '/app/Services/MailConfigService.php', + 'App\\Services\\PayrollService' => __DIR__ . '/../..' . '/app/Services/PayrollService.php', 'App\\Services\\StorageConfigService' => __DIR__ . '/../..' . '/app/Services/StorageConfigService.php', 'App\\Services\\UserService' => __DIR__ . '/../..' . '/app/Services/UserService.php', 'App\\Services\\WebhookService' => __DIR__ . '/../..' . '/app/Services/WebhookService.php', @@ -3177,6 +3198,7 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'Database\\Seeders\\LeaveBalanceSeeder' => __DIR__ . '/../..' . '/database/seeders/LeaveBalanceSeeder.php', 'Database\\Seeders\\LeavePolicySeeder' => __DIR__ . '/../..' . '/database/seeders/LeavePolicySeeder.php', 'Database\\Seeders\\LeaveTypeSeeder' => __DIR__ . '/../..' . '/database/seeders/LeaveTypeSeeder.php', + 'Database\\Seeders\\LegacyRosterSyncSeeder' => __DIR__ . '/../..' . '/database/seeders/LegacyRosterSyncSeeder.php', 'Database\\Seeders\\MediaItemSeeder' => __DIR__ . '/../..' . '/database/seeders/MediaItemSeeder.php', 'Database\\Seeders\\MeetingAttendeeSeeder' => __DIR__ . '/../..' . '/database/seeders/MeetingAttendeeSeeder.php', 'Database\\Seeders\\MeetingMinuteSeeder' => __DIR__ . '/../..' . '/database/seeders/MeetingMinuteSeeder.php', @@ -3198,14 +3220,17 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'Database\\Seeders\\PlanRequestSeeder' => __DIR__ . '/../..' . '/database/seeders/PlanRequestSeeder.php', 'Database\\Seeders\\PlanSeeder' => __DIR__ . '/../..' . '/database/seeders/PlanSeeder.php', 'Database\\Seeders\\PromotionSeeder' => __DIR__ . '/../..' . '/database/seeders/PromotionSeeder.php', + 'Database\\Seeders\\PropagateRosterSeeder' => __DIR__ . '/../..' . '/database/seeders/PropagateRosterSeeder.php', 'Database\\Seeders\\ReferralSeeder' => __DIR__ . '/../..' . '/database/seeders/ReferralSeeder.php', 'Database\\Seeders\\ReferralSettingSeeder' => __DIR__ . '/../..' . '/database/seeders/ReferralSettingSeeder.php', 'Database\\Seeders\\ResignationSeeder' => __DIR__ . '/../..' . '/database/seeders/ResignationSeeder.php', + 'Database\\Seeders\\RestrictEmployeeRoleSeeder' => __DIR__ . '/../..' . '/database/seeders/RestrictEmployeeRoleSeeder.php', 'Database\\Seeders\\ReviewCycleSeeder' => __DIR__ . '/../..' . '/database/seeders/ReviewCycleSeeder.php', 'Database\\Seeders\\RoleSeeder' => __DIR__ . '/../..' . '/database/seeders/RoleSeeder.php', 'Database\\Seeders\\SalaryComponentSeeder' => __DIR__ . '/../..' . '/database/seeders/SalaryComponentSeeder.php', 'Database\\Seeders\\ShiftSeeder' => __DIR__ . '/../..' . '/database/seeders/ShiftSeeder.php', 'Database\\Seeders\\StaffRoleSeeder' => __DIR__ . '/../..' . '/database/seeders/StaffRoleSeeder.php', + 'Database\\Seeders\\StatutoryBracketSeeder' => __DIR__ . '/../..' . '/database/seeders/StatutoryBracketSeeder.php', 'Database\\Seeders\\TerminationSeeder' => __DIR__ . '/../..' . '/database/seeders/TerminationSeeder.php', 'Database\\Seeders\\TimeEntrySeeder' => __DIR__ . '/../..' . '/database/seeders/TimeEntrySeeder.php', 'Database\\Seeders\\TrainingProgramSeeder' => __DIR__ . '/../..' . '/database/seeders/TrainingProgramSeeder.php', @@ -11294,6 +11319,23 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'Ramsey\\Uuid\\UuidInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/UuidInterface.php', 'Ramsey\\Uuid\\Validator\\GenericValidator' => __DIR__ . '/..' . '/ramsey/uuid/src/Validator/GenericValidator.php', 'Ramsey\\Uuid\\Validator\\ValidatorInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Validator/ValidatorInterface.php', + 'Rats\\Zkteco\\Lib\\Helper\\Attendance' => __DIR__ . '/..' . '/rats/zkteco/src/Lib/Helper/Attendance.php', + 'Rats\\Zkteco\\Lib\\Helper\\Connect' => __DIR__ . '/..' . '/rats/zkteco/src/Lib/Helper/Connect.php', + 'Rats\\Zkteco\\Lib\\Helper\\Device' => __DIR__ . '/..' . '/rats/zkteco/src/Lib/Helper/Device.php', + 'Rats\\Zkteco\\Lib\\Helper\\Face' => __DIR__ . '/..' . '/rats/zkteco/src/Lib/Helper/Face.php', + 'Rats\\Zkteco\\Lib\\Helper\\Fingerprint' => __DIR__ . '/..' . '/rats/zkteco/src/Lib/Helper/Fingerprint.php', + 'Rats\\Zkteco\\Lib\\Helper\\Os' => __DIR__ . '/..' . '/rats/zkteco/src/Lib/Helper/Os.php', + 'Rats\\Zkteco\\Lib\\Helper\\Pin' => __DIR__ . '/..' . '/rats/zkteco/src/Lib/Helper/Pin.php', + 'Rats\\Zkteco\\Lib\\Helper\\Platform' => __DIR__ . '/..' . '/rats/zkteco/src/Lib/Helper/Platform.php', + 'Rats\\Zkteco\\Lib\\Helper\\SerialNumber' => __DIR__ . '/..' . '/rats/zkteco/src/Lib/Helper/SerialNumber.php', + 'Rats\\Zkteco\\Lib\\Helper\\Ssr' => __DIR__ . '/..' . '/rats/zkteco/src/Lib/Helper/Ssr.php', + 'Rats\\Zkteco\\Lib\\Helper\\Time' => __DIR__ . '/..' . '/rats/zkteco/src/Lib/Helper/Time.php', + 'Rats\\Zkteco\\Lib\\Helper\\User' => __DIR__ . '/..' . '/rats/zkteco/src/Lib/Helper/User.php', + 'Rats\\Zkteco\\Lib\\Helper\\Util' => __DIR__ . '/..' . '/rats/zkteco/src/Lib/Helper/Util.php', + 'Rats\\Zkteco\\Lib\\Helper\\Version' => __DIR__ . '/..' . '/rats/zkteco/src/Lib/Helper/Version.php', + 'Rats\\Zkteco\\Lib\\Helper\\WorkCode' => __DIR__ . '/..' . '/rats/zkteco/src/Lib/Helper/WorkCode.php', + 'Rats\\Zkteco\\Lib\\ZKTeco' => __DIR__ . '/..' . '/rats/zkteco/src/Lib/ZKTeco.php', + 'Rats\\Zkteco\\Providers\\ZktecoServiceProvider' => __DIR__ . '/..' . '/rats/zkteco/src/Providers/ZktecoServiceProvider.php', 'Razorpay\\Api\\Account' => __DIR__ . '/..' . '/razorpay/razorpay/src/Account.php', 'Razorpay\\Api\\Addon' => __DIR__ . '/..' . '/razorpay/razorpay/src/Addon.php', 'Razorpay\\Api\\Api' => __DIR__ . '/..' . '/razorpay/razorpay/src/Api.php', @@ -13479,6 +13521,7 @@ class ComposerStaticInit864a68e9c2e484856a443e8b20aa46e8 'Termwind\\ValueObjects\\Node' => __DIR__ . '/..' . '/nunomaduro/termwind/src/ValueObjects/Node.php', 'Termwind\\ValueObjects\\Style' => __DIR__ . '/..' . '/nunomaduro/termwind/src/ValueObjects/Style.php', 'Termwind\\ValueObjects\\Styles' => __DIR__ . '/..' . '/nunomaduro/termwind/src/ValueObjects/Styles.php', + 'Tests\\Feature\\PayrollDataGapTest' => __DIR__ . '/../..' . '/tests/Feature/PayrollDataGapTest.php', 'Tests\\Feature\\PlanAccessTest' => __DIR__ . '/../..' . '/tests/Feature/PlanAccessTest.php', 'Tests\\Feature\\RazorpaySettingsTest' => __DIR__ . '/../..' . '/tests/Feature/RazorpaySettingsTest.php', 'Tests\\Feature\\StripePaymentTest' => __DIR__ . '/../..' . '/tests/Feature/StripePaymentTest.php', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index b29cfb7cd..18d747cf6 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -9152,6 +9152,46 @@ }, "install-path": "../ramsey/uuid" }, + { + "name": "rats/zkteco", + "version": "V002", + "version_normalized": "002.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/raihanafroz/zkteco.git", + "reference": "6e17024370ec56c89d87c85a54a1c55079304834" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/raihanafroz/zkteco/zipball/6e17024370ec56c89d87c85a54a1c55079304834", + "reference": "6e17024370ec56c89d87c85a54a1c55079304834", + "shasum": "" + }, + "time": "2021-11-21T17:53:28+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Rats\\Zkteco\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Raihan Afroz", + "email": "raihanafroz9@gmail.com" + } + ], + "description": "ZKTeco Laravel Library", + "support": { + "issues": "https://github.com/raihanafroz/zkteco/issues", + "source": "https://github.com/raihanafroz/zkteco/tree/V002" + }, + "install-path": "../rats/zkteco" + }, { "name": "razorpay/razorpay", "version": "2.9.1", diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index a7450c4fd..e014912fd 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -1,9 +1,9 @@ array( 'name' => 'laravel/react-starter-kit', - 'pretty_version' => 'dev-master', - 'version' => 'dev-master', - 'reference' => '4e78bc174fe99ddde0309d3a3af75992b437fc9d', + 'pretty_version' => 'dev-main', + 'version' => 'dev-main', + 'reference' => '2ecce8a990798cedbca2602be6bbe714a7db3c8b', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -683,9 +683,9 @@ 'dev_requirement' => false, ), 'laravel/react-starter-kit' => array( - 'pretty_version' => 'dev-master', - 'version' => 'dev-master', - 'reference' => '4e78bc174fe99ddde0309d3a3af75992b437fc9d', + 'pretty_version' => 'dev-main', + 'version' => 'dev-main', + 'reference' => '2ecce8a990798cedbca2602be6bbe714a7db3c8b', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -1440,6 +1440,15 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'rats/zkteco' => array( + 'pretty_version' => 'V002', + 'version' => '002.0.0.0', + 'reference' => '6e17024370ec56c89d87c85a54a1c55079304834', + 'type' => 'library', + 'install_path' => __DIR__ . '/../rats/zkteco', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'razorpay/razorpay' => array( 'pretty_version' => '2.9.1', 'version' => '2.9.1.0', diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php index d515d34bb..874843925 100644 --- a/vendor/composer/platform_check.php +++ b/vendor/composer/platform_check.php @@ -23,8 +23,7 @@ if ($issues) { echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; } } - trigger_error( - 'Composer detected issues in your platform: ' . implode(' ', $issues), - E_USER_ERROR + throw new \RuntimeException( + 'Composer detected issues in your platform: ' . implode(' ', $issues) ); } diff --git a/vendor/rats/zkteco/CHANGELOG.md b/vendor/rats/zkteco/CHANGELOG.md new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/rats/zkteco/README.md b/vendor/rats/zkteco/README.md new file mode 100644 index 000000000..7cbbcd90c --- /dev/null +++ b/vendor/rats/zkteco/README.md @@ -0,0 +1,292 @@ +# ZKTeco - Laravel Library # + +[![Issues](https://img.shields.io/github/issues/raihanafroz/zkteco?style=flat-square)](https://github.com/raihanafroz/zkteco/issues) +[![Forks](https://img.shields.io/github/forks/raihanafroz/zkteco?style=flat-square)](https://github.com/raihanafroz/zkteco/network/members) +[![Stars](https://img.shields.io/github/stars/raihanafroz/zkteco?style=flat-square)](https://github.com/raihanafroz/zkteco/stargazers) +[![Total Downloads](https://img.shields.io/packagist/dt/rats/zkteco?style=flat-square)](https://packagist.org/packages/rats/zkteco) +[![License](https://poser.pugx.org/rats/zkteco/license.svg)](https://packagist.org/packages/rats/zkteco) + + +The `rats/zkteco` package provides easy to use functions to ZKTeco Device activities. + +__Requires:__ **Laravel** >= **6.0** + +__License:__ MIT or later + +## Installation: +You can install the package via composer: + +``` bash +composer require rats/zkteco +``` +The package will automatically register itself. + +You have to enable your php socket if it is not enable. + + +## Usage + +1. Create a object of ZKTeco class. + +```php + use Rats\Zkteco\Lib\ZKTeco; + +// 1 s't parameter is string $ip Device IP Address +// 2 nd parameter is integer $port Default: 4370 + + $zk = new ZKTeco('192.168.1.201'); + +// or you can use with port +// $zk = new ZKTeco('192.168.1.201', 8080); + +``` + +2. Call ZKTeco methods + +* __Connect__ +```php +// connect +// this return bool + $zk->connect(); +``` + +* __Disconnect__ +```php +// disconnect +// this return bool + + $zk->disconnect(); +``` + +* __Enable Device__ +```php +// enable +// this return bool/mixed + + $zk->enableDevice(); +``` +> **NOTE**: You have to call after read/write any info of Device. + +* __Disable Device__ +```php +// disable +// this return bool/mixed + + $zk->disableDevice(); +``` +> **NOTE**: You have to call before read/write any info of Device. + + +* __Device Version__ +```php +// get device version +// this return bool/mixed + + $zk->version(); +``` + + +* __Device Os Version__ +```php +// get device os version +// this return bool/mixed + + $zk->osVersion(); +``` + +* __Power Off__ +```php +// turn off the device +// this return bool/mixed + + $zk->shutdown(); +``` + +* __Restart__ +```php +// restart the device +// this return bool/mixed + + $zk->restart(); +``` + +* __Sleep__ +```php +// sleep the device +// this return bool/mixed + + $zk->sleep(); +``` + +* __Resume__ +```php +// resume the device from sleep +// this return bool/mixed + + $zk->resume(); +``` + +* __Voice Test__ +```php +// voice test of the device "Thank you" +// this return bool/mixed + + $zk->testVoice(); +``` + +* __Platform__ +```php +// get platform +// this return bool/mixed + + $zk->platform(); +``` + +* __Firmware Version__ +```php +// get firmware version +// this return bool/mixed + + $zk->fmVersion(); +``` + +* __Work Code__ +```php +// get work code +// this return bool/mixed + + $zk->workCode(); +``` + +* __SSR__ +```php +// get SSR +// this return bool/mixed + + $zk->ssr(); +``` + +* __Pin Width__ +```php +// get Pin Width +// this return bool/mixed + + $zk->pinWidth(); +``` + +* __Serial Number__ +```php +// get device serial number +// this return bool/mixed + + $zk->serialNumber(); +``` + +* __Device Name__ +```php +// get device name +// this return bool/mixed + + $zk->deviceName(); +``` + +* __Get Device Time__ +```php +// get device time + +// return bool/mixed bool|mixed Format: "Y-m-d H:i:s" + + $zk->getTime(); +``` + +* __Set Device Time__ +```php +// set device time +// parameter string $t Format: "Y-m-d H:i:s" +// return bool/mixed + + $zk->setTime(); +``` + +* __Get Users__ +```php +// get User +// this return array[] + + $zk->getUser(); +``` + +* __Set Users__ +```php +// set user + +// 1 s't parameter int $uid Unique ID (max 65535) +// 2 nd parameter int|string $userid ID in DB (same like $uid, max length = 9, only numbers - depends device setting) +// 3 rd parameter string $name (max length = 24) +// 4 th parameter int|string $password (max length = 8, only numbers - depends device setting) +// 5 th parameter int $role Default Util::LEVEL_USER +// 6 th parameter int $cardno Default 0 (max length = 10, only numbers + +// return bool|mixed + + $zk->setUser(); +``` + +* __Clear All Admin__ +```php +// remove all admin +// return bool|mixed + + $zk->clearAdmin(); +``` + +* __Clear All Users__ +```php +// remove all users +// return bool|mixed + + $zk->clearAdmin(); +``` + +* __Remove A User__ +```php +// remove a user by $uid +// parameter integer $uid +// return bool|mixed + + $zk->removeUser(); +``` + +* __Get Attendance Log__ +```php +// get attendance log + +// return array[] + +// like as 0 => array:5 [▼ +// "uid" => 1 /* serial number of the attendance */ +// "id" => "1" /* user id of the application */ +// "state" => 1 /* the authentication type, 1 for Fingerprint, 4 for RF Card etc */ +// "timestamp" => "2020-05-27 21:21:06" /* time of attendance */ +// "type" => 255 /* attendance type, like check-in, check-out, overtime-in, overtime-out, break-in & break-out etc. if attendance type is none of them, it gives 255. */ +// ] + + $zk->getAttendance(); +``` + +* __Clear Attendance Log__ +```php +// clear attendance log + +// return bool/mixed + + $zk->clearAttendance(); +``` + + + + + + + +# end diff --git a/vendor/rats/zkteco/composer.json b/vendor/rats/zkteco/composer.json new file mode 100644 index 000000000..c0ba8d6a8 --- /dev/null +++ b/vendor/rats/zkteco/composer.json @@ -0,0 +1,19 @@ +{ + "name": "rats/zkteco", + "description": "ZKTeco Laravel Library", + "type": "library", + "license": "MIT", + "authors": [ + { + "name": "Raihan Afroz", + "email": "raihanafroz9@gmail.com" + } + ], + "autoload": { + "psr-4":{ + "Rats\\Zkteco\\": "src" + } + }, + "minimum-stability": "dev", + "require": {} +} diff --git a/vendor/rats/zkteco/src/Lib/Helper/Attendance.php b/vendor/rats/zkteco/src/Lib/Helper/Attendance.php new file mode 100644 index 000000000..20ca99b4e --- /dev/null +++ b/vendor/rats/zkteco/src/Lib/Helper/Attendance.php @@ -0,0 +1,72 @@ +_section = __METHOD__; + + $command = Util::CMD_ATT_LOG_RRQ; + $command_string = ''; + + $session = $self->_command($command, $command_string, Util::COMMAND_TYPE_DATA); + if ($session === false) { + return []; + } + + $attData = Util::recData($self); + + $attendance = []; + if (!empty($attData)) { + $attData = substr($attData, 10); + + while (strlen($attData) > 40) { + $u = unpack('H78', substr($attData, 0, 39)); + + $u1 = hexdec(substr($u[1], 4, 2)); + $u2 = hexdec(substr($u[1], 6, 2)); + $uid = $u1 + ($u2 * 256); + $id = hex2bin(substr($u[1], 8, 18)); + $id = str_replace(chr(0), '', $id); + $state = hexdec(substr($u[1], 56, 2)); + $timestamp = Util::decodeTime(hexdec(Util::reverseHex(substr($u[1], 58, 8)))); + $type = hexdec(Util::reverseHex(substr($u[1], 66, 2 ))); + + $attendance[] = [ + 'uid' => $uid, + 'id' => $id, + 'state' => $state, + 'timestamp' => $timestamp, + 'type' => $type + ]; + + $attData = substr($attData, 40); + } + + } + + return $attendance; + } + + /** + * @param ZKTeco $self + * @return bool|mixed + */ + static public function clear(ZKTeco $self) + { + $self->_section = __METHOD__; + + $command = Util::CMD_CLEAR_ATT_LOG; + $command_string = ''; + + return $self->_command($command, $command_string); + } +} diff --git a/vendor/rats/zkteco/src/Lib/Helper/Connect.php b/vendor/rats/zkteco/src/Lib/Helper/Connect.php new file mode 100644 index 000000000..9b59157c0 --- /dev/null +++ b/vendor/rats/zkteco/src/Lib/Helper/Connect.php @@ -0,0 +1,83 @@ +_section = __METHOD__; + + $command = Util::CMD_CONNECT; + $command_string = ''; + $chksum = 0; + $session_id = 0; + $reply_id = -1 + Util::USHRT_MAX; + + $buf = Util::createHeader($command, $chksum, $session_id, $reply_id, $command_string); + + socket_sendto($self->_zkclient, $buf, strlen($buf), 0, $self->_ip, $self->_port); + + try { + @socket_recvfrom($self->_zkclient, $self->_data_recv, 1024, 0, $self->_ip, $self->_port); + if (strlen($self->_data_recv) > 0) { + $u = unpack('H2h1/H2h2/H2h3/H2h4/H2h5/H2h6', substr($self->_data_recv, 0, 8)); + + $session = hexdec($u['h6'] . $u['h5']); + if (empty($session)) { + return false; + } + + $self->_session_id = $session; + return Util::checkValid($self->_data_recv); + } else { + return false; + } + } catch (ErrorException $e) { + return false; + } catch (Exception $e) { + return false; + } + } + + /** + * @param ZKTeco $self + * @return bool + */ + static public function disconnect(ZKTeco $self) + { + $self->_section = __METHOD__; + + $command = Util::CMD_EXIT; + $command_string = ''; + $chksum = 0; + $session_id = $self->_session_id; + + $u = unpack('H2h1/H2h2/H2h3/H2h4/H2h5/H2h6/H2h7/H2h8', substr($self->_data_recv, 0, 8)); + $reply_id = hexdec($u['h8'] . $u['h7']); + + $buf = Util::createHeader($command, $chksum, $session_id, $reply_id, $command_string); + + + socket_sendto($self->_zkclient, $buf, strlen($buf), 0, $self->_ip, $self->_port); + try { + @socket_recvfrom($self->_zkclient, $self->_data_recv, 1024, 0, $self->_ip, $self->_port); + + $self->_session_id = 0; + return Util::checkValid($self->_data_recv); + } catch (ErrorException $e) { + return false; + } catch (Exception $e) { + return false; + } + } +} \ No newline at end of file diff --git a/vendor/rats/zkteco/src/Lib/Helper/Device.php b/vendor/rats/zkteco/src/Lib/Helper/Device.php new file mode 100644 index 000000000..f5518ff79 --- /dev/null +++ b/vendor/rats/zkteco/src/Lib/Helper/Device.php @@ -0,0 +1,151 @@ +_section = __METHOD__; + + $command = Util::CMD_DEVICE; + $command_string = '~DeviceName'; + + return $self->_command($command, $command_string); + } + + /** + * @param ZKTeco $self + * @return bool|mixed + */ + static public function enable(ZKTeco $self) + { + $self->_section = __METHOD__; + + $command = Util::CMD_ENABLE_DEVICE; + $command_string = ''; + + return $self->_command($command, $command_string); + } + + /** + * @param ZKTeco $self + * @return bool|mixed + */ + static public function disable(ZKTeco $self) + { + $self->_section = __METHOD__; + + $command = Util::CMD_DISABLE_DEVICE; + $command_string = chr(0) . chr(0); + + return $self->_command($command, $command_string); + } + + /** + * @param ZKTeco $self + * @return bool|mixed *** this will turn off the device + */ + public static function powerOff(ZKTeco $self) + { + $self->_section = __METHOD__; + + $command = Util::CMD_POWEROFF; + $command_string = chr(0) . chr(0); + return $self->_command($command, $command_string); + } + + + /** + * @param ZKTeco $self + * @return bool|mixed *** this will restart the device + */ + public static function restart(ZKTeco $self) + { + $self->_section = __METHOD__; + + $command = Util::CMD_RESTART; + $command_string = chr(0) . chr(0); + return $self->_command($command, $command_string); + } + + + /** + * @param ZKTeco $self + * @return bool|mixed *** this will sleep the device + */ + public static function sleep(ZKTeco $self) + { + $self->_section = __METHOD__; + + $command = Util::CMD_SLEEP; + $command_string = chr(0) . chr(0); + return $self->_command($command, $command_string); + } + + + /** + * @param ZKTeco $self + * @return bool|mixed *** this will resume the device from sleep + */ + public static function resume(ZKTeco $self) + { + $self->_section = __METHOD__; + + $command = Util::CMD_RESUME; + $command_string = chr(0) . chr(0); + return $self->_command($command, $command_string); + } + + + /** + * @param ZKTeco $self + * @return bool|mixed *** this will play voice "Thank you" + */ + public static function testVoice(ZKTeco $self) + { + $self->_section = __METHOD__; + + $command = Util::CMD_TESTVOICE; + $command_string = chr(0) . chr(0); + return $self->_command($command, $command_string); + } + + + /** + * @param ZKTeco $self + * @return bool|mixed *** this will clear the LCD screen + */ + public static function clearLCD(ZKTeco $self) + { + $self->_section = __METHOD__; + + $command = Util::CMD_CLEAR_LCD; + return $self->_command($command, ''); + } + + + /** + * @param ZKTeco $self + * @param $rank *** Line number of text + * @param $text *** Text which will display in the LCD screen + * @return bool|mixed *** this will write text into the LCD + */ + public static function writeLCD(ZKTeco $self, $rank, $text) + { + $self->_section = __METHOD__; + + $command = Util::CMD_WRITE_LCD; + $byte1 = chr((int)($rank % 256)); + $byte2 = chr((int)($rank >> 8)); + $byte3 = chr(0); + $command_string = $byte1.$byte2.$byte3.' '.$text; + return $self->_command($command, $command_string); + } +} \ No newline at end of file diff --git a/vendor/rats/zkteco/src/Lib/Helper/Face.php b/vendor/rats/zkteco/src/Lib/Helper/Face.php new file mode 100644 index 000000000..a0100a029 --- /dev/null +++ b/vendor/rats/zkteco/src/Lib/Helper/Face.php @@ -0,0 +1,23 @@ +_section = __METHOD__; + + $command = Util::CMD_DEVICE; + $command_string = 'FaceFunOn'; + + return $self->_command($command, $command_string); + } +} + diff --git a/vendor/rats/zkteco/src/Lib/Helper/Fingerprint.php b/vendor/rats/zkteco/src/Lib/Helper/Fingerprint.php new file mode 100644 index 000000000..7891aac0f --- /dev/null +++ b/vendor/rats/zkteco/src/Lib/Helper/Fingerprint.php @@ -0,0 +1,166 @@ +_section = __METHOD__; + + $data = []; + //fingers of the hands + for ($i = 0; $i <= 9; $i++) { + $finger = new Fingerprint(); + $tmp = $finger->_getFinger($self, $uid, $i); + if ($tmp['size'] > 0) { + $data[$i] = $tmp['tpl']; + } + unset($tmp); + } + return $data; + } + + + /** + * @param ZKTeco $self + * @param integer $uid Unique Employee ID in ZK device + * @param integer $finger Finger ID (0-9) + * @return array + */ + private function _getFinger(ZKTeco $self, $uid, $finger) + { + $command = Util::CMD_USER_TEMP_RRQ; + $byte1 = chr((int)($uid % 256)); + $byte2 = chr((int)($uid >> 8)); + $command_string = $byte1 . $byte2 . chr($finger); + + $ret = [ + 'size' => 0, + 'tpl' => '' + ]; + + $session = $self->_command($command, $command_string, Util::COMMAND_TYPE_DATA); + if ($session === false) { + return $ret; + } + + $data = Util::recData($self, 10, false); + + if (!empty($data)) { + $templateSize = strlen($data); + $prefix = chr($templateSize % 256) . chr(round($templateSize / 256)) . $byte1 . $byte2 . chr($finger) . chr(1); + $data = $prefix . $data; + if (strlen($templateSize) > 0) { + $ret['size'] = $templateSize; + $ret['tpl'] = $data; + } + } + + return $ret; + } + + /** + * TODO: Still can not set fingerprint. Need more documentation about it... + * + * @param ZKTeco $self + * @param int $uid Unique Employee ID in ZK device + * @param array $data Binary fingerprint data array (where key is finger ID (0-9) same like returned array from 'get' method) + * @return int Count of added fingerprints + */ + static public function set(ZKTeco $self, $uid, array $data) + { + $self->_section = __METHOD__; + + + $count = 0; + foreach ($data as $finger => $item) { + $allowSet = true; + $fingerPrint = new Fingerprint(); + if ($fingerPrint->_checkFinger($self, $uid, $finger) === true) { + $allowSet = $fingerPrint->_removeFinger($self, $uid, $finger); + } + if ($allowSet === true && $fingerPrint->_setFinger($self, $item) === true) { + $count++; + } + } + + return $count; + } + + /** + * @param ZKTeco $self + * @param string $data Binary fingerprint data item + * @return bool|mixed + */ + private function _setFinger(ZKTeco $self, $data) + { + $command = Util::CMD_USER_TEMP_WRQ; + $command_string = $data; + + return $self->_command($command, $command_string); + } + + /** + * @param ZKTeco $self + * @param int $uid Unique Employee ID in ZK device + * @param array $data Fingers ID array (0-9) + * @return int Count of deleted fingerprints + */ + static public function remove(ZKTeco $self, $uid, array $data) + { + $self->_section = __METHOD__; + + $count = 0; + foreach ($data as $finger) { + $fingerPrint = new Fingerprint(); + if ($fingerPrint->_checkFinger($self, $uid, $finger) === true) { + if ($fingerPrint->_removeFinger($self, $uid, $finger) === true) { + $count++; + } + } + } + + return $count; + } + + /** + * @param ZKTeco $self + * @param int $uid Unique Employee ID in ZK device + * @param int $finger Finger ID (0-9) + * @return bool + */ + private function _removeFinger(ZKTeco $self, $uid, $finger) + { + $command = Util::CMD_DELETE_USER_TEMP; + $byte1 = chr((int)($uid % 256)); + $byte2 = chr((int)($uid >> 8)); + $command_string = ($byte1 . $byte2) . chr($finger); + + $self->_command($command, $command_string); + $fingerPrint = new Fingerprint(); + return !($fingerPrint->_checkFinger($self, $uid, $finger)); + } + + /** + * @param ZKTeco $self + * @param int $uid Unique Employee ID in ZK device + * @param int $finger Finger ID (0-9) + * @return bool Returned true if exist + */ + private function _checkFinger(ZKTeco $self, $uid, $finger) + { + $fingerPrint = new Fingerprint(); + $res = $fingerPrint->_getFinger($self, $uid, $finger); + return (bool)($res['size'] > 0); + } +} \ No newline at end of file diff --git a/vendor/rats/zkteco/src/Lib/Helper/Os.php b/vendor/rats/zkteco/src/Lib/Helper/Os.php new file mode 100644 index 000000000..8776ea084 --- /dev/null +++ b/vendor/rats/zkteco/src/Lib/Helper/Os.php @@ -0,0 +1,22 @@ +_section = __METHOD__; + + $command = Util::CMD_DEVICE; + $command_string = '~OS'; + + return $self->_command($command, $command_string); + } +} \ No newline at end of file diff --git a/vendor/rats/zkteco/src/Lib/Helper/Pin.php b/vendor/rats/zkteco/src/Lib/Helper/Pin.php new file mode 100644 index 000000000..cf35deb0e --- /dev/null +++ b/vendor/rats/zkteco/src/Lib/Helper/Pin.php @@ -0,0 +1,22 @@ +_section = __METHOD__; + + $command = Util::CMD_DEVICE; + $command_string = '~PIN2Width'; + + return $self->_command($command, $command_string); + } +} \ No newline at end of file diff --git a/vendor/rats/zkteco/src/Lib/Helper/Platform.php b/vendor/rats/zkteco/src/Lib/Helper/Platform.php new file mode 100644 index 000000000..26c520929 --- /dev/null +++ b/vendor/rats/zkteco/src/Lib/Helper/Platform.php @@ -0,0 +1,36 @@ +_section = __METHOD__; + + $command = Util::CMD_DEVICE; + $command_string = '~Platform'; + + return $self->_command($command, $command_string); + } + + /** + * @param ZKTeco $self + * @return bool|mixed + */ + static public function getVersion(ZKTeco $self) + { + $self->_section = __METHOD__; + + $command = Util::CMD_DEVICE; + $command_string = '~ZKFPVersion'; + + return $self->_command($command, $command_string); + } +} \ No newline at end of file diff --git a/vendor/rats/zkteco/src/Lib/Helper/SerialNumber.php b/vendor/rats/zkteco/src/Lib/Helper/SerialNumber.php new file mode 100644 index 000000000..571406fe5 --- /dev/null +++ b/vendor/rats/zkteco/src/Lib/Helper/SerialNumber.php @@ -0,0 +1,22 @@ +_section = __METHOD__; + + $command = Util::CMD_DEVICE; + $command_string = '~SerialNumber'; + + return $self->_command($command, $command_string); + } +} \ No newline at end of file diff --git a/vendor/rats/zkteco/src/Lib/Helper/Ssr.php b/vendor/rats/zkteco/src/Lib/Helper/Ssr.php new file mode 100644 index 000000000..13075aa96 --- /dev/null +++ b/vendor/rats/zkteco/src/Lib/Helper/Ssr.php @@ -0,0 +1,22 @@ +_section = __METHOD__; + + $command = Util::CMD_DEVICE; + $command_string = '~SSR'; + + return $self->_command($command, $command_string); + } +} \ No newline at end of file diff --git a/vendor/rats/zkteco/src/Lib/Helper/Time.php b/vendor/rats/zkteco/src/Lib/Helper/Time.php new file mode 100644 index 000000000..35d3472c5 --- /dev/null +++ b/vendor/rats/zkteco/src/Lib/Helper/Time.php @@ -0,0 +1,44 @@ +_section = __METHOD__; + + $command = Util::CMD_SET_TIME; + $command_string = pack('I', Util::encodeTime($t)); + + return $self->_command($command, $command_string); + } + + /** + * @param ZKTeco $self + * @return bool|mixed + */ + static public function get(ZKTeco $self) + { + $self->_section = __METHOD__; + + $command = Util::CMD_GET_TIME; + $command_string = ''; + + $ret = $self->_command($command, $command_string); + + if ($ret) { + return Util::decodeTime(hexdec(Util::reverseHex(bin2hex($ret)))); + } else { + return false; + } + } +} \ No newline at end of file diff --git a/vendor/rats/zkteco/src/Lib/Helper/User.php b/vendor/rats/zkteco/src/Lib/Helper/User.php new file mode 100644 index 000000000..428ca99e3 --- /dev/null +++ b/vendor/rats/zkteco/src/Lib/Helper/User.php @@ -0,0 +1,161 @@ +_section = __METHOD__; + + if ( + (int)$uid === 0 || + (int)$uid > Util::USHRT_MAX || + strlen($userid) > 9 || + strlen($name) > 24 || + strlen($password) > 8 || + strlen($cardno) > 10 + ) { + return false; + } + + $command = Util::CMD_SET_USER; + $byte1 = chr((int)($uid % 256)); + $byte2 = chr((int)($uid >> 8)); + $cardno = hex2bin(Util::reverseHex(dechex($cardno))); + + $command_string = implode('', [ + $byte1, + $byte2, + chr($role), + str_pad($password, 8, chr(0)), + str_pad($name, 24, chr(0)), + str_pad($cardno, 4, chr(0)), + str_pad(chr(1), 9, chr(0)), + str_pad($userid, 9, chr(0)), + str_repeat(chr(0), 15) + ]); +// die($command_string); + return $self->_command($command, $command_string); + } + + /** + * @param ZKTeco $self + * @return array [userid, name, cardno, uid, role, password] + */ + static public function get(ZKTeco $self) + { + $self->_section = __METHOD__; + + $command = Util::CMD_USER_TEMP_RRQ; + $command_string = chr(Util::FCT_USER); + + $session = $self->_command($command, $command_string, Util::COMMAND_TYPE_DATA); + if ($session === false) { + return []; + } + + $userData = Util::recData($self); + + $users = []; + if (!empty($userData)) { + $userData = substr($userData, 11); + + while (strlen($userData) > 72) { + $u = unpack('H144', substr($userData, 0, 72)); + + $u1 = hexdec(substr($u[1], 2, 2)); + $u2 = hexdec(substr($u[1], 4, 2)); + $uid = $u1 + ($u2 * 256); + $cardno = hexdec(substr($u[1], 78, 2) . substr($u[1], 76, 2) . substr($u[1], 74, 2) . substr($u[1], 72, 2)) . ' '; + $role = hexdec(substr($u[1], 6, 2)) . ' '; + $password = hex2bin(substr($u[1], 8, 16)) . ' '; + $name = hex2bin(substr($u[1], 24, 74)) . ' '; + $userid = hex2bin(substr($u[1], 98, 72)) . ' '; + + //Clean up some messy characters from the user name + $password = explode(chr(0), $password, 2); + $password = $password[0]; + $userid = explode(chr(0), $userid, 2); + $userid = $userid[0]; + $name = explode(chr(0), $name, 3); + $name = utf8_encode($name[0]); + $cardno = str_pad($cardno, 11, '0', STR_PAD_LEFT); + + if ($name == '') { + $name = $userid; + } + + $users[$userid] = [ + 'uid' => $uid, + 'userid' => $userid, + 'name' => $name, + 'role' => intval($role), + 'password' => $password, + 'cardno' => $cardno, + ]; + + $userData = substr($userData, 72); + } + } + + return $users; + } + + /** + * @param ZKTeco $self + * @return bool|mixed + */ + static public function clear(ZKTeco $self) + { + $self->_section = __METHOD__; + + $command = Util::CMD_CLEAR_DATA; + $command_string = ''; + + return $self->_command($command, $command_string); + } + + /** + * @param ZKTeco $self + * @return bool|mixed + */ + static public function clearAdmin(ZKTeco $self) + { + $self->_section = __METHOD__; + + $command = Util::CMD_CLEAR_ADMIN; + $command_string = ''; + + return $self->_command($command, $command_string); + } + + /** + * @param ZKTeco $self + * @param integer $uid + * @return bool|mixed + */ + static public function remove(ZKTeco $self, $uid) + { + $self->_section = __METHOD__; + + $command = Util::CMD_DELETE_USER; + $byte1 = chr((int)($uid % 256)); + $byte2 = chr((int)($uid >> 8)); + $command_string = ($byte1 . $byte2); + + return $self->_command($command, $command_string); + } +} \ No newline at end of file diff --git a/vendor/rats/zkteco/src/Lib/Helper/Util.php b/vendor/rats/zkteco/src/Lib/Helper/Util.php new file mode 100644 index 000000000..b0a3f417e --- /dev/null +++ b/vendor/rats/zkteco/src/Lib/Helper/Util.php @@ -0,0 +1,427 @@ + (int)date('Y', $timestamp), + 'month' => (int)date('m', $timestamp), + 'day' => (int)date('d', $timestamp), + 'hour' => (int)date('H', $timestamp), + 'minute' => (int)date('i', $timestamp), + 'second' => (int)date('s', $timestamp), + ]; + + $d = (($t->year % 100) * 12 * 31 + (($t->month - 1) * 31) + $t->day - 1) * + (24 * 60 * 60) + ($t->hour * 60 + $t->minute) * 60 + $t->second; + + return $d; + } + + /** + * Decode a timestamp retrieved from the timeclock + * copied from zkemsdk.c - DecodeTime + * + * @param int|string $t + * @return false|string Format: "Y-m-d H:i:s" + */ + static public function decodeTime($t) + { + $second = $t % 60; + $t = $t / 60; + + $minute = $t % 60; + $t = $t / 60; + + $hour = $t % 24; + $t = $t / 24; + + $day = $t % 31 + 1; + $t = $t / 31; + + $month = $t % 12 + 1; + $t = $t / 12; + + $year = floor($t + 2000); + + $d = date('Y-m-d H:i:s', strtotime( + $year . '-' . $month . '-' . $day . ' ' . $hour . ':' . $minute . ':' . $second + )); + + return $d; + } + + /** + * @param string $hex + * @return string + */ + static public function reverseHex($hex) + { + $tmp = ''; + + for ($i = strlen($hex); $i >= 0; $i--) { + $tmp .= substr($hex, $i, 2); + $i--; + } + + return $tmp; + } + + /** + * Checks a returned packet to see if it returned self::CMD_PREPARE_DATA, + * indicating that data packets are to be sent + * Returns the amount of bytes that are going to be sent + * + * @param ZKTeco $self + * @return bool|number + */ + static public function getSize(ZKTeco $self) + { + $u = unpack('H2h1/H2h2/H2h3/H2h4/H2h5/H2h6/H2h7/H2h8', substr($self->_data_recv, 0, 8)); + $command = hexdec($u['h2'] . $u['h1']); + + if ($command == self::CMD_PREPARE_DATA) { + $u = unpack('H2h1/H2h2/H2h3/H2h4', substr($self->_data_recv, 8, 4)); + $size = hexdec($u['h4'] . $u['h3'] . $u['h2'] . $u['h1']); + return $size; + } else { + return false; + } + } + + /** + * This function calculates the chksum of the packet to be sent to the + * time clock + * Copied from zkemsdk.c + * + * @inheritdoc + */ + static public function createChkSum($p) + { + $l = count($p); + $chksum = 0; + $i = $l; + $j = 1; + while ($i > 1) { + $u = unpack('S', pack('C2', $p['c' . $j], $p['c' . ($j + 1)])); + + $chksum += $u[1]; + + if ($chksum > self::USHRT_MAX) { + $chksum -= self::USHRT_MAX; + } + $i -= 2; + $j += 2; + } + + if ($i) { + $chksum = $chksum + $p['c' . strval(count($p))]; + } + + while ($chksum > self::USHRT_MAX) { + $chksum -= self::USHRT_MAX; + } + + if ($chksum > 0) { + $chksum = -($chksum); + } else { + $chksum = abs($chksum); + } + + $chksum -= 1; + while ($chksum < 0) { + $chksum += self::USHRT_MAX; + } + + return pack('S', $chksum); + } + + /** + * This function puts a the parts that make up a packet together and + * packs them into a byte string + * + * @inheritdoc + */ + static public function createHeader($command, $chksum, $session_id, $reply_id, $command_string) + { + $buf = pack('SSSS', $command, $chksum, $session_id, $reply_id) . $command_string; + + $buf = unpack('C' . (8 + strlen($command_string)) . 'c', $buf); + + $u = unpack('S', self::createChkSum($buf)); + + if (is_array($u)) { + $u = reset($u); + } + $chksum = $u; + + $reply_id += 1; + + if ($reply_id >= self::USHRT_MAX) { + $reply_id -= self::USHRT_MAX; + } + + $buf = pack('SSSS', $command, $chksum, $session_id, $reply_id); + + return $buf . $command_string; + + } + + /** + * Checks a returned packet to see if it returned Util::CMD_ACK_OK, + * indicating success + * + * @inheritdoc + */ + static public function checkValid($reply) + { + $u = unpack('H2h1/H2h2', substr($reply, 0, 8)); + + $command = hexdec($u['h2'] . $u['h1']); + /** TODO: Some device can return 'Connection unauthorized' then should check also */ + if ($command == self::CMD_ACK_OK || $command == self::CMD_ACK_UNAUTH) { + return true; + } else { + return false; + } + } + + /** + * Get User Role string + * @param integer $role + * @return string + */ + static public function getUserRole($role) + { + switch ($role) { + case self::LEVEL_USER: + $ret = 'User'; + break; + case self::LEVEL_ADMIN: + $ret = 'Admin'; + break; + default: + $ret = 'Unknown'; + } + + return $ret; + } + + /** + * Get Attendance State string + * @param integer $state + * @return string + */ + static public function getAttState($state) + { + switch ($state) { + case self::ATT_STATE_FINGERPRINT: + $ret = 'Fingerprint'; + break; + case self::ATT_STATE_PASSWORD: + $ret = 'Password'; + break; + case self::ATT_STATE_CARD: + $ret = 'Card'; + break; + default: + $ret = 'Unknown'; + } + + return $ret; + } + + /** + * Get Attendance Type string + * @param integer $type + * @return string + */ + static public function getAttType($type) + { + switch ($type) { + case self::ATT_TYPE_CHECK_IN: + $ret = 'Check-in'; + break; + case self::ATT_TYPE_CHECK_OUT: + $ret = 'Check-out'; + break; + case self::ATT_TYPE_OVERTIME_IN: + $ret = 'Overtime-in'; + break; + case self::ATT_TYPE_OVERTIME_OUT: + $ret = 'Overtime-out'; + break; + default: + $ret = 'Undefined'; + } + + return $ret; + } + + /** + * Receive data from device + * @param ZKTeco $self + * @param int $maxErrors + * @param bool $first if 'true' don't remove first 4 bytes for first row + * @return string + */ + static public function recData(ZKTeco $self, $maxErrors = 10, $first = true) + { + $data = ''; + $bytes = self::getSize($self); + + if ($bytes) { + $received = 0; + $errors = 0; + + while ($bytes > $received) { + $ret = @socket_recvfrom($self->_zkclient, $dataRec, 1032, 0, $self->_ip, $self->_port); + + if ($ret === false) { + if ($errors < $maxErrors) { + //try again if false + $errors++; + sleep(1); + continue; + } else { + //return empty if has maximum count of errors + self::logReceived($self, $received, $bytes); + unset($data); + return ''; + } + } + + if ($first === false) { + //The first 4 bytes don't seem to be related to the user + $dataRec = substr($dataRec, 8); + } + + $data .= $dataRec; + $received += strlen($dataRec); + + unset($dataRec); + $first = false; + } + + //flush socket + @socket_recvfrom($self->_zkclient, $dataRec, 1024, 0, $self->_ip, $self->_port); + unset($dataRec); + } + + return $data; + } + + /** + * @param ZKTeco $self + * @param int $received + * @param int $bytes + */ + static private function logReceived(ZKTeco $self, $received, $bytes) + { + self::logger($self, 'Received: ' . $received . ' of ' . $bytes . ' bytes'); + } + + /** + * Write log + * @param ZKTeco $self + * @param string $str + */ + static private function logger(ZKTeco $self, $str) + { + if (defined('ZK_LIB_LOG')) { + //use constant if defined + $log = ZK_LIB_LOG; + } else { + $dir = dirname(dirname(__FILE__)); + $log = $dir . '/logs/error.log'; + } + + $row = '<' . $self->_ip . '> [' . date('d.m.Y H:i:s') . '] '; + $row .= (empty($self->_section) ? '' : '(' . $self->_section . ') '); + $row .= $str; + $row .= PHP_EOL; + + file_put_contents($log, $row, FILE_APPEND); + } +} diff --git a/vendor/rats/zkteco/src/Lib/Helper/Version.php b/vendor/rats/zkteco/src/Lib/Helper/Version.php new file mode 100644 index 000000000..6ff0810c2 --- /dev/null +++ b/vendor/rats/zkteco/src/Lib/Helper/Version.php @@ -0,0 +1,23 @@ +_section = __METHOD__; + + $command = Util::CMD_VERSION; + $command_string = ''; + + return $self->_command($command, $command_string); + } +} \ No newline at end of file diff --git a/vendor/rats/zkteco/src/Lib/Helper/WorkCode.php b/vendor/rats/zkteco/src/Lib/Helper/WorkCode.php new file mode 100644 index 000000000..9be40112d --- /dev/null +++ b/vendor/rats/zkteco/src/Lib/Helper/WorkCode.php @@ -0,0 +1,22 @@ +_section = __METHOD__; + + $command = Util::CMD_DEVICE; + $command_string = 'WorkCode'; + + return $self->_command($command, $command_string); + } +} diff --git a/vendor/rats/zkteco/src/Lib/ZKTeco.php b/vendor/rats/zkteco/src/Lib/ZKTeco.php new file mode 100644 index 000000000..f43307819 --- /dev/null +++ b/vendor/rats/zkteco/src/Lib/ZKTeco.php @@ -0,0 +1,435 @@ +_ip = $ip; + $this->_port = $port; + + $this->_zkclient = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); + + $timeout = array('sec' => 60, 'usec' => 500000); + socket_set_option($this->_zkclient, SOL_SOCKET, SO_RCVTIMEO, $timeout); + + } + + /** + * Create and send command to device + * + * @param string $command + * @param string $command_string + * @param string $type + * @return bool|mixed + */ + public function _command($command, $command_string, $type = Util::COMMAND_TYPE_GENERAL) + { + $chksum = 0; + $session_id = $this->_session_id; + + $u = unpack('H2h1/H2h2/H2h3/H2h4/H2h5/H2h6/H2h7/H2h8', substr($this->_data_recv, 0, 8)); + $reply_id = hexdec($u['h8'] . $u['h7']); + + $buf = Util::createHeader($command, $chksum, $session_id, $reply_id, $command_string); + + socket_sendto($this->_zkclient, $buf, strlen($buf), 0, $this->_ip, $this->_port); + + try { + @socket_recvfrom($this->_zkclient, $this->_data_recv, 1024, 0, $this->_ip, $this->_port); + + $u = unpack('H2h1/H2h2/H2h3/H2h4/H2h5/H2h6', substr($this->_data_recv, 0, 8)); + + $ret = false; + $session = hexdec($u['h6'] . $u['h5']); + + if ($type === Util::COMMAND_TYPE_GENERAL && $session_id === $session) { + $ret = substr($this->_data_recv, 8); + } else if ($type === Util::COMMAND_TYPE_DATA && !empty($session)) { + $ret = $session; + } + + return $ret; + } catch (ErrorException $e) { + return false; + } catch (Exception $e) { + return false; + } + } + + /** + * Connect to device + * + * @return bool + */ + public function connect() + { + return Connect::connect($this); + } + + /** + * Disconnect from device + * + * @return bool + */ + public function disconnect() + { + return Connect::disconnect($this); + } + + /** + * Get device version + * + * @return bool|mixed + */ + public function version() + { + return Version::get($this); + } + + /** + * Get OS version + * + * @return bool|mixed + */ + public function osVersion() + { + return Os::get($this); + } + + /** + * Get platform + * + * @return bool|mixed + */ + public function platform() + { + return Platform::get($this); + } + + /** + * Get firmware version + * + * @return bool|mixed + */ + public function fmVersion() + { + return Platform::getVersion($this); + } + + /** + * Get work code + * + * @return bool|mixed + */ + public function workCode() + { + return WorkCode::get($this); + } + + /** + * Get SSR + * + * @return bool|mixed + */ + public function ssr() + { + return Ssr::get($this); + } + + /** + * Get pin width + * + * @return bool|mixed + */ + public function pinWidth() + { + return Pin::width($this); + } + + /** + * @return bool|mixed + */ + public function faceFunctionOn() + { + return Face::on($this); + } + + /** + * Get device serial number + * + * @return bool|mixed + */ + public function serialNumber() + { + return SerialNumber::get($this); + } + + /** + * Get device name + * + * @return bool|mixed + */ + public function deviceName() + { + return Device::name($this); + } + + /** + * Disable device + * + * @return bool|mixed + */ + public function disableDevice() + { + return Device::disable($this); + } + + /** + * Enable device + * + * @return bool|mixed + */ + public function enableDevice() + { + return Device::enable($this); + } + + /** + * Get users data + * + * @return array [userid, name, cardno, uid, role, password] + */ + public function getUser() + { + return User::get($this); + } + + /** + * Set user data + * + * @param int $uid Unique ID (max 65535) + * @param int|string $userid ID in DB (same like $uid, max length = 9, only numbers - depends device setting) + * @param string $name (max length = 24) + * @param int|string $password (max length = 8, only numbers - depends device setting) + * @param int $role Default Util::LEVEL_USER + * @param int $cardno Default 0 (max length = 10, only numbers) + * @return bool|mixed + */ + public function setUser($uid, $userid, $name, $password, $role = Util::LEVEL_USER, $cardno = 0) + { + return User::set($this, $uid, $userid, $name, $password, $role, $cardno); + } + + + + /** + * Remove All users + * + * @return bool|mixed + */ + public function clearUsers() + { + return User::clear($this); + } + + /** + * Remove admin + * + * @return bool|mixed + */ + public function clearAdmin() + { + return User::clearAdmin($this); + } + + /** + * Remove user by UID + * + * @param integer $uid + * @return bool|mixed + */ + public function removeUser($uid) + { + return User::remove($this, $uid); + } + + + + /** + * Get fingerprint data array by UID + * TODO: Can get data, but don't know how to parse the data. Need more documentation about it... + * + * @param integer $uid Unique ID (max 65535) + * @return array Binary fingerprint data array (where key is finger ID (0-9)) + */ + public function getFingerprint($uid) + { + return Fingerprint::get($this, $uid); + } + + /** + * Set fingerprint data array + * TODO: Still can not set fingerprint. Need more documentation about it... + * + * @param integer $uid Unique ID (max 65535) + * @param array $data Binary fingerprint data array (where key is finger ID (0-9) same like returned array from 'getFingerprint' method) + * @return int Count of added fingerprints + */ + public function setFingerprint($uid, array $data) + { + return Fingerprint::set($this, $uid, $data); + } + + /** + * Remove fingerprint by UID and fingers ID array + * + * @param integer $uid Unique ID (max 65535) + * @param array $data Fingers ID array (0-9) + * @return int Count of deleted fingerprints + */ + public function removeFingerprint($uid, array $data) + { + return Fingerprint::remove($this, $uid, $data); + } + + + /** + * Get attendance log + * + * @return array [uid, id, state, timestamp] + */ + public function getAttendance() + { + return Attendance::get($this); + } + + /** + * Clear attendance log + * + * @return bool|mixed + */ + public function clearAttendance() + { + return Attendance::clear($this); + } + + /** + * Set device time + * + * @param string $t Format: "Y-m-d H:i:s" + * @return bool|mixed + */ + public function setTime($t) + { + return Time::set($this, $t); + } + + /** + * Get device time + * + * @return bool|mixed Format: "Y-m-d H:i:s" + */ + public function getTime() + { + return Time::get($this); + } + + + /** + * turn off the device + * + * @return bool|mixed + */ + public function shutdown() + { + return Device::powerOff($this); + } + + /** + * restart the device + * + * @return bool|mixed + */ + public function restart() + { + return Device::restart($this); + } + + + /** + * make sleep mood the device + * + * @return bool|mixed + */ + public function sleep() + { + return Device::sleep($this); + } + + + /** + * resume the device from sleep + * + * @return bool|mixed + */ + public function resume() + { + return Device::resume($this); + } + + + /** + * voice test Sound will "Thank you" + * + * @return bool|mixed + */ + public function testVoice() + { + return Device::testVoice($this); + } + + + public function clearLCD() + { + return Device::clearLCD($this); + } + + + public function writeLCD() + { + return Device::writeLCD($this, 2, "RAIHAN Afroz Topu"); + } +} \ No newline at end of file diff --git a/vendor/rats/zkteco/src/Providers/ZktecoServiceProvider.php b/vendor/rats/zkteco/src/Providers/ZktecoServiceProvider.php new file mode 100644 index 000000000..2820161b9 --- /dev/null +++ b/vendor/rats/zkteco/src/Providers/ZktecoServiceProvider.php @@ -0,0 +1,16 @@ +