├── .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 |
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # PHP SHOP ORDER
2 |
3 | ## Giới thiệu
4 |
5 | 
6 |
7 | 
8 |
9 |
10 |
11 | 
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 |
10 |
--------------------------------------------------------------------------------
/assets/images/shapes/shape-2.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
--------------------------------------------------------------------------------
/assets/images/shapes/shape-3.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
--------------------------------------------------------------------------------
/assets/images/shapes/shape-4.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
--------------------------------------------------------------------------------
/assets/images/shapes/shape-5.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
--------------------------------------------------------------------------------
/assets/images/shapes/shape-6.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
--------------------------------------------------------------------------------
/assets/images/shapes/shape-7.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
--------------------------------------------------------------------------------
/assets/images/shapes/shape-8.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
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 = '';
49 | $class = ( $this->_page == 1 ) ? "disabled" : "";
50 | $html .= '- «
';
51 | if ( $start > 1 ) {
52 | $html .= '- 1
';
53 | $html .= '- ...
';
54 | }
55 | for ( $i = $start ; $i <= $end; $i++ ) {
56 | $class = ( $this->_page == $i ) ? "active" : "";
57 | $html .= '- ' . $i . '
';
58 | }
59 | if ( $end < $last ) {
60 | $html .= '- ...
';
61 | $html .= '- ' . $last . '
';
62 | }
63 | $class = ( $this->_page == $last ) ? "disabled" : "";
64 | $html .= '- »
';
65 | $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 |
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 |
--------------------------------------------------------------------------------
/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 |
5 |
6 | 0) {
8 | $discount_price = $price - ($price * $discount / 100);
9 | ?>
10 |
11 | %
12 |
13 |
16 |
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 |
--------------------------------------------------------------------------------