├── .env ├── .gitignore ├── 404.php ├── README.md ├── about.php ├── account.php ├── admin ├── add_product.php ├── assets │ ├── css │ │ ├── aos.min.css │ │ ├── app.min.css │ │ ├── bootstrap-extended.min.css │ │ ├── bootstrap.min.css │ │ ├── bootstrap.min.css.map │ │ ├── custom.css │ │ ├── dark-theme.min.css │ │ ├── header-colors.min.css │ │ ├── icons.min.css │ │ ├── pace.min.css │ │ └── semi-dark.min.css │ ├── fonts │ │ ├── LineIcons.eot │ │ ├── LineIcons.svg │ │ ├── LineIcons.ttf │ │ ├── LineIcons.woff │ │ ├── LineIcons.woff2 │ │ ├── boxicons.eot │ │ ├── boxicons.svg │ │ ├── boxicons.ttf │ │ ├── boxicons.woff │ │ └── boxicons.woff2 │ ├── images │ │ ├── avatars │ │ │ └── zen.png │ │ ├── bg-themes │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ ├── 3---.png │ │ │ ├── 3.png │ │ │ ├── 4.png │ │ │ ├── 5.png │ │ │ ├── 6.png │ │ │ ├── 7.png │ │ │ └── 8.png │ │ ├── errors-images │ │ │ ├── 404-error.png │ │ │ └── 505-error.png │ │ ├── favicon-32x32.png │ │ └── logo-icon.png │ ├── js │ │ ├── aos.min.js │ │ ├── app.js │ │ ├── bootstrap.bundle.min.js │ │ ├── bootstrap.bundle.min.js.map │ │ ├── exetra-chart-script.js │ │ ├── index.js │ │ ├── index2.js │ │ ├── index3.js │ │ ├── index4.js │ │ ├── index5.js │ │ ├── jquery.min.js │ │ ├── jquery.validate.js │ │ ├── main.js │ │ ├── pace.min.js │ │ └── widgets.js │ └── plugins │ │ ├── Drag-And-Drop │ │ └── dist │ │ │ ├── imageuploadify.min.css │ │ │ └── imageuploadify.min.js │ │ ├── apexcharts-bundle │ │ ├── css │ │ │ └── apexcharts.css │ │ └── js │ │ │ ├── apex-custom.js │ │ │ ├── apexcharts.js │ │ │ └── apexcharts.min.js │ │ ├── bootstrap-material-datetimepicker │ │ ├── css │ │ │ ├── bootstrap-material-datetimepicker.min.css │ │ │ └── bootstrap-material-datetimepicker.min.css.map │ │ └── js │ │ │ ├── bootstrap-material-datetimepicker.min.js │ │ │ ├── bootstrap-material-datetimepicker.min.js.map │ │ │ └── moment.min.js │ │ ├── chartjs │ │ └── js │ │ │ ├── Chart.min.js │ │ │ └── chartjs-custom.js │ │ ├── datatable │ │ ├── css │ │ │ └── dataTables.bootstrap5.min.css │ │ └── js │ │ │ ├── dataTables.bootstrap5.min.js │ │ │ └── jquery.dataTables.min.js │ │ ├── datetimepicker │ │ ├── css │ │ │ ├── classic.css │ │ │ ├── classic.date.css │ │ │ └── classic.time.css │ │ └── js │ │ │ ├── legacy.js │ │ │ ├── picker.date.js │ │ │ ├── picker.js │ │ │ └── picker.time.js │ │ ├── fancy-file-uploader │ │ ├── cors │ │ │ ├── jquery.postmessage-transport.js │ │ │ └── jquery.xdr-transport.js │ │ ├── fancy_fileupload.css │ │ ├── fancy_microphone.png │ │ ├── fancy_okay.png │ │ ├── fancy_remove.png │ │ ├── fancy_upload.png │ │ ├── fancy_webcam.png │ │ ├── jquery.fancy-fileupload.js │ │ ├── jquery.fileupload.js │ │ ├── jquery.iframe-transport.js │ │ └── jquery.ui.widget.js │ │ ├── fullcalendar │ │ ├── css │ │ │ ├── main.css │ │ │ └── main.min.css │ │ └── js │ │ │ ├── main.js │ │ │ └── main.min.js │ │ ├── gmaps │ │ └── map-custom-script.js │ │ ├── highcharts │ │ ├── css │ │ │ ├── dark-unica.css │ │ │ ├── grid-light.css │ │ │ ├── highcharts-white.css │ │ │ ├── highcharts.css │ │ │ └── sand-signika.css │ │ └── js │ │ │ ├── accessibility.js │ │ │ ├── accessibility.js.map │ │ │ ├── cylinder.js │ │ │ ├── cylinder.js.map │ │ │ ├── export-data.js │ │ │ ├── export-data.js.map │ │ │ ├── exporting.js │ │ │ ├── exporting.js.map │ │ │ ├── funnel3d.js │ │ │ ├── funnel3d.js.map │ │ │ ├── highcharts-3d.js │ │ │ ├── highcharts-3d.js.map │ │ │ ├── highcharts-custom.script.js │ │ │ ├── highcharts-more.js │ │ │ ├── highcharts-more.js.map │ │ │ ├── highcharts.js │ │ │ ├── highcharts.js.map │ │ │ ├── solid-gauge.js │ │ │ ├── solid-gauge.js.map │ │ │ ├── variable-pie.js │ │ │ └── variable-pie.js.map │ │ ├── input-tags │ │ ├── css │ │ │ └── tagsinput.css │ │ └── js │ │ │ └── tagsinput.js │ │ ├── metismenu │ │ ├── css │ │ │ ├── metisMenu.min.css │ │ │ └── metisMenu.min.css.map │ │ └── js │ │ │ ├── metisMenu.min.js │ │ │ └── metisMenu.min.js.map │ │ ├── morris │ │ ├── css │ │ │ └── morris.css │ │ └── js │ │ │ ├── morris-data.js │ │ │ ├── morris.js │ │ │ └── morris.min.js │ │ ├── notifications │ │ ├── css │ │ │ ├── lobibox.css │ │ │ └── lobibox.min.css │ │ ├── img │ │ │ ├── 1.jpg │ │ │ ├── 2.jpg │ │ │ ├── 3.jpg │ │ │ ├── 4.jpg │ │ │ ├── 5.jpg │ │ │ └── 6.jpg │ │ ├── js │ │ │ ├── lobibox.js │ │ │ ├── lobibox.min.js │ │ │ ├── messageboxes.js │ │ │ ├── messageboxes.min.js │ │ │ ├── notification-custom-script.js │ │ │ ├── notifications.js │ │ │ └── notifications.min.js │ │ └── sounds │ │ │ ├── ._sound2.ogg │ │ │ ├── ._sound3.ogg │ │ │ ├── sound1.ogg │ │ │ ├── sound2.ogg │ │ │ ├── sound3.ogg │ │ │ ├── sound4.ogg │ │ │ ├── sound5.ogg │ │ │ └── sound6.ogg │ │ ├── perfect-scrollbar │ │ ├── css │ │ │ ├── perfect-scrollbar.css │ │ │ └── perfect-scrollbar.min.css │ │ └── js │ │ │ └── perfect-scrollbar.js │ │ ├── raphael │ │ └── raphael-min.js │ │ ├── select2 │ │ ├── css │ │ │ ├── select2-bootstrap4.css │ │ │ └── select2.min.css │ │ └── js │ │ │ └── select2.min.js │ │ ├── simplebar │ │ ├── css │ │ │ ├── simplebar.css │ │ │ └── simplebar.min.css │ │ └── js │ │ │ └── simplebar.min.js │ │ ├── smart-wizard │ │ ├── css │ │ │ └── smart_wizard_all.min.css │ │ └── js │ │ │ └── jquery.smartWizard.min.js │ │ └── vectormap │ │ ├── jquery-jvectormap-2.0.2.css │ │ ├── jquery-jvectormap-2.0.2.min.js │ │ ├── jquery-jvectormap-au-mill.js │ │ ├── jquery-jvectormap-in-mill.js │ │ ├── jquery-jvectormap-uk-mill-en.js │ │ ├── jquery-jvectormap-us-aea-en.js │ │ ├── jquery-jvectormap-world-mill-en.js │ │ └── jvectormap.custom.js ├── backend │ ├── add_product.php │ └── change_order_info.php ├── dashboard.php ├── frontend │ ├── header.php │ ├── sidebar.php │ └── switcher.php ├── index.php ├── login.php ├── order.php ├── order_details.php └── product.php ├── assets ├── css │ ├── custom.css │ ├── plugins │ │ ├── animate.min.css │ │ ├── aos.min.css │ │ ├── lobibox.min.css │ │ ├── nice-select.min.css │ │ └── tiny-slider.css │ ├── sourcemaps │ │ ├── bootstrap.min.css.map │ │ ├── style.css.map │ │ └── tiny-slider.css.map │ ├── style.css │ └── vendor │ │ ├── bootstrap.min.css │ │ └── themify-icons-min.css ├── favicon.ico ├── fonts │ ├── fontAwesome │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ └── fontawesome-webfont.woff2 │ ├── lightgallery │ │ ├── lg.svg │ │ ├── lg.ttf │ │ └── lg.woff │ └── themify-icons │ │ ├── themify.eot │ │ ├── themify.svg │ │ ├── themify.ttf │ │ └── themify.woff ├── images │ ├── about.png │ ├── bg.png │ ├── category │ │ ├── cake.png │ │ ├── candy.png │ │ ├── fastfood.png │ │ ├── fruit.png │ │ └── icecream.png │ ├── favicon.ico │ ├── home.png │ ├── lightgallery │ │ ├── loading.gif │ │ ├── video-play.png │ │ ├── vimeo-play.png │ │ └── youtube-play.png │ ├── logo.png │ ├── payment │ │ └── payment_large.png │ ├── products │ │ ├── blue wrapped chocolate.png │ │ ├── carrot.png │ │ ├── cauliflower white.png │ │ ├── chicken leg.png │ │ ├── daikon white.png │ │ ├── french fries.png │ │ ├── half of avocado.png │ │ ├── hot dog.png │ │ ├── ice cream jar mokup.png │ │ ├── mint ice cream cup mokup.png │ │ ├── orange and half of orange.png │ │ ├── pink lollipop.png │ │ ├── pink shrimp.png │ │ ├── popcorn bowl.png │ │ ├── salmon steak.png │ │ ├── sliced bread.png │ │ ├── strawberry pink.png │ │ ├── yellow bread.png │ │ ├── yellow french bread.png │ │ └── yellow wrapped chocolate.png │ ├── shapes │ │ ├── shape-1.svg │ │ ├── shape-2.svg │ │ ├── shape-3.svg │ │ ├── shape-4.svg │ │ ├── shape-5.svg │ │ ├── shape-6.svg │ │ ├── shape-7.svg │ │ └── shape-8.svg │ ├── slider │ │ ├── .DS_Store │ │ ├── 1.png │ │ └── 2.png │ └── team │ │ ├── .DS_Store │ │ └── 1.jpg ├── js │ ├── all.min.js │ ├── backend.js │ ├── custom.js │ ├── dist │ │ └── custom.dev.js │ ├── main.js │ ├── plugins │ │ ├── anime.min.js │ │ ├── aos.min.js │ │ ├── feather.js │ │ ├── feather.min.js │ │ ├── jquery-ui.min.js │ │ ├── jquery.validate.js │ │ ├── lobibox.min.js │ │ ├── nice-select.min.js │ │ ├── notifications.min.js │ │ └── tiny-slider.js │ ├── sourcemaps │ │ ├── bootstrap.min.js.map │ │ ├── feather.min.js.map │ │ ├── popper.min.js.map │ │ └── tiny-slider.js.map │ └── vendor │ │ ├── bootstrap.min.js │ │ ├── jquery-3.6.0.min.js │ │ ├── jquery-migrate-3.4.0.min.js │ │ ├── modernizr-3.11.2.min.js │ │ └── popper.min.js └── scss │ ├── _common.scss │ ├── _component.scss │ ├── _custom-variables.scss │ ├── _header.scss │ ├── _pages.scss │ ├── _variabls.scss │ ├── component │ ├── _about.scss │ ├── _breadcrumb.scss │ ├── _button.scss │ ├── _cta.scss │ ├── _footer.scss │ ├── _helper.scss │ ├── _hero.scss │ ├── _modal.scss │ ├── _newsletter.scss │ ├── _products.scss │ ├── _sidebar.scss │ ├── _single-product.scss │ ├── _team.scss │ └── _testimonial.scss │ ├── custom.scss │ ├── header │ ├── _header-bottom.scss │ ├── _header-mobile.scss │ └── _header-top.scss │ ├── pages │ ├── _blog.scss │ ├── _cart.scss │ ├── _checkout.scss │ ├── _compare.scss │ ├── _contact.scss │ ├── _error-404.scss │ ├── _faq.scss │ ├── _login-register.scss │ ├── _my-account.scss │ ├── _shop.scss │ └── _wishlist.scss │ └── style.scss ├── backend ├── add_product_cart.php ├── cancel_order.php ├── change_info.php ├── change_password.php ├── check_email.php ├── check_logged.php ├── check_user.php ├── checkout.php ├── clear_cart.php ├── config │ └── connect.php ├── delete_product_cart.php ├── login.php ├── logout.php └── register.php ├── checkout.php ├── class └── paginator.php ├── composer.json ├── composer.lock ├── config └── connect.php ├── contact.php ├── content ├── connect.php ├── filter-shop.php └── short-by-shop.php ├── database ├── database.sql ├── database.vuerd.json ├── insertvalue.sql └── procedure_function.sql ├── detail_product.php ├── frontend ├── cart.php ├── connect.php ├── footer.php ├── header.php ├── mobile.php └── nav.php ├── home.php ├── index.php ├── login.php ├── order_view.php ├── product.php ├── register.php ├── shop.php ├── sounds ├── sound1.ogg ├── sound2.ogg ├── sound3.ogg ├── sound4.ogg ├── sound5.ogg └── sound6.ogg ├── vendor ├── autoload.php ├── composer │ ├── ClassLoader.php │ ├── InstalledVersions.php │ ├── LICENSE │ ├── autoload_classmap.php │ ├── autoload_files.php │ ├── autoload_namespaces.php │ ├── autoload_psr4.php │ ├── autoload_real.php │ ├── autoload_static.php │ ├── installed.json │ ├── installed.php │ └── platform_check.php ├── graham-campbell │ └── result-type │ │ ├── LICENSE │ │ ├── composer.json │ │ └── src │ │ ├── Error.php │ │ ├── Result.php │ │ └── Success.php ├── phpoption │ └── phpoption │ │ ├── LICENSE │ │ ├── composer.json │ │ └── src │ │ └── PhpOption │ │ ├── LazyOption.php │ │ ├── None.php │ │ ├── Option.php │ │ └── Some.php ├── symfony │ ├── polyfill-ctype │ │ ├── Ctype.php │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bootstrap.php │ │ ├── bootstrap80.php │ │ └── composer.json │ ├── polyfill-mbstring │ │ ├── LICENSE │ │ ├── Mbstring.php │ │ ├── README.md │ │ ├── Resources │ │ │ └── unidata │ │ │ │ ├── lowerCase.php │ │ │ │ ├── titleCaseRegexp.php │ │ │ │ └── upperCase.php │ │ ├── bootstrap.php │ │ ├── bootstrap80.php │ │ └── composer.json │ └── polyfill-php80 │ │ ├── LICENSE │ │ ├── Php80.php │ │ ├── PhpToken.php │ │ ├── README.md │ │ ├── Resources │ │ └── stubs │ │ │ ├── Attribute.php │ │ │ ├── PhpToken.php │ │ │ ├── Stringable.php │ │ │ ├── UnhandledMatchError.php │ │ │ └── ValueError.php │ │ ├── bootstrap.php │ │ └── composer.json └── vlucas │ └── phpdotenv │ ├── LICENSE │ ├── composer.json │ └── src │ ├── Dotenv.php │ ├── Exception │ ├── ExceptionInterface.php │ ├── InvalidEncodingException.php │ ├── InvalidFileException.php │ ├── InvalidPathException.php │ └── ValidationException.php │ ├── Loader │ ├── Loader.php │ ├── LoaderInterface.php │ └── Resolver.php │ ├── Parser │ ├── Entry.php │ ├── EntryParser.php │ ├── Lexer.php │ ├── Lines.php │ ├── Parser.php │ ├── ParserInterface.php │ └── Value.php │ ├── Repository │ ├── Adapter │ │ ├── AdapterInterface.php │ │ ├── ApacheAdapter.php │ │ ├── ArrayAdapter.php │ │ ├── EnvConstAdapter.php │ │ ├── GuardedWriter.php │ │ ├── ImmutableWriter.php │ │ ├── MultiReader.php │ │ ├── MultiWriter.php │ │ ├── PutenvAdapter.php │ │ ├── ReaderInterface.php │ │ ├── ReplacingWriter.php │ │ ├── ServerConstAdapter.php │ │ └── WriterInterface.php │ ├── AdapterRepository.php │ ├── RepositoryBuilder.php │ └── RepositoryInterface.php │ ├── Store │ ├── File │ │ ├── Paths.php │ │ └── Reader.php │ ├── FileStore.php │ ├── StoreBuilder.php │ ├── StoreInterface.php │ └── StringStore.php │ ├── Util │ ├── Regex.php │ └── Str.php │ └── Validator.php └── viewcart.php /.env: -------------------------------------------------------------------------------- 1 | DB_HOST="localhost" # mặc định là localhsot 2 | DB_USER="root" # mặc định là root 3 | DB_PASS="password" # điền mật khẩu mysql của bạn 4 | DB_NAME="shoporder" # điền tên database của bạn -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .env 3 | .vscode -------------------------------------------------------------------------------- /404.php: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
5 |
6 | 7 |
8 |

404

9 |

Opps! KHÔNG TÌM THẤY TRANG

10 |

Trang của bạn không tìm thấy hiện tại.

11 | 15 | Trở lại trang chủ 16 |
17 | 18 |
19 |
20 |
21 |
22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PHP SHOP ORDER 2 | 3 | ## Giới thiệu 4 | 5 | ![Screen Shot 2022-06-13 at 00.13.55.png](https://raw.githubusercontent.com/Zenfection/Image/master/2022/06/13-00-14-14-Screen%20Shot%202022-06-13%20at%2000.13.55.png) 6 | 7 | ![Screen Shot 2022-06-13 at 00.15.08.png](https://raw.githubusercontent.com/Zenfection/Image/master/2022/06/13-00-15-14-Screen%20Shot%202022-06-13%20at%2000.15.08.png) 8 | 9 | 10 | 11 | ![Screen Shot 2022-06-13 at 00.14.51.png](https://raw.githubusercontent.com/Zenfection/Image/master/2022/06/13-00-14-58-Screen%20Shot%202022-06-13%20at%2000.14.51.png) 12 | 13 | Sử dụng : 14 | 15 | - PHP 8 16 | 17 | - MYSQL 8 18 | 19 | ## Cài đặt 20 | -------------------------------------------------------------------------------- /admin/assets/css/custom.css: -------------------------------------------------------------------------------- 1 | .ribbon { 2 | position: absolute; 3 | top: 10px; 4 | left: -11px; 5 | z-index: 999; 6 | display: inline-block; 7 | font-family: "HK Grotesk",sans-serif; 8 | font-size: .8rem; 9 | text-transform: uppercase; 10 | letter-spacing: .3em; 11 | padding: 3px 15px 5px; 12 | color: #fff; 13 | text-align: center; 14 | border-top-left-radius: 10px; 15 | } 16 | .ribbon::before{ 17 | content: ''; 18 | border-left: 12px solid transparent; 19 | border-right: 0 solid transparent; 20 | border-top: 14px solid #f10040; 21 | position: absolute; 22 | bottom: -14px; 23 | left: 0; 24 | } -------------------------------------------------------------------------------- /admin/assets/css/pace.min.css: -------------------------------------------------------------------------------- 1 | .pace { 2 | -webkit-pointer-events: none; 3 | pointer-events: none; 4 | -webkit-user-select: none; 5 | -moz-user-select: none; 6 | user-select: none; 7 | } 8 | 9 | .pace-inactive { 10 | display: none; 11 | } 12 | 13 | .pace .pace-progress { 14 | background: #8833ff; 15 | position: fixed; 16 | z-index: 2000; 17 | top: 0; 18 | right: 100%; 19 | width: 100%; 20 | height: 3px; 21 | } 22 | 23 | .pace .pace-progress-inner { 24 | display: block; 25 | position: absolute; 26 | right: 0px; 27 | width: 100px; 28 | height: 100%; 29 | box-shadow: 0 0 10px #8833ff, 0 0 5px #8833ff; 30 | opacity: 1.0; 31 | -webkit-transform: rotate(3deg) translate(0px, -4px); 32 | -moz-transform: rotate(3deg) translate(0px, -4px); 33 | -ms-transform: rotate(3deg) translate(0px, -4px); 34 | -o-transform: rotate(3deg) translate(0px, -4px); 35 | transform: rotate(3deg) translate(0px, -4px); 36 | } 37 | 38 | .pace .pace-activity { 39 | display: block; 40 | position: fixed; 41 | z-index: 2000; 42 | top: 15px; 43 | right: 15px; 44 | width: 20px; 45 | height: 20px; 46 | border: solid 3px transparent; 47 | border-top-color: #8833ff; 48 | border-left-color: #8833ff; 49 | border-radius: 10px; 50 | -webkit-animation: pace-spinner 400ms linear infinite; 51 | -moz-animation: pace-spinner 400ms linear infinite; 52 | -ms-animation: pace-spinner 400ms linear infinite; 53 | -o-animation: pace-spinner 400ms linear infinite; 54 | animation: pace-spinner 400ms linear infinite; 55 | } 56 | 57 | @-webkit-keyframes pace-spinner { 58 | 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 59 | 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } 60 | } 61 | @-moz-keyframes pace-spinner { 62 | 0% { -moz-transform: rotate(0deg); transform: rotate(0deg); } 63 | 100% { -moz-transform: rotate(360deg); transform: rotate(360deg); } 64 | } 65 | @-o-keyframes pace-spinner { 66 | 0% { -o-transform: rotate(0deg); transform: rotate(0deg); } 67 | 100% { -o-transform: rotate(360deg); transform: rotate(360deg); } 68 | } 69 | @-ms-keyframes pace-spinner { 70 | 0% { -ms-transform: rotate(0deg); transform: rotate(0deg); } 71 | 100% { -ms-transform: rotate(360deg); transform: rotate(360deg); } 72 | } 73 | @keyframes pace-spinner { 74 | 0% { transform: rotate(0deg); transform: rotate(0deg); } 75 | 100% { transform: rotate(360deg); transform: rotate(360deg); } 76 | } 77 | -------------------------------------------------------------------------------- /admin/assets/css/semi-dark.min.css: -------------------------------------------------------------------------------- 1 | html.semi-dark .sidebar-wrapper{background:#171717;border-right:1px solid #e4e4e400;box-shadow:0 0 2rem 0 rgb(0 0 0 / 15%)}html.semi-dark .sidebar-wrapper .sidebar-header{background:#171717;border-right:1px solid #e4e4e400;border-bottom:1px solid rgb(255 255 255 / 15%)}html.semi-dark .sidebar-wrapper .sidebar-header .logo-text{color:#e7e9ec}html.semi-dark .sidebar-wrapper .sidebar-header .toggle-icon{color:#e7e9ec}html.semi-dark .sidebar-wrapper .metismenu a{color:#9ea4aa}html.semi-dark .sidebar-wrapper .metismenu .mm-active>a,html.semi-dark .sidebar-wrapper .metismenu a:active,html.semi-dark .sidebar-wrapper .metismenu a:focus,html.semi-dark .sidebar-wrapper .metismenu a:hover{color:#fff;text-decoration:none;background:rgb(255 255 255 / 18%)}html.semi-dark .sidebar-wrapper .metismenu ul{border:1px solid #ffffff00;background:rgb(255 255 255 / 8%)}html.semi-dark .simplebar-scrollbar:before{background:rgba(255,255,255,.4)}html.semi-dark .logo-icon{filter:invert(1) grayscale(100%) brightness(200%)}html.minimal-theme .topbar{background:#f8f9fe;border-bottom:1px solid #dee2e6;box-shadow:none!important}html.minimal-theme .topbar .search-control{background-color:#fff;border:1px solid #dee2e6}html.minimal-theme .topbar .user-box{border-left:1px solid #dee2e6}html.minimal-theme .sidebar-wrapper{background:#f8f9fe;border-right:1px solid #dee2e6;box-shadow:none!important}html.minimal-theme .sidebar-header{background:#f8f9fe;border-bottom:1px solid #dee2e6;background-clip:padding-box}html.minimal-theme .sidebar-wrapper .metismenu ul{border:1px solid #dee2e6;background:#f8f9fe}@media screen and (min-width:1025px){html.minimal-theme .wrapper.toggled.sidebar-hovered .sidebar-wrapper{box-shadow:0 .3rem .8rem rgba(0,0,0,.12)!important}} -------------------------------------------------------------------------------- /admin/assets/fonts/LineIcons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/fonts/LineIcons.eot -------------------------------------------------------------------------------- /admin/assets/fonts/LineIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/fonts/LineIcons.ttf -------------------------------------------------------------------------------- /admin/assets/fonts/LineIcons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/fonts/LineIcons.woff -------------------------------------------------------------------------------- /admin/assets/fonts/LineIcons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/fonts/LineIcons.woff2 -------------------------------------------------------------------------------- /admin/assets/fonts/boxicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/fonts/boxicons.eot -------------------------------------------------------------------------------- /admin/assets/fonts/boxicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/fonts/boxicons.ttf -------------------------------------------------------------------------------- /admin/assets/fonts/boxicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/fonts/boxicons.woff -------------------------------------------------------------------------------- /admin/assets/fonts/boxicons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/fonts/boxicons.woff2 -------------------------------------------------------------------------------- /admin/assets/images/avatars/zen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/images/avatars/zen.png -------------------------------------------------------------------------------- /admin/assets/images/bg-themes/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/images/bg-themes/1.png -------------------------------------------------------------------------------- /admin/assets/images/bg-themes/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/images/bg-themes/2.png -------------------------------------------------------------------------------- /admin/assets/images/bg-themes/3---.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/images/bg-themes/3---.png -------------------------------------------------------------------------------- /admin/assets/images/bg-themes/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/images/bg-themes/3.png -------------------------------------------------------------------------------- /admin/assets/images/bg-themes/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/images/bg-themes/4.png -------------------------------------------------------------------------------- /admin/assets/images/bg-themes/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/images/bg-themes/5.png -------------------------------------------------------------------------------- /admin/assets/images/bg-themes/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/images/bg-themes/6.png -------------------------------------------------------------------------------- /admin/assets/images/bg-themes/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/images/bg-themes/7.png -------------------------------------------------------------------------------- /admin/assets/images/bg-themes/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/images/bg-themes/8.png -------------------------------------------------------------------------------- /admin/assets/images/errors-images/404-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/images/errors-images/404-error.png -------------------------------------------------------------------------------- /admin/assets/images/errors-images/505-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/images/errors-images/505-error.png -------------------------------------------------------------------------------- /admin/assets/images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/images/favicon-32x32.png -------------------------------------------------------------------------------- /admin/assets/images/logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/images/logo-icon.png -------------------------------------------------------------------------------- /admin/assets/js/main.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | "use strict"; 3 | 4 | function loadContent(pathUrl) { 5 | $.ajax({ 6 | url: pathUrl, 7 | success: function (data) { 8 | window.scrollTo(0, 0); 9 | $('#content').html(data); 10 | AOS.init(); 11 | } 12 | }); 13 | } 14 | 15 | // function checkURL() { 16 | // if (window.location.href === window.location.origin + '/admin/') { 17 | // window.location.href = window.location.origin + '/admin/index.php'; 18 | // } 19 | // } 20 | // checkURL(); 21 | 22 | function nav() { 23 | let pathURL = window.location.href; 24 | if (pathURL.indexOf('#') == -1 && pathURL.indexOf('?') == -1) { 25 | loadContent('/admin/dashboard.php'); 26 | } else { 27 | let path = pathURL.split('/')[4].split('#')[1].replace("=", ""); 28 | path = '/admin/' + path + '.php'; 29 | $.ajax({ 30 | url: path, 31 | success: function (data) { 32 | $('#content').html(data); 33 | AOS.init(); 34 | } 35 | }); 36 | } 37 | } 38 | nav(); 39 | /*------------------------- 40 | Ajax Load Data Nagivation 41 | ---------------------------*/ 42 | $(document).on('click', '#sidebar-dashboard', function () { 43 | loadContent('/admin/dashboard.php'); 44 | }); 45 | $(document).on('click', '#sidebar-product', function () { 46 | loadContent('/admin/product.php'); 47 | }); 48 | $(document).on('click', '#sidebar-order', function () { 49 | loadContent('/admin/order.php'); 50 | }); 51 | $(document).on('click', '#sidebar-add-product', function () { 52 | loadContent('/admin/add_product.php'); 53 | }); 54 | $(document).on('click', '.viewOrderDetails', function () { 55 | let id = $(this).attr('id'); 56 | $.ajax({ 57 | type: 'POST', 58 | url: '/admin/order_details.php', 59 | data: { id: id }, 60 | success: function (data) { 61 | window.scrollTo(0, 0); 62 | $('#content').html(data); 63 | AOS.init(); 64 | } 65 | }); 66 | }); 67 | $(document).on('keypress', '#searchProduct', function(e) { 68 | if(e.which == 13) { 69 | let search = $(this).val(); 70 | search.toLowerCase(); 71 | $.ajax({ 72 | type: 'POST', 73 | url: '/admin/product.php', 74 | data: { search: search }, 75 | success: function (data) { 76 | $('#content').html(data); 77 | AOS.init(); 78 | } 79 | }); 80 | } 81 | });$(document).on('keypress', '#searchOrder', function(e) { 82 | if(e.which == 13) { 83 | let search = $(this).val(); 84 | $.ajax({ 85 | type: 'POST', 86 | url: '/admin/order.php', 87 | data: { search: search }, 88 | success: function (data) { 89 | $('#content').html(data); 90 | AOS.init(); 91 | } 92 | }); 93 | } 94 | }); 95 | }); -------------------------------------------------------------------------------- /admin/assets/plugins/bootstrap-material-datetimepicker/css/bootstrap-material-datetimepicker.min.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["bootstrap-material-datetimepicker.css"],"names":[],"mappings":"AA4BA,UACA,UACA,UACA,UAAwB,QAAS,aA/BjC,KAAO,SAAU,MAAO,IAAK,EAAG,KAAM,EAAG,MAAO,EAAG,OAAQ,EAAG,WAAY,eAAoB,QAAS,KAAM,UAAW,KAAM,oBAAqB,KAAM,iBAAkB,KAAM,gBAAiB,KAAM,YAAa,KACrN,kBAAsB,WAAY,KAAM,UAAW,MAAO,WAAY,EAAE,IAAI,IAAI,EAAE,gBAAqB,EAAE,IAAI,KAAK,EAAE,gBAAqB,WAAY,MAAO,SAAU,SAAU,KAAM,IACtL,mDAA2D,WAAY,QAAS,MAAO,KAAM,WAAY,OAAQ,QAAS,KAE1H,kBAAmB,kBAAoB,WAAY,QAAS,WAAY,OAAQ,MAAO,KAAM,QAAS,KACtG,sBAA0B,QAAS,EAAG,OAAQ,EAC9C,0BAA4B,UAAW,MAEvC,4BADA,wBAA0B,UAAW,IAAK,YAAa,GAEvD,yBAA2B,UAAW,MAAO,MAAO,QACpD,oBAAsB,QAAS,IAAK,WAAY,OAErB,yBAA3B,0BAAsD,YAAa,IAAK,WAAY,OACpF,0BAA4B,eAAe,eAAgB,eAAgB,oBAE3E,gBAAkB,SAAU,SAAU,IAAK,KAAO,MAAO,IACzD,kBAAsB,MAAO,KAC7B,oBAA0B,UAAW,IAErC,2BAA6B,OAAQ,EAAG,WAAY,MACpD,2BAA4B,8BAA+B,iCAAqC,YAChG,iCAAsC,YAAa,IAAK,UAAW,KAAO,WAAY,OAAQ,QAAS,KAAM,KAC7G,qDAA2D,MAAO,kBAC1B,wBAAxC,mCAAoE,MAAO,QAAS,gBAAiB,KAAM,QAAS,KAAM,KAAM,KAAM,KAAO,cAAe,cAC5J,4CAAiD,WAAY,QAAS,MAAO,KAC7E,iCAAqC,MAAO,QAAS,WAAY,OAAQ,YAAa,IAAK,QAAS,KAAM,KAE1G,YAAgB,MAAO,QAAS,gBAAiB,KACjD,UAAY,MAAO,IACnB,UAAY,MAAO,IACnB,UAAY,MAAO,IACnB,UAAY,MAAO,IAEnB,uBAAwB,uBAAyB,SAAU,SAAU,IAAK,KAAM,MAAO,QAAS,YAAa,IAAK,QAAS,KAAM,KAAO,cAAe,cAAc,gBAAiB,KAAM,WAAY,KAAM,UAAU,IACxN,qCAAuC,WAAY,QAAS,MAAO,KAEnE,uCACA,yCAD2C,OAAQ,QAGnD,kBAAoB,QAAS,EAAE,IAAI,IAAS,WAAY,MAE3C,aAAb,YAA4B,QAAS,KACrC,gBAAkB,WAAY,OAE9B,WAAa,MAAO,KACpB,YAAc,MAAO,MACrB,eAAiB,MAAO,KAExB,aAAe,WAAY"} -------------------------------------------------------------------------------- /admin/assets/plugins/datetimepicker/css/classic.css: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | $BASE-PICKER 3 | ========================================================================== */ 4 | /** 5 | * Note: the root picker element should *NOT* be styled more than what’s here. 6 | */ 7 | .picker { 8 | font-size: 16px; 9 | text-align: left; 10 | line-height: 1.2; 11 | color: #000; 12 | position: absolute; 13 | z-index: 10000; 14 | -webkit-user-select: none; 15 | -moz-user-select: none; 16 | -ms-user-select: none; 17 | user-select: none; 18 | outline: none; 19 | } 20 | /** 21 | * The picker input element. 22 | */ 23 | .picker__input { 24 | cursor: default; 25 | background-color: #ffffff !important; 26 | } 27 | /** 28 | * When the picker is opened, the input element is “activated”. 29 | */ 30 | .picker__input.picker__input--active { 31 | border-color: #0089ec; 32 | } 33 | /** 34 | * The holder is the only “scrollable” top-level container element. 35 | */ 36 | .picker__holder { 37 | width: 100%; 38 | overflow-y: auto; 39 | -webkit-overflow-scrolling: touch; 40 | } 41 | 42 | /*! 43 | * Classic picker styling for pickadate.js 44 | * Demo: http://amsul.github.io/pickadate.js 45 | */ 46 | /** 47 | * Note: the root picker element should *NOT* be styled more than what’s here. 48 | */ 49 | .picker { 50 | width: 100%; 51 | } 52 | /** 53 | * The holder is the base of the picker. 54 | */ 55 | .picker__holder { 56 | position: absolute; 57 | background: #fff; 58 | border: 1px solid #aaaaaa; 59 | border-top-width: 0; 60 | border-bottom-width: 0; 61 | border-radius: 0 0 5px 5px; 62 | box-sizing: border-box; 63 | min-width: 176px; 64 | max-width: 466px; 65 | max-height: 0; 66 | -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; 67 | filter: alpha(opacity=0); 68 | -moz-opacity: 0; 69 | opacity: 0; 70 | transform: translateY(-1em) perspective(600px) rotateX(10deg); 71 | transition: transform 0.15s ease-out, opacity 0.15s ease-out, max-height 0s 0.15s, border-width 0s 0.15s; 72 | } 73 | /** 74 | * The frame and wrap work together to ensure that 75 | * clicks within the picker don’t reach the holder. 76 | */ 77 | .picker__frame { 78 | padding: 1px; 79 | } 80 | .picker__wrap { 81 | margin: -1px; 82 | } 83 | /** 84 | * When the picker opens... 85 | */ 86 | .picker--opened .picker__holder { 87 | max-height: 25em; 88 | -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; 89 | filter: alpha(opacity=100); 90 | -moz-opacity: 1; 91 | opacity: 1; 92 | border-top-width: 1px; 93 | border-bottom-width: 1px; 94 | transform: translateY(0) perspective(600px) rotateX(0); 95 | transition: transform 0.15s ease-out, opacity 0.15s ease-out, max-height 0s, border-width 0s; 96 | box-shadow: 0 6px 18px 1px rgba(0, 0, 0, 0.12); 97 | } 98 | -------------------------------------------------------------------------------- /admin/assets/plugins/fancy-file-uploader/fancy_microphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/fancy-file-uploader/fancy_microphone.png -------------------------------------------------------------------------------- /admin/assets/plugins/fancy-file-uploader/fancy_okay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/fancy-file-uploader/fancy_okay.png -------------------------------------------------------------------------------- /admin/assets/plugins/fancy-file-uploader/fancy_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/fancy-file-uploader/fancy_remove.png -------------------------------------------------------------------------------- /admin/assets/plugins/fancy-file-uploader/fancy_upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/fancy-file-uploader/fancy_upload.png -------------------------------------------------------------------------------- /admin/assets/plugins/fancy-file-uploader/fancy_webcam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/fancy-file-uploader/fancy_webcam.png -------------------------------------------------------------------------------- /admin/assets/plugins/input-tags/css/tagsinput.css: -------------------------------------------------------------------------------- 1 | /* 2 | * bootstrap-tagsinput v0.8.0 3 | * 4 | */ 5 | 6 | .bootstrap-tagsinput { 7 | background-color: #fff; 8 | border: 1px solid #ccc; 9 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 10 | display: inline-block; 11 | padding: 4px 6px; 12 | color: #555; 13 | vertical-align: middle; 14 | border-radius: 4px; 15 | width: 100%; 16 | line-height: 22px; 17 | cursor: text; 18 | } 19 | .bootstrap-tagsinput input { 20 | border: none; 21 | box-shadow: none; 22 | outline: none; 23 | background-color: transparent; 24 | padding: 0 6px; 25 | margin: 0; 26 | width: auto; 27 | max-width: inherit; 28 | } 29 | .bootstrap-tagsinput.form-control input::-moz-placeholder { 30 | color: #777; 31 | opacity: 1; 32 | } 33 | .bootstrap-tagsinput.form-control input:-ms-input-placeholder { 34 | color: #777; 35 | } 36 | .bootstrap-tagsinput.form-control input::-webkit-input-placeholder { 37 | color: #777; 38 | } 39 | .bootstrap-tagsinput input:focus { 40 | border: none; 41 | box-shadow: none; 42 | } 43 | .bootstrap-tagsinput .badge { 44 | margin: 2px 4px; 45 | padding: 8px 14px; 46 | font-size: 100%; 47 | font-weight: 700; 48 | 49 | } 50 | .bootstrap-tagsinput .badge [data-role="remove"] { 51 | margin-left: 8px; 52 | cursor: pointer; 53 | } 54 | .bootstrap-tagsinput .badge [data-role="remove"]:after { 55 | content: "×"; 56 | padding: 0px 4px; 57 | background-color:rgba(0, 0, 0, 0.1); 58 | border-radius:50%; 59 | font-size:13px 60 | } 61 | .bootstrap-tagsinput .badge [data-role="remove"]:hover:after { 62 | 63 | background-color:rgba(0, 0, 0, 0.62);} 64 | .bootstrap-tagsinput .badge [data-role="remove"]:hover:active { 65 | box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); 66 | } 67 | 68 | .tt-menu { 69 | position: absolute; 70 | top: 100%; 71 | left: 0; 72 | z-index: 1000; 73 | display: none; 74 | float: left; 75 | min-width: 160px; 76 | padding: 5px 0; 77 | margin: 2px 0 0; 78 | list-style: none; 79 | font-size: 14px; 80 | background-color: #ffffff; 81 | border: 1px solid #cccccc; 82 | border: 1px solid rgba(0, 0, 0, 0.15); 83 | border-radius: 4px; 84 | -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); 85 | box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); 86 | background-clip: padding-box; 87 | cursor: pointer; 88 | } 89 | 90 | .tt-suggestion { 91 | display: block; 92 | padding: 3px 20px; 93 | clear: both; 94 | font-weight: normal; 95 | line-height: 1.428571429; 96 | color: #333333; 97 | white-space: nowrap; 98 | } 99 | 100 | .tt-suggestion:hover, 101 | .tt-suggestion:focus { 102 | color: #ffffff; 103 | text-decoration: none; 104 | outline: 0; 105 | background-color: #428bca; 106 | } 107 | -------------------------------------------------------------------------------- /admin/assets/plugins/metismenu/css/metisMenu.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * metismenu https://github.com/onokumus/metismenu#readme 3 | * A jQuery menu plugin 4 | * @version 3.0.6 5 | * @author Osman Nuri Okumus (https://github.com/onokumus) 6 | * @license: MIT 7 | */.metismenu .arrow{float:right;line-height:1.42857}[dir=rtl] .metismenu .arrow{float:left}.metismenu .glyphicon.arrow:before{content:"\e079"}.metismenu .mm-active>a>.glyphicon.arrow:before{content:"\e114"}.metismenu .fa.arrow:before{content:"\f104"}.metismenu .mm-active>a>.fa.arrow:before{content:"\f107"}.metismenu .ion.arrow:before{content:"\f3d2"}.metismenu .mm-active>a>.ion.arrow:before{content:"\f3d0"}.metismenu .plus-times{float:right}[dir=rtl] .metismenu .plus-times{float:left}.metismenu .fa.plus-times:before{content:"\f067"}.metismenu .mm-active>a>.fa.plus-times{transform:rotate(45deg)}.metismenu .plus-minus{float:right}[dir=rtl] .metismenu .plus-minus{float:left}.metismenu .fa.plus-minus:before{content:"\f067"}.metismenu .mm-active>a>.fa.plus-minus:before{content:"\f068"}.metismenu .mm-collapse:not(.mm-show){display:none}.metismenu .mm-collapsing{position:relative;height:0;overflow:hidden;transition-timing-function:ease;transition-duration:.35s;transition-property:height,visibility}.metismenu .has-arrow{position:relative}.metismenu .has-arrow:after{position:absolute;content:"";width:.5em;height:.5em;border-style:solid;border-width:1px 0 0 1px;border-color:initial;right:1em;transform:rotate(-45deg) translateY(-50%);transform-origin:top;top:50%;transition:all .3s ease-out}[dir=rtl] .metismenu .has-arrow:after{right:auto;left:1em;transform:rotate(135deg) translateY(-50%)}.metismenu .has-arrow[aria-expanded=true]:after,.metismenu .mm-active>.has-arrow:after{transform:rotate(-135deg) translateY(-50%)}[dir=rtl] .metismenu .has-arrow[aria-expanded=true]:after,[dir=rtl] .metismenu .mm-active>.has-arrow:after{transform:rotate(225deg) translateY(-50%)} 8 | /*# sourceMappingURL=metisMenu.min.css.map */ -------------------------------------------------------------------------------- /admin/assets/plugins/morris/css/morris.css: -------------------------------------------------------------------------------- 1 | .morris-hover { 2 | position:absolute; 3 | z-index:1; 4 | } 5 | 6 | .morris-hover.morris-default-style .morris-hover-row-label { 7 | font-weight:bold; 8 | margin:0.25em 0 9 | } 10 | .morris-hover.morris-default-style .morris-hover-point { 11 | white-space:nowrap; 12 | margin:0.1em 0 13 | } 14 | .morris-hover.morris-default-style { 15 | border-radius: 4px; 16 | padding: 10px 12px; 17 | color: #666; 18 | background:#63676b; 19 | border: none; 20 | color: #fff!important ; 21 | box-shadow: 0px 5px 20px #ccc; 22 | font-size:14px; 23 | } 24 | .morris-hover-point { 25 | color: rgba(257, 257, 257, 0.8)!important ; 26 | } 27 | -------------------------------------------------------------------------------- /admin/assets/plugins/notifications/img/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/notifications/img/1.jpg -------------------------------------------------------------------------------- /admin/assets/plugins/notifications/img/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/notifications/img/2.jpg -------------------------------------------------------------------------------- /admin/assets/plugins/notifications/img/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/notifications/img/3.jpg -------------------------------------------------------------------------------- /admin/assets/plugins/notifications/img/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/notifications/img/4.jpg -------------------------------------------------------------------------------- /admin/assets/plugins/notifications/img/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/notifications/img/5.jpg -------------------------------------------------------------------------------- /admin/assets/plugins/notifications/img/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/notifications/img/6.jpg -------------------------------------------------------------------------------- /admin/assets/plugins/notifications/sounds/._sound2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/notifications/sounds/._sound2.ogg -------------------------------------------------------------------------------- /admin/assets/plugins/notifications/sounds/._sound3.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/notifications/sounds/._sound3.ogg -------------------------------------------------------------------------------- /admin/assets/plugins/notifications/sounds/sound1.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/notifications/sounds/sound1.ogg -------------------------------------------------------------------------------- /admin/assets/plugins/notifications/sounds/sound2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/notifications/sounds/sound2.ogg -------------------------------------------------------------------------------- /admin/assets/plugins/notifications/sounds/sound3.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/notifications/sounds/sound3.ogg -------------------------------------------------------------------------------- /admin/assets/plugins/notifications/sounds/sound4.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/notifications/sounds/sound4.ogg -------------------------------------------------------------------------------- /admin/assets/plugins/notifications/sounds/sound5.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/notifications/sounds/sound5.ogg -------------------------------------------------------------------------------- /admin/assets/plugins/notifications/sounds/sound6.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/assets/plugins/notifications/sounds/sound6.ogg -------------------------------------------------------------------------------- /admin/assets/plugins/perfect-scrollbar/css/perfect-scrollbar.min.css: -------------------------------------------------------------------------------- 1 | .ps{overflow:hidden!important;overflow-anchor:none;-ms-overflow-style:none;touch-action:auto;-ms-touch-action:auto}.ps__rail-x{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;height:15px;bottom:0;position:absolute}.ps__rail-y{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;width:15px;right:0;position:absolute}.ps--active-x>.ps__rail-x,.ps--active-y>.ps__rail-y{display:block;background-color:transparent}.ps--focus>.ps__rail-x,.ps--focus>.ps__rail-y,.ps--scrolling-x>.ps__rail-x,.ps--scrolling-y>.ps__rail-y,.ps:hover>.ps__rail-x,.ps:hover>.ps__rail-y{opacity:.6}.ps .ps__rail-x.ps--clicking,.ps .ps__rail-x:focus,.ps .ps__rail-x:hover,.ps .ps__rail-y.ps--clicking,.ps .ps__rail-y:focus,.ps .ps__rail-y:hover{background-color:#eee;opacity:.9}.ps__thumb-x{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,height .2s ease-in-out;-webkit-transition:background-color .2s linear,height .2s ease-in-out;height:6px;bottom:2px;position:absolute}.ps__thumb-y{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,width .2s ease-in-out;-webkit-transition:background-color .2s linear,width .2s ease-in-out;width:6px;right:2px;position:absolute}.ps__rail-x.ps--clicking .ps__thumb-x,.ps__rail-x:focus>.ps__thumb-x,.ps__rail-x:hover>.ps__thumb-x{background-color:#999;height:11px}.ps__rail-y.ps--clicking .ps__thumb-y,.ps__rail-y:focus>.ps__thumb-y,.ps__rail-y:hover>.ps__thumb-y{background-color:#999;width:11px}@supports (-ms-overflow-style:none){.ps{overflow:auto!important}}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.ps{overflow:auto!important}} -------------------------------------------------------------------------------- /admin/assets/plugins/simplebar/css/simplebar.min.css: -------------------------------------------------------------------------------- 1 | [data-simplebar]{position:relative;flex-direction:column;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.simplebar-wrapper{overflow:hidden;width:inherit;height:inherit;max-width:inherit;max-height:inherit}.simplebar-mask{direction:inherit;position:absolute;overflow:hidden;padding:0;margin:0;left:0;top:0;bottom:0;right:0;width:auto!important;height:auto!important;z-index:0}.simplebar-offset{direction:inherit!important;box-sizing:inherit!important;resize:none!important;position:absolute;top:0;left:0;bottom:0;right:0;padding:0;margin:0;-webkit-overflow-scrolling:touch}.simplebar-content-wrapper{direction:inherit;box-sizing:border-box!important;position:relative;display:block;height:100%;width:auto;visibility:visible;max-width:100%;max-height:100%;scrollbar-width:none;-ms-overflow-style:none}.simplebar-content-wrapper::-webkit-scrollbar,.simplebar-hide-scrollbar::-webkit-scrollbar{width:0;height:0}.simplebar-content:after,.simplebar-content:before{content:' ';display:table}.simplebar-placeholder{max-height:100%;max-width:100%;width:100%;pointer-events:none}.simplebar-height-auto-observer-wrapper{box-sizing:inherit!important;height:100%;width:100%;max-width:1px;position:relative;float:left;max-height:1px;overflow:hidden;z-index:-1;padding:0;margin:0;pointer-events:none;flex-grow:inherit;flex-shrink:0;flex-basis:0}.simplebar-height-auto-observer{box-sizing:inherit;display:block;opacity:0;position:absolute;top:0;left:0;height:1000%;width:1000%;min-height:1px;min-width:1px;overflow:hidden;pointer-events:none;z-index:-1}.simplebar-track{z-index:1;position:absolute;right:0;bottom:0;pointer-events:none;overflow:hidden}[data-simplebar].simplebar-dragging .simplebar-content{pointer-events:none;user-select:none;-webkit-user-select:none}[data-simplebar].simplebar-dragging .simplebar-track{pointer-events:all}.simplebar-scrollbar{position:absolute;left:0;right:0;top:60px;min-height:10px}.simplebar-scrollbar:before{position:absolute;content:'';background:#000;border-radius:7px;left:2px;right:2px;opacity:0;transition:opacity .2s linear}.simplebar-scrollbar.simplebar-visible:before{opacity:.5;transition:opacity 0s linear}.simplebar-track.simplebar-vertical{top:0;width:11px}.simplebar-track.simplebar-vertical .simplebar-scrollbar:before{top:2px;bottom:2px}.simplebar-track.simplebar-horizontal{left:0;height:11px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar:before{height:100%;left:2px;right:2px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar{right:auto;left:0;top:2px;height:7px;min-height:0;min-width:10px;width:auto}[data-simplebar-direction=rtl] .simplebar-track.simplebar-vertical{right:auto;left:0}.hs-dummy-scrollbar-size{direction:rtl;position:fixed;opacity:0;visibility:hidden;height:500px;width:500px;overflow-y:hidden;overflow-x:scroll}.simplebar-hide-scrollbar{position:fixed;left:0;visibility:hidden;overflow-y:scroll;scrollbar-width:none;-ms-overflow-style:none} -------------------------------------------------------------------------------- /admin/assets/plugins/vectormap/jvectormap.custom.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | "use strict"; 3 | jQuery('#world-map-markers').vectorMap({ 4 | map: 'world_mill_en', 5 | backgroundColor: 'transparent', 6 | borderColor: '#818181', 7 | borderOpacity: 0.25, 8 | borderWidth: 1, 9 | zoomOnScroll: false, 10 | color: '#009efb', 11 | regionStyle: { 12 | initial: { 13 | fill: '#673ab7' 14 | } 15 | }, 16 | markerStyle: { 17 | initial: { 18 | r: 9, 19 | 'fill': '#fff', 20 | 'fill-opacity': 1, 21 | 'stroke': '#000', 22 | 'stroke-width': 5, 23 | 'stroke-opacity': 0.4 24 | }, 25 | }, 26 | enableZoom: true, 27 | hoverColor: '#009efb', 28 | markers: [{ 29 | latLng: [21.00, 78.00], 30 | name: 'I Love My India' 31 | }], 32 | hoverOpacity: null, 33 | normalizeFunction: 'linear', 34 | scaleColors: ['#b6d6ff', '#005ace'], 35 | selectedColor: '#c9dfaf', 36 | selectedRegions: [], 37 | showTooltip: true, 38 | onRegionClick: function (element, code, region) { 39 | var message = 'You clicked "' + region + '" which has the code: ' + code.toUpperCase(); 40 | alert(message); 41 | } 42 | }); 43 | $('#india').vectorMap({ 44 | map: 'in_mill', 45 | backgroundColor: 'transparent', 46 | zoomOnScroll: false, 47 | regionStyle: { 48 | initial: { 49 | fill: '#32ab13' 50 | } 51 | } 52 | }); 53 | $('#usa').vectorMap({ 54 | map: 'us_aea_en', 55 | backgroundColor: 'transparent', 56 | zoomOnScroll: false, 57 | regionStyle: { 58 | initial: { 59 | fill: '#f02769' 60 | } 61 | } 62 | }); 63 | $('#australia').vectorMap({ 64 | map: 'au_mill', 65 | backgroundColor: 'transparent', 66 | zoomOnScroll: false, 67 | regionStyle: { 68 | initial: { 69 | fill: '#ffc107' 70 | } 71 | } 72 | }); 73 | $('#uk').vectorMap({ 74 | map: 'uk_mill_en', 75 | backgroundColor: 'transparent', 76 | zoomOnScroll: false, 77 | regionStyle: { 78 | initial: { 79 | fill: '#198fed' 80 | } 81 | } 82 | }); 83 | }); -------------------------------------------------------------------------------- /admin/backend/add_product.php: -------------------------------------------------------------------------------- 1 | 22 |
23 |
24 |
25 |
26 |
Thêm sản phẩm thành công
27 |
Bạn đã thêm ${name}
28 |
29 |
30 | 31 | "; 32 | } 33 | echo ""; 34 | -------------------------------------------------------------------------------- /admin/backend/change_order_info.php: -------------------------------------------------------------------------------- 1 | 16 |
17 |
18 |
19 |
20 |
Cập Nhật Đơn Hàng
21 |
Bạn đã cập nhật đơn ${id}
22 |
23 |
24 | 25 | "; 26 | } 27 | echo ""; 28 | -------------------------------------------------------------------------------- /admin/frontend/sidebar.php: -------------------------------------------------------------------------------- 1 | 2 | 60 | -------------------------------------------------------------------------------- /admin/login.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/admin/login.php -------------------------------------------------------------------------------- /assets/css/plugins/tiny-slider.css: -------------------------------------------------------------------------------- 1 | .tns-outer{padding:0 !important}.tns-outer [hidden]{display:none !important}.tns-outer [aria-controls],.tns-outer [data-action]{cursor:pointer}.tns-slider{-webkit-transition:all 0s;-moz-transition:all 0s;transition:all 0s}.tns-slider>.tns-item{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.tns-horizontal.tns-subpixel{white-space:nowrap}.tns-horizontal.tns-subpixel>.tns-item{display:inline-block;vertical-align:top;white-space:normal}.tns-horizontal.tns-no-subpixel:after{content:'';display:table;clear:both}.tns-horizontal.tns-no-subpixel>.tns-item{float:left}.tns-horizontal.tns-carousel.tns-no-subpixel>.tns-item{margin-right:-100%}.tns-no-calc{position:relative;left:0}.tns-gallery{position:relative;left:0;min-height:1px}.tns-gallery>.tns-item{position:absolute;left:-100%;-webkit-transition:transform 0s, opacity 0s;-moz-transition:transform 0s, opacity 0s;transition:transform 0s, opacity 0s}.tns-gallery>.tns-slide-active{position:relative;left:auto !important}.tns-gallery>.tns-moving{-webkit-transition:all 0.25s;-moz-transition:all 0.25s;transition:all 0.25s}.tns-autowidth{display:inline-block}.tns-lazy-img{-webkit-transition:opacity 0.6s;-moz-transition:opacity 0.6s;transition:opacity 0.6s;opacity:0.6}.tns-lazy-img.tns-complete{opacity:1}.tns-ah{-webkit-transition:height 0s;-moz-transition:height 0s;transition:height 0s}.tns-ovh{overflow:hidden}.tns-visually-hidden{position:absolute;left:-10000em}.tns-transparent{opacity:0;visibility:hidden}.tns-fadeIn{opacity:1;filter:alpha(opacity=100);z-index:0}.tns-normal,.tns-fadeOut{opacity:0;filter:alpha(opacity=0);z-index:-1}.tns-vpfix{white-space:nowrap}.tns-vpfix>div,.tns-vpfix>li{display:inline-block}.tns-t-subp2{margin:0 auto;width:310px;position:relative;height:10px;overflow:hidden}.tns-t-ct{width:2333.3333333%;width:-webkit-calc(100% * 70 / 3);width:-moz-calc(100% * 70 / 3);width:calc(100% * 70 / 3);position:absolute;right:0}.tns-t-ct:after{content:'';display:table;clear:both}.tns-t-ct>div{width:1.4285714%;width:-webkit-calc(100% / 70);width:-moz-calc(100% / 70);width:calc(100% / 70);height:10px;float:left} 2 | 3 | /*# sourceMappingURL=../sourcemaps/tiny-slider.css.map */ 4 | -------------------------------------------------------------------------------- /assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/favicon.ico -------------------------------------------------------------------------------- /assets/fonts/fontAwesome/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/fonts/fontAwesome/FontAwesome.otf -------------------------------------------------------------------------------- /assets/fonts/fontAwesome/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/fonts/fontAwesome/fontawesome-webfont.eot -------------------------------------------------------------------------------- /assets/fonts/fontAwesome/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/fonts/fontAwesome/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /assets/fonts/fontAwesome/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/fonts/fontAwesome/fontawesome-webfont.woff -------------------------------------------------------------------------------- /assets/fonts/fontAwesome/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/fonts/fontAwesome/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /assets/fonts/lightgallery/lg.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/fonts/lightgallery/lg.ttf -------------------------------------------------------------------------------- /assets/fonts/lightgallery/lg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/fonts/lightgallery/lg.woff -------------------------------------------------------------------------------- /assets/fonts/themify-icons/themify.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/fonts/themify-icons/themify.eot -------------------------------------------------------------------------------- /assets/fonts/themify-icons/themify.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/fonts/themify-icons/themify.ttf -------------------------------------------------------------------------------- /assets/fonts/themify-icons/themify.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/fonts/themify-icons/themify.woff -------------------------------------------------------------------------------- /assets/images/about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/about.png -------------------------------------------------------------------------------- /assets/images/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/bg.png -------------------------------------------------------------------------------- /assets/images/category/cake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/category/cake.png -------------------------------------------------------------------------------- /assets/images/category/candy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/category/candy.png -------------------------------------------------------------------------------- /assets/images/category/fastfood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/category/fastfood.png -------------------------------------------------------------------------------- /assets/images/category/fruit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/category/fruit.png -------------------------------------------------------------------------------- /assets/images/category/icecream.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/category/icecream.png -------------------------------------------------------------------------------- /assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/favicon.ico -------------------------------------------------------------------------------- /assets/images/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/home.png -------------------------------------------------------------------------------- /assets/images/lightgallery/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/lightgallery/loading.gif -------------------------------------------------------------------------------- /assets/images/lightgallery/video-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/lightgallery/video-play.png -------------------------------------------------------------------------------- /assets/images/lightgallery/vimeo-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/lightgallery/vimeo-play.png -------------------------------------------------------------------------------- /assets/images/lightgallery/youtube-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/lightgallery/youtube-play.png -------------------------------------------------------------------------------- /assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/logo.png -------------------------------------------------------------------------------- /assets/images/payment/payment_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/payment/payment_large.png -------------------------------------------------------------------------------- /assets/images/products/blue wrapped chocolate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/blue wrapped chocolate.png -------------------------------------------------------------------------------- /assets/images/products/carrot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/carrot.png -------------------------------------------------------------------------------- /assets/images/products/cauliflower white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/cauliflower white.png -------------------------------------------------------------------------------- /assets/images/products/chicken leg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/chicken leg.png -------------------------------------------------------------------------------- /assets/images/products/daikon white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/daikon white.png -------------------------------------------------------------------------------- /assets/images/products/french fries.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/french fries.png -------------------------------------------------------------------------------- /assets/images/products/half of avocado.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/half of avocado.png -------------------------------------------------------------------------------- /assets/images/products/hot dog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/hot dog.png -------------------------------------------------------------------------------- /assets/images/products/ice cream jar mokup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/ice cream jar mokup.png -------------------------------------------------------------------------------- /assets/images/products/mint ice cream cup mokup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/mint ice cream cup mokup.png -------------------------------------------------------------------------------- /assets/images/products/orange and half of orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/orange and half of orange.png -------------------------------------------------------------------------------- /assets/images/products/pink lollipop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/pink lollipop.png -------------------------------------------------------------------------------- /assets/images/products/pink shrimp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/pink shrimp.png -------------------------------------------------------------------------------- /assets/images/products/popcorn bowl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/popcorn bowl.png -------------------------------------------------------------------------------- /assets/images/products/salmon steak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/salmon steak.png -------------------------------------------------------------------------------- /assets/images/products/sliced bread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/sliced bread.png -------------------------------------------------------------------------------- /assets/images/products/strawberry pink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/strawberry pink.png -------------------------------------------------------------------------------- /assets/images/products/yellow bread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/yellow bread.png -------------------------------------------------------------------------------- /assets/images/products/yellow french bread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/yellow french bread.png -------------------------------------------------------------------------------- /assets/images/products/yellow wrapped chocolate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/products/yellow wrapped chocolate.png -------------------------------------------------------------------------------- /assets/images/shapes/shape-1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/images/shapes/shape-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /assets/images/shapes/shape-3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/images/shapes/shape-4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/images/shapes/shape-5.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/images/shapes/shape-6.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/images/shapes/shape-7.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/images/shapes/shape-8.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /assets/images/slider/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/slider/.DS_Store -------------------------------------------------------------------------------- /assets/images/slider/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/slider/1.png -------------------------------------------------------------------------------- /assets/images/slider/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/slider/2.png -------------------------------------------------------------------------------- /assets/images/team/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/team/.DS_Store -------------------------------------------------------------------------------- /assets/images/team/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/assets/images/team/1.jpg -------------------------------------------------------------------------------- /assets/js/plugins/nice-select.min.js: -------------------------------------------------------------------------------- 1 | 2 | /* jQuery Nice Select - v1.0 3 | https://github.com/hernansartorio/jquery-nice-select 4 | Made by Hernán Sartorio */ 5 | !function(e){e.fn.niceSelect=function(t){function s(t){t.after(e("
").addClass("nice-select").addClass(t.attr("class")||"").addClass(t.attr("disabled")?"disabled":"").attr("tabindex",t.attr("disabled")?null:"0").html(''));var s=t.next(),n=t.find("option"),i=t.find("option:selected");s.find(".current").html(i.data("display")||i.text()),n.each(function(t){var n=e(this),i=n.data("display");s.find("ul").append(e("
  • ").attr("data-value",n.val()).attr("data-display",i||null).addClass("option"+(n.is(":selected")?" selected":"")+(n.is(":disabled")?" disabled":"")).html(n.text()))})}if("string"==typeof t)return"update"==t?this.each(function(){var t=e(this),n=e(this).next(".nice-select"),i=n.hasClass("open");n.length&&(n.remove(),s(t),i&&t.next().trigger("click"))}):"destroy"==t?(this.each(function(){var t=e(this),s=e(this).next(".nice-select");s.length&&(s.remove(),t.css("display",""))}),0==e(".nice-select").length&&e(document).off(".nice_select")):console.log('Method "'+t+'" does not exist.'),this;this.hide(),this.each(function(){var t=e(this);t.next().hasClass("nice-select")||s(t)}),e(document).off(".nice_select"),e(document).on("click.nice_select",".nice-select",function(t){var s=e(this);e(".nice-select").not(s).removeClass("open"),s.toggleClass("open"),s.hasClass("open")?(s.find(".option"),s.find(".focus").removeClass("focus"),s.find(".selected").addClass("focus")):s.focus()}),e(document).on("click.nice_select",function(t){0===e(t.target).closest(".nice-select").length&&e(".nice-select").removeClass("open").find(".option")}),e(document).on("click.nice_select",".nice-select .option:not(.disabled)",function(t){var s=e(this),n=s.closest(".nice-select");n.find(".selected").removeClass("selected"),s.addClass("selected");var i=s.data("display")||s.text();n.find(".current").text(i),n.prev("select").val(s.data("value")).trigger("change")}),e(document).on("keydown.nice_select",".nice-select",function(t){var s=e(this),n=e(s.find(".focus")||s.find(".list .option.selected"));if(32==t.keyCode||13==t.keyCode)return s.hasClass("open")?n.trigger("click"):s.trigger("click"),!1;if(40==t.keyCode){if(s.hasClass("open")){var i=n.nextAll(".option:not(.disabled)").first();i.length>0&&(s.find(".focus").removeClass("focus"),i.addClass("focus"))}else s.trigger("click");return!1}if(38==t.keyCode){if(s.hasClass("open")){var l=n.prevAll(".option:not(.disabled)").first();l.length>0&&(s.find(".focus").removeClass("focus"),l.addClass("focus"))}else s.trigger("click");return!1}if(27==t.keyCode)s.hasClass("open")&&s.trigger("click");else if(9==t.keyCode&&s.hasClass("open"))return!1});var n=document.createElement("a").style;return n.cssText="pointer-events:auto","auto"!==n.pointerEvents&&e("html").addClass("no-csspointerevents"),this}}(jQuery); -------------------------------------------------------------------------------- /assets/scss/_component.scss: -------------------------------------------------------------------------------- 1 | @import "component/button"; 2 | // @import "component/hero"; 3 | // @import "component/cta"; 4 | @import "component/products"; 5 | @import "component/single-product"; 6 | @import "component/about"; 7 | @import "component/team"; 8 | // @import "component/testimonial"; 9 | // @import "component/newsletter"; 10 | // @import "component/breadcrumb"; 11 | @import "component/sidebar"; 12 | // @import "component/modal"; 13 | @import "component/footer"; 14 | @import "component/helper"; -------------------------------------------------------------------------------- /assets/scss/_custom-variables.scss: -------------------------------------------------------------------------------- 1 | // Custom variable file only for customer to use 2 | -------------------------------------------------------------------------------- /assets/scss/_header.scss: -------------------------------------------------------------------------------- 1 | @import "header/header-top"; 2 | @import "header/header-bottom"; 3 | @import "header/header-mobile"; -------------------------------------------------------------------------------- /assets/scss/_pages.scss: -------------------------------------------------------------------------------- 1 | // @import "pages/blog"; 2 | @import "pages/shop"; 3 | @import "pages/contact"; 4 | @import "pages/my-account"; 5 | @import "pages/login-register"; 6 | @import "pages/wishlist"; 7 | @import "pages/cart"; 8 | @import "pages/checkout"; 9 | // @import "pages/compare"; 10 | // @import "pages/faq"; 11 | @import "pages/error-404"; -------------------------------------------------------------------------------- /assets/scss/component/_about.scss: -------------------------------------------------------------------------------- 1 | /*======================================= 2 | 3.06 About CSS 3 | =========================================*/ 4 | .about-content { 5 | & .title { 6 | font-size: 30px; 7 | font-weight: 600; 8 | line-height: 1; 9 | margin-bottom: 30px; 10 | @media #{$tablet-device, $large-mobile} { 11 | margin-bottom: 15px; 12 | } 13 | @media #{$large-mobile} { 14 | font-size: 24px; 15 | } 16 | } 17 | & p { 18 | font-size: 14px; 19 | line-height: 1.8; 20 | } 21 | 22 | & .about-content-list { 23 | & li { 24 | font-weight: 500; 25 | font-size: 15px; 26 | margin-bottom: 10px; 27 | 28 | & span { 29 | margin-right: 5px; 30 | vertical-align: middle; 31 | font-size: 14px; 32 | line-height: 14px; 33 | } 34 | } 35 | } 36 | & .btn { 37 | margin-top: 40px; 38 | border-radius: 50px; 39 | @media #{$tablet-device, $large-mobile} { 40 | margin-top: 20px; 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /assets/scss/component/_breadcrumb.scss: -------------------------------------------------------------------------------- 1 | /*======================================= 2 | 3.10 Breadcrumb CSS 3 | =========================================*/ 4 | .breadcrumb-area { 5 | padding: 50px 0; 6 | } 7 | .breadcrumb-wrapper { 8 | & .breadcrumb-title { 9 | font-size: 30px; 10 | font-weight: 600; 11 | line-height: 30px; 12 | margin: 0px 0 12px; 13 | text-transform: uppercase; 14 | 15 | @media #{$large-mobile} { 16 | font-size: 24px; 17 | line-height: 24px; 18 | } 19 | } 20 | 21 | & ul { 22 | display: flex; 23 | justify-content: center; 24 | line-height: 1; 25 | 26 | & li { 27 | position: relative; 28 | margin-right: 20px; 29 | 30 | & a { 31 | font-weight: 500; 32 | 33 | &:hover { 34 | color: $primary; 35 | } 36 | } 37 | 38 | &::after { 39 | position: absolute; 40 | content: ''; 41 | background: $dark; 42 | width: 5px; 43 | height: 1px; 44 | top: 50%; 45 | transform: translateX(-50%); 46 | right: -15px; 47 | } 48 | 49 | &:last-child { 50 | margin-right: 0; 51 | font-size: 14px; 52 | 53 | &::after { 54 | display: none; 55 | } 56 | } 57 | } 58 | } 59 | } -------------------------------------------------------------------------------- /assets/scss/component/_cta.scss: -------------------------------------------------------------------------------- 1 | /*======================================= 2 | 3.03 CTA CSS 3 | =========================================*/ 4 | .single-cta-wrapper { 5 | background: $gray-200; 6 | padding: 30px 28px 25px; 7 | text-align: center; 8 | 9 | & .cta-icon { 10 | font-size: 30px; 11 | color: $dark; 12 | margin-bottom: 20px; 13 | } 14 | 15 | & .cta-content { 16 | & .title { 17 | font-size: 16px; 18 | font-weight: 500; 19 | text-transform: uppercase; 20 | } 21 | & p { 22 | font-size: 14px; 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /assets/scss/component/_helper.scss: -------------------------------------------------------------------------------- 1 | // Background Color 2 | @each $color, $value in $theme-colors { 3 | .bg-name-#{$color} { 4 | background-color: $value; 5 | } 6 | } 7 | 8 | // Spacing Parameter 9 | $spaceamounts: (5, 10, 15, 20, 25, 30, 35, 40, 45, 50); 10 | $sides: (top, bottom, left, right, all, negative); 11 | 12 | @each $space in $spaceamounts { 13 | @each $side in $sides { 14 | 15 | @if $side == 'all' { 16 | .m-#{$space} { 17 | margin: #{$space}px; 18 | } 19 | 20 | .p-#{$space} { 21 | padding: #{$space}px; 22 | } 23 | } @else { 24 | .m-#{str-slice($side, 0, 1)}-#{$space} { 25 | margin-#{$side}: #{$space}px; 26 | } 27 | 28 | .m-#{str-slice($side, 0, 1)}-n#{$space} { 29 | margin-#{$side}: -#{$space}px; 30 | } 31 | 32 | .p-#{str-slice($side, 0, 1)}-#{$space} { 33 | padding-#{$side}: #{$space}px; 34 | } 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /assets/scss/component/_modal.scss: -------------------------------------------------------------------------------- 1 | /*======================================= 2 | 3.12 Modal CSS 3 | =========================================*/ 4 | .modalquickview { 5 | & .modal-dialog{ 6 | width: calc(100% - 30px); 7 | max-width: 1200px; 8 | 9 | @media #{$small-mobile} { 10 | width: calc(100% - 15px); 11 | } 12 | & .modal-content { 13 | padding: 30px; 14 | 15 | & .close { 16 | font-size: 30px; 17 | font-weight: 400; 18 | position: absolute; 19 | top: -5px; 20 | right: -6px; 21 | width: 40px; 22 | height: 40px; 23 | display: flex; 24 | justify-content: end; 25 | align-items: center; 26 | 27 | @media #{$large-mobile} { 28 | justify-content: center; 29 | } 30 | } 31 | } 32 | } 33 | 34 | & .product-summery { 35 | position: absolute; 36 | right: 15px; 37 | left: 15px; 38 | overflow-x: hidden; 39 | overflow-y: auto; 40 | height: 100%; 41 | @media #{$large-mobile} { 42 | position: relative; 43 | left: 0; 44 | right: 0; 45 | } 46 | @media #{$tablet-device} { 47 | margin-top: 0; 48 | } 49 | } 50 | } 51 | .modal-product-carousel { 52 | & img { 53 | border: 1px solid #ebebeb; 54 | } 55 | 56 | & .swiper-button-prev, & .swiper-button-next { 57 | display: flex; 58 | align-items: center; 59 | &:focus{ 60 | border: 0px; 61 | outline: 0px; 62 | } 63 | &:after{ 64 | display: none; 65 | } 66 | & i{ 67 | opacity: 1; 68 | visibility: visible; 69 | font-size: 14px; 70 | color: $dark; 71 | background: $gray-100; 72 | padding: 10px; 73 | display: flex; 74 | justify-content: center; 75 | align-items: center; 76 | border-radius: 100%; 77 | &:hover{ 78 | color: $white; 79 | background: $primary !important; 80 | transition: .3s; 81 | } 82 | } 83 | } 84 | } -------------------------------------------------------------------------------- /assets/scss/component/_newsletter.scss: -------------------------------------------------------------------------------- 1 | /*======================================= 2 | 3.09 Newsletter CSS 3 | =========================================*/ 4 | .newsletter-content { 5 | & .title { 6 | font-size: 24px; 7 | font-weight: 600; 8 | line-height: 1; 9 | } 10 | 11 | & p { 12 | @media #{$tablet-device, $large-mobile} { 13 | font-size: 14px; 14 | } 15 | } 16 | } 17 | .newsletter-form-wrap { 18 | &.newsletter-inner { 19 | & .mc-form { 20 | & .form-control { 21 | padding-right: 130px; 22 | padding-left: 30px; 23 | height: 50px; 24 | font-size: 14px; 25 | color: $dark; 26 | @media #{$large-mobile} { 27 | padding-right: 120px; 28 | padding-left: 20px; 29 | font-size: 13px; 30 | } 31 | } 32 | 33 | & .newsletter-btn { 34 | padding: 8px 15px; 35 | right: 0; 36 | @media #{$large-mobile} { 37 | font-size: 14px; 38 | } 39 | } 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /assets/scss/component/_team.scss: -------------------------------------------------------------------------------- 1 | /*======================================= 2 | 3.07 Team CSS 3 | =========================================*/ 4 | .single-team-wrapper { 5 | background-color: #f9f9f9; 6 | box-shadow: 0 0 11px rgba(0, 0, 0, 0.15); 7 | & .thumb { 8 | position: relative; 9 | & .social-share { 10 | position: absolute; 11 | bottom: 10px; 12 | left: 0; 13 | right: 0; 14 | text-align: center; 15 | 16 | 17 | & a { 18 | background-color: $white; 19 | border-radius: 100%; 20 | color: $body-color; 21 | display: inline-block; 22 | font-size: 13px; 23 | height: 28px; 24 | margin: 0 5px; 25 | width: 28px; 26 | visibility: hidden; 27 | opacity: 0; 28 | bottom: -10px; 29 | position: relative; 30 | 31 | & i { 32 | line-height: 28px; 33 | } 34 | 35 | &:hover { 36 | background: $primary; 37 | color: $white; 38 | } 39 | 40 | &:last-child { 41 | margin-right: 0px; 42 | } 43 | 44 | &:nth-child(1) { 45 | transition-delay: 0.1s; 46 | } 47 | &:nth-child(2) { 48 | transition-delay: 0.2s; 49 | } 50 | &:nth-child(3) { 51 | transition-delay: 0.3s; 52 | } 53 | &:nth-child(4) { 54 | transition-delay: 0.4s; 55 | } 56 | } 57 | } 58 | } 59 | 60 | &:hover { 61 | & .thumb { 62 | & .social-share { 63 | & a { 64 | bottom: 20px; 65 | opacity: 1; 66 | visibility: visible; 67 | } 68 | } 69 | } 70 | } 71 | 72 | & .content { 73 | text-align: center; 74 | padding: 25px 10px; 75 | 76 | & .title { 77 | font-size: 18px; 78 | font-weight: 600; 79 | line-height: 1; 80 | } 81 | 82 | & .subtitle { 83 | font-size: 16px; 84 | font-weight: 400; 85 | line-height: 1; 86 | } 87 | } 88 | } -------------------------------------------------------------------------------- /assets/scss/component/_testimonial.scss: -------------------------------------------------------------------------------- 1 | /*======================================= 2 | 3.08 Testimonial CSS 3 | =========================================*/ 4 | .testimonial-content { 5 | margin-top: -8px; 6 | margin-bottom: 35px; 7 | & p { 8 | font-size: 18px; 9 | font-style: italic; 10 | font-weight: 400; 11 | line-height: 32px; 12 | color: $dark; 13 | width: 750px; 14 | margin: 0 auto; 15 | @media #{$tablet-device} { 16 | width: 500px; 17 | } 18 | @media #{$large-mobile} { 19 | width: 430px; 20 | font-size: 16px; 21 | } 22 | @media #{$extra-small-mobile} { 23 | width: 280px; 24 | } 25 | } 26 | } 27 | .testimonial-thumb { 28 | margin-bottom: -10px; 29 | & img { 30 | width: 100px; 31 | height: 100px; 32 | border: 1px solid $primary; 33 | border-radius: 100%; 34 | } 35 | 36 | & .thumb-title { 37 | font-size: 16px; 38 | font-weight: 500; 39 | margin-top: 35px; 40 | line-height: 1; 41 | } 42 | & .thumb-subtitle { 43 | font-size: 16px; 44 | font-weight: 400; 45 | margin-top: 5px; 46 | line-height: 1; 47 | } 48 | } -------------------------------------------------------------------------------- /assets/scss/custom.scss: -------------------------------------------------------------------------------- 1 | @import "custom-variables"; 2 | // Custom Style file only for customer to use 3 | -------------------------------------------------------------------------------- /assets/scss/pages/_contact.scss: -------------------------------------------------------------------------------- 1 | /*======================================= 2 | 4.03 Contact CSS 3 | =========================================*/ 4 | .contact-title { 5 | & .title { 6 | font-size: 20px; 7 | font-weight: 700; 8 | text-transform: uppercase; 9 | } 10 | } 11 | .contact-content { 12 | & p { 13 | font-size: 14px; 14 | line-height: 2; 15 | } 16 | & .contact-block { 17 | margin: 30px 0; 18 | & ul { 19 | & li { 20 | margin-bottom: 15px; 21 | padding-bottom: 15px; 22 | font-size: 14px; 23 | border-bottom: 1px solid #ddd; 24 | display: flex; 25 | flex-direction: row; 26 | align-items: center; 27 | 28 | &:last-child { 29 | border-bottom: 0px; 30 | margin-bottom: 0; 31 | padding-bottom: 0; 32 | } 33 | 34 | & i { 35 | font-size: 18px; 36 | font-weight: 500; 37 | margin-right: 10px; 38 | } 39 | 40 | & a { 41 | &:hover { 42 | color: $primary; 43 | } 44 | } 45 | } 46 | } 47 | } 48 | 49 | & .working-time { 50 | & .title { 51 | font-weight: 600; 52 | } 53 | & p { 54 | font-size: 14px; 55 | } 56 | } 57 | } 58 | .contact-form-wrapper{ 59 | & .input-area{ 60 | & .input-item, & .textarea-item{ 61 | padding: 10px 15px; 62 | background: #f8f8f8; 63 | border: 1px solid transparent; 64 | transition: .3s; 65 | width: 100%; 66 | font-size: 14px; 67 | &:focus{ 68 | border: 1px solid transparent; 69 | outline: 0px; 70 | box-shadow: none; 71 | } 72 | } 73 | } 74 | & .btn { 75 | border-radius: 50px; 76 | } 77 | } 78 | /* Contact Map */ 79 | .contact-map { 80 | height: 500px; 81 | width: 100%; 82 | display: block; 83 | } -------------------------------------------------------------------------------- /assets/scss/pages/_error-404.scss: -------------------------------------------------------------------------------- 1 | /*======================================= 2 | 4.2 Error 404 CSS 3 | =========================================*/ 4 | .error_form{ 5 | text-align: center; 6 | & .title{ 7 | font-size: 200px; 8 | font-weight: 700; 9 | color: $primary; 10 | letter-spacing: 10px; 11 | line-height: .73; 12 | margin: 0 0 52px; 13 | @media #{$tablet-device, $large-mobile}{ 14 | font-size: 130px; 15 | letter-spacing: 4px; 16 | margin: 0 0 40px; 17 | } 18 | @media #{$extra-small-mobile}{ 19 | font-size: 106px; 20 | letter-spacing: 4px; 21 | margin: 0 0 20px; 22 | } 23 | } 24 | & .sub-title{ 25 | font-size: 24px; 26 | text-transform: uppercase; 27 | font-weight: 500; 28 | line-height: 1; 29 | margin-bottom: 20px; 30 | @media #{$tablet-device, $large-mobile}{ 31 | font-size: 18px; 32 | line-height: 1; 33 | margin-bottom: 14px; 34 | } 35 | } 36 | & p{ 37 | font-size: 17px; 38 | font-weight: 400; 39 | margin-bottom: 30px; 40 | @media #{$tablet-device, $large-mobile}{ 41 | font-size: 14px; 42 | margin-bottom: 22px; 43 | } 44 | } 45 | & .search-form-error{ 46 | width: 450px; 47 | margin: 0 auto; 48 | position: relative; 49 | @media #{$large-mobile}{ 50 | width: 100%; 51 | } 52 | & .input-text{ 53 | padding: 0 45px 0 10px; 54 | background: #f8f8f8; 55 | border: 1px solid #ddd; 56 | color: $dark; 57 | height: 40px; 58 | width: 100%; 59 | border-radius: 3px; 60 | 61 | } 62 | & .submit-btn{ 63 | position: absolute; 64 | right: 0; 65 | height: 100%; 66 | border: none; 67 | background: no-repeat; 68 | font-size: 20px; 69 | cursor: pointer; 70 | transition: .3s; 71 | top: 0; 72 | text-transform: uppercase; 73 | padding: 0 15px; 74 | font-weight: 600; 75 | &:hover{ 76 | color: $primary; 77 | } 78 | } 79 | } 80 | } -------------------------------------------------------------------------------- /assets/scss/pages/_faq.scss: -------------------------------------------------------------------------------- 1 | /*======================================= 2 | 4.1 FAQ CSS 3 | =========================================*/ 4 | .faq_content_area { 5 | & .title { 6 | font-size: 24px; 7 | font-weight: 600; 8 | text-transform: uppercase; 9 | margin-bottom: 40px; 10 | 11 | @media #{$large-mobile}{ 12 | margin-bottom: 30px; 13 | font-size: 20px; 14 | } 15 | } 16 | } 17 | .accordion { 18 | & .card-header { 19 | background-color: $white; 20 | padding: 0px; 21 | border: 0px; 22 | 23 | & .btn { 24 | padding: 0px; 25 | font-size: 14px; 26 | text-transform: inherit; 27 | font-weight: 600; 28 | display: block; 29 | margin-bottom: 20px; 30 | color: $dark; 31 | text-align: start; 32 | line-height: 1.4; 33 | width: 100%; 34 | padding-right: 30px; 35 | 36 | &:hover { 37 | color: $primary; 38 | } 39 | } 40 | } 41 | 42 | & .card-body { 43 | padding-top: 0px; 44 | 45 | & p { 46 | font-size: 14px; 47 | line-height: 1.9; 48 | color: $dark; 49 | } 50 | } 51 | 52 | & .card_dipult { 53 | border: 0px; 54 | border-bottom: 1px solid #ebebeb; 55 | margin-bottom: 20px; 56 | 57 | &:last-child { 58 | margin-bottom: 0; 59 | border-bottom: 0; 60 | 61 | & .card-body { 62 | padding-bottom: 0px; 63 | } 64 | 65 | & .card-header { 66 | & .btn{ 67 | &.collapsed { 68 | margin-bottom: 0px; 69 | } 70 | } 71 | } 72 | } 73 | } 74 | } 75 | .card-header{ 76 | &.card_accor { 77 | position: relative; 78 | & .btn-link { 79 | & i{ 80 | position: absolute; 81 | top: 50%; 82 | transform: translatey(-50%); 83 | right: 20px; 84 | @media #{$tablet-device} { 85 | right: 10px; 86 | } 87 | &.ti-plus{ 88 | display: none; 89 | } 90 | } 91 | &.collapsed { 92 | & i{ 93 | &.ti-plus{ 94 | display: block; 95 | } 96 | &.ti-minus{ 97 | display: none; 98 | } 99 | } 100 | } 101 | } 102 | } 103 | } -------------------------------------------------------------------------------- /assets/scss/pages/_login-register.scss: -------------------------------------------------------------------------------- 1 | /*======================================= 2 | 4.05 Login Register CSS 3 | =========================================*/ 4 | .login-wrapper, .register-wrapper{ 5 | box-shadow: 0 0 6px rgba(0, 0, 0, 0.05); 6 | padding: 80px; 7 | border: 1px solid $gray-100; 8 | border-radius: 5px; 9 | text-align: left; 10 | overflow: hidden; 11 | @media #{$tablet-device}{ 12 | padding: 40px; 13 | } 14 | @media #{$large-mobile}{ 15 | padding: 30px; 16 | } 17 | @media #{$extra-small-mobile}{ 18 | padding: 25px 10px; 19 | } 20 | & .title{ 21 | font-weight: 800; 22 | font-size: 30px; 23 | @media #{$large-mobile, $tablet-device}{ 24 | font-size: 26px; 25 | } 26 | } 27 | & .desc-content { 28 | font-size: 14px; 29 | } 30 | & .single-input-item{ 31 | & input{ 32 | background: $white; 33 | border-radius: 5px; 34 | box-shadow: none; 35 | color: $dark; 36 | font-size: 14px; 37 | height: 50px; 38 | margin-bottom: 20px; 39 | padding-left: 10px; 40 | padding-right: 10px; 41 | width: 100%; 42 | border: 1px solid $gray-100; 43 | &:focus{ 44 | border: 1px solid $gray-100; 45 | } 46 | } 47 | & .login-reg-form-meta { 48 | display: flex; 49 | align-items: center; 50 | justify-content: space-between; 51 | 52 | & .btn { 53 | font-weight: 600; 54 | } 55 | 56 | & .forget-pwd { 57 | font-size: 14px; 58 | &:hover { 59 | color: $primary; 60 | } 61 | } 62 | } 63 | } 64 | & .lost-password { 65 | & a{ 66 | font-size: 14px; 67 | transition: $transition-base; 68 | &:hover { 69 | color: $primary; 70 | transition: $transition-base; 71 | text-decoration: underline; 72 | } 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /assets/scss/pages/_wishlist.scss: -------------------------------------------------------------------------------- 1 | /*======================================= 2 | 4.06 Wishlist CSS 3 | =========================================*/ 4 | .wishlist-table{ 5 | & .table { 6 | margin: 0; 7 | white-space: nowrap; 8 | & thead { 9 | & tr{ 10 | & th { 11 | border-color: $gray-100; 12 | border-bottom: 0 solid transparent; 13 | color: $dark; 14 | background: $white; 15 | font-size: 15px; 16 | font-weight: 700; 17 | padding: 15px 20px; 18 | text-align: center; 19 | text-transform: uppercase; 20 | } 21 | } 22 | } 23 | & tr{ 24 | border-color: $gray-100; 25 | & .pro-thumbnail, & .pro-price, & .pro-stock, & .pro-cart, & .pro-title, & .pro-remove{ 26 | text-align: center; 27 | align-items: center; 28 | } 29 | 30 | & .pro-thumbnail { 31 | width: 120px; 32 | } 33 | 34 | & .pro-price { 35 | width: 130px; 36 | } 37 | 38 | & .pro-title { 39 | width: 270px; 40 | } 41 | 42 | & .pro-stock { 43 | width: 180px; 44 | } 45 | 46 | & .pro-cart { 47 | width: 150px; 48 | } 49 | 50 | & .pro-remove { 51 | width: 120px; 52 | } 53 | } 54 | & tbody{ 55 | & td { 56 | border-color: $gray-100; 57 | text-align: center; 58 | vertical-align: middle; 59 | color: $dark; 60 | & a { 61 | color: $dark; 62 | text-transform: capitalize; 63 | font-size: 14px; 64 | &:hover { 65 | color: $primary; 66 | } 67 | &.btn { 68 | color: $white; 69 | } 70 | &.check-btn { 71 | color: $white; 72 | } 73 | } 74 | &.pro-title { 75 | font-size: 14px; 76 | font-weight: 600; 77 | } 78 | &.pro-remove{ 79 | & a{ 80 | & i{ 81 | font-size: 18px; 82 | font-weight: 400; 83 | } 84 | } 85 | } 86 | } 87 | } 88 | } 89 | } -------------------------------------------------------------------------------- /assets/scss/style.scss: -------------------------------------------------------------------------------- 1 | /*----------------------------------------------------------------------------------- 2 | 3 | Template Name: Zen Shop Order 4 | Version: 1.0 5 | 6 | ----------------------------------------------------------------------------------- 7 | 8 | CSS INDEX 9 | =================== 10 | 01. Template default CSS 11 | 02. Header CSS 12 | 2.1 Header Top CSS 13 | 2.2 Header Bottom CSS 14 | 2.3 Header Mobile CSS 15 | 03. Component CSS 16 | 3.01 Button CSS 17 | 3.02 Hero CSS 18 | 3.03 CTA CSS 19 | 3.04 Products CSS 20 | 3.05 Single Product CSS 21 | 3.06 About CSS 22 | 3.07 Team CSS 23 | 3.08 Testimonial CSS 24 | 3.09 Newsletter CSS 25 | 3.10 Breadcrumb CSS 26 | 3.11 Sidebar CSS 27 | 3.12 Modal CSS 28 | 3.13 Footer CSS 29 | 04. Pages CSS 30 | 4.01 Blog CSS 31 | 4.02 Shop CSS 32 | 4.03 Contact CSS 33 | 4.04 My Account CSS 34 | 4.05 Login Register CSS 35 | 4.06 Wishlist CSS 36 | 4.07 Cart CSS 37 | 4.08 Checkout CSS 38 | 4.09 Compare CSS 39 | 4.1 FAQ CSS 40 | 4.2 Error 404 CSS 41 | 42 | -----------------------------------------------------------------------------------*/ 43 | @import "variabls"; 44 | @import "common"; 45 | @import "header"; 46 | @import "component"; 47 | @import "pages"; -------------------------------------------------------------------------------- /backend/add_product_cart.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /backend/change_password.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /backend/check_logged.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /backend/check_user.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /backend/checkout.php: -------------------------------------------------------------------------------- 1 | query("INSERT INTO `tb_order_details` 39 | (`id_order`, `id_product`, `amount`) 40 | VALUES ('$id_order', '$id_product', $amount)"); 41 | } 42 | $conn->query("UPDATE tb_order 43 | SET total_money = $totalMoney 44 | WHERE id_order = '$id_order'"); 45 | if($result){ 46 | $conn->query("DELETE FROM `tb_cart` WHERE username = '$user'"); 47 | $_SESSION['order'] = "
    Đặt hàng thành công, vui lòng kiểm tra tại dashboard
    "; 48 | } 49 | header("Location: ../order_view?id=$id_order"); 50 | } 51 | ?> -------------------------------------------------------------------------------- /backend/clear_cart.php: -------------------------------------------------------------------------------- 1 | query($sql); 6 | $conn->close(); 7 | ?> -------------------------------------------------------------------------------- /backend/config/connect.php: -------------------------------------------------------------------------------- 1 | load(); 6 | 7 | $DB_HOST = $_ENV['DB_HOST']; 8 | $DB_USER = $_ENV['DB_USER']; 9 | $DB_PASS = $_ENV['DB_PASS']; 10 | $DB_NAME = $_ENV['DB_NAME']; 11 | 12 | $conn = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME) 13 | or die("Lỗi kết nối mySQL : " . mysqli_error($connect)); 14 | 15 | ?> -------------------------------------------------------------------------------- /backend/delete_product_cart.php: -------------------------------------------------------------------------------- 1 | query($sql); 10 | $conn->close(); 11 | } 12 | ?> -------------------------------------------------------------------------------- /backend/login.php: -------------------------------------------------------------------------------- 1 | close(); 13 | if ($count == 1) { 14 | $_SESSION['user'] = $_POST['user']; 15 | $valid = true; 16 | } else { 17 | // xoá session user và id 18 | unset($_SESSION['user']); 19 | $valid = false; 20 | } 21 | } 22 | echo json_encode($valid); 23 | exit(); 24 | ?> -------------------------------------------------------------------------------- /backend/logout.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /backend/register.php: -------------------------------------------------------------------------------- 1 | close(); 12 | if ($query) { 13 | $valid = true; 14 | } else { 15 | $valid = false; 16 | } 17 | echo json_encode($valid); 18 | exit(); 19 | } 20 | -------------------------------------------------------------------------------- /class/paginator.php: -------------------------------------------------------------------------------- 1 | _conn = $conn; 12 | $this->_query = $query; 13 | 14 | $rs = $this->_conn->query($this->_query); 15 | $this->_total = $rs->num_rows; 16 | } 17 | public function getData($limit = 10, $page = 1) 18 | { 19 | $this->_limit = $limit; 20 | $this->_page = $page; 21 | 22 | if ($this->_limit == 'all') { 23 | $query = $this->_query; 24 | } else { 25 | $query = $this->_query . " LIMIT " . (($this->_page - 1) * $this->_limit) . ", $this->_limit"; 26 | } 27 | $rs = $this->_conn->query($query); 28 | 29 | while ($row = $rs->fetch_assoc()) { 30 | $results[] = $row; 31 | } 32 | 33 | $result = new stdClass(); 34 | $result->page = $this->_page; 35 | $result->limit = $this->_limit; 36 | $result->total = $this->_total; 37 | $result->data = $results; 38 | 39 | return $result; 40 | } 41 | public function createLinks( $links, $list_class ) { 42 | if ( $this->_limit == 'all' ) { 43 | return ''; 44 | } 45 | $last = ceil( $this->_total / $this->_limit ); 46 | $start = ( ( $this->_page - $links ) > 0 ) ? $this->_page - $links : 1; 47 | $end = ( ( $this->_page + $links ) < $last ) ? $this->_page + $links : $last; 48 | $html = ''; 66 | return $html; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "require": { 3 | "php": ">=8.0.0", 4 | "vlucas/phpdotenv": "^5.4" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /config/connect.php: -------------------------------------------------------------------------------- 1 | load(); 6 | 7 | $DB_HOST = $_ENV['DB_HOST']; 8 | $DB_USER = $_ENV['DB_USER']; 9 | $DB_PASS = $_ENV['DB_PASS']; 10 | $DB_NAME = $_ENV['DB_NAME']; 11 | 12 | $conn = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME) 13 | or die("Lỗi kết nối mySQL : " . mysqli_error($conn)); 14 | 15 | mysqli_set_charset($conn,"utf8"); 16 | ?> -------------------------------------------------------------------------------- /content/connect.php: -------------------------------------------------------------------------------- 1 | load(); 6 | 7 | $DB_HOST = $_ENV['DB_HOST']; 8 | $DB_USER = $_ENV['DB_USER']; 9 | $DB_PASS = $_ENV['DB_PASS']; 10 | $DB_NAME = $_ENV['DB_NAME']; 11 | 12 | $conn = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME) 13 | or die("Lỗi kết nối mySQL : " . mysqli_error($conn)); 14 | 15 | mysqli_set_charset($conn,"utf8"); 16 | ?> -------------------------------------------------------------------------------- /frontend/connect.php: -------------------------------------------------------------------------------- 1 | load(); 6 | 7 | $DB_HOST = $_ENV['DB_HOST']; 8 | $DB_USER = $_ENV['DB_USER']; 9 | $DB_PASS = $_ENV['DB_PASS']; 10 | $DB_NAME = $_ENV['DB_NAME']; 11 | 12 | $conn = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME) 13 | or die("Lỗi kết nối mySQL : " . mysqli_error($conn)); 14 | 15 | mysqli_set_charset($conn,"utf8"); 16 | ?> -------------------------------------------------------------------------------- /frontend/header.php: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 21 | 22 | 23 | 24 | 27 | "; 28 | } else { 29 | echo ""; 30 | } 31 | ?> 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /frontend/nav.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | Shop Order 25 | 26 | 27 | 28 |
    29 |
    30 |
    31 |
    32 | 33 |
    34 | 37 |
    38 | 39 | 40 | 41 |
    42 | 50 |
    51 | 52 | 53 | 54 |
    55 | 58 |
    59 |
    60 |
    61 |
    62 |
    -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | 2 | window.history.replaceState('$path', '$path'.toUpperCase(), '/$path');"; 6 | ?> 7 | 8 | 9 | 10 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |
    40 | 44 |
    45 | 46 | -------------------------------------------------------------------------------- /product.php: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 | Product 5 | 6 | 0) { 8 | $discount_price = $price - ($price * $discount / 100); 9 | ?> 10 | 11 | % 12 | 13 | 16 |
    17 | 18 | 19 | 20 |
    21 |
    22 |
    23 |
    24 | 25 | 2) { 29 | echo ""; 30 | $temp -= 2; 31 | } else if ($temp > 0) { 32 | echo ""; 33 | $temp = 0; 34 | } 35 | } 36 | ?> 37 | 38 | 39 | 0) { 41 | ?> 42 | $ 43 | $ 44 | 47 | $ 48 | 51 | 52 |
    53 |
    -------------------------------------------------------------------------------- /sounds/sound1.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/sounds/sound1.ogg -------------------------------------------------------------------------------- /sounds/sound2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/sounds/sound2.ogg -------------------------------------------------------------------------------- /sounds/sound3.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/sounds/sound3.ogg -------------------------------------------------------------------------------- /sounds/sound4.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/sounds/sound4.ogg -------------------------------------------------------------------------------- /sounds/sound5.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/sounds/sound5.ogg -------------------------------------------------------------------------------- /sounds/sound6.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zenfection/php_shop_order/9c3d884fb004b7bc5f518ba725424019ab078475/sounds/sound6.ogg -------------------------------------------------------------------------------- /vendor/autoload.php: -------------------------------------------------------------------------------- 1 | $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', 10 | 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', 11 | 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', 12 | 'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', 13 | 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', 14 | 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', 15 | ); 16 | -------------------------------------------------------------------------------- /vendor/composer/autoload_files.php: -------------------------------------------------------------------------------- 1 | $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', 10 | '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', 11 | 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', 12 | ); 13 | -------------------------------------------------------------------------------- /vendor/composer/autoload_namespaces.php: -------------------------------------------------------------------------------- 1 | array($vendorDir . '/symfony/polyfill-php80'), 10 | 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), 11 | 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), 12 | 'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'), 13 | 'GrahamCampbell\\ResultType\\' => array($vendorDir . '/graham-campbell/result-type/src'), 14 | 'Dotenv\\' => array($vendorDir . '/vlucas/phpdotenv/src'), 15 | ); 16 | -------------------------------------------------------------------------------- /vendor/composer/autoload_real.php: -------------------------------------------------------------------------------- 1 | register(true); 35 | 36 | $includeFiles = \Composer\Autoload\ComposerStaticIniteba10651576cb4629f726bbe403aa039::$files; 37 | foreach ($includeFiles as $fileIdentifier => $file) { 38 | composerRequireeba10651576cb4629f726bbe403aa039($fileIdentifier, $file); 39 | } 40 | 41 | return $loader; 42 | } 43 | } 44 | 45 | /** 46 | * @param string $fileIdentifier 47 | * @param string $file 48 | * @return void 49 | */ 50 | function composerRequireeba10651576cb4629f726bbe403aa039($fileIdentifier, $file) 51 | { 52 | if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { 53 | $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; 54 | 55 | require $file; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /vendor/composer/platform_check.php: -------------------------------------------------------------------------------- 1 | = 80000)) { 8 | $issues[] = 'Your Composer dependencies require a PHP version ">= 8.0.0". You are running ' . PHP_VERSION . '.'; 9 | } 10 | 11 | if ($issues) { 12 | if (!headers_sent()) { 13 | header('HTTP/1.1 500 Internal Server Error'); 14 | } 15 | if (!ini_get('display_errors')) { 16 | if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { 17 | fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); 18 | } elseif (!headers_sent()) { 19 | 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; 20 | } 21 | } 22 | trigger_error( 23 | 'Composer detected issues in your platform: ' . implode(' ', $issues), 24 | E_USER_ERROR 25 | ); 26 | } 27 | -------------------------------------------------------------------------------- /vendor/graham-campbell/result-type/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2020-2022 Graham Campbell 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /vendor/graham-campbell/result-type/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "graham-campbell/result-type", 3 | "description": "An Implementation Of The Result Type", 4 | "keywords": ["result", "result-type", "Result", "Result Type", "Result-Type", "Graham Campbell", "GrahamCampbell"], 5 | "license": "MIT", 6 | "authors": [ 7 | { 8 | "name": "Graham Campbell", 9 | "email": "hello@gjcampbell.co.uk", 10 | "homepage": "https://github.com/GrahamCampbell" 11 | } 12 | ], 13 | "require": { 14 | "php": "^7.2.5 || ^8.0", 15 | "phpoption/phpoption": "^1.9" 16 | }, 17 | "require-dev": { 18 | "phpunit/phpunit": "^8.5.28 || ^9.5.21" 19 | }, 20 | "autoload": { 21 | "psr-4": { 22 | "GrahamCampbell\\ResultType\\": "src/" 23 | } 24 | }, 25 | "autoload-dev": { 26 | "psr-4": { 27 | "GrahamCampbell\\Tests\\ResultType\\": "tests/" 28 | } 29 | }, 30 | "config": { 31 | "preferred-install": "dist" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/graham-campbell/result-type/src/Error.php: -------------------------------------------------------------------------------- 1 | 9 | * 10 | * For the full copyright and license information, please view the LICENSE 11 | * file that was distributed with this source code. 12 | */ 13 | 14 | namespace GrahamCampbell\ResultType; 15 | 16 | use PhpOption\None; 17 | use PhpOption\Some; 18 | 19 | /** 20 | * @template T 21 | * @template E 22 | * @extends \GrahamCampbell\ResultType\Result 23 | */ 24 | final class Error extends Result 25 | { 26 | /** 27 | * @var E 28 | */ 29 | private $value; 30 | 31 | /** 32 | * Internal constructor for an error value. 33 | * 34 | * @param E $value 35 | * 36 | * @return void 37 | */ 38 | private function __construct($value) 39 | { 40 | $this->value = $value; 41 | } 42 | 43 | /** 44 | * Create a new error value. 45 | * 46 | * @template F 47 | * 48 | * @param F $value 49 | * 50 | * @return \GrahamCampbell\ResultType\Result 51 | */ 52 | public static function create($value) 53 | { 54 | return new self($value); 55 | } 56 | 57 | /** 58 | * Get the success option value. 59 | * 60 | * @return \PhpOption\Option 61 | */ 62 | public function success() 63 | { 64 | return None::create(); 65 | } 66 | 67 | /** 68 | * Map over the success value. 69 | * 70 | * @template S 71 | * 72 | * @param callable(T):S $f 73 | * 74 | * @return \GrahamCampbell\ResultType\Result 75 | */ 76 | public function map(callable $f) 77 | { 78 | return self::create($this->value); 79 | } 80 | 81 | /** 82 | * Flat map over the success value. 83 | * 84 | * @template S 85 | * @template F 86 | * 87 | * @param callable(T):\GrahamCampbell\ResultType\Result $f 88 | * 89 | * @return \GrahamCampbell\ResultType\Result 90 | */ 91 | public function flatMap(callable $f) 92 | { 93 | /** @var \GrahamCampbell\ResultType\Result */ 94 | return self::create($this->value); 95 | } 96 | 97 | /** 98 | * Get the error option value. 99 | * 100 | * @return \PhpOption\Option 101 | */ 102 | public function error() 103 | { 104 | return Some::create($this->value); 105 | } 106 | 107 | /** 108 | * Map over the error value. 109 | * 110 | * @template F 111 | * 112 | * @param callable(E):F $f 113 | * 114 | * @return \GrahamCampbell\ResultType\Result 115 | */ 116 | public function mapError(callable $f) 117 | { 118 | return self::create($f($this->value)); 119 | } 120 | } 121 | -------------------------------------------------------------------------------- /vendor/graham-campbell/result-type/src/Result.php: -------------------------------------------------------------------------------- 1 | 9 | * 10 | * For the full copyright and license information, please view the LICENSE 11 | * file that was distributed with this source code. 12 | */ 13 | 14 | namespace GrahamCampbell\ResultType; 15 | 16 | /** 17 | * @template T 18 | * @template E 19 | */ 20 | abstract class Result 21 | { 22 | /** 23 | * Get the success option value. 24 | * 25 | * @return \PhpOption\Option 26 | */ 27 | abstract public function success(); 28 | 29 | /** 30 | * Map over the success value. 31 | * 32 | * @template S 33 | * 34 | * @param callable(T):S $f 35 | * 36 | * @return \GrahamCampbell\ResultType\Result 37 | */ 38 | abstract public function map(callable $f); 39 | 40 | /** 41 | * Flat map over the success value. 42 | * 43 | * @template S 44 | * @template F 45 | * 46 | * @param callable(T):\GrahamCampbell\ResultType\Result $f 47 | * 48 | * @return \GrahamCampbell\ResultType\Result 49 | */ 50 | abstract public function flatMap(callable $f); 51 | 52 | /** 53 | * Get the error option value. 54 | * 55 | * @return \PhpOption\Option 56 | */ 57 | abstract public function error(); 58 | 59 | /** 60 | * Map over the error value. 61 | * 62 | * @template F 63 | * 64 | * @param callable(E):F $f 65 | * 66 | * @return \GrahamCampbell\ResultType\Result 67 | */ 68 | abstract public function mapError(callable $f); 69 | } 70 | -------------------------------------------------------------------------------- /vendor/graham-campbell/result-type/src/Success.php: -------------------------------------------------------------------------------- 1 | 9 | * 10 | * For the full copyright and license information, please view the LICENSE 11 | * file that was distributed with this source code. 12 | */ 13 | 14 | namespace GrahamCampbell\ResultType; 15 | 16 | use PhpOption\None; 17 | use PhpOption\Some; 18 | 19 | /** 20 | * @template T 21 | * @template E 22 | * @extends \GrahamCampbell\ResultType\Result 23 | */ 24 | final class Success extends Result 25 | { 26 | /** 27 | * @var T 28 | */ 29 | private $value; 30 | 31 | /** 32 | * Internal constructor for a success value. 33 | * 34 | * @param T $value 35 | * 36 | * @return void 37 | */ 38 | private function __construct($value) 39 | { 40 | $this->value = $value; 41 | } 42 | 43 | /** 44 | * Create a new error value. 45 | * 46 | * @template S 47 | * 48 | * @param S $value 49 | * 50 | * @return \GrahamCampbell\ResultType\Result 51 | */ 52 | public static function create($value) 53 | { 54 | return new self($value); 55 | } 56 | 57 | /** 58 | * Get the success option value. 59 | * 60 | * @return \PhpOption\Option 61 | */ 62 | public function success() 63 | { 64 | return Some::create($this->value); 65 | } 66 | 67 | /** 68 | * Map over the success value. 69 | * 70 | * @template S 71 | * 72 | * @param callable(T):S $f 73 | * 74 | * @return \GrahamCampbell\ResultType\Result 75 | */ 76 | public function map(callable $f) 77 | { 78 | return self::create($f($this->value)); 79 | } 80 | 81 | /** 82 | * Flat map over the success value. 83 | * 84 | * @template S 85 | * @template F 86 | * 87 | * @param callable(T):\GrahamCampbell\ResultType\Result $f 88 | * 89 | * @return \GrahamCampbell\ResultType\Result 90 | */ 91 | public function flatMap(callable $f) 92 | { 93 | return $f($this->value); 94 | } 95 | 96 | /** 97 | * Get the error option value. 98 | * 99 | * @return \PhpOption\Option 100 | */ 101 | public function error() 102 | { 103 | return None::create(); 104 | } 105 | 106 | /** 107 | * Map over the error value. 108 | * 109 | * @template F 110 | * 111 | * @param callable(E):F $f 112 | * 113 | * @return \GrahamCampbell\ResultType\Result 114 | */ 115 | public function mapError(callable $f) 116 | { 117 | return self::create($this->value); 118 | } 119 | } 120 | -------------------------------------------------------------------------------- /vendor/phpoption/phpoption/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "phpoption/phpoption", 3 | "description": "Option Type for PHP", 4 | "keywords": ["php", "option", "language", "type"], 5 | "license": "Apache-2.0", 6 | "authors": [ 7 | { 8 | "name": "Johannes M. Schmitt", 9 | "email": "schmittjoh@gmail.com", 10 | "homepage": "https://github.com/schmittjoh" 11 | }, 12 | { 13 | "name": "Graham Campbell", 14 | "email": "hello@gjcampbell.co.uk", 15 | "homepage": "https://github.com/GrahamCampbell" 16 | } 17 | ], 18 | "require": { 19 | "php": "^7.2.5 || ^8.0" 20 | }, 21 | "require-dev": { 22 | "bamarni/composer-bin-plugin": "^1.8", 23 | "phpunit/phpunit": "^8.5.28 || ^9.5.21" 24 | }, 25 | "autoload": { 26 | "psr-4": { 27 | "PhpOption\\": "src/PhpOption/" 28 | } 29 | }, 30 | "autoload-dev": { 31 | "psr-4": { 32 | "PhpOption\\Tests\\": "tests/PhpOption/Tests/" 33 | } 34 | }, 35 | "config": { 36 | "allow-plugins": { 37 | "bamarni/composer-bin-plugin": true 38 | }, 39 | "preferred-install": "dist" 40 | }, 41 | "extra": { 42 | "bamarni-bin": { 43 | "bin-links": true, 44 | "forward-command": true 45 | }, 46 | "branch-alias": { 47 | "dev-master": "1.9-dev" 48 | } 49 | }, 50 | "minimum-stability": "dev", 51 | "prefer-stable": true 52 | } 53 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-ctype/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018-2019 Fabien Potencier 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-ctype/README.md: -------------------------------------------------------------------------------- 1 | Symfony Polyfill / Ctype 2 | ======================== 3 | 4 | This component provides `ctype_*` functions to users who run php versions without the ctype extension. 5 | 6 | More information can be found in the 7 | [main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md). 8 | 9 | License 10 | ======= 11 | 12 | This library is released under the [MIT license](LICENSE). 13 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-ctype/bootstrap.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | use Symfony\Polyfill\Ctype as p; 13 | 14 | if (\PHP_VERSION_ID >= 80000) { 15 | return require __DIR__.'/bootstrap80.php'; 16 | } 17 | 18 | if (!function_exists('ctype_alnum')) { 19 | function ctype_alnum($text) { return p\Ctype::ctype_alnum($text); } 20 | } 21 | if (!function_exists('ctype_alpha')) { 22 | function ctype_alpha($text) { return p\Ctype::ctype_alpha($text); } 23 | } 24 | if (!function_exists('ctype_cntrl')) { 25 | function ctype_cntrl($text) { return p\Ctype::ctype_cntrl($text); } 26 | } 27 | if (!function_exists('ctype_digit')) { 28 | function ctype_digit($text) { return p\Ctype::ctype_digit($text); } 29 | } 30 | if (!function_exists('ctype_graph')) { 31 | function ctype_graph($text) { return p\Ctype::ctype_graph($text); } 32 | } 33 | if (!function_exists('ctype_lower')) { 34 | function ctype_lower($text) { return p\Ctype::ctype_lower($text); } 35 | } 36 | if (!function_exists('ctype_print')) { 37 | function ctype_print($text) { return p\Ctype::ctype_print($text); } 38 | } 39 | if (!function_exists('ctype_punct')) { 40 | function ctype_punct($text) { return p\Ctype::ctype_punct($text); } 41 | } 42 | if (!function_exists('ctype_space')) { 43 | function ctype_space($text) { return p\Ctype::ctype_space($text); } 44 | } 45 | if (!function_exists('ctype_upper')) { 46 | function ctype_upper($text) { return p\Ctype::ctype_upper($text); } 47 | } 48 | if (!function_exists('ctype_xdigit')) { 49 | function ctype_xdigit($text) { return p\Ctype::ctype_xdigit($text); } 50 | } 51 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-ctype/bootstrap80.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | use Symfony\Polyfill\Ctype as p; 13 | 14 | if (!function_exists('ctype_alnum')) { 15 | function ctype_alnum(mixed $text): bool { return p\Ctype::ctype_alnum($text); } 16 | } 17 | if (!function_exists('ctype_alpha')) { 18 | function ctype_alpha(mixed $text): bool { return p\Ctype::ctype_alpha($text); } 19 | } 20 | if (!function_exists('ctype_cntrl')) { 21 | function ctype_cntrl(mixed $text): bool { return p\Ctype::ctype_cntrl($text); } 22 | } 23 | if (!function_exists('ctype_digit')) { 24 | function ctype_digit(mixed $text): bool { return p\Ctype::ctype_digit($text); } 25 | } 26 | if (!function_exists('ctype_graph')) { 27 | function ctype_graph(mixed $text): bool { return p\Ctype::ctype_graph($text); } 28 | } 29 | if (!function_exists('ctype_lower')) { 30 | function ctype_lower(mixed $text): bool { return p\Ctype::ctype_lower($text); } 31 | } 32 | if (!function_exists('ctype_print')) { 33 | function ctype_print(mixed $text): bool { return p\Ctype::ctype_print($text); } 34 | } 35 | if (!function_exists('ctype_punct')) { 36 | function ctype_punct(mixed $text): bool { return p\Ctype::ctype_punct($text); } 37 | } 38 | if (!function_exists('ctype_space')) { 39 | function ctype_space(mixed $text): bool { return p\Ctype::ctype_space($text); } 40 | } 41 | if (!function_exists('ctype_upper')) { 42 | function ctype_upper(mixed $text): bool { return p\Ctype::ctype_upper($text); } 43 | } 44 | if (!function_exists('ctype_xdigit')) { 45 | function ctype_xdigit(mixed $text): bool { return p\Ctype::ctype_xdigit($text); } 46 | } 47 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-ctype/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "symfony/polyfill-ctype", 3 | "type": "library", 4 | "description": "Symfony polyfill for ctype functions", 5 | "keywords": ["polyfill", "compatibility", "portable", "ctype"], 6 | "homepage": "https://symfony.com", 7 | "license": "MIT", 8 | "authors": [ 9 | { 10 | "name": "Gert de Pagter", 11 | "email": "BackEndTea@gmail.com" 12 | }, 13 | { 14 | "name": "Symfony Community", 15 | "homepage": "https://symfony.com/contributors" 16 | } 17 | ], 18 | "require": { 19 | "php": ">=7.1" 20 | }, 21 | "provide": { 22 | "ext-ctype": "*" 23 | }, 24 | "autoload": { 25 | "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" }, 26 | "files": [ "bootstrap.php" ] 27 | }, 28 | "suggest": { 29 | "ext-ctype": "For best performance" 30 | }, 31 | "minimum-stability": "dev", 32 | "extra": { 33 | "branch-alias": { 34 | "dev-main": "1.27-dev" 35 | }, 36 | "thanks": { 37 | "name": "symfony/polyfill", 38 | "url": "https://github.com/symfony/polyfill" 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-mbstring/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015-2019 Fabien Potencier 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-mbstring/README.md: -------------------------------------------------------------------------------- 1 | Symfony Polyfill / Mbstring 2 | =========================== 3 | 4 | This component provides a partial, native PHP implementation for the 5 | [Mbstring](https://php.net/mbstring) extension. 6 | 7 | More information can be found in the 8 | [main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md). 9 | 10 | License 11 | ======= 12 | 13 | This library is released under the [MIT license](LICENSE). 14 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-mbstring/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "symfony/polyfill-mbstring", 3 | "type": "library", 4 | "description": "Symfony polyfill for the Mbstring extension", 5 | "keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"], 6 | "homepage": "https://symfony.com", 7 | "license": "MIT", 8 | "authors": [ 9 | { 10 | "name": "Nicolas Grekas", 11 | "email": "p@tchwork.com" 12 | }, 13 | { 14 | "name": "Symfony Community", 15 | "homepage": "https://symfony.com/contributors" 16 | } 17 | ], 18 | "require": { 19 | "php": ">=7.1" 20 | }, 21 | "provide": { 22 | "ext-mbstring": "*" 23 | }, 24 | "autoload": { 25 | "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" }, 26 | "files": [ "bootstrap.php" ] 27 | }, 28 | "suggest": { 29 | "ext-mbstring": "For best performance" 30 | }, 31 | "minimum-stability": "dev", 32 | "extra": { 33 | "branch-alias": { 34 | "dev-main": "1.27-dev" 35 | }, 36 | "thanks": { 37 | "name": "symfony/polyfill", 38 | "url": "https://github.com/symfony/polyfill" 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php80/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020 Fabien Potencier 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php80/PhpToken.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | namespace Symfony\Polyfill\Php80; 13 | 14 | /** 15 | * @author Fedonyuk Anton 16 | * 17 | * @internal 18 | */ 19 | class PhpToken implements \Stringable 20 | { 21 | /** 22 | * @var int 23 | */ 24 | public $id; 25 | 26 | /** 27 | * @var string 28 | */ 29 | public $text; 30 | 31 | /** 32 | * @var int 33 | */ 34 | public $line; 35 | 36 | /** 37 | * @var int 38 | */ 39 | public $pos; 40 | 41 | public function __construct(int $id, string $text, int $line = -1, int $position = -1) 42 | { 43 | $this->id = $id; 44 | $this->text = $text; 45 | $this->line = $line; 46 | $this->pos = $position; 47 | } 48 | 49 | public function getTokenName(): ?string 50 | { 51 | if ('UNKNOWN' === $name = token_name($this->id)) { 52 | $name = \strlen($this->text) > 1 || \ord($this->text) < 32 ? null : $this->text; 53 | } 54 | 55 | return $name; 56 | } 57 | 58 | /** 59 | * @param int|string|array $kind 60 | */ 61 | public function is($kind): bool 62 | { 63 | foreach ((array) $kind as $value) { 64 | if (\in_array($value, [$this->id, $this->text], true)) { 65 | return true; 66 | } 67 | } 68 | 69 | return false; 70 | } 71 | 72 | public function isIgnorable(): bool 73 | { 74 | return \in_array($this->id, [\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT, \T_OPEN_TAG], true); 75 | } 76 | 77 | public function __toString(): string 78 | { 79 | return (string) $this->text; 80 | } 81 | 82 | /** 83 | * @return static[] 84 | */ 85 | public static function tokenize(string $code, int $flags = 0): array 86 | { 87 | $line = 1; 88 | $position = 0; 89 | $tokens = token_get_all($code, $flags); 90 | foreach ($tokens as $index => $token) { 91 | if (\is_string($token)) { 92 | $id = \ord($token); 93 | $text = $token; 94 | } else { 95 | [$id, $text, $line] = $token; 96 | } 97 | $tokens[$index] = new static($id, $text, $line, $position); 98 | $position += \strlen($text); 99 | } 100 | 101 | return $tokens; 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php80/README.md: -------------------------------------------------------------------------------- 1 | Symfony Polyfill / Php80 2 | ======================== 3 | 4 | This component provides features added to PHP 8.0 core: 5 | 6 | - [`Stringable`](https://php.net/stringable) interface 7 | - [`fdiv`](https://php.net/fdiv) 8 | - [`ValueError`](https://php.net/valueerror) class 9 | - [`UnhandledMatchError`](https://php.net/unhandledmatcherror) class 10 | - `FILTER_VALIDATE_BOOL` constant 11 | - [`get_debug_type`](https://php.net/get_debug_type) 12 | - [`PhpToken`](https://php.net/phptoken) class 13 | - [`preg_last_error_msg`](https://php.net/preg_last_error_msg) 14 | - [`str_contains`](https://php.net/str_contains) 15 | - [`str_starts_with`](https://php.net/str_starts_with) 16 | - [`str_ends_with`](https://php.net/str_ends_with) 17 | - [`get_resource_id`](https://php.net/get_resource_id) 18 | 19 | More information can be found in the 20 | [main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md). 21 | 22 | License 23 | ======= 24 | 25 | This library is released under the [MIT license](LICENSE). 26 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | #[Attribute(Attribute::TARGET_CLASS)] 13 | final class Attribute 14 | { 15 | public const TARGET_CLASS = 1; 16 | public const TARGET_FUNCTION = 2; 17 | public const TARGET_METHOD = 4; 18 | public const TARGET_PROPERTY = 8; 19 | public const TARGET_CLASS_CONSTANT = 16; 20 | public const TARGET_PARAMETER = 32; 21 | public const TARGET_ALL = 63; 22 | public const IS_REPEATABLE = 64; 23 | 24 | /** @var int */ 25 | public $flags; 26 | 27 | public function __construct(int $flags = self::TARGET_ALL) 28 | { 29 | $this->flags = $flags; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | if (\PHP_VERSION_ID < 80000 && extension_loaded('tokenizer')) { 13 | class PhpToken extends Symfony\Polyfill\Php80\PhpToken 14 | { 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | if (\PHP_VERSION_ID < 80000) { 13 | interface Stringable 14 | { 15 | /** 16 | * @return string 17 | */ 18 | public function __toString(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | if (\PHP_VERSION_ID < 80000) { 13 | class UnhandledMatchError extends Error 14 | { 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | if (\PHP_VERSION_ID < 80000) { 13 | class ValueError extends Error 14 | { 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php80/bootstrap.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | use Symfony\Polyfill\Php80 as p; 13 | 14 | if (\PHP_VERSION_ID >= 80000) { 15 | return; 16 | } 17 | 18 | if (!defined('FILTER_VALIDATE_BOOL') && defined('FILTER_VALIDATE_BOOLEAN')) { 19 | define('FILTER_VALIDATE_BOOL', \FILTER_VALIDATE_BOOLEAN); 20 | } 21 | 22 | if (!function_exists('fdiv')) { 23 | function fdiv(float $num1, float $num2): float { return p\Php80::fdiv($num1, $num2); } 24 | } 25 | if (!function_exists('preg_last_error_msg')) { 26 | function preg_last_error_msg(): string { return p\Php80::preg_last_error_msg(); } 27 | } 28 | if (!function_exists('str_contains')) { 29 | function str_contains(?string $haystack, ?string $needle): bool { return p\Php80::str_contains($haystack ?? '', $needle ?? ''); } 30 | } 31 | if (!function_exists('str_starts_with')) { 32 | function str_starts_with(?string $haystack, ?string $needle): bool { return p\Php80::str_starts_with($haystack ?? '', $needle ?? ''); } 33 | } 34 | if (!function_exists('str_ends_with')) { 35 | function str_ends_with(?string $haystack, ?string $needle): bool { return p\Php80::str_ends_with($haystack ?? '', $needle ?? ''); } 36 | } 37 | if (!function_exists('get_debug_type')) { 38 | function get_debug_type($value): string { return p\Php80::get_debug_type($value); } 39 | } 40 | if (!function_exists('get_resource_id')) { 41 | function get_resource_id($resource): int { return p\Php80::get_resource_id($resource); } 42 | } 43 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php80/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "symfony/polyfill-php80", 3 | "type": "library", 4 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", 5 | "keywords": ["polyfill", "shim", "compatibility", "portable"], 6 | "homepage": "https://symfony.com", 7 | "license": "MIT", 8 | "authors": [ 9 | { 10 | "name": "Ion Bazan", 11 | "email": "ion.bazan@gmail.com" 12 | }, 13 | { 14 | "name": "Nicolas Grekas", 15 | "email": "p@tchwork.com" 16 | }, 17 | { 18 | "name": "Symfony Community", 19 | "homepage": "https://symfony.com/contributors" 20 | } 21 | ], 22 | "require": { 23 | "php": ">=7.1" 24 | }, 25 | "autoload": { 26 | "psr-4": { "Symfony\\Polyfill\\Php80\\": "" }, 27 | "files": [ "bootstrap.php" ], 28 | "classmap": [ "Resources/stubs" ] 29 | }, 30 | "minimum-stability": "dev", 31 | "extra": { 32 | "branch-alias": { 33 | "dev-main": "1.27-dev" 34 | }, 35 | "thanks": { 36 | "name": "symfony/polyfill", 37 | "url": "https://github.com/symfony/polyfill" 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2014, Graham Campbell. 4 | Copyright (c) 2013, Vance Lucas. 5 | All rights reserved. 6 | 7 | Redistribution and use in source and binary forms, with or without 8 | modification, are permitted provided that the following conditions are met: 9 | 10 | 1. Redistributions of source code must retain the above copyright notice, this 11 | list of conditions and the following disclaimer. 12 | 13 | 2. Redistributions in binary form must reproduce the above copyright notice, 14 | this list of conditions and the following disclaimer in the documentation 15 | and/or other materials provided with the distribution. 16 | 17 | 3. Neither the name of the copyright holder nor the names of its 18 | contributors may be used to endorse or promote products derived from 19 | this software without specific prior written permission. 20 | 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 24 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 25 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 27 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 28 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 29 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vlucas/phpdotenv", 3 | "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", 4 | "keywords": ["env", "dotenv", "environment"], 5 | "license": "BSD-3-Clause", 6 | "authors": [ 7 | { 8 | "name": "Graham Campbell", 9 | "email": "hello@gjcampbell.co.uk", 10 | "homepage": "https://github.com/GrahamCampbell" 11 | }, 12 | { 13 | "name": "Vance Lucas", 14 | "email": "vance@vancelucas.com", 15 | "homepage": "https://github.com/vlucas" 16 | } 17 | ], 18 | "require": { 19 | "php": "^7.1.3 || ^8.0", 20 | "ext-pcre": "*", 21 | "graham-campbell/result-type": "^1.0.2", 22 | "phpoption/phpoption": "^1.8", 23 | "symfony/polyfill-ctype": "^1.23", 24 | "symfony/polyfill-mbstring": "^1.23.1", 25 | "symfony/polyfill-php80": "^1.23.1" 26 | }, 27 | "require-dev": { 28 | "ext-filter": "*", 29 | "bamarni/composer-bin-plugin": "^1.4.1", 30 | "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" 31 | }, 32 | "autoload": { 33 | "psr-4": { 34 | "Dotenv\\": "src/" 35 | } 36 | }, 37 | "autoload-dev": { 38 | "psr-4": { 39 | "Dotenv\\Tests\\": "tests/Dotenv/" 40 | } 41 | }, 42 | "suggest": { 43 | "ext-filter": "Required to use the boolean validator." 44 | }, 45 | "config": { 46 | "allow-plugins": { 47 | "bamarni/composer-bin-plugin": true 48 | }, 49 | "preferred-install": "dist" 50 | }, 51 | "extra": { 52 | "bamarni-bin": { 53 | "bin-links": true, 54 | "forward-command": true 55 | }, 56 | "branch-alias": { 57 | "dev-master": "5.5-dev" 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php: -------------------------------------------------------------------------------- 1 | 23 | */ 24 | public function load(RepositoryInterface $repository, array $entries) 25 | { 26 | return \array_reduce($entries, static function (array $vars, Entry $entry) use ($repository) { 27 | $name = $entry->getName(); 28 | 29 | $value = $entry->getValue()->map(static function (Value $value) use ($repository) { 30 | return Resolver::resolve($repository, $value); 31 | }); 32 | 33 | if ($value->isDefined()) { 34 | $inner = $value->get(); 35 | if ($repository->set($name, $inner)) { 36 | return \array_merge($vars, [$name => $inner]); 37 | } 38 | } else { 39 | if ($repository->clear($name)) { 40 | return \array_merge($vars, [$name => null]); 41 | } 42 | } 43 | 44 | return $vars; 45 | }, []); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | public function load(RepositoryInterface $repository, array $entries); 20 | } 21 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Loader/Resolver.php: -------------------------------------------------------------------------------- 1 | getVars(), static function (string $s, int $i) use ($repository) { 41 | return Str::substr($s, 0, $i).self::resolveVariable($repository, Str::substr($s, $i)); 42 | }, $value->getChars()); 43 | } 44 | 45 | /** 46 | * Resolve a single nested variable. 47 | * 48 | * @param \Dotenv\Repository\RepositoryInterface $repository 49 | * @param string $str 50 | * 51 | * @return string 52 | */ 53 | private static function resolveVariable(RepositoryInterface $repository, string $str) 54 | { 55 | return Regex::replaceCallback( 56 | '/\A\${([a-zA-Z0-9_.]+)}/', 57 | static function (array $matches) use ($repository) { 58 | return Option::fromValue($repository->get($matches[1])) 59 | ->getOrElse($matches[0]); 60 | }, 61 | $str, 62 | 1 63 | )->success()->getOrElse($str); 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Parser/Entry.php: -------------------------------------------------------------------------------- 1 | name = $name; 36 | $this->value = $value; 37 | } 38 | 39 | /** 40 | * Get the entry name. 41 | * 42 | * @return string 43 | */ 44 | public function getName() 45 | { 46 | return $this->name; 47 | } 48 | 49 | /** 50 | * Get the entry value. 51 | * 52 | * @return \PhpOption\Option<\Dotenv\Parser\Value> 53 | */ 54 | public function getValue() 55 | { 56 | /** @var \PhpOption\Option<\Dotenv\Parser\Value> */ 57 | return Option::fromValue($this->value); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Parser/Lexer.php: -------------------------------------------------------------------------------- 1 | 37 | */ 38 | public static function lex(string $content) 39 | { 40 | static $regex; 41 | 42 | if ($regex === null) { 43 | $regex = '(('.\implode(')|(', self::PATTERNS).'))A'; 44 | } 45 | 46 | $offset = 0; 47 | 48 | while (isset($content[$offset])) { 49 | if (!\preg_match($regex, $content, $matches, 0, $offset)) { 50 | throw new \Error(\sprintf('Lexer encountered unexpected character [%s].', $content[$offset])); 51 | } 52 | 53 | $offset += \strlen($matches[0]); 54 | 55 | yield $matches[0]; 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Parser/Parser.php: -------------------------------------------------------------------------------- 1 | mapError(static function () { 26 | return 'Could not split into separate lines.'; 27 | })->flatMap(static function (array $lines) { 28 | return self::process(Lines::process($lines)); 29 | })->mapError(static function (string $error) { 30 | throw new InvalidFileException(\sprintf('Failed to parse dotenv file. %s', $error)); 31 | })->success()->get(); 32 | } 33 | 34 | /** 35 | * Convert the raw entries into proper entries. 36 | * 37 | * @param string[] $entries 38 | * 39 | * @return \GrahamCampbell\ResultType\Result<\Dotenv\Parser\Entry[],string> 40 | */ 41 | private static function process(array $entries) 42 | { 43 | /** @var \GrahamCampbell\ResultType\Result<\Dotenv\Parser\Entry[],string> */ 44 | return \array_reduce($entries, static function (Result $result, string $raw) { 45 | return $result->flatMap(static function (array $entries) use ($raw) { 46 | return EntryParser::parse($raw)->map(static function (Entry $entry) use ($entries) { 47 | /** @var \Dotenv\Parser\Entry[] */ 48 | return \array_merge($entries, [$entry]); 49 | }); 50 | }); 51 | }, Success::create([])); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php: -------------------------------------------------------------------------------- 1 | chars = $chars; 36 | $this->vars = $vars; 37 | } 38 | 39 | /** 40 | * Create an empty value instance. 41 | * 42 | * @return \Dotenv\Parser\Value 43 | */ 44 | public static function blank() 45 | { 46 | return new self('', []); 47 | } 48 | 49 | /** 50 | * Create a new value instance, appending the characters. 51 | * 52 | * @param string $chars 53 | * @param bool $var 54 | * 55 | * @return \Dotenv\Parser\Value 56 | */ 57 | public function append(string $chars, bool $var) 58 | { 59 | return new self( 60 | $this->chars.$chars, 61 | $var ? \array_merge($this->vars, [Str::len($this->chars)]) : $this->vars 62 | ); 63 | } 64 | 65 | /** 66 | * Get the string representation of the parsed value. 67 | * 68 | * @return string 69 | */ 70 | public function getChars() 71 | { 72 | return $this->chars; 73 | } 74 | 75 | /** 76 | * Get the locations of the variables in the value. 77 | * 78 | * @return int[] 79 | */ 80 | public function getVars() 81 | { 82 | $vars = $this->vars; 83 | 84 | \rsort($vars); 85 | 86 | return $vars; 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | public static function create(); 15 | } 16 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php: -------------------------------------------------------------------------------- 1 | 27 | */ 28 | public static function create() 29 | { 30 | if (self::isSupported()) { 31 | /** @var \PhpOption\Option */ 32 | return Some::create(new self()); 33 | } 34 | 35 | return None::create(); 36 | } 37 | 38 | /** 39 | * Determines if the adapter is supported. 40 | * 41 | * This happens if PHP is running as an Apache module. 42 | * 43 | * @return bool 44 | */ 45 | private static function isSupported() 46 | { 47 | return \function_exists('apache_getenv') && \function_exists('apache_setenv'); 48 | } 49 | 50 | /** 51 | * Read an environment variable, if it exists. 52 | * 53 | * @param non-empty-string $name 54 | * 55 | * @return \PhpOption\Option 56 | */ 57 | public function read(string $name) 58 | { 59 | /** @var \PhpOption\Option */ 60 | return Option::fromValue(apache_getenv($name))->filter(static function ($value) { 61 | return \is_string($value) && $value !== ''; 62 | }); 63 | } 64 | 65 | /** 66 | * Write to an environment variable, if possible. 67 | * 68 | * @param non-empty-string $name 69 | * @param string $value 70 | * 71 | * @return bool 72 | */ 73 | public function write(string $name, string $value) 74 | { 75 | return apache_setenv($name, $value); 76 | } 77 | 78 | /** 79 | * Delete an environment variable, if possible. 80 | * 81 | * @param non-empty-string $name 82 | * 83 | * @return bool 84 | */ 85 | public function delete(string $name) 86 | { 87 | return apache_setenv($name, ''); 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | private $variables; 18 | 19 | /** 20 | * Create a new array adapter instance. 21 | * 22 | * @return void 23 | */ 24 | private function __construct() 25 | { 26 | $this->variables = []; 27 | } 28 | 29 | /** 30 | * Create a new instance of the adapter, if it is available. 31 | * 32 | * @return \PhpOption\Option<\Dotenv\Repository\Adapter\AdapterInterface> 33 | */ 34 | public static function create() 35 | { 36 | /** @var \PhpOption\Option */ 37 | return Some::create(new self()); 38 | } 39 | 40 | /** 41 | * Read an environment variable, if it exists. 42 | * 43 | * @param non-empty-string $name 44 | * 45 | * @return \PhpOption\Option 46 | */ 47 | public function read(string $name) 48 | { 49 | return Option::fromArraysValue($this->variables, $name); 50 | } 51 | 52 | /** 53 | * Write to an environment variable, if possible. 54 | * 55 | * @param non-empty-string $name 56 | * @param string $value 57 | * 58 | * @return bool 59 | */ 60 | public function write(string $name, string $value) 61 | { 62 | $this->variables[$name] = $value; 63 | 64 | return true; 65 | } 66 | 67 | /** 68 | * Delete an environment variable, if possible. 69 | * 70 | * @param non-empty-string $name 71 | * 72 | * @return bool 73 | */ 74 | public function delete(string $name) 75 | { 76 | unset($this->variables[$name]); 77 | 78 | return true; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php: -------------------------------------------------------------------------------- 1 | 26 | */ 27 | public static function create() 28 | { 29 | /** @var \PhpOption\Option */ 30 | return Some::create(new self()); 31 | } 32 | 33 | /** 34 | * Read an environment variable, if it exists. 35 | * 36 | * @param non-empty-string $name 37 | * 38 | * @return \PhpOption\Option 39 | */ 40 | public function read(string $name) 41 | { 42 | /** @var \PhpOption\Option */ 43 | return Option::fromArraysValue($_ENV, $name) 44 | ->filter(static function ($value) { 45 | return \is_scalar($value); 46 | }) 47 | ->map(static function ($value) { 48 | if ($value === false) { 49 | return 'false'; 50 | } 51 | 52 | if ($value === true) { 53 | return 'true'; 54 | } 55 | 56 | /** @psalm-suppress PossiblyInvalidCast */ 57 | return (string) $value; 58 | }); 59 | } 60 | 61 | /** 62 | * Write to an environment variable, if possible. 63 | * 64 | * @param non-empty-string $name 65 | * @param string $value 66 | * 67 | * @return bool 68 | */ 69 | public function write(string $name, string $value) 70 | { 71 | $_ENV[$name] = $value; 72 | 73 | return true; 74 | } 75 | 76 | /** 77 | * Delete an environment variable, if possible. 78 | * 79 | * @param non-empty-string $name 80 | * 81 | * @return bool 82 | */ 83 | public function delete(string $name) 84 | { 85 | unset($_ENV[$name]); 86 | 87 | return true; 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php: -------------------------------------------------------------------------------- 1 | writer = $writer; 34 | $this->allowList = $allowList; 35 | } 36 | 37 | /** 38 | * Write to an environment variable, if possible. 39 | * 40 | * @param non-empty-string $name 41 | * @param string $value 42 | * 43 | * @return bool 44 | */ 45 | public function write(string $name, string $value) 46 | { 47 | // Don't set non-allowed variables 48 | if (!$this->isAllowed($name)) { 49 | return false; 50 | } 51 | 52 | // Set the value on the inner writer 53 | return $this->writer->write($name, $value); 54 | } 55 | 56 | /** 57 | * Delete an environment variable, if possible. 58 | * 59 | * @param non-empty-string $name 60 | * 61 | * @return bool 62 | */ 63 | public function delete(string $name) 64 | { 65 | // Don't clear non-allowed variables 66 | if (!$this->isAllowed($name)) { 67 | return false; 68 | } 69 | 70 | // Set the value on the inner writer 71 | return $this->writer->delete($name); 72 | } 73 | 74 | /** 75 | * Determine if the given variable is allowed. 76 | * 77 | * @param non-empty-string $name 78 | * 79 | * @return bool 80 | */ 81 | private function isAllowed(string $name) 82 | { 83 | return \in_array($name, $this->allowList, true); 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php: -------------------------------------------------------------------------------- 1 | readers = $readers; 28 | } 29 | 30 | /** 31 | * Read an environment variable, if it exists. 32 | * 33 | * @param non-empty-string $name 34 | * 35 | * @return \PhpOption\Option 36 | */ 37 | public function read(string $name) 38 | { 39 | foreach ($this->readers as $reader) { 40 | $result = $reader->read($name); 41 | if ($result->isDefined()) { 42 | return $result; 43 | } 44 | } 45 | 46 | return None::create(); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php: -------------------------------------------------------------------------------- 1 | writers = $writers; 26 | } 27 | 28 | /** 29 | * Write to an environment variable, if possible. 30 | * 31 | * @param non-empty-string $name 32 | * @param string $value 33 | * 34 | * @return bool 35 | */ 36 | public function write(string $name, string $value) 37 | { 38 | foreach ($this->writers as $writers) { 39 | if (!$writers->write($name, $value)) { 40 | return false; 41 | } 42 | } 43 | 44 | return true; 45 | } 46 | 47 | /** 48 | * Delete an environment variable, if possible. 49 | * 50 | * @param non-empty-string $name 51 | * 52 | * @return bool 53 | */ 54 | public function delete(string $name) 55 | { 56 | foreach ($this->writers as $writers) { 57 | if (!$writers->delete($name)) { 58 | return false; 59 | } 60 | } 61 | 62 | return true; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php: -------------------------------------------------------------------------------- 1 | 27 | */ 28 | public static function create() 29 | { 30 | if (self::isSupported()) { 31 | /** @var \PhpOption\Option */ 32 | return Some::create(new self()); 33 | } 34 | 35 | return None::create(); 36 | } 37 | 38 | /** 39 | * Determines if the adapter is supported. 40 | * 41 | * @return bool 42 | */ 43 | private static function isSupported() 44 | { 45 | return \function_exists('getenv') && \function_exists('putenv'); 46 | } 47 | 48 | /** 49 | * Read an environment variable, if it exists. 50 | * 51 | * @param non-empty-string $name 52 | * 53 | * @return \PhpOption\Option 54 | */ 55 | public function read(string $name) 56 | { 57 | /** @var \PhpOption\Option */ 58 | return Option::fromValue(\getenv($name), false)->filter(static function ($value) { 59 | return \is_string($value); 60 | }); 61 | } 62 | 63 | /** 64 | * Write to an environment variable, if possible. 65 | * 66 | * @param non-empty-string $name 67 | * @param string $value 68 | * 69 | * @return bool 70 | */ 71 | public function write(string $name, string $value) 72 | { 73 | \putenv("$name=$value"); 74 | 75 | return true; 76 | } 77 | 78 | /** 79 | * Delete an environment variable, if possible. 80 | * 81 | * @param non-empty-string $name 82 | * 83 | * @return bool 84 | */ 85 | public function delete(string $name) 86 | { 87 | \putenv($name); 88 | 89 | return true; 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php: -------------------------------------------------------------------------------- 1 | 15 | */ 16 | public function read(string $name); 17 | } 18 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php: -------------------------------------------------------------------------------- 1 | 27 | */ 28 | private $seen; 29 | 30 | /** 31 | * Create a new replacement writer instance. 32 | * 33 | * @param \Dotenv\Repository\Adapter\WriterInterface $writer 34 | * @param \Dotenv\Repository\Adapter\ReaderInterface $reader 35 | * 36 | * @return void 37 | */ 38 | public function __construct(WriterInterface $writer, ReaderInterface $reader) 39 | { 40 | $this->writer = $writer; 41 | $this->reader = $reader; 42 | $this->seen = []; 43 | } 44 | 45 | /** 46 | * Write to an environment variable, if possible. 47 | * 48 | * @param non-empty-string $name 49 | * @param string $value 50 | * 51 | * @return bool 52 | */ 53 | public function write(string $name, string $value) 54 | { 55 | if ($this->exists($name)) { 56 | return $this->writer->write($name, $value); 57 | } 58 | 59 | // succeed if nothing to do 60 | return true; 61 | } 62 | 63 | /** 64 | * Delete an environment variable, if possible. 65 | * 66 | * @param non-empty-string $name 67 | * 68 | * @return bool 69 | */ 70 | public function delete(string $name) 71 | { 72 | if ($this->exists($name)) { 73 | return $this->writer->delete($name); 74 | } 75 | 76 | // succeed if nothing to do 77 | return true; 78 | } 79 | 80 | /** 81 | * Does the given environment variable exist. 82 | * 83 | * Returns true if it currently exists, or existed at any point in the past 84 | * that we are aware of. 85 | * 86 | * @param non-empty-string $name 87 | * 88 | * @return bool 89 | */ 90 | private function exists(string $name) 91 | { 92 | if (isset($this->seen[$name])) { 93 | return true; 94 | } 95 | 96 | if ($this->reader->read($name)->isDefined()) { 97 | $this->seen[$name] = ''; 98 | 99 | return true; 100 | } 101 | 102 | return false; 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php: -------------------------------------------------------------------------------- 1 | 26 | */ 27 | public static function create() 28 | { 29 | /** @var \PhpOption\Option */ 30 | return Some::create(new self()); 31 | } 32 | 33 | /** 34 | * Read an environment variable, if it exists. 35 | * 36 | * @param non-empty-string $name 37 | * 38 | * @return \PhpOption\Option 39 | */ 40 | public function read(string $name) 41 | { 42 | /** @var \PhpOption\Option */ 43 | return Option::fromArraysValue($_SERVER, $name) 44 | ->filter(static function ($value) { 45 | return \is_scalar($value); 46 | }) 47 | ->map(static function ($value) { 48 | if ($value === false) { 49 | return 'false'; 50 | } 51 | 52 | if ($value === true) { 53 | return 'true'; 54 | } 55 | 56 | /** @psalm-suppress PossiblyInvalidCast */ 57 | return (string) $value; 58 | }); 59 | } 60 | 61 | /** 62 | * Write to an environment variable, if possible. 63 | * 64 | * @param non-empty-string $name 65 | * @param string $value 66 | * 67 | * @return bool 68 | */ 69 | public function write(string $name, string $value) 70 | { 71 | $_SERVER[$name] = $value; 72 | 73 | return true; 74 | } 75 | 76 | /** 77 | * Delete an environment variable, if possible. 78 | * 79 | * @param non-empty-string $name 80 | * 81 | * @return bool 82 | */ 83 | public function delete(string $name) 84 | { 85 | unset($_SERVER[$name]); 86 | 87 | return true; 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php: -------------------------------------------------------------------------------- 1 | reader = $reader; 38 | $this->writer = $writer; 39 | } 40 | 41 | /** 42 | * Determine if the given environment variable is defined. 43 | * 44 | * @param string $name 45 | * 46 | * @return bool 47 | */ 48 | public function has(string $name) 49 | { 50 | return '' !== $name && $this->reader->read($name)->isDefined(); 51 | } 52 | 53 | /** 54 | * Get an environment variable. 55 | * 56 | * @param string $name 57 | * 58 | * @throws \InvalidArgumentException 59 | * 60 | * @return string|null 61 | */ 62 | public function get(string $name) 63 | { 64 | if ('' === $name) { 65 | throw new InvalidArgumentException('Expected name to be a non-empty string.'); 66 | } 67 | 68 | return $this->reader->read($name)->getOrElse(null); 69 | } 70 | 71 | /** 72 | * Set an environment variable. 73 | * 74 | * @param string $name 75 | * @param string $value 76 | * 77 | * @throws \InvalidArgumentException 78 | * 79 | * @return bool 80 | */ 81 | public function set(string $name, string $value) 82 | { 83 | if ('' === $name) { 84 | throw new InvalidArgumentException('Expected name to be a non-empty string.'); 85 | } 86 | 87 | return $this->writer->write($name, $value); 88 | } 89 | 90 | /** 91 | * Clear an environment variable. 92 | * 93 | * @param string $name 94 | * 95 | * @throws \InvalidArgumentException 96 | * 97 | * @return bool 98 | */ 99 | public function clear(string $name) 100 | { 101 | if ('' === $name) { 102 | throw new InvalidArgumentException('Expected name to be a non-empty string.'); 103 | } 104 | 105 | return $this->writer->delete($name); 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php: -------------------------------------------------------------------------------- 1 | 42 | */ 43 | public static function read(array $filePaths, bool $shortCircuit = true, string $fileEncoding = null) 44 | { 45 | $output = []; 46 | 47 | foreach ($filePaths as $filePath) { 48 | $content = self::readFromFile($filePath, $fileEncoding); 49 | if ($content->isDefined()) { 50 | $output[$filePath] = $content->get(); 51 | if ($shortCircuit) { 52 | break; 53 | } 54 | } 55 | } 56 | 57 | return $output; 58 | } 59 | 60 | /** 61 | * Read the given file. 62 | * 63 | * @param string $path 64 | * @param string|null $encoding 65 | * 66 | * @throws \Dotenv\Exception\InvalidEncodingException 67 | * 68 | * @return \PhpOption\Option 69 | */ 70 | private static function readFromFile(string $path, string $encoding = null) 71 | { 72 | /** @var Option */ 73 | $content = Option::fromValue(@\file_get_contents($path), false); 74 | 75 | return $content->flatMap(static function (string $content) use ($encoding) { 76 | return Str::utf8($content, $encoding)->mapError(static function (string $error) { 77 | throw new InvalidEncodingException($error); 78 | })->success(); 79 | }); 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Store/FileStore.php: -------------------------------------------------------------------------------- 1 | filePaths = $filePaths; 45 | $this->shortCircuit = $shortCircuit; 46 | $this->fileEncoding = $fileEncoding; 47 | } 48 | 49 | /** 50 | * Read the content of the environment file(s). 51 | * 52 | * @throws \Dotenv\Exception\InvalidEncodingException|\Dotenv\Exception\InvalidPathException 53 | * 54 | * @return string 55 | */ 56 | public function read() 57 | { 58 | if ($this->filePaths === []) { 59 | throw new InvalidPathException('At least one environment file path must be provided.'); 60 | } 61 | 62 | $contents = Reader::read($this->filePaths, $this->shortCircuit, $this->fileEncoding); 63 | 64 | if (\count($contents) > 0) { 65 | return \implode("\n", $contents); 66 | } 67 | 68 | throw new InvalidPathException( 69 | \sprintf('Unable to read any of the environment file(s) at [%s].', \implode(', ', $this->filePaths)) 70 | ); 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Store/StoreInterface.php: -------------------------------------------------------------------------------- 1 | content = $content; 26 | } 27 | 28 | /** 29 | * Read the content of the environment file(s). 30 | * 31 | * @return string 32 | */ 33 | public function read() 34 | { 35 | return $this->content; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /vendor/vlucas/phpdotenv/src/Util/Str.php: -------------------------------------------------------------------------------- 1 | 35 | */ 36 | public static function utf8(string $input, string $encoding = null) 37 | { 38 | if ($encoding !== null && !\in_array($encoding, \mb_list_encodings(), true)) { 39 | /** @var \GrahamCampbell\ResultType\Result */ 40 | return Error::create( 41 | \sprintf('Illegal character encoding [%s] specified.', $encoding) 42 | ); 43 | } 44 | $converted = $encoding === null ? 45 | @\mb_convert_encoding($input, 'UTF-8') : 46 | @\mb_convert_encoding($input, 'UTF-8', $encoding); 47 | /** 48 | * this is for support UTF-8 with BOM encoding 49 | * @see https://en.wikipedia.org/wiki/Byte_order_mark 50 | * @see https://github.com/vlucas/phpdotenv/issues/500 51 | */ 52 | if (\substr($converted, 0, 3) == "\xEF\xBB\xBF") { 53 | $converted = \substr($converted, 3); 54 | } 55 | /** @var \GrahamCampbell\ResultType\Result */ 56 | return Success::create($converted); 57 | } 58 | 59 | /** 60 | * Search for a given substring of the input. 61 | * 62 | * @param string $haystack 63 | * @param string $needle 64 | * 65 | * @return \PhpOption\Option 66 | */ 67 | public static function pos(string $haystack, string $needle) 68 | { 69 | /** @var \PhpOption\Option */ 70 | return Option::fromValue(\mb_strpos($haystack, $needle, 0, 'UTF-8'), false); 71 | } 72 | 73 | /** 74 | * Grab the specified substring of the input. 75 | * 76 | * @param string $input 77 | * @param int $start 78 | * @param int|null $length 79 | * 80 | * @return string 81 | */ 82 | public static function substr(string $input, int $start, int $length = null) 83 | { 84 | return \mb_substr($input, $start, $length, 'UTF-8'); 85 | } 86 | 87 | /** 88 | * Compute the length of the given string. 89 | * 90 | * @param string $input 91 | * 92 | * @return int 93 | */ 94 | public static function len(string $input) 95 | { 96 | return \mb_strlen($input, 'UTF-8'); 97 | } 98 | } 99 | --------------------------------------------------------------------------------