b4d0143c by Jeff Balicki

Fp start

0 parents
Showing 1000 changed files with 4664 additions and 0 deletions

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

No preview for this file type
1 DB_HOST=127.0.0.1
2 DB_NAME= fp_canada
3 DB_USER=root
4 DB_PASSWORD=jeff518862
5 FORCE_SSL_ADMIN=false
...\ No newline at end of file ...\ No newline at end of file
1 <IfModule pagespeed_module>
2 ModPagespeed off
3 </IfModule>
4
5 <IfModule mod_mime.c>
6
7 # Audio
8 AddType audio/mp4 m4a f4a f4b
9 AddType audio/ogg oga ogg
10
11 # JavaScript
12 # Normalize to standard type (it's sniffed in IE anyways):
13 # http://tools.ietf.org/html/rfc4329#section-7.2
14 AddType application/javascript js jsonp
15 AddType application/json json
16
17 # Video
18 AddType video/mp4 mp4 m4v f4v f4p
19 AddType video/ogg ogv
20 AddType video/webm webm
21 AddType video/x-flv flv
22
23 # Web fonts
24 AddType application/font-woff woff
25 AddType application/vnd.ms-fontobject eot
26
27 # Browsers usually ignore the font MIME types and sniff the content,
28 # however, Chrome shows a warning if other MIME types are used for the
29 # following fonts.
30 AddType application/x-font-ttf ttc ttf
31 AddType font/opentype otf
32
33 # Make SVGZ fonts work on iPad:
34 # https://twitter.com/FontSquirrel/status/14855840545
35 AddType image/svg+xml svg svgz
36 AddEncoding gzip svgz
37
38 # Other
39 AddType application/octet-stream safariextz
40 AddType application/x-chrome-extension crx
41 AddType application/x-opera-extension oex
42 AddType application/x-shockwave-flash swf
43 AddType application/x-web-app-manifest+json webapp
44 AddType application/x-xpinstall xpi
45 AddType application/xml atom rdf rss xml
46 AddType image/webp webp
47 AddType image/x-icon ico
48 AddType text/cache-manifest appcache manifest
49 AddType text/vtt vtt
50 AddType text/x-component htc
51 AddType text/x-vcard vcf
52
53 </IfModule>
54
55 <IfModule mod_deflate.c>
56
57 # Force compression for mangled headers.
58 # http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping
59 <IfModule mod_setenvif.c>
60 <IfModule mod_headers.c>
61 SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
62 RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
63 </IfModule>
64 </IfModule>
65
66 # Compress all output labeled with one of the following MIME-types
67 # (for Apache versions below 2.3.7, you don't need to enable `mod_filter`
68 # and can remove the `<IfModule mod_filter.c>` and `</IfModule>` lines
69 # as `AddOutputFilterByType` is still in the core directives).
70 <IfModule mod_filter.c>
71 AddOutputFilterByType DEFLATE application/atom+xml \
72 application/javascript \
73 application/json \
74 application/rss+xml \
75 application/vnd.ms-fontobject \
76 application/x-font-ttf \
77 application/x-web-app-manifest+json \
78 application/xhtml+xml \
79 application/xml \
80 font/opentype \
81 image/svg+xml \
82 image/x-icon \
83 text/css \
84 text/html \
85 text/plain \
86 text/x-component \
87 text/xml
88 </IfModule>
89
90 </IfModule>
91
92 <IfModule mod_expires.c>
93
94 ExpiresActive on
95 ExpiresDefault "access plus 1 month"
96
97 # CSS
98 ExpiresByType text/css "access plus 1 year"
99
100 # Data interchange
101 ExpiresByType application/json "access plus 0 seconds"
102 ExpiresByType application/xml "access plus 0 seconds"
103 ExpiresByType text/xml "access plus 0 seconds"
104
105 # Favicon (cannot be renamed!)
106 ExpiresByType image/x-icon "access plus 1 week"
107
108 # HTML components (HTCs)
109 ExpiresByType text/x-component "access plus 1 month"
110
111 # HTML
112 ExpiresByType text/html "access plus 0 seconds"
113
114 # JavaScript
115 ExpiresByType application/javascript "access plus 1 year"
116
117 # Manifest files
118 ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
119 ExpiresByType text/cache-manifest "access plus 0 seconds"
120
121
122 # Media
123 ExpiresByType image/jpeg "access plus 1 year"
124 ExpiresByType image/gif "access plus 1 year"
125 ExpiresByType image/png "access plus 1 year"
126 ExpiresByType image/webp "access plus 1 year"
127 ExpiresByType image/svg+xml "access plus 1 year"
128 ExpiresByType image/x-icon "access plus 1 year"
129
130
131 # Video
132 ExpiresByType video/webm "access plus 1 year"
133 ExpiresByType video/mp4 "access plus 1 year"
134 ExpiresByType video/mpeg "access plus 1 year"
135
136 # Web feeds
137 ExpiresByType application/atom+xml "access plus 1 hour"
138 ExpiresByType application/rss+xml "access plus 1 hour"
139
140 # Web fonts
141 ExpiresByType font/ttf "access plus 1 year"
142 ExpiresByType font/otf "access plus 1 year"
143 ExpiresByType font/woff "access plus 1 year"
144 ExpiresByType font/woff2 "access plus 1 year"
145 ExpiresByType application/font-woff "access plus 1 year"
146
147 </IfModule>
148 <IfModule mod_rewrite.c>
149 RewriteEngine On
150 RewriteBase /
151
152 RewriteRule ^index\.php$ - [L]
153 RewriteCond %{REQUEST_FILENAME} !-f
154 RewriteCond %{REQUEST_FILENAME} !-d
155 RewriteRule . /index.php [L]
156 </IfModule>
157 # BEGIN WordPress
158 # The directives (lines) between `BEGIN WordPress` and `END WordPress` are
159 # dynamically generated, and should only be modified via WordPress filters.
160 # Any changes to the directives between these markers will be overwritten.
161 <IfModule mod_rewrite.c>
162 RewriteEngine On
163 RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
164 RewriteBase /
165 RewriteRule ^index\.php$ - [L]
166 RewriteCond %{REQUEST_FILENAME} !-f
167 RewriteCond %{REQUEST_FILENAME} !-d
168 RewriteRule . /index.php [L]
169 </IfModule>
170
171 # END WordPress
...\ No newline at end of file ...\ No newline at end of file
1 # Load DSL and Setup Up Stages
2 require 'capistrano/setup'
3
4 # Includes default deployment tasks
5 require 'capistrano/deploy'
6
7 # Load tasks from gems
8 # require 'capistrano/composer'
9
10 # Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
11 # Customize this path to change the location of your custom tasks.
12 Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }
1 source 'https://rubygems.org'
2
3 gem "capistrano", "~> 3.10"
4 gem 'capistrano-composer'
1 GEM
2 remote: https://rubygems.org/
3 specs:
4 airbrussh (1.4.0)
5 sshkit (>= 1.6.1, != 1.7.0)
6 capistrano (3.15.0)
7 airbrussh (>= 1.0.0)
8 i18n
9 rake (>= 10.0.0)
10 sshkit (>= 1.9.0)
11 capistrano-composer (0.0.6)
12 capistrano (>= 3.0.0.pre)
13 concurrent-ruby (1.1.8)
14 i18n (1.8.9)
15 concurrent-ruby (~> 1.0)
16 net-scp (3.0.0)
17 net-ssh (>= 2.6.5, < 7.0.0)
18 net-ssh (6.1.0)
19 rake (13.0.3)
20 sshkit (1.21.2)
21 net-scp (>= 1.1.2)
22 net-ssh (>= 2.8.0)
23
24 PLATFORMS
25 ruby
26
27 DEPENDENCIES
28 capistrano (~> 3.10)
29 capistrano-composer
30
31 BUNDLED WITH
32 1.17.2
1 {
2 "name": "scottjs/wp-dotenv",
3 "description": "Helper scripts to enable WordPress to use dotenv config files, similar to Laravel 5.",
4 "license": "MIT",
5 "authors": [
6 {
7 "name": "Scott Salisbury",
8 "email": "scottsalisbury@gmail.com"
9 }
10 ],
11 "require": {
12 "vlucas/phpdotenv": "^2.2"
13 },
14 "scripts": {
15 "generate-config" : [
16 "vendor/scottjs/wp-dotenv/generate-config.sh"
17 ],
18 "generate-config-with-salts" : [
19 "vendor/scottjs/wp-dotenv/generate-config.sh salts"
20 ]
21 },
22 "minimum-stability": "dev"
23 }
1 {
2 "_readme": [
3 "This file locks the dependencies of your project to a known state",
4 "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5 "This file is @generated automatically"
6 ],
7 "content-hash": "2ea9f97258011ece3bb076ae8b69636b",
8 "packages": [
9 {
10 "name": "symfony/polyfill-ctype",
11 "version": "dev-main",
12 "source": {
13 "type": "git",
14 "url": "https://github.com/symfony/polyfill-ctype.git",
15 "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce"
16 },
17 "dist": {
18 "type": "zip",
19 "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce",
20 "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce",
21 "shasum": ""
22 },
23 "require": {
24 "php": ">=7.1"
25 },
26 "suggest": {
27 "ext-ctype": "For best performance"
28 },
29 "default-branch": true,
30 "type": "library",
31 "extra": {
32 "branch-alias": {
33 "dev-main": "1.23-dev"
34 },
35 "thanks": {
36 "name": "symfony/polyfill",
37 "url": "https://github.com/symfony/polyfill"
38 }
39 },
40 "autoload": {
41 "psr-4": {
42 "Symfony\\Polyfill\\Ctype\\": ""
43 },
44 "files": [
45 "bootstrap.php"
46 ]
47 },
48 "notification-url": "https://packagist.org/downloads/",
49 "license": [
50 "MIT"
51 ],
52 "authors": [
53 {
54 "name": "Gert de Pagter",
55 "email": "BackEndTea@gmail.com"
56 },
57 {
58 "name": "Symfony Community",
59 "homepage": "https://symfony.com/contributors"
60 }
61 ],
62 "description": "Symfony polyfill for ctype functions",
63 "homepage": "https://symfony.com",
64 "keywords": [
65 "compatibility",
66 "ctype",
67 "polyfill",
68 "portable"
69 ],
70 "support": {
71 "source": "https://github.com/symfony/polyfill-ctype/tree/main"
72 },
73 "funding": [
74 {
75 "url": "https://symfony.com/sponsor",
76 "type": "custom"
77 },
78 {
79 "url": "https://github.com/fabpot",
80 "type": "github"
81 },
82 {
83 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
84 "type": "tidelift"
85 }
86 ],
87 "time": "2021-02-19T12:13:01+00:00"
88 },
89 {
90 "name": "vlucas/phpdotenv",
91 "version": "2.6.x-dev",
92 "source": {
93 "type": "git",
94 "url": "https://github.com/vlucas/phpdotenv.git",
95 "reference": "b786088918a884258c9e3e27405c6a4cf2ee246e"
96 },
97 "dist": {
98 "type": "zip",
99 "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/b786088918a884258c9e3e27405c6a4cf2ee246e",
100 "reference": "b786088918a884258c9e3e27405c6a4cf2ee246e",
101 "shasum": ""
102 },
103 "require": {
104 "php": "^5.3.9 || ^7.0 || ^8.0",
105 "symfony/polyfill-ctype": "^1.17"
106 },
107 "require-dev": {
108 "ext-filter": "*",
109 "ext-pcre": "*",
110 "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20"
111 },
112 "suggest": {
113 "ext-filter": "Required to use the boolean validator.",
114 "ext-pcre": "Required to use most of the library."
115 },
116 "type": "library",
117 "extra": {
118 "branch-alias": {
119 "dev-master": "2.6-dev"
120 }
121 },
122 "autoload": {
123 "psr-4": {
124 "Dotenv\\": "src/"
125 }
126 },
127 "notification-url": "https://packagist.org/downloads/",
128 "license": [
129 "BSD-3-Clause"
130 ],
131 "authors": [
132 {
133 "name": "Graham Campbell",
134 "email": "graham@alt-three.com",
135 "homepage": "https://gjcampbell.co.uk/"
136 },
137 {
138 "name": "Vance Lucas",
139 "email": "vance@vancelucas.com",
140 "homepage": "https://vancelucas.com/"
141 }
142 ],
143 "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
144 "keywords": [
145 "dotenv",
146 "env",
147 "environment"
148 ],
149 "support": {
150 "issues": "https://github.com/vlucas/phpdotenv/issues",
151 "source": "https://github.com/vlucas/phpdotenv/tree/2.6"
152 },
153 "funding": [
154 {
155 "url": "https://github.com/GrahamCampbell",
156 "type": "github"
157 },
158 {
159 "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv",
160 "type": "tidelift"
161 }
162 ],
163 "time": "2021-01-20T14:39:13+00:00"
164 }
165 ],
166 "packages-dev": [],
167 "aliases": [],
168 "minimum-stability": "dev",
169 "stability-flags": [],
170 "prefer-stable": false,
171 "prefer-lowest": false,
172 "platform": [],
173 "platform-dev": [],
174 "plugin-api-version": "2.0.0"
175 }
No preview for this file type
1 set :application, 'facit-production'
2 set :repo_url, 'git@git.gotenzing.com:Jeremy/facit.git'
3
4 # Branch options
5 # Prompts for the branch name (defaults to current branch)
6 #ask :branch, -> { `git rev-parse --abbrev-ref HEAD`.chomp }
7
8 # Hardcodes branch to always be master
9 # This could be overridden in a stage config file
10 set :branch, "production"
11
12
13 set :keep_releases, 2
14 set :deploy_to, -> { "/var/www/html/production/#{fetch(:application)}" }
15
16 # Use :debug for more verbose output when troubleshooting
17 set :log_level, :info
18
19 # Put all shared files/directories here (e.g. uploads that need to go on the NFS drive)
20 set :linked_files, fetch(:linked_files, []).push('.env')
21 set :linked_dirs, fetch(:linked_dirs, []).push('wp-content/wflogs','wp-content/uploads', 'wp-content/storage', 'wp-content/cache')
22
23 namespace :deploy do
24 desc 'Sync servers'
25 task :sync do
26 on roles(:web), in: :sequence, wait: 5 do
27 execute("si #{fetch(:application)}")
28 end
29 end
30 end
31
32 namespace :deploy do
33 desc 'Sync servers'
34 task :sync_again do
35 on roles(:web), in: :sequence, wait: 5 do
36 execute("si #{fetch(:application)}")
37 end
38 end
39 end
40
41 # namespace :deploy do
42 # desc 'Install composer packages'
43 # task :install_theme_packages do
44 # on roles(:web), in: :sequence, wait: 5 do
45 # execute "cd '#{release_path}'; /usr/bin/php70 /home/tenzing_www/bin/composer install --no-dev --prefer-dist --no-interaction --quiet --optimize-autoloader"
46 # end
47 # end
48 # end
49
50 # namespace :deploy do
51 # desc 'Install composer packages'
52 # task :install_theme_packages do
53 # on roles(:web), in: :sequence, wait: 5 do
54 # execute "cd '#{release_path}/wp-content/themes/commonwell-corp'; /usr/bin/php70 /home/tenzing_www/bin/composer install --no-dev --prefer-dist --no-interaction --quiet --optimize-autoloader"
55 # end
56 # end
57 # end
58
59
60
61 # Override `git#create_release` to handle submodules
62 # namespace :git do
63 # desc 'Copy repo to releases'
64 # task create_release: :'git:update' do
65 # on roles(:all) do
66 # with fetch(:git_environmental_variables) do
67 # within repo_path do
68 # execute :git, :clone, '-b', fetch(:branch), '--recursive', '.', release_path
69 # end
70 # end
71 # end
72 # end
73 # end
74
75 # The above restart task is not run by default
76 # Uncomment the following line to run it on deploys if needed
77 # after 'deploy:publishing', 'deploy:restart'
78
79 namespace :deploy do
80 desc 'Remove Git Files'
81 task :cleanup do
82 on roles(:web), in: :sequence, wait: 5 do
83 execute "cd '#{release_path}/'; rm -Rf .git/ "
84 end
85 end
86 end
87
88
89
90
91 # namespace :deploy do
92 # desc 'Update WordPress template root paths to point to the new release'
93 # task :update_option_paths do
94 # on roles(:app) do
95 # within fetch(:release_path) do
96 # if test :wp, :core, 'is-installed'
97 # [:stylesheet_root, :template_root].each do |option|
98 # # Only change the value if it's an absolute path
99 # # i.e. The relative path "/themes" must remain unchanged
100 # # Also, the option might not be set, in which case we leave it like that
101 # value = capture :wp, :option, :get, option, raise_on_non_zero_exit: false
102 # if value != '' && value != '/themes'
103 # execute :wp, :option, :set, option, fetch(:release_path).join('web/wp/wp-content/themes')
104 # end
105 # end
106 # end
107 # end
108 # end
109 # end
110 # end
111
112
113
114 # The above update_option_paths task is not run by default
115 # Note that you need to have WP-CLI installed on your server
116 # Uncomment the following line to run it on deploys if needed
117 # after 'deploy:publishing', 'deploy:update_option_paths'
118
119 # after 'deploy:updated', 'deploy:install_theme_packages'
120 after 'deploy:updated', 'deploy:sync'
121 after 'deploy:finished', 'deploy:sync_again'
1 set :stage, :production
2 set :branch, "production"
3
4 # Simple Role Syntax
5 # ==================
6 role :web, %w{tenzing_www@web-1}
7
8 # you can set custom ssh options
9 # it's possible to pass any option but you need to keep in mind that net/ssh understand limited list of options
10 # you can see them in [net/ssh documentation](http://net-ssh.github.io/net-ssh/classes/Net/SSH.html#method-c-start)
11 # set it globally
12 # set :ssh_options, {
13 # keys: %w(~/.ssh/id_rsa),
14 # forward_agent: false,
15 # auth_methods: %w(password)
16 # }
17
18 fetch(:default_env).merge!(wp_env: :production)
1 set :application, 'facit-dev'
2 set :branch, "master"
3
4 # Simple Role Syntax
5 # ==================
6 role :web, %w{tenzing_www@web-1}
7
8 # you can set custom ssh options
9 # it's possible to pass any option but you need to keep in mind that net/ssh understand limited list of options
10 # you can see them in [net/ssh documentation](http://net-ssh.github.io/net-ssh/classes/Net/SSH.html#method-c-start)
11 # set it globally
12 # set :ssh_options, {
13 # keys: %w(~/.ssh/id_rsa),
14 # forward_agent: false,
15 # auth_methods: %w(password)
16 # }
17
18 fetch(:default_env).merge!(wp_env: :staging)
1 <?php
2 /**
3 * Front to the WordPress application. This file doesn't do anything, but loads
4 * wp-blog-header.php which does and tells WordPress to load the theme.
5 *
6 * @package WordPress
7 */
8
9 /**
10 * Tells WordPress to load the WordPress theme and output it.
11 *
12 * @var bool
13 */
14 define( 'WP_USE_THEMES', true );
15
16 /** Loads the WordPress Environment and Template */
17 require __DIR__ . '/wp-blog-header.php';
This diff is collapsed. Click to expand it.
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta name="viewport" content="width=device-width" />
5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6 <title>WordPress &#8250; ReadMe</title>
7 <link rel="stylesheet" href="wp-admin/css/install.css?ver=20100228" type="text/css" />
8 </head>
9 <body>
10 <h1 id="logo">
11 <a href="https://wordpress.org/"><img alt="WordPress" src="wp-admin/images/wordpress-logo.png" /></a>
12 </h1>
13 <p style="text-align: center">Semantic Personal Publishing Platform</p>
14
15 <h2>First Things First</h2>
16 <p>Welcome. WordPress is a very special project to me. Every developer and contributor adds something unique to the mix, and together we create something beautiful that I&#8217;m proud to be a part of. Thousands of hours have gone into WordPress, and we&#8217;re dedicated to making it better every day. Thank you for making it part of your world.</p>
17 <p style="text-align: right">&#8212; Matt Mullenweg</p>
18
19 <h2>Installation: Famous 5-minute install</h2>
20 <ol>
21 <li>Unzip the package in an empty directory and upload everything.</li>
22 <li>Open <span class="file"><a href="wp-admin/install.php">wp-admin/install.php</a></span> in your browser. It will take you through the process to set up a <code>wp-config.php</code> file with your database connection details.
23 <ol>
24 <li>If for some reason this doesn&#8217;t work, don&#8217;t worry. It doesn&#8217;t work on all web hosts. Open up <code>wp-config-sample.php</code> with a text editor like WordPad or similar and fill in your database connection details.</li>
25 <li>Save the file as <code>wp-config.php</code> and upload it.</li>
26 <li>Open <span class="file"><a href="wp-admin/install.php">wp-admin/install.php</a></span> in your browser.</li>
27 </ol>
28 </li>
29 <li>Once the configuration file is set up, the installer will set up the tables needed for your site. If there is an error, double check your <code>wp-config.php</code> file, and try again. If it fails again, please go to the <a href="https://wordpress.org/support/forums/">WordPress support forums</a> with as much data as you can gather.</li>
30 <li><strong>If you did not enter a password, note the password given to you.</strong> If you did not provide a username, it will be <code>admin</code>.</li>
31 <li>The installer should then send you to the <a href="wp-login.php">login page</a>. Sign in with the username and password you chose during the installation. If a password was generated for you, you can then click on &#8220;Profile&#8221; to change the password.</li>
32 </ol>
33
34 <h2>Updating</h2>
35 <h3>Using the Automatic Updater</h3>
36 <ol>
37 <li>Open <span class="file"><a href="wp-admin/update-core.php">wp-admin/update-core.php</a></span> in your browser and follow the instructions.</li>
38 <li>You wanted more, perhaps? That&#8217;s it!</li>
39 </ol>
40
41 <h3>Updating Manually</h3>
42 <ol>
43 <li>Before you update anything, make sure you have backup copies of any files you may have modified such as <code>index.php</code>.</li>
44 <li>Delete your old WordPress files, saving ones you&#8217;ve modified.</li>
45 <li>Upload the new files.</li>
46 <li>Point your browser to <span class="file"><a href="wp-admin/upgrade.php">/wp-admin/upgrade.php</a>.</span></li>
47 </ol>
48
49 <h2>Migrating from other systems</h2>
50 <p>WordPress can <a href="https://wordpress.org/support/article/importing-content/">import from a number of systems</a>. First you need to get WordPress installed and working as described above, before using <a href="wp-admin/import.php">our import tools</a>.</p>
51
52 <h2>System Requirements</h2>
53 <ul>
54 <li><a href="https://secure.php.net/">PHP</a> version <strong>5.6.20</strong> or higher.</li>
55 <li><a href="https://www.mysql.com/">MySQL</a> version <strong>5.0</strong> or higher.</li>
56 </ul>
57
58 <h3>Recommendations</h3>
59 <ul>
60 <li><a href="https://secure.php.net/">PHP</a> version <strong>7.4</strong> or higher.</li>
61 <li><a href="https://www.mysql.com/">MySQL</a> version <strong>5.6</strong> or higher.</li>
62 <li>The <a href="https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html">mod_rewrite</a> Apache module.</li>
63 <li><a href="https://wordpress.org/news/2016/12/moving-toward-ssl/">HTTPS</a> support.</li>
64 <li>A link to <a href="https://wordpress.org/">wordpress.org</a> on your site.</li>
65 </ul>
66
67 <h2>Online Resources</h2>
68 <p>If you have any questions that aren&#8217;t addressed in this document, please take advantage of WordPress&#8217; numerous online resources:</p>
69 <dl>
70 <dt><a href="https://codex.wordpress.org/">The WordPress Codex</a></dt>
71 <dd>The Codex is the encyclopedia of all things WordPress. It is the most comprehensive source of information for WordPress available.</dd>
72 <dt><a href="https://wordpress.org/news/">The WordPress Blog</a></dt>
73 <dd>This is where you&#8217;ll find the latest updates and news related to WordPress. Recent WordPress news appears in your administrative dashboard by default.</dd>
74 <dt><a href="https://planet.wordpress.org/">WordPress Planet</a></dt>
75 <dd>The WordPress Planet is a news aggregator that brings together posts from WordPress blogs around the web.</dd>
76 <dt><a href="https://wordpress.org/support/forums/">WordPress Support Forums</a></dt>
77 <dd>If you&#8217;ve looked everywhere and still can&#8217;t find an answer, the support forums are very active and have a large community ready to help. To help them help you be sure to use a descriptive thread title and describe your question in as much detail as possible.</dd>
78 <dt><a href="https://make.wordpress.org/support/handbook/appendix/other-support-locations/introduction-to-irc/">WordPress <abbr>IRC</abbr> (Internet Relay Chat) Channel</a></dt>
79 <dd>There is an online chat channel that is used for discussion among people who use WordPress and occasionally support topics. The above wiki page should point you in the right direction. (<a href="https://web.libera.chat/#wordpress">irc.libera.chat #wordpress</a>)</dd>
80 </dl>
81
82 <h2>Final Notes</h2>
83 <ul>
84 <li>If you have any suggestions, ideas, or comments, or if you (gasp!) found a bug, join us in the <a href="https://wordpress.org/support/forums/">Support Forums</a>.</li>
85 <li>WordPress has a robust plugin <abbr>API</abbr> (Application Programming Interface) that makes extending the code easy. If you are a developer interested in utilizing this, see the <a href="https://developer.wordpress.org/plugins/">Plugin Developer Handbook</a>. You shouldn&#8217;t modify any of the core code.</li>
86 </ul>
87
88 <h2>Share the Love</h2>
89 <p>WordPress has no multi-million dollar marketing campaign or celebrity sponsors, but we do have something even better&#8212;you. If you enjoy WordPress please consider telling a friend, setting it up for someone less knowledgeable than yourself, or writing the author of a media article that overlooks us.</p>
90
91 <p>WordPress is the official continuation of <a href="http://cafelog.com/">b2/caf&#233;log</a>, which came from Michel V. The work has been continued by the <a href="https://wordpress.org/about/">WordPress developers</a>. If you would like to support WordPress, please consider <a href="https://wordpress.org/donate/">donating</a>.</p>
92
93 <h2>License</h2>
94 <p>WordPress is free software, and is released under the terms of the <abbr>GPL</abbr> (GNU General Public License) version 2 or (at your option) any later version. See <a href="license.txt">license.txt</a>.</p>
95
96 </body>
97 </html>
1 <?php
2
3 // autoload.php @generated by Composer
4
5 require_once __DIR__ . '/composer/autoload_real.php';
6
7 return ComposerAutoloaderInite03b9d1e49f7cd9cad5229d65075079e::getLoader();
1
2 Copyright (c) Nils Adermann, Jordi Boggiano
3
4 Permission is hereby granted, free of charge, to any person obtaining a copy
5 of this software and associated documentation files (the "Software"), to deal
6 in the Software without restriction, including without limitation the rights
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 copies of the Software, and to permit persons to whom the Software is furnished
9 to do so, subject to the following conditions:
10
11 The above copyright notice and this permission notice shall be included in all
12 copies or substantial portions of the Software.
13
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 THE SOFTWARE.
21
1 <?php
2
3 // autoload_classmap.php @generated by Composer
4
5 $vendorDir = dirname(dirname(__FILE__));
6 $baseDir = dirname($vendorDir);
7
8 return array(
9 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
10 );
1 <?php
2
3 // autoload_files.php @generated by Composer
4
5 $vendorDir = dirname(dirname(__FILE__));
6 $baseDir = dirname($vendorDir);
7
8 return array(
9 '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
10 );
1 <?php
2
3 // autoload_namespaces.php @generated by Composer
4
5 $vendorDir = dirname(dirname(__FILE__));
6 $baseDir = dirname($vendorDir);
7
8 return array(
9 );
1 <?php
2
3 // autoload_psr4.php @generated by Composer
4
5 $vendorDir = dirname(dirname(__FILE__));
6 $baseDir = dirname($vendorDir);
7
8 return array(
9 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
10 'Dotenv\\' => array($vendorDir . '/vlucas/phpdotenv/src'),
11 );
1 <?php
2
3 // autoload_real.php @generated by Composer
4
5 class ComposerAutoloaderInite03b9d1e49f7cd9cad5229d65075079e
6 {
7 private static $loader;
8
9 public static function loadClassLoader($class)
10 {
11 if ('Composer\Autoload\ClassLoader' === $class) {
12 require __DIR__ . '/ClassLoader.php';
13 }
14 }
15
16 /**
17 * @return \Composer\Autoload\ClassLoader
18 */
19 public static function getLoader()
20 {
21 if (null !== self::$loader) {
22 return self::$loader;
23 }
24
25 require __DIR__ . '/platform_check.php';
26
27 spl_autoload_register(array('ComposerAutoloaderInite03b9d1e49f7cd9cad5229d65075079e', 'loadClassLoader'), true, true);
28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
29 spl_autoload_unregister(array('ComposerAutoloaderInite03b9d1e49f7cd9cad5229d65075079e', 'loadClassLoader'));
30
31 $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
32 if ($useStaticLoader) {
33 require __DIR__ . '/autoload_static.php';
34
35 call_user_func(\Composer\Autoload\ComposerStaticInite03b9d1e49f7cd9cad5229d65075079e::getInitializer($loader));
36 } else {
37 $map = require __DIR__ . '/autoload_namespaces.php';
38 foreach ($map as $namespace => $path) {
39 $loader->set($namespace, $path);
40 }
41
42 $map = require __DIR__ . '/autoload_psr4.php';
43 foreach ($map as $namespace => $path) {
44 $loader->setPsr4($namespace, $path);
45 }
46
47 $classMap = require __DIR__ . '/autoload_classmap.php';
48 if ($classMap) {
49 $loader->addClassMap($classMap);
50 }
51 }
52
53 $loader->register(true);
54
55 if ($useStaticLoader) {
56 $includeFiles = Composer\Autoload\ComposerStaticInite03b9d1e49f7cd9cad5229d65075079e::$files;
57 } else {
58 $includeFiles = require __DIR__ . '/autoload_files.php';
59 }
60 foreach ($includeFiles as $fileIdentifier => $file) {
61 composerRequiree03b9d1e49f7cd9cad5229d65075079e($fileIdentifier, $file);
62 }
63
64 return $loader;
65 }
66 }
67
68 function composerRequiree03b9d1e49f7cd9cad5229d65075079e($fileIdentifier, $file)
69 {
70 if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
71 require $file;
72
73 $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
74 }
75 }
1 <?php
2
3 // autoload_static.php @generated by Composer
4
5 namespace Composer\Autoload;
6
7 class ComposerStaticInite03b9d1e49f7cd9cad5229d65075079e
8 {
9 public static $files = array (
10 '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
11 );
12
13 public static $prefixLengthsPsr4 = array (
14 'S' =>
15 array (
16 'Symfony\\Polyfill\\Ctype\\' => 23,
17 ),
18 'D' =>
19 array (
20 'Dotenv\\' => 7,
21 ),
22 );
23
24 public static $prefixDirsPsr4 = array (
25 'Symfony\\Polyfill\\Ctype\\' =>
26 array (
27 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
28 ),
29 'Dotenv\\' =>
30 array (
31 0 => __DIR__ . '/..' . '/vlucas/phpdotenv/src',
32 ),
33 );
34
35 public static $classMap = array (
36 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
37 );
38
39 public static function getInitializer(ClassLoader $loader)
40 {
41 return \Closure::bind(function () use ($loader) {
42 $loader->prefixLengthsPsr4 = ComposerStaticInite03b9d1e49f7cd9cad5229d65075079e::$prefixLengthsPsr4;
43 $loader->prefixDirsPsr4 = ComposerStaticInite03b9d1e49f7cd9cad5229d65075079e::$prefixDirsPsr4;
44 $loader->classMap = ComposerStaticInite03b9d1e49f7cd9cad5229d65075079e::$classMap;
45
46 }, null, ClassLoader::class);
47 }
48 }
1 {
2 "packages": [
3 {
4 "name": "symfony/polyfill-ctype",
5 "version": "dev-main",
6 "version_normalized": "dev-main",
7 "source": {
8 "type": "git",
9 "url": "https://github.com/symfony/polyfill-ctype.git",
10 "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce"
11 },
12 "dist": {
13 "type": "zip",
14 "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce",
15 "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce",
16 "shasum": ""
17 },
18 "require": {
19 "php": ">=7.1"
20 },
21 "suggest": {
22 "ext-ctype": "For best performance"
23 },
24 "time": "2021-02-19T12:13:01+00:00",
25 "default-branch": true,
26 "type": "library",
27 "extra": {
28 "branch-alias": {
29 "dev-main": "1.23-dev"
30 },
31 "thanks": {
32 "name": "symfony/polyfill",
33 "url": "https://github.com/symfony/polyfill"
34 }
35 },
36 "installation-source": "dist",
37 "autoload": {
38 "psr-4": {
39 "Symfony\\Polyfill\\Ctype\\": ""
40 },
41 "files": [
42 "bootstrap.php"
43 ]
44 },
45 "notification-url": "https://packagist.org/downloads/",
46 "license": [
47 "MIT"
48 ],
49 "authors": [
50 {
51 "name": "Gert de Pagter",
52 "email": "BackEndTea@gmail.com"
53 },
54 {
55 "name": "Symfony Community",
56 "homepage": "https://symfony.com/contributors"
57 }
58 ],
59 "description": "Symfony polyfill for ctype functions",
60 "homepage": "https://symfony.com",
61 "keywords": [
62 "compatibility",
63 "ctype",
64 "polyfill",
65 "portable"
66 ],
67 "support": {
68 "source": "https://github.com/symfony/polyfill-ctype/tree/main"
69 },
70 "funding": [
71 {
72 "url": "https://symfony.com/sponsor",
73 "type": "custom"
74 },
75 {
76 "url": "https://github.com/fabpot",
77 "type": "github"
78 },
79 {
80 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
81 "type": "tidelift"
82 }
83 ],
84 "install-path": "../symfony/polyfill-ctype"
85 },
86 {
87 "name": "vlucas/phpdotenv",
88 "version": "2.6.x-dev",
89 "version_normalized": "2.6.9999999.9999999-dev",
90 "source": {
91 "type": "git",
92 "url": "https://github.com/vlucas/phpdotenv.git",
93 "reference": "b786088918a884258c9e3e27405c6a4cf2ee246e"
94 },
95 "dist": {
96 "type": "zip",
97 "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/b786088918a884258c9e3e27405c6a4cf2ee246e",
98 "reference": "b786088918a884258c9e3e27405c6a4cf2ee246e",
99 "shasum": ""
100 },
101 "require": {
102 "php": "^5.3.9 || ^7.0 || ^8.0",
103 "symfony/polyfill-ctype": "^1.17"
104 },
105 "require-dev": {
106 "ext-filter": "*",
107 "ext-pcre": "*",
108 "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20"
109 },
110 "suggest": {
111 "ext-filter": "Required to use the boolean validator.",
112 "ext-pcre": "Required to use most of the library."
113 },
114 "time": "2021-01-20T14:39:13+00:00",
115 "type": "library",
116 "extra": {
117 "branch-alias": {
118 "dev-master": "2.6-dev"
119 }
120 },
121 "installation-source": "dist",
122 "autoload": {
123 "psr-4": {
124 "Dotenv\\": "src/"
125 }
126 },
127 "notification-url": "https://packagist.org/downloads/",
128 "license": [
129 "BSD-3-Clause"
130 ],
131 "authors": [
132 {
133 "name": "Graham Campbell",
134 "email": "graham@alt-three.com",
135 "homepage": "https://gjcampbell.co.uk/"
136 },
137 {
138 "name": "Vance Lucas",
139 "email": "vance@vancelucas.com",
140 "homepage": "https://vancelucas.com/"
141 }
142 ],
143 "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
144 "keywords": [
145 "dotenv",
146 "env",
147 "environment"
148 ],
149 "support": {
150 "issues": "https://github.com/vlucas/phpdotenv/issues",
151 "source": "https://github.com/vlucas/phpdotenv/tree/2.6"
152 },
153 "funding": [
154 {
155 "url": "https://github.com/GrahamCampbell",
156 "type": "github"
157 },
158 {
159 "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv",
160 "type": "tidelift"
161 }
162 ],
163 "install-path": "../vlucas/phpdotenv"
164 }
165 ],
166 "dev": true,
167 "dev-package-names": []
168 }
1 <?php return array(
2 'root' => array(
3 'pretty_version' => '1.0.0+no-version-set',
4 'version' => '1.0.0.0',
5 'type' => 'library',
6 'install_path' => __DIR__ . '/../../',
7 'aliases' => array(),
8 'reference' => NULL,
9 'name' => 'scottjs/wp-dotenv',
10 'dev' => true,
11 ),
12 'versions' => array(
13 'scottjs/wp-dotenv' => array(
14 'pretty_version' => '1.0.0+no-version-set',
15 'version' => '1.0.0.0',
16 'type' => 'library',
17 'install_path' => __DIR__ . '/../../',
18 'aliases' => array(),
19 'reference' => NULL,
20 'dev_requirement' => false,
21 ),
22 'symfony/polyfill-ctype' => array(
23 'pretty_version' => 'dev-main',
24 'version' => 'dev-main',
25 'type' => 'library',
26 'install_path' => __DIR__ . '/../symfony/polyfill-ctype',
27 'aliases' => array(
28 0 => '1.23.x-dev',
29 ),
30 'reference' => '46cd95797e9df938fdd2b03693b5fca5e64b01ce',
31 'dev_requirement' => false,
32 ),
33 'vlucas/phpdotenv' => array(
34 'pretty_version' => '2.6.x-dev',
35 'version' => '2.6.9999999.9999999-dev',
36 'type' => 'library',
37 'install_path' => __DIR__ . '/../vlucas/phpdotenv',
38 'aliases' => array(),
39 'reference' => 'b786088918a884258c9e3e27405c6a4cf2ee246e',
40 'dev_requirement' => false,
41 ),
42 ),
43 );
1 <?php
2
3 // platform_check.php @generated by Composer
4
5 $issues = array();
6
7 if (!(PHP_VERSION_ID >= 70100)) {
8 $issues[] = 'Your Composer dependencies require a PHP version ">= 7.1.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 }
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
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\Ctype;
13
14 /**
15 * Ctype implementation through regex.
16 *
17 * @internal
18 *
19 * @author Gert de Pagter <BackEndTea@gmail.com>
20 */
21 final class Ctype
22 {
23 /**
24 * Returns TRUE if every character in text is either a letter or a digit, FALSE otherwise.
25 *
26 * @see https://php.net/ctype-alnum
27 *
28 * @param string|int $text
29 *
30 * @return bool
31 */
32 public static function ctype_alnum($text)
33 {
34 $text = self::convert_int_to_char_for_ctype($text);
35
36 return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z0-9]/', $text);
37 }
38
39 /**
40 * Returns TRUE if every character in text is a letter, FALSE otherwise.
41 *
42 * @see https://php.net/ctype-alpha
43 *
44 * @param string|int $text
45 *
46 * @return bool
47 */
48 public static function ctype_alpha($text)
49 {
50 $text = self::convert_int_to_char_for_ctype($text);
51
52 return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z]/', $text);
53 }
54
55 /**
56 * Returns TRUE if every character in text is a control character from the current locale, FALSE otherwise.
57 *
58 * @see https://php.net/ctype-cntrl
59 *
60 * @param string|int $text
61 *
62 * @return bool
63 */
64 public static function ctype_cntrl($text)
65 {
66 $text = self::convert_int_to_char_for_ctype($text);
67
68 return \is_string($text) && '' !== $text && !preg_match('/[^\x00-\x1f\x7f]/', $text);
69 }
70
71 /**
72 * Returns TRUE if every character in the string text is a decimal digit, FALSE otherwise.
73 *
74 * @see https://php.net/ctype-digit
75 *
76 * @param string|int $text
77 *
78 * @return bool
79 */
80 public static function ctype_digit($text)
81 {
82 $text = self::convert_int_to_char_for_ctype($text);
83
84 return \is_string($text) && '' !== $text && !preg_match('/[^0-9]/', $text);
85 }
86
87 /**
88 * Returns TRUE if every character in text is printable and actually creates visible output (no white space), FALSE otherwise.
89 *
90 * @see https://php.net/ctype-graph
91 *
92 * @param string|int $text
93 *
94 * @return bool
95 */
96 public static function ctype_graph($text)
97 {
98 $text = self::convert_int_to_char_for_ctype($text);
99
100 return \is_string($text) && '' !== $text && !preg_match('/[^!-~]/', $text);
101 }
102
103 /**
104 * Returns TRUE if every character in text is a lowercase letter.
105 *
106 * @see https://php.net/ctype-lower
107 *
108 * @param string|int $text
109 *
110 * @return bool
111 */
112 public static function ctype_lower($text)
113 {
114 $text = self::convert_int_to_char_for_ctype($text);
115
116 return \is_string($text) && '' !== $text && !preg_match('/[^a-z]/', $text);
117 }
118
119 /**
120 * Returns TRUE if every character in text will actually create output (including blanks). Returns FALSE if text contains control characters or characters that do not have any output or control function at all.
121 *
122 * @see https://php.net/ctype-print
123 *
124 * @param string|int $text
125 *
126 * @return bool
127 */
128 public static function ctype_print($text)
129 {
130 $text = self::convert_int_to_char_for_ctype($text);
131
132 return \is_string($text) && '' !== $text && !preg_match('/[^ -~]/', $text);
133 }
134
135 /**
136 * Returns TRUE if every character in text is printable, but neither letter, digit or blank, FALSE otherwise.
137 *
138 * @see https://php.net/ctype-punct
139 *
140 * @param string|int $text
141 *
142 * @return bool
143 */
144 public static function ctype_punct($text)
145 {
146 $text = self::convert_int_to_char_for_ctype($text);
147
148 return \is_string($text) && '' !== $text && !preg_match('/[^!-\/\:-@\[-`\{-~]/', $text);
149 }
150
151 /**
152 * Returns TRUE if every character in text creates some sort of white space, FALSE otherwise. Besides the blank character this also includes tab, vertical tab, line feed, carriage return and form feed characters.
153 *
154 * @see https://php.net/ctype-space
155 *
156 * @param string|int $text
157 *
158 * @return bool
159 */
160 public static function ctype_space($text)
161 {
162 $text = self::convert_int_to_char_for_ctype($text);
163
164 return \is_string($text) && '' !== $text && !preg_match('/[^\s]/', $text);
165 }
166
167 /**
168 * Returns TRUE if every character in text is an uppercase letter.
169 *
170 * @see https://php.net/ctype-upper
171 *
172 * @param string|int $text
173 *
174 * @return bool
175 */
176 public static function ctype_upper($text)
177 {
178 $text = self::convert_int_to_char_for_ctype($text);
179
180 return \is_string($text) && '' !== $text && !preg_match('/[^A-Z]/', $text);
181 }
182
183 /**
184 * Returns TRUE if every character in text is a hexadecimal 'digit', that is a decimal digit or a character from [A-Fa-f] , FALSE otherwise.
185 *
186 * @see https://php.net/ctype-xdigit
187 *
188 * @param string|int $text
189 *
190 * @return bool
191 */
192 public static function ctype_xdigit($text)
193 {
194 $text = self::convert_int_to_char_for_ctype($text);
195
196 return \is_string($text) && '' !== $text && !preg_match('/[^A-Fa-f0-9]/', $text);
197 }
198
199 /**
200 * Converts integers to their char versions according to normal ctype behaviour, if needed.
201 *
202 * If an integer between -128 and 255 inclusive is provided,
203 * it is interpreted as the ASCII value of a single character
204 * (negative values have 256 added in order to allow characters in the Extended ASCII range).
205 * Any other integer is interpreted as a string containing the decimal digits of the integer.
206 *
207 * @param string|int $int
208 *
209 * @return mixed
210 */
211 private static function convert_int_to_char_for_ctype($int)
212 {
213 if (!\is_int($int)) {
214 return $int;
215 }
216
217 if ($int < -128 || $int > 255) {
218 return (string) $int;
219 }
220
221 if ($int < 0) {
222 $int += 256;
223 }
224
225 return \chr($int);
226 }
227 }
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.
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/master/README.md).
8
9 License
10 =======
11
12 This library is released under the [MIT license](LICENSE).
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
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 }
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
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 }
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 "autoload": {
22 "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" },
23 "files": [ "bootstrap.php" ]
24 },
25 "suggest": {
26 "ext-ctype": "For best performance"
27 },
28 "minimum-stability": "dev",
29 "extra": {
30 "branch-alias": {
31 "dev-main": "1.23-dev"
32 },
33 "thanks": {
34 "name": "symfony/polyfill",
35 "url": "https://github.com/symfony/polyfill"
36 }
37 }
38 }
1 The BSD 3-Clause License
2 http://opensource.org/licenses/BSD-3-Clause
3
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
9 met:
10
11 * Redistributions of source code must retain the above copyright
12 notice,
13 this list of conditions and the following disclaimer.
14 * Redistributions in binary form must reproduce the above copyright
15 notice, this list of conditions and the following disclaimer in the
16 documentation and/or other materials provided with the distribution.
17 * Neither the name of the Vance Lucas nor the names of its contributors
18 may be used to endorse or promote products derived from this software
19 without specific prior written permission.
20
21 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
22 IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
23 TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
24 PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
27 TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
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": "graham@alt-three.com",
10 "homepage": "https://gjcampbell.co.uk/"
11 },
12 {
13 "name": "Vance Lucas",
14 "email": "vance@vancelucas.com",
15 "homepage": "https://vancelucas.com/"
16 }
17 ],
18 "require": {
19 "php": "^5.3.9 || ^7.0 || ^8.0",
20 "symfony/polyfill-ctype": "^1.17"
21 },
22 "require-dev": {
23 "ext-filter": "*",
24 "ext-pcre": "*",
25 "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20"
26 },
27 "autoload": {
28 "psr-4": {
29 "Dotenv\\": "src/"
30 }
31 },
32 "suggest": {
33 "ext-filter": "Required to use the boolean validator.",
34 "ext-pcre": "Required to use most of the library."
35 },
36 "config": {
37 "preferred-install": "dist"
38 },
39 "extra": {
40 "branch-alias": {
41 "dev-master": "2.6-dev"
42 }
43 }
44 }
1 <?php
2
3 namespace Dotenv;
4
5 use Dotenv\Exception\InvalidPathException;
6
7 /**
8 * This is the dotenv class.
9 *
10 * It's responsible for loading a `.env` file in the given directory and
11 * setting the environment vars.
12 */
13 class Dotenv
14 {
15 /**
16 * The file path.
17 *
18 * @var string
19 */
20 protected $filePath;
21
22 /**
23 * The loader instance.
24 *
25 * @var \Dotenv\Loader|null
26 */
27 protected $loader;
28
29 /**
30 * Create a new dotenv instance.
31 *
32 * @param string $path
33 * @param string $file
34 *
35 * @return void
36 */
37 public function __construct($path, $file = '.env')
38 {
39 $this->filePath = $this->getFilePath($path, $file);
40 $this->loader = new Loader($this->filePath, true);
41 }
42
43 /**
44 * Load environment file in given directory.
45 *
46 * @throws \Dotenv\Exception\InvalidPathException|\Dotenv\Exception\InvalidFileException
47 *
48 * @return array
49 */
50 public function load()
51 {
52 return $this->loadData();
53 }
54
55 /**
56 * Load environment file in given directory, suppress InvalidPathException.
57 *
58 * @throws \Dotenv\Exception\InvalidFileException
59 *
60 * @return array
61 */
62 public function safeLoad()
63 {
64 try {
65 return $this->loadData();
66 } catch (InvalidPathException $e) {
67 // suppressing exception
68 return array();
69 }
70 }
71
72 /**
73 * Load environment file in given directory.
74 *
75 * @throws \Dotenv\Exception\InvalidPathException|\Dotenv\Exception\InvalidFileException
76 *
77 * @return array
78 */
79 public function overload()
80 {
81 return $this->loadData(true);
82 }
83
84 /**
85 * Returns the full path to the file.
86 *
87 * @param string $path
88 * @param string $file
89 *
90 * @return string
91 */
92 protected function getFilePath($path, $file)
93 {
94 if (!is_string($file)) {
95 $file = '.env';
96 }
97
98 $filePath = rtrim($path, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.$file;
99
100 return $filePath;
101 }
102
103 /**
104 * Actually load the data.
105 *
106 * @param bool $overload
107 *
108 * @throws \Dotenv\Exception\InvalidPathException|\Dotenv\Exception\InvalidFileException
109 *
110 * @return array
111 */
112 protected function loadData($overload = false)
113 {
114 return $this->loader->setImmutable(!$overload)->load();
115 }
116
117 /**
118 * Required ensures that the specified variables exist, and returns a new validator object.
119 *
120 * @param string|string[] $variable
121 *
122 * @return \Dotenv\Validator
123 */
124 public function required($variable)
125 {
126 return new Validator((array) $variable, $this->loader);
127 }
128
129 /**
130 * Get the list of environment variables declared inside the 'env' file.
131 *
132 * @return array
133 */
134 public function getEnvironmentVariableNames()
135 {
136 return $this->loader->variableNames;
137 }
138 }
1 <?php
2
3 namespace Dotenv\Exception;
4
5 /**
6 * This is the exception interface.
7 */
8 interface ExceptionInterface
9 {
10 //
11 }
1 <?php
2
3 namespace Dotenv\Exception;
4
5 use InvalidArgumentException;
6
7 /**
8 * This is the invalid callback exception class.
9 */
10 class InvalidCallbackException extends InvalidArgumentException implements ExceptionInterface
11 {
12 //
13 }
1 <?php
2
3 namespace Dotenv\Exception;
4
5 use InvalidArgumentException;
6
7 /**
8 * This is the invalid file exception class.
9 */
10 class InvalidFileException extends InvalidArgumentException implements ExceptionInterface
11 {
12 //
13 }
1 <?php
2
3 namespace Dotenv\Exception;
4
5 use InvalidArgumentException;
6
7 /**
8 * This is the invalid path exception class.
9 */
10 class InvalidPathException extends InvalidArgumentException implements ExceptionInterface
11 {
12 //
13 }
1 <?php
2
3 namespace Dotenv\Exception;
4
5 use RuntimeException;
6
7 /**
8 * This is the validation exception class.
9 */
10 class ValidationException extends RuntimeException implements ExceptionInterface
11 {
12 //
13 }
1 <?php
2
3 namespace Dotenv;
4
5 use Dotenv\Exception\InvalidPathException;
6
7 /**
8 * This is the loaded class.
9 *
10 * It's responsible for loading variables by reading a file from disk and:
11 * - stripping comments beginning with a `#`,
12 * - parsing lines that look shell variable setters, e.g `export key = value`, `key="value"`.
13 */
14 class Loader
15 {
16 /**
17 * The file path.
18 *
19 * @var string
20 */
21 protected $filePath;
22
23 /**
24 * Are we immutable?
25 *
26 * @var bool
27 */
28 protected $immutable;
29
30 /**
31 * The list of environment variables declared inside the 'env' file.
32 *
33 * @var array
34 */
35 public $variableNames = array();
36
37 /**
38 * Create a new loader instance.
39 *
40 * @param string $filePath
41 * @param bool $immutable
42 *
43 * @return void
44 */
45 public function __construct($filePath, $immutable = false)
46 {
47 $this->filePath = $filePath;
48 $this->immutable = $immutable;
49 }
50
51 /**
52 * Set immutable value.
53 *
54 * @param bool $immutable
55 *
56 * @return $this
57 */
58 public function setImmutable($immutable = false)
59 {
60 $this->immutable = $immutable;
61
62 return $this;
63 }
64
65 /**
66 * Get immutable value.
67 *
68 * @return bool
69 */
70 public function getImmutable()
71 {
72 return $this->immutable;
73 }
74
75 /**
76 * Load `.env` file in given directory.
77 *
78 * @throws \Dotenv\Exception\InvalidPathException|\Dotenv\Exception\InvalidFileException
79 *
80 * @return array
81 */
82 public function load()
83 {
84 $this->ensureFileIsReadable();
85
86 $filePath = $this->filePath;
87 $lines = $this->readLinesFromFile($filePath);
88 foreach ($lines as $line) {
89 if (!$this->isComment($line) && $this->looksLikeSetter($line)) {
90 $this->setEnvironmentVariable($line);
91 }
92 }
93
94 return $lines;
95 }
96
97 /**
98 * Ensures the given filePath is readable.
99 *
100 * @throws \Dotenv\Exception\InvalidPathException
101 *
102 * @return void
103 */
104 protected function ensureFileIsReadable()
105 {
106 if (!is_readable($this->filePath) || !is_file($this->filePath)) {
107 throw new InvalidPathException(sprintf('Unable to read the environment file at %s.', $this->filePath));
108 }
109 }
110
111 /**
112 * Normalise the given environment variable.
113 *
114 * Takes value as passed in by developer and:
115 * - ensures we're dealing with a separate name and value, breaking apart the name string if needed,
116 * - cleaning the value of quotes,
117 * - cleaning the name of quotes,
118 * - resolving nested variables.
119 *
120 * @param string $name
121 * @param string $value
122 *
123 * @throws \Dotenv\Exception\InvalidFileException
124 *
125 * @return array
126 */
127 protected function normaliseEnvironmentVariable($name, $value)
128 {
129 list($name, $value) = $this->processFilters($name, $value);
130
131 $value = $this->resolveNestedVariables($value);
132
133 return array($name, $value);
134 }
135
136 /**
137 * Process the runtime filters.
138 *
139 * Called from `normaliseEnvironmentVariable` and the `VariableFactory`, passed as a callback in `$this->loadFromFile()`.
140 *
141 * @param string $name
142 * @param string $value
143 *
144 * @throws \Dotenv\Exception\InvalidFileException
145 *
146 * @return array
147 */
148 public function processFilters($name, $value)
149 {
150 list($name, $value) = $this->splitCompoundStringIntoParts($name, $value);
151 list($name, $value) = $this->sanitiseVariableName($name, $value);
152 list($name, $value) = $this->sanitiseVariableValue($name, $value);
153
154 return array($name, $value);
155 }
156
157 /**
158 * Read lines from the file, auto detecting line endings.
159 *
160 * @param string $filePath
161 *
162 * @return array
163 */
164 protected function readLinesFromFile($filePath)
165 {
166 // Read file into an array of lines with auto-detected line endings
167 $autodetect = ini_get('auto_detect_line_endings');
168 ini_set('auto_detect_line_endings', '1');
169 $lines = file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
170 ini_set('auto_detect_line_endings', $autodetect);
171
172 return $lines;
173 }
174
175 /**
176 * Determine if the line in the file is a comment, e.g. begins with a #.
177 *
178 * @param string $line
179 *
180 * @return bool
181 */
182 protected function isComment($line)
183 {
184 $line = ltrim($line);
185
186 return isset($line[0]) && $line[0] === '#';
187 }
188
189 /**
190 * Determine if the given line looks like it's setting a variable.
191 *
192 * @param string $line
193 *
194 * @return bool
195 */
196 protected function looksLikeSetter($line)
197 {
198 return strpos($line, '=') !== false;
199 }
200
201 /**
202 * Split the compound string into parts.
203 *
204 * If the `$name` contains an `=` sign, then we split it into 2 parts, a `name` & `value`
205 * disregarding the `$value` passed in.
206 *
207 * @param string $name
208 * @param string $value
209 *
210 * @return array
211 */
212 protected function splitCompoundStringIntoParts($name, $value)
213 {
214 if (strpos($name, '=') !== false) {
215 list($name, $value) = array_map('trim', explode('=', $name, 2));
216 }
217
218 return array($name, $value);
219 }
220
221 /**
222 * Strips quotes from the environment variable value.
223 *
224 * @param string $name
225 * @param string $value
226 *
227 * @throws \Dotenv\Exception\InvalidFileException
228 *
229 * @return array
230 */
231 protected function sanitiseVariableValue($name, $value)
232 {
233 $value = trim($value);
234 if (!$value) {
235 return array($name, $value);
236 }
237
238 return array($name, Parser::parseValue($value));
239 }
240
241 /**
242 * Resolve the nested variables.
243 *
244 * Look for ${varname} patterns in the variable value and replace with an
245 * existing environment variable.
246 *
247 * @param string $value
248 *
249 * @return mixed
250 */
251 protected function resolveNestedVariables($value)
252 {
253 if (strpos($value, '$') !== false) {
254 $loader = $this;
255 $value = preg_replace_callback(
256 '/\${([a-zA-Z0-9_.]+)}/',
257 function ($matchedPatterns) use ($loader) {
258 $nestedVariable = $loader->getEnvironmentVariable($matchedPatterns[1]);
259 if ($nestedVariable === null) {
260 return $matchedPatterns[0];
261 } else {
262 return $nestedVariable;
263 }
264 },
265 $value
266 );
267 }
268
269 return $value;
270 }
271
272 /**
273 * Strips quotes and the optional leading "export " from the environment variable name.
274 *
275 * @param string $name
276 * @param string $value
277 *
278 * @return array
279 */
280 protected function sanitiseVariableName($name, $value)
281 {
282 return array(Parser::parseName($name), $value);
283 }
284
285 /**
286 * Search the different places for environment variables and return first value found.
287 *
288 * @param string $name
289 *
290 * @return string|null
291 */
292 public function getEnvironmentVariable($name)
293 {
294 switch (true) {
295 case array_key_exists($name, $_ENV):
296 return $_ENV[$name];
297 case array_key_exists($name, $_SERVER):
298 return $_SERVER[$name];
299 default:
300 $value = getenv($name);
301
302 return $value === false ? null : $value; // switch getenv default to null
303 }
304 }
305
306 /**
307 * Set an environment variable.
308 *
309 * This is done using:
310 * - putenv,
311 * - $_ENV,
312 * - $_SERVER.
313 *
314 * The environment variable value is stripped of single and double quotes.
315 *
316 * @param string $name
317 * @param string|null $value
318 *
319 * @throws \Dotenv\Exception\InvalidFileException
320 *
321 * @return void
322 */
323 public function setEnvironmentVariable($name, $value = null)
324 {
325 list($name, $value) = $this->normaliseEnvironmentVariable($name, $value);
326
327 $this->variableNames[] = $name;
328
329 // Don't overwrite existing environment variables if we're immutable
330 // Ruby's dotenv does this with `ENV[key] ||= value`.
331 if ($this->immutable && $this->getEnvironmentVariable($name) !== null) {
332 return;
333 }
334
335 // If PHP is running as an Apache module and an existing
336 // Apache environment variable exists, overwrite it
337 if (function_exists('apache_getenv') && function_exists('apache_setenv') && apache_getenv($name) !== false) {
338 apache_setenv($name, $value);
339 }
340
341 if (function_exists('putenv')) {
342 putenv("$name=$value");
343 }
344
345 $_ENV[$name] = $value;
346 $_SERVER[$name] = $value;
347 }
348
349 /**
350 * Clear an environment variable.
351 *
352 * This is not (currently) used by Dotenv but is provided as a utility
353 * method for 3rd party code.
354 *
355 * This is done using:
356 * - putenv,
357 * - unset($_ENV, $_SERVER).
358 *
359 * @param string $name
360 *
361 * @see setEnvironmentVariable()
362 *
363 * @return void
364 */
365 public function clearEnvironmentVariable($name)
366 {
367 // Don't clear anything if we're immutable.
368 if ($this->immutable) {
369 return;
370 }
371
372 if (function_exists('putenv')) {
373 putenv($name);
374 }
375
376 unset($_ENV[$name], $_SERVER[$name]);
377 }
378 }
1 <?php
2
3 namespace Dotenv;
4
5 use Dotenv\Exception\InvalidFileException;
6
7 class Parser
8 {
9 const INITIAL_STATE = 0;
10 const QUOTED_STATE = 1;
11 const ESCAPE_STATE = 2;
12 const WHITESPACE_STATE = 3;
13 const COMMENT_STATE = 4;
14
15 /**
16 * Parse the given variable name.
17 *
18 * @param string $name
19 *
20 * @return string
21 */
22 public static function parseName($name)
23 {
24 return trim(str_replace(array('export ', '\'', '"'), '', $name));
25 }
26
27 /**
28 * Parse the given variable value.
29 *
30 * @param string $value
31 *
32 * @throws \Dotenv\Exception\InvalidFileException
33 *
34 * @return string
35 */
36 public static function parseValue($value)
37 {
38 if ($value === '') {
39 return '';
40 } elseif ($value[0] === '"' || $value[0] === '\'') {
41 return Parser::parseQuotedValue($value);
42 } else {
43 return Parser::parseUnquotedValue($value);
44 }
45 }
46
47 /**
48 * Parse the given quoted value.
49 *
50 * @param string $value
51 *
52 * @throws \Dotenv\Exception\InvalidFileException
53 *
54 * @return string
55 */
56 public static function parseQuotedValue($value)
57 {
58 $result = array_reduce(str_split($value), function ($data, $char) use ($value) {
59 switch ($data[1]) {
60 case Parser::INITIAL_STATE:
61 if ($char === '"' || $char === '\'') {
62 return array($data[0], Parser::QUOTED_STATE);
63 } else {
64 throw new InvalidFileException(
65 'Expected the value to start with a quote.'
66 );
67 }
68 case Parser::QUOTED_STATE:
69 if ($char === $value[0]) {
70 return array($data[0], Parser::WHITESPACE_STATE);
71 } elseif ($char === '\\') {
72 return array($data[0], Parser::ESCAPE_STATE);
73 } else {
74 return array($data[0].$char, Parser::QUOTED_STATE);
75 }
76 case Parser::ESCAPE_STATE:
77 if ($char === $value[0] || $char === '\\') {
78 return array($data[0].$char, Parser::QUOTED_STATE);
79 } else {
80 return array($data[0].'\\'.$char, Parser::QUOTED_STATE);
81 }
82 case Parser::WHITESPACE_STATE:
83 if ($char === '#') {
84 return array($data[0], Parser::COMMENT_STATE);
85 } elseif (!ctype_space($char)) {
86 throw new InvalidFileException(
87 'Dotenv values containing spaces must be surrounded by quotes.'
88 );
89 } else {
90 return array($data[0], Parser::WHITESPACE_STATE);
91 }
92 case Parser::COMMENT_STATE:
93 return array($data[0], Parser::COMMENT_STATE);
94 }
95 }, array('', Parser::INITIAL_STATE));
96
97 if ($result[1] === Parser::QUOTED_STATE || $result[1] === Parser::ESCAPE_STATE) {
98 throw new InvalidFileException(
99 'Dotenv values starting with a quote must finish with a closing quote.'
100 );
101 }
102
103 return trim($result[0]);
104 }
105
106 /**
107 * Parse the given unquoted value.
108 *
109 * @param string $value
110 *
111 * @throws \Dotenv\Exception\InvalidFileException
112 *
113 * @return string
114 */
115 public static function parseUnquotedValue($value)
116 {
117 $parts = explode(' #', $value, 2);
118 $value = trim($parts[0]);
119
120 // Unquoted values cannot contain whitespace
121 if (preg_match('/\s+/', $value) > 0) {
122 // Check if value is a comment (usually triggered when empty value with comment)
123 if (preg_match('/^#/', $value) > 0) {
124 $value = '';
125 } else {
126 throw new InvalidFileException('Dotenv values containing spaces must be surrounded by quotes.');
127 }
128 }
129
130 return trim($value);
131 }
132 }
1 <?php
2
3 namespace Dotenv;
4
5 use Dotenv\Exception\InvalidCallbackException;
6 use Dotenv\Exception\ValidationException;
7
8 /**
9 * This is the validator class.
10 *
11 * It's responsible for applying validations against a number of variables.
12 */
13 class Validator
14 {
15 /**
16 * The variables to validate.
17 *
18 * @var array
19 */
20 protected $variables;
21
22 /**
23 * The loader instance.
24 *
25 * @var \Dotenv\Loader
26 */
27 protected $loader;
28
29 /**
30 * Create a new validator instance.
31 *
32 * @param array $variables
33 * @param \Dotenv\Loader $loader
34 *
35 * @return void
36 */
37 public function __construct(array $variables, Loader $loader)
38 {
39 $this->variables = $variables;
40 $this->loader = $loader;
41
42 $this->assertCallback(
43 function ($value) {
44 return $value !== null;
45 },
46 'is missing'
47 );
48 }
49
50 /**
51 * Assert that each variable is not empty.
52 *
53 * @return \Dotenv\Validator
54 */
55 public function notEmpty()
56 {
57 return $this->assertCallback(
58 function ($value) {
59 return strlen(trim($value)) > 0;
60 },
61 'is empty'
62 );
63 }
64
65 /**
66 * Assert that each specified variable is an integer.
67 *
68 * @return \Dotenv\Validator
69 */
70 public function isInteger()
71 {
72 return $this->assertCallback(
73 function ($value) {
74 return ctype_digit($value);
75 },
76 'is not an integer'
77 );
78 }
79
80 /**
81 * Assert that each specified variable is a boolean.
82 *
83 * @return \Dotenv\Validator
84 */
85 public function isBoolean()
86 {
87 return $this->assertCallback(
88 function ($value) {
89 if ($value === '') {
90 return false;
91 }
92
93 return filter_var($value, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) !== null;
94 },
95 'is not a boolean'
96 );
97 }
98
99 /**
100 * Assert that each variable is amongst the given choices.
101 *
102 * @param string[] $choices
103 *
104 * @return \Dotenv\Validator
105 */
106 public function allowedValues(array $choices)
107 {
108 return $this->assertCallback(
109 function ($value) use ($choices) {
110 return in_array($value, $choices);
111 },
112 'is not an allowed value'
113 );
114 }
115
116 /**
117 * Assert that the callback returns true for each variable.
118 *
119 * @param callable $callback
120 * @param string $message
121 *
122 * @throws \Dotenv\Exception\InvalidCallbackException|\Dotenv\Exception\ValidationException
123 *
124 * @return \Dotenv\Validator
125 */
126 protected function assertCallback($callback, $message = 'failed callback assertion')
127 {
128 if (!is_callable($callback)) {
129 throw new InvalidCallbackException('The provided callback must be callable.');
130 }
131
132 $variablesFailingAssertion = array();
133 foreach ($this->variables as $variableName) {
134 $variableValue = $this->loader->getEnvironmentVariable($variableName);
135 if (call_user_func($callback, $variableValue) === false) {
136 $variablesFailingAssertion[] = $variableName." $message";
137 }
138 }
139
140 if (count($variablesFailingAssertion) > 0) {
141 throw new ValidationException(sprintf(
142 'One or more environment variables failed assertions: %s.',
143 implode(', ', $variablesFailingAssertion)
144 ));
145 }
146
147 return $this;
148 }
149 }
1 <?php
2 /**
3 * Confirms that the activation key that is sent in an email after a user signs
4 * up for a new site matches the key for that user and then displays confirmation.
5 *
6 * @package WordPress
7 */
8
9 define( 'WP_INSTALLING', true );
10
11 /** Sets up the WordPress Environment. */
12 require __DIR__ . '/wp-load.php';
13
14 require __DIR__ . '/wp-blog-header.php';
15
16 if ( ! is_multisite() ) {
17 wp_redirect( wp_registration_url() );
18 die();
19 }
20
21 $valid_error_codes = array( 'already_active', 'blog_taken' );
22
23 list( $activate_path ) = explode( '?', wp_unslash( $_SERVER['REQUEST_URI'] ) );
24 $activate_cookie = 'wp-activate-' . COOKIEHASH;
25
26 $key = '';
27 $result = null;
28
29 if ( isset( $_GET['key'] ) && isset( $_POST['key'] ) && $_GET['key'] !== $_POST['key'] ) {
30 wp_die( __( 'A key value mismatch has been detected. Please follow the link provided in your activation email.' ), __( 'An error occurred during the activation' ), 400 );
31 } elseif ( ! empty( $_GET['key'] ) ) {
32 $key = $_GET['key'];
33 } elseif ( ! empty( $_POST['key'] ) ) {
34 $key = $_POST['key'];
35 }
36
37 if ( $key ) {
38 $redirect_url = remove_query_arg( 'key' );
39
40 if ( remove_query_arg( false ) !== $redirect_url ) {
41 setcookie( $activate_cookie, $key, 0, $activate_path, COOKIE_DOMAIN, is_ssl(), true );
42 wp_safe_redirect( $redirect_url );
43 exit;
44 } else {
45 $result = wpmu_activate_signup( $key );
46 }
47 }
48
49 if ( null === $result && isset( $_COOKIE[ $activate_cookie ] ) ) {
50 $key = $_COOKIE[ $activate_cookie ];
51 $result = wpmu_activate_signup( $key );
52 setcookie( $activate_cookie, ' ', time() - YEAR_IN_SECONDS, $activate_path, COOKIE_DOMAIN, is_ssl(), true );
53 }
54
55 if ( null === $result || ( is_wp_error( $result ) && 'invalid_key' === $result->get_error_code() ) ) {
56 status_header( 404 );
57 } elseif ( is_wp_error( $result ) ) {
58 $error_code = $result->get_error_code();
59
60 if ( ! in_array( $error_code, $valid_error_codes, true ) ) {
61 status_header( 400 );
62 }
63 }
64
65 nocache_headers();
66
67 if ( is_object( $wp_object_cache ) ) {
68 $wp_object_cache->cache_enabled = false;
69 }
70
71 // Fix for page title.
72 $wp_query->is_404 = false;
73
74 /**
75 * Fires before the Site Activation page is loaded.
76 *
77 * @since 3.0.0
78 */
79 do_action( 'activate_header' );
80
81 /**
82 * Adds an action hook specific to this page.
83 *
84 * Fires on {@see 'wp_head'}.
85 *
86 * @since MU (3.0.0)
87 */
88 function do_activate_header() {
89 /**
90 * Fires before the Site Activation page is loaded.
91 *
92 * Fires on the {@see 'wp_head'} action.
93 *
94 * @since 3.0.0
95 */
96 do_action( 'activate_wp_head' );
97 }
98 add_action( 'wp_head', 'do_activate_header' );
99
100 /**
101 * Loads styles specific to this page.
102 *
103 * @since MU (3.0.0)
104 */
105 function wpmu_activate_stylesheet() {
106 ?>
107 <style type="text/css">
108 form { margin-top: 2em; }
109 #submit, #key { width: 90%; font-size: 24px; }
110 #language { margin-top: .5em; }
111 .error { background: #f66; }
112 span.h3 { padding: 0 8px; font-size: 1.3em; font-weight: 600; }
113 </style>
114 <?php
115 }
116 add_action( 'wp_head', 'wpmu_activate_stylesheet' );
117 add_action( 'wp_head', 'wp_strict_cross_origin_referrer' );
118 add_filter( 'wp_robots', 'wp_robots_sensitive_page' );
119
120 get_header( 'wp-activate' );
121
122 $blog_details = get_blog_details();
123 ?>
124
125 <div id="signup-content" class="widecolumn">
126 <div class="wp-activate-container">
127 <?php if ( ! $key ) { ?>
128
129 <h2><?php _e( 'Activation Key Required' ); ?></h2>
130 <form name="activateform" id="activateform" method="post" action="<?php echo network_site_url( $blog_details->path . 'wp-activate.php' ); ?>">
131 <p>
132 <label for="key"><?php _e( 'Activation Key:' ); ?></label>
133 <br /><input type="text" name="key" id="key" value="" size="50" />
134 </p>
135 <p class="submit">
136 <input id="submit" type="submit" name="Submit" class="submit" value="<?php esc_attr_e( 'Activate' ); ?>" />
137 </p>
138 </form>
139
140 <?php
141 } else {
142 if ( is_wp_error( $result ) && in_array( $result->get_error_code(), $valid_error_codes, true ) ) {
143 $signup = $result->get_error_data();
144 ?>
145 <h2><?php _e( 'Your account is now active!' ); ?></h2>
146 <?php
147 echo '<p class="lead-in">';
148 if ( '' === $signup->domain . $signup->path ) {
149 printf(
150 /* translators: 1: Login URL, 2: Username, 3: User email address, 4: Lost password URL. */
151 __( 'Your account has been activated. You may now <a href="%1$s">log in</a> to the site using your chosen username of &#8220;%2$s&#8221;. Please check your email inbox at %3$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can <a href="%4$s">reset your password</a>.' ),
152 network_site_url( $blog_details->path . 'wp-login.php', 'login' ),
153 $signup->user_login,
154 $signup->user_email,
155 wp_lostpassword_url()
156 );
157 } else {
158 printf(
159 /* translators: 1: Site URL, 2: Username, 3: User email address, 4: Lost password URL. */
160 __( 'Your site at %1$s is active. You may now log in to your site using your chosen username of &#8220;%2$s&#8221;. Please check your email inbox at %3$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can <a href="%4$s">reset your password</a>.' ),
161 sprintf( '<a href="http://%1$s%2$s">%1$s%2$s</a>', $signup->domain, $blog_details->path ),
162 $signup->user_login,
163 $signup->user_email,
164 wp_lostpassword_url()
165 );
166 }
167 echo '</p>';
168 } elseif ( null === $result || is_wp_error( $result ) ) {
169 ?>
170 <h2><?php _e( 'An error occurred during the activation' ); ?></h2>
171 <?php if ( is_wp_error( $result ) ) : ?>
172 <p><?php echo $result->get_error_message(); ?></p>
173 <?php endif; ?>
174 <?php
175 } else {
176 $url = isset( $result['blog_id'] ) ? get_home_url( (int) $result['blog_id'] ) : '';
177 $user = get_userdata( (int) $result['user_id'] );
178 ?>
179 <h2><?php _e( 'Your account is now active!' ); ?></h2>
180
181 <div id="signup-welcome">
182 <p><span class="h3"><?php _e( 'Username:' ); ?></span> <?php echo $user->user_login; ?></p>
183 <p><span class="h3"><?php _e( 'Password:' ); ?></span> <?php echo $result['password']; ?></p>
184 </div>
185
186 <?php
187 if ( $url && network_home_url( '', 'http' ) !== $url ) :
188 switch_to_blog( (int) $result['blog_id'] );
189 $login_url = wp_login_url();
190 restore_current_blog();
191 ?>
192 <p class="view">
193 <?php
194 /* translators: 1: Site URL, 2: Login URL. */
195 printf( __( 'Your account is now activated. <a href="%1$s">View your site</a> or <a href="%2$s">Log in</a>' ), $url, esc_url( $login_url ) );
196 ?>
197 </p>
198 <?php else : ?>
199 <p class="view">
200 <?php
201 printf(
202 /* translators: 1: Login URL, 2: Network home URL. */
203 __( 'Your account is now activated. <a href="%1$s">Log in</a> or go back to the <a href="%2$s">homepage</a>.' ),
204 network_site_url( $blog_details->path . 'wp-login.php', 'login' ),
205 network_home_url( $blog_details->path )
206 );
207 ?>
208 </p>
209 <?php
210 endif;
211 }
212 }
213 ?>
214 </div>
215 </div>
216 <script type="text/javascript">
217 var key_input = document.getElementById('key');
218 key_input && key_input.focus();
219 </script>
220 <?php
221 get_footer( 'wp-activate' );
1 <?php
2 /**
3 * WordPress Ajax Process Execution
4 *
5 * @package WordPress
6 * @subpackage Administration
7 *
8 * @link https://codex.wordpress.org/AJAX_in_Plugins
9 */
10
11 /**
12 * Executing Ajax process.
13 *
14 * @since 2.1.0
15 */
16 define( 'DOING_AJAX', true );
17 if ( ! defined( 'WP_ADMIN' ) ) {
18 define( 'WP_ADMIN', true );
19 }
20
21 /** Load WordPress Bootstrap */
22 require_once dirname( __DIR__ ) . '/wp-load.php';
23
24 /** Allow for cross-domain requests (from the front end). */
25 send_origin_headers();
26
27 header( 'Content-Type: text/html; charset=' . get_option( 'blog_charset' ) );
28 header( 'X-Robots-Tag: noindex' );
29
30 // Require an action parameter.
31 if ( empty( $_REQUEST['action'] ) ) {
32 wp_die( '0', 400 );
33 }
34
35 /** Load WordPress Administration APIs */
36 require_once ABSPATH . 'wp-admin/includes/admin.php';
37
38 /** Load Ajax Handlers for WordPress Core */
39 require_once ABSPATH . 'wp-admin/includes/ajax-actions.php';
40
41 send_nosniff_header();
42 nocache_headers();
43
44 /** This action is documented in wp-admin/admin.php */
45 do_action( 'admin_init' );
46
47 $core_actions_get = array(
48 'fetch-list',
49 'ajax-tag-search',
50 'wp-compression-test',
51 'imgedit-preview',
52 'oembed-cache',
53 'autocomplete-user',
54 'dashboard-widgets',
55 'logged-in',
56 'rest-nonce',
57 );
58
59 $core_actions_post = array(
60 'oembed-cache',
61 'image-editor',
62 'delete-comment',
63 'delete-tag',
64 'delete-link',
65 'delete-meta',
66 'delete-post',
67 'trash-post',
68 'untrash-post',
69 'delete-page',
70 'dim-comment',
71 'add-link-category',
72 'add-tag',
73 'get-tagcloud',
74 'get-comments',
75 'replyto-comment',
76 'edit-comment',
77 'add-menu-item',
78 'add-meta',
79 'add-user',
80 'closed-postboxes',
81 'hidden-columns',
82 'update-welcome-panel',
83 'menu-get-metabox',
84 'wp-link-ajax',
85 'menu-locations-save',
86 'menu-quick-search',
87 'meta-box-order',
88 'get-permalink',
89 'sample-permalink',
90 'inline-save',
91 'inline-save-tax',
92 'find_posts',
93 'widgets-order',
94 'save-widget',
95 'delete-inactive-widgets',
96 'set-post-thumbnail',
97 'date_format',
98 'time_format',
99 'wp-remove-post-lock',
100 'dismiss-wp-pointer',
101 'upload-attachment',
102 'get-attachment',
103 'query-attachments',
104 'save-attachment',
105 'save-attachment-compat',
106 'send-link-to-editor',
107 'send-attachment-to-editor',
108 'save-attachment-order',
109 'media-create-image-subsizes',
110 'heartbeat',
111 'get-revision-diffs',
112 'save-user-color-scheme',
113 'update-widget',
114 'query-themes',
115 'parse-embed',
116 'set-attachment-thumbnail',
117 'parse-media-shortcode',
118 'destroy-sessions',
119 'install-plugin',
120 'update-plugin',
121 'crop-image',
122 'generate-password',
123 'save-wporg-username',
124 'delete-plugin',
125 'search-plugins',
126 'search-install-plugins',
127 'activate-plugin',
128 'update-theme',
129 'delete-theme',
130 'install-theme',
131 'get-post-thumbnail-html',
132 'get-community-events',
133 'edit-theme-plugin-file',
134 'wp-privacy-export-personal-data',
135 'wp-privacy-erase-personal-data',
136 'health-check-site-status-result',
137 'health-check-dotorg-communication',
138 'health-check-is-in-debug-mode',
139 'health-check-background-updates',
140 'health-check-loopback-requests',
141 'health-check-get-sizes',
142 'toggle-auto-updates',
143 'send-password-reset',
144 );
145
146 // Deprecated.
147 $core_actions_post_deprecated = array(
148 'wp-fullscreen-save-post',
149 'press-this-save-post',
150 'press-this-add-category',
151 'health-check-dotorg-communication',
152 'health-check-is-in-debug-mode',
153 'health-check-background-updates',
154 'health-check-loopback-requests',
155 );
156 $core_actions_post = array_merge( $core_actions_post, $core_actions_post_deprecated );
157
158 // Register core Ajax calls.
159 if ( ! empty( $_GET['action'] ) && in_array( $_GET['action'], $core_actions_get, true ) ) {
160 add_action( 'wp_ajax_' . $_GET['action'], 'wp_ajax_' . str_replace( '-', '_', $_GET['action'] ), 1 );
161 }
162
163 if ( ! empty( $_POST['action'] ) && in_array( $_POST['action'], $core_actions_post, true ) ) {
164 add_action( 'wp_ajax_' . $_POST['action'], 'wp_ajax_' . str_replace( '-', '_', $_POST['action'] ), 1 );
165 }
166
167 add_action( 'wp_ajax_nopriv_generate-password', 'wp_ajax_nopriv_generate_password' );
168
169 add_action( 'wp_ajax_nopriv_heartbeat', 'wp_ajax_nopriv_heartbeat', 1 );
170
171 $action = ( isset( $_REQUEST['action'] ) ) ? $_REQUEST['action'] : '';
172
173 if ( is_user_logged_in() ) {
174 // If no action is registered, return a Bad Request response.
175 if ( ! has_action( "wp_ajax_{$action}" ) ) {
176 wp_die( '0', 400 );
177 }
178
179 /**
180 * Fires authenticated Ajax actions for logged-in users.
181 *
182 * The dynamic portion of the hook name, `$action`, refers
183 * to the name of the Ajax action callback being fired.
184 *
185 * @since 2.1.0
186 */
187 do_action( "wp_ajax_{$action}" );
188 } else {
189 // If no action is registered, return a Bad Request response.
190 if ( ! has_action( "wp_ajax_nopriv_{$action}" ) ) {
191 wp_die( '0', 400 );
192 }
193
194 /**
195 * Fires non-authenticated Ajax actions for logged-out users.
196 *
197 * The dynamic portion of the hook name, `$action`, refers
198 * to the name of the Ajax action callback being fired.
199 *
200 * @since 2.8.0
201 */
202 do_action( "wp_ajax_nopriv_{$action}" );
203 }
204 // Default status.
205 wp_die( '0' );
1 <?php
2 /**
3 * WordPress Administration Template Footer
4 *
5 * @package WordPress
6 * @subpackage Administration
7 */
8
9 // Don't load directly.
10 if ( ! defined( 'ABSPATH' ) ) {
11 die( '-1' );
12 }
13
14 /**
15 * @global string $hook_suffix
16 */
17 global $hook_suffix;
18 ?>
19
20 <div class="clear"></div></div><!-- wpbody-content -->
21 <div class="clear"></div></div><!-- wpbody -->
22 <div class="clear"></div></div><!-- wpcontent -->
23
24 <div id="wpfooter" role="contentinfo">
25 <?php
26 /**
27 * Fires after the opening tag for the admin footer.
28 *
29 * @since 2.5.0
30 */
31 do_action( 'in_admin_footer' );
32 ?>
33 <p id="footer-left" class="alignleft">
34 <?php
35 $text = sprintf(
36 /* translators: %s: https://wordpress.org/ */
37 __( 'Thank you for creating with <a href="%s">WordPress</a>.' ),
38 __( 'https://wordpress.org/' )
39 );
40
41 /**
42 * Filters the "Thank you" text displayed in the admin footer.
43 *
44 * @since 2.8.0
45 *
46 * @param string $text The content that will be printed.
47 */
48 echo apply_filters( 'admin_footer_text', '<span id="footer-thankyou">' . $text . '</span>' );
49 ?>
50 </p>
51 <p id="footer-upgrade" class="alignright">
52 <?php
53 /**
54 * Filters the version/update text displayed in the admin footer.
55 *
56 * WordPress prints the current version and update information,
57 * using core_update_footer() at priority 10.
58 *
59 * @since 2.3.0
60 *
61 * @see core_update_footer()
62 *
63 * @param string $content The content that will be printed.
64 */
65 echo apply_filters( 'update_footer', '' );
66 ?>
67 </p>
68 <div class="clear"></div>
69 </div>
70 <?php
71 /**
72 * Prints scripts or data before the default footer scripts.
73 *
74 * @since 1.2.0
75 *
76 * @param string $data The data to print.
77 */
78 do_action( 'admin_footer', '' );
79
80 /**
81 * Prints scripts and data queued for the footer.
82 *
83 * The dynamic portion of the hook name, `$hook_suffix`,
84 * refers to the global hook suffix of the current page.
85 *
86 * @since 4.6.0
87 */
88 do_action( "admin_print_footer_scripts-{$hook_suffix}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
89
90 /**
91 * Prints any scripts and data queued for the footer.
92 *
93 * @since 2.8.0
94 */
95 do_action( 'admin_print_footer_scripts' );
96
97 /**
98 * Prints scripts or data after the default footer scripts.
99 *
100 * The dynamic portion of the hook name, `$hook_suffix`,
101 * refers to the global hook suffix of the current page.
102 *
103 * @since 2.8.0
104 */
105 do_action( "admin_footer-{$hook_suffix}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
106
107 // get_site_option() won't exist when auto upgrading from <= 2.7.
108 if ( function_exists( 'get_site_option' )
109 && false === get_site_option( 'can_compress_scripts' )
110 ) {
111 compression_test();
112 }
113
114 ?>
115
116 <div class="clear"></div></div><!-- wpwrap -->
117 <script type="text/javascript">if(typeof wpOnload==='function')wpOnload();</script>
118 </body>
119 </html>
1 <?php
2 /**
3 * Administration Functions
4 *
5 * This file is deprecated, use 'wp-admin/includes/admin.php' instead.
6 *
7 * @deprecated 2.5.0
8 * @package WordPress
9 * @subpackage Administration
10 */
11
12 _deprecated_file( basename( __FILE__ ), '2.5.0', 'wp-admin/includes/admin.php' );
13
14 /** WordPress Administration API: Includes all Administration functions. */
15 require_once ABSPATH . 'wp-admin/includes/admin.php';
1 <?php
2 /**
3 * WordPress Administration Template Header
4 *
5 * @package WordPress
6 * @subpackage Administration
7 */
8
9 header( 'Content-Type: ' . get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ) );
10 if ( ! defined( 'WP_ADMIN' ) ) {
11 require_once __DIR__ . '/admin.php';
12 }
13
14 /**
15 * In case admin-header.php is included in a function.
16 *
17 * @global string $title
18 * @global string $hook_suffix
19 * @global WP_Screen $current_screen WordPress current screen object.
20 * @global WP_Locale $wp_locale WordPress date and time locale object.
21 * @global string $pagenow
22 * @global string $update_title
23 * @global int $total_update_count
24 * @global string $parent_file
25 */
26 global $title, $hook_suffix, $current_screen, $wp_locale, $pagenow,
27 $update_title, $total_update_count, $parent_file;
28
29 // Catch plugins that include admin-header.php before admin.php completes.
30 if ( empty( $current_screen ) ) {
31 set_current_screen();
32 }
33
34 get_admin_page_title();
35 $title = strip_tags( $title );
36
37 if ( is_network_admin() ) {
38 /* translators: Network admin screen title. %s: Network title. */
39 $admin_title = sprintf( __( 'Network Admin: %s' ), get_network()->site_name );
40 } elseif ( is_user_admin() ) {
41 /* translators: User dashboard screen title. %s: Network title. */
42 $admin_title = sprintf( __( 'User Dashboard: %s' ), get_network()->site_name );
43 } else {
44 $admin_title = get_bloginfo( 'name' );
45 }
46
47 if ( $admin_title === $title ) {
48 /* translators: Admin screen title. %s: Admin screen name. */
49 $admin_title = sprintf( __( '%s &#8212; WordPress' ), $title );
50 } else {
51 /* translators: Admin screen title. 1: Admin screen name, 2: Network or site name. */
52 $admin_title = sprintf( __( '%1$s &lsaquo; %2$s &#8212; WordPress' ), $title, $admin_title );
53 }
54
55 if ( wp_is_recovery_mode() ) {
56 /* translators: %s: Admin screen title. */
57 $admin_title = sprintf( __( 'Recovery Mode &#8212; %s' ), $admin_title );
58 }
59
60 /**
61 * Filters the title tag content for an admin page.
62 *
63 * @since 3.1.0
64 *
65 * @param string $admin_title The page title, with extra context added.
66 * @param string $title The original page title.
67 */
68 $admin_title = apply_filters( 'admin_title', $admin_title, $title );
69
70 wp_user_settings();
71
72 _wp_admin_html_begin();
73 ?>
74 <title><?php echo esc_html( $admin_title ); ?></title>
75 <?php
76
77 wp_enqueue_style( 'colors' );
78 wp_enqueue_script( 'utils' );
79 wp_enqueue_script( 'svg-painter' );
80
81 $admin_body_class = preg_replace( '/[^a-z0-9_-]+/i', '-', $hook_suffix );
82 ?>
83 <script type="text/javascript">
84 addLoadEvent = function(func){if(typeof jQuery!=='undefined')jQuery(document).ready(func);else if(typeof wpOnload!=='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
85 var ajaxurl = '<?php echo esc_js( admin_url( 'admin-ajax.php', 'relative' ) ); ?>',
86 pagenow = '<?php echo esc_js( $current_screen->id ); ?>',
87 typenow = '<?php echo esc_js( $current_screen->post_type ); ?>',
88 adminpage = '<?php echo esc_js( $admin_body_class ); ?>',
89 thousandsSeparator = '<?php echo esc_js( $wp_locale->number_format['thousands_sep'] ); ?>',
90 decimalPoint = '<?php echo esc_js( $wp_locale->number_format['decimal_point'] ); ?>',
91 isRtl = <?php echo (int) is_rtl(); ?>;
92 </script>
93 <?php
94
95 /**
96 * Enqueue scripts for all admin pages.
97 *
98 * @since 2.8.0
99 *
100 * @param string $hook_suffix The current admin page.
101 */
102 do_action( 'admin_enqueue_scripts', $hook_suffix );
103
104 /**
105 * Fires when styles are printed for a specific admin page based on $hook_suffix.
106 *
107 * @since 2.6.0
108 */
109 do_action( "admin_print_styles-{$hook_suffix}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
110
111 /**
112 * Fires when styles are printed for all admin pages.
113 *
114 * @since 2.6.0
115 */
116 do_action( 'admin_print_styles' );
117
118 /**
119 * Fires when scripts are printed for a specific admin page based on $hook_suffix.
120 *
121 * @since 2.1.0
122 */
123 do_action( "admin_print_scripts-{$hook_suffix}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
124
125 /**
126 * Fires when scripts are printed for all admin pages.
127 *
128 * @since 2.1.0
129 */
130 do_action( 'admin_print_scripts' );
131
132 /**
133 * Fires in head section for a specific admin page.
134 *
135 * The dynamic portion of the hook, `$hook_suffix`, refers to the hook suffix
136 * for the admin page.
137 *
138 * @since 2.1.0
139 */
140 do_action( "admin_head-{$hook_suffix}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
141
142 /**
143 * Fires in head section for all admin pages.
144 *
145 * @since 2.1.0
146 */
147 do_action( 'admin_head' );
148
149 if ( 'f' === get_user_setting( 'mfold' ) ) {
150 $admin_body_class .= ' folded';
151 }
152
153 if ( ! get_user_setting( 'unfold' ) ) {
154 $admin_body_class .= ' auto-fold';
155 }
156
157 if ( is_admin_bar_showing() ) {
158 $admin_body_class .= ' admin-bar';
159 }
160
161 if ( is_rtl() ) {
162 $admin_body_class .= ' rtl';
163 }
164
165 if ( $current_screen->post_type ) {
166 $admin_body_class .= ' post-type-' . $current_screen->post_type;
167 }
168
169 if ( $current_screen->taxonomy ) {
170 $admin_body_class .= ' taxonomy-' . $current_screen->taxonomy;
171 }
172
173 $admin_body_class .= ' branch-' . str_replace( array( '.', ',' ), '-', (float) get_bloginfo( 'version' ) );
174 $admin_body_class .= ' version-' . str_replace( '.', '-', preg_replace( '/^([.0-9]+).*/', '$1', get_bloginfo( 'version' ) ) );
175 $admin_body_class .= ' admin-color-' . sanitize_html_class( get_user_option( 'admin_color' ), 'fresh' );
176 $admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_user_locale() ) ) );
177
178 if ( wp_is_mobile() ) {
179 $admin_body_class .= ' mobile';
180 }
181
182 if ( is_multisite() ) {
183 $admin_body_class .= ' multisite';
184 }
185
186 if ( is_network_admin() ) {
187 $admin_body_class .= ' network-admin';
188 }
189
190 $admin_body_class .= ' no-customize-support no-svg';
191
192 if ( $current_screen->is_block_editor() ) {
193 $admin_body_class .= ' block-editor-page wp-embed-responsive';
194 }
195
196 $error_get_last = error_get_last();
197
198 // Print a CSS class to make PHP errors visible.
199 if ( $error_get_last && WP_DEBUG && WP_DEBUG_DISPLAY && ini_get( 'display_errors' )
200 // Don't print the class for PHP notices in wp-config.php, as they happen before WP_DEBUG takes effect,
201 // and should not be displayed with the `error_reporting` level previously set in wp-load.php.
202 && ( E_NOTICE !== $error_get_last['type'] || 'wp-config.php' !== wp_basename( $error_get_last['file'] ) )
203 ) {
204 $admin_body_class .= ' php-error';
205 }
206
207 unset( $error_get_last );
208
209 ?>
210 </head>
211 <?php
212 /**
213 * Filters the CSS classes for the body tag in the admin.
214 *
215 * This filter differs from the {@see 'post_class'} and {@see 'body_class'} filters
216 * in two important ways:
217 *
218 * 1. `$classes` is a space-separated string of class names instead of an array.
219 * 2. Not all core admin classes are filterable, notably: wp-admin, wp-core-ui,
220 * and no-js cannot be removed.
221 *
222 * @since 2.3.0
223 *
224 * @param string $classes Space-separated list of CSS classes.
225 */
226 $admin_body_classes = apply_filters( 'admin_body_class', '' );
227 $admin_body_classes = ltrim( $admin_body_classes . ' ' . $admin_body_class );
228 ?>
229 <body class="wp-admin wp-core-ui no-js <?php echo $admin_body_classes; ?>">
230 <script type="text/javascript">
231 document.body.className = document.body.className.replace('no-js','js');
232 </script>
233
234 <?php
235 // Make sure the customize body classes are correct as early as possible.
236 if ( current_user_can( 'customize' ) ) {
237 wp_customize_support_script();
238 }
239 ?>
240
241 <div id="wpwrap">
242 <?php require ABSPATH . 'wp-admin/menu-header.php'; ?>
243 <div id="wpcontent">
244
245 <?php
246 /**
247 * Fires at the beginning of the content section in an admin page.
248 *
249 * @since 3.0.0
250 */
251 do_action( 'in_admin_header' );
252 ?>
253
254 <div id="wpbody" role="main">
255 <?php
256 unset( $blog_name, $total_update_count, $update_title );
257
258 $current_screen->set_parentage( $parent_file );
259
260 ?>
261
262 <div id="wpbody-content">
263 <?php
264
265 $current_screen->render_screen_meta();
266
267 if ( is_network_admin() ) {
268 /**
269 * Prints network admin screen notices.
270 *
271 * @since 3.1.0
272 */
273 do_action( 'network_admin_notices' );
274 } elseif ( is_user_admin() ) {
275 /**
276 * Prints user admin screen notices.
277 *
278 * @since 3.1.0
279 */
280 do_action( 'user_admin_notices' );
281 } else {
282 /**
283 * Prints admin screen notices.
284 *
285 * @since 3.1.0
286 */
287 do_action( 'admin_notices' );
288 }
289
290 /**
291 * Prints generic admin screen notices.
292 *
293 * @since 3.1.0
294 */
295 do_action( 'all_admin_notices' );
296
297 if ( 'options-general.php' === $parent_file ) {
298 require ABSPATH . 'wp-admin/options-head.php';
299 }
1 <?php
2 /**
3 * WordPress Generic Request (POST/GET) Handler
4 *
5 * Intended for form submission handling in themes and plugins.
6 *
7 * @package WordPress
8 * @subpackage Administration
9 */
10
11 /** We are located in WordPress Administration Screens */
12 if ( ! defined( 'WP_ADMIN' ) ) {
13 define( 'WP_ADMIN', true );
14 }
15
16 if ( defined( 'ABSPATH' ) ) {
17 require_once ABSPATH . 'wp-load.php';
18 } else {
19 require_once dirname( __DIR__ ) . '/wp-load.php';
20 }
21
22 /** Allow for cross-domain requests (from the front end). */
23 send_origin_headers();
24
25 require_once ABSPATH . 'wp-admin/includes/admin.php';
26
27 nocache_headers();
28
29 /** This action is documented in wp-admin/admin.php */
30 do_action( 'admin_init' );
31
32 $action = empty( $_REQUEST['action'] ) ? '' : $_REQUEST['action'];
33
34 if ( ! is_user_logged_in() ) {
35 if ( empty( $action ) ) {
36 /**
37 * Fires on a non-authenticated admin post request where no action is supplied.
38 *
39 * @since 2.6.0
40 */
41 do_action( 'admin_post_nopriv' );
42 } else {
43 /**
44 * Fires on a non-authenticated admin post request for the given action.
45 *
46 * The dynamic portion of the hook name, `$action`, refers to the given
47 * request action.
48 *
49 * @since 2.6.0
50 */
51 do_action( "admin_post_nopriv_{$action}" );
52 }
53 } else {
54 if ( empty( $action ) ) {
55 /**
56 * Fires on an authenticated admin post request where no action is supplied.
57 *
58 * @since 2.6.0
59 */
60 do_action( 'admin_post' );
61 } else {
62 /**
63 * Fires on an authenticated admin post request for the given action.
64 *
65 * The dynamic portion of the hook name, `$action`, refers to the given
66 * request action.
67 *
68 * @since 2.6.0
69 */
70 do_action( "admin_post_{$action}" );
71 }
72 }
1 <?php
2 /**
3 * Server-side file upload handler from wp-plupload or other asynchronous upload methods.
4 *
5 * @package WordPress
6 * @subpackage Administration
7 */
8
9 if ( isset( $_REQUEST['action'] ) && 'upload-attachment' === $_REQUEST['action'] ) {
10 define( 'DOING_AJAX', true );
11 }
12
13 if ( ! defined( 'WP_ADMIN' ) ) {
14 define( 'WP_ADMIN', true );
15 }
16
17 if ( defined( 'ABSPATH' ) ) {
18 require_once ABSPATH . 'wp-load.php';
19 } else {
20 require_once dirname( __DIR__ ) . '/wp-load.php';
21 }
22
23 require_once ABSPATH . 'wp-admin/admin.php';
24
25 header( 'Content-Type: text/plain; charset=' . get_option( 'blog_charset' ) );
26
27 if ( isset( $_REQUEST['action'] ) && 'upload-attachment' === $_REQUEST['action'] ) {
28 require ABSPATH . 'wp-admin/includes/ajax-actions.php';
29
30 send_nosniff_header();
31 nocache_headers();
32
33 wp_ajax_upload_attachment();
34 die( '0' );
35 }
36
37 if ( ! current_user_can( 'upload_files' ) ) {
38 wp_die( __( 'Sorry, you are not allowed to upload files.' ) );
39 }
40
41 // Just fetch the detail form for that attachment.
42 if ( isset( $_REQUEST['attachment_id'] ) && (int) $_REQUEST['attachment_id'] && $_REQUEST['fetch'] ) {
43 $id = (int) $_REQUEST['attachment_id'];
44 $post = get_post( $id );
45 if ( 'attachment' !== $post->post_type ) {
46 wp_die( __( 'Invalid post type.' ) );
47 }
48
49 switch ( $_REQUEST['fetch'] ) {
50 case 3:
51 ?>
52 <div class="media-item-wrapper">
53 <div class="attachment-details">
54 <?php
55 $thumb_url = wp_get_attachment_image_src( $id, 'thumbnail', true );
56 if ( $thumb_url ) {
57 echo '<img class="pinkynail" src="' . esc_url( $thumb_url[0] ) . '" alt="" />';
58 }
59
60 // Title shouldn't ever be empty, but use filename just in case.
61 $file = get_attached_file( $post->ID );
62 $file_url = wp_get_attachment_url( $post->ID );
63 $title = $post->post_title ? $post->post_title : wp_basename( $file );
64 ?>
65 <div class="filename new">
66 <span class="media-list-title"><strong><?php echo esc_html( wp_html_excerpt( $title, 60, '&hellip;' ) ); ?></strong></span>
67 <span class="media-list-subtitle"><?php echo wp_basename( $file ); ?></span>
68 </div>
69 </div>
70 <div class="attachment-tools">
71 <span class="media-item-copy-container copy-to-clipboard-container edit-attachment">
72 <button type="button" class="button button-small copy-attachment-url" data-clipboard-text="<?php echo $file_url; ?>"><?php _e( 'Copy URL to clipboard' ); ?></button>
73 <span class="success hidden" aria-hidden="true"><?php _e( 'Copied!' ); ?></span>
74 </span>
75 <?php
76 if ( current_user_can( 'edit_post', $id ) ) {
77 echo '<a class="edit-attachment" href="' . esc_url( get_edit_post_link( $id ) ) . '" target="_blank">' . _x( 'Edit', 'media item' ) . '</a>';
78 } else {
79 echo '<span class="edit-attachment">' . _x( 'Success', 'media item' ) . '</span>';
80 }
81 ?>
82 </div>
83 </div>
84 <?php
85 break;
86 case 2:
87 add_filter( 'attachment_fields_to_edit', 'media_single_attachment_fields_to_edit', 10, 2 );
88 echo get_media_item(
89 $id,
90 array(
91 'send' => false,
92 'delete' => true,
93 )
94 );
95 break;
96 default:
97 add_filter( 'attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2 );
98 echo get_media_item( $id );
99 break;
100 }
101 exit;
102 }
103
104 check_admin_referer( 'media-form' );
105
106 $post_id = 0;
107 if ( isset( $_REQUEST['post_id'] ) ) {
108 $post_id = absint( $_REQUEST['post_id'] );
109 if ( ! get_post( $post_id ) || ! current_user_can( 'edit_post', $post_id ) ) {
110 $post_id = 0;
111 }
112 }
113
114 $id = media_handle_upload( 'async-upload', $post_id );
115 if ( is_wp_error( $id ) ) {
116 printf(
117 '<div class="error-div error">%s <strong>%s</strong><br />%s</div>',
118 sprintf(
119 '<button type="button" class="dismiss button-link" onclick="jQuery(this).parents(\'div.media-item\').slideUp(200, function(){jQuery(this).remove();});">%s</button>',
120 __( 'Dismiss' )
121 ),
122 sprintf(
123 /* translators: %s: Name of the file that failed to upload. */
124 __( '&#8220;%s&#8221; has failed to upload.' ),
125 esc_html( $_FILES['async-upload']['name'] )
126 ),
127 esc_html( $id->get_error_message() )
128 );
129 exit;
130 }
131
132 if ( $_REQUEST['short'] ) {
133 // Short form response - attachment ID only.
134 echo $id;
135 } else {
136 // Long form response - big chunk of HTML.
137 $type = $_REQUEST['type'];
138
139 /**
140 * Filters the returned ID of an uploaded attachment.
141 *
142 * The dynamic portion of the hook name, `$type`, refers to the attachment type.
143 *
144 * Possible hook names include:
145 *
146 * - `async_upload_audio`
147 * - `async_upload_file`
148 * - `async_upload_image`
149 * - `async_upload_video`
150 *
151 * @since 2.5.0
152 *
153 * @param int $id Uploaded attachment ID.
154 */
155 echo apply_filters( "async_upload_{$type}", $id );
156 }
1 <?php
2 /**
3 * Authorize Application Screen
4 *
5 * @package WordPress
6 * @subpackage Administration
7 */
8
9 /** WordPress Administration Bootstrap */
10 require_once __DIR__ . '/admin.php';
11
12 $error = null;
13 $new_password = '';
14
15 // This is the no-js fallback script. Generally this will all be handled by `auth-app.js`.
16 if ( isset( $_POST['action'] ) && 'authorize_application_password' === $_POST['action'] ) {
17 check_admin_referer( 'authorize_application_password' );
18
19 $success_url = $_POST['success_url'];
20 $reject_url = $_POST['reject_url'];
21 $app_name = $_POST['app_name'];
22 $app_id = $_POST['app_id'];
23 $redirect = '';
24
25 if ( isset( $_POST['reject'] ) ) {
26 if ( $reject_url ) {
27 $redirect = $reject_url;
28 } else {
29 $redirect = admin_url();
30 }
31 } elseif ( isset( $_POST['approve'] ) ) {
32 $created = WP_Application_Passwords::create_new_application_password(
33 get_current_user_id(),
34 array(
35 'name' => $app_name,
36 'app_id' => $app_id,
37 )
38 );
39
40 if ( is_wp_error( $created ) ) {
41 $error = $created;
42 } else {
43 list( $new_password ) = $created;
44
45 if ( $success_url ) {
46 $redirect = add_query_arg(
47 array(
48 'site_url' => urlencode( site_url() ),
49 'user_login' => urlencode( wp_get_current_user()->user_login ),
50 'password' => urlencode( $new_password ),
51 ),
52 $success_url
53 );
54 }
55 }
56 }
57
58 if ( $redirect ) {
59 // Explicitly not using wp_safe_redirect b/c sends to arbitrary domain.
60 wp_redirect( $redirect );
61 exit;
62 }
63 }
64
65 $title = __( 'Authorize Application' );
66
67 $app_name = ! empty( $_REQUEST['app_name'] ) ? $_REQUEST['app_name'] : '';
68 $app_id = ! empty( $_REQUEST['app_id'] ) ? $_REQUEST['app_id'] : '';
69 $success_url = ! empty( $_REQUEST['success_url'] ) ? $_REQUEST['success_url'] : null;
70
71 if ( ! empty( $_REQUEST['reject_url'] ) ) {
72 $reject_url = $_REQUEST['reject_url'];
73 } elseif ( $success_url ) {
74 $reject_url = add_query_arg( 'success', 'false', $success_url );
75 } else {
76 $reject_url = null;
77 }
78
79 $user = wp_get_current_user();
80
81 $request = compact( 'app_name', 'app_id', 'success_url', 'reject_url' );
82 $is_valid = wp_is_authorize_application_password_request_valid( $request, $user );
83
84 if ( is_wp_error( $is_valid ) ) {
85 wp_die(
86 __( 'The Authorize Application request is not allowed.' ) . ' ' . implode( ' ', $is_valid->get_error_messages() ),
87 __( 'Cannot Authorize Application' )
88 );
89 }
90
91 if ( wp_is_site_protected_by_basic_auth( 'front' ) ) {
92 wp_die(
93 __( 'Your website appears to use Basic Authentication, which is not currently compatible with Application Passwords.' ),
94 __( 'Cannot Authorize Application' ),
95 array(
96 'response' => 501,
97 'link_text' => __( 'Go Back' ),
98 'link_url' => $reject_url ? add_query_arg( 'error', 'disabled', $reject_url ) : admin_url(),
99 )
100 );
101 }
102
103 if ( ! wp_is_application_passwords_available_for_user( $user ) ) {
104 if ( wp_is_application_passwords_available() ) {
105 $message = __( 'Application passwords are not available for your account. Please contact the site administrator for assistance.' );
106 } else {
107 $message = __( 'Application passwords are not available.' );
108 }
109
110 wp_die(
111 $message,
112 __( 'Cannot Authorize Application' ),
113 array(
114 'response' => 501,
115 'link_text' => __( 'Go Back' ),
116 'link_url' => $reject_url ? add_query_arg( 'error', 'disabled', $reject_url ) : admin_url(),
117 )
118 );
119 }
120
121 wp_enqueue_script( 'auth-app' );
122 wp_localize_script(
123 'auth-app',
124 'authApp',
125 array(
126 'site_url' => site_url(),
127 'user_login' => $user->user_login,
128 'success' => $success_url,
129 'reject' => $reject_url ? $reject_url : admin_url(),
130 )
131 );
132
133 require_once ABSPATH . 'wp-admin/admin-header.php';
134
135 ?>
136 <div class="wrap">
137 <h1><?php echo esc_html( $title ); ?></h1>
138
139 <?php if ( is_wp_error( $error ) ) : ?>
140 <div class="notice notice-error"><p><?php echo $error->get_error_message(); ?></p></div>
141 <?php endif; ?>
142
143 <div class="card auth-app-card">
144 <h2 class="title"><?php _e( 'An application would like to connect to your account.' ); ?></h2>
145 <?php if ( $app_name ) : ?>
146 <p>
147 <?php
148 printf(
149 /* translators: %s: Application name. */
150 __( 'Would you like to give the application identifying itself as %s access to your account? You should only do this if you trust the app in question.' ),
151 '<strong>' . esc_html( $app_name ) . '</strong>'
152 );
153 ?>
154 </p>
155 <?php else : ?>
156 <p><?php _e( 'Would you like to give this application access to your account? You should only do this if you trust the app in question.' ); ?></p>
157 <?php endif; ?>
158
159 <?php
160 if ( is_multisite() ) {
161 $blogs = get_blogs_of_user( $user->ID, true );
162 $blogs_count = count( $blogs );
163 if ( $blogs_count > 1 ) {
164 ?>
165 <p>
166 <?php
167 printf(
168 /* translators: 1: URL to my-sites.php, 2: Number of sites the user has. */
169 _n(
170 'This will grant access to <a href="%1$s">the %2$s site in this installation that you have permissions on</a>.',
171 'This will grant access to <a href="%1$s">all %2$s sites in this installation that you have permissions on</a>.',
172 $blogs_count
173 ),
174 admin_url( 'my-sites.php' ),
175 number_format_i18n( $blogs_count )
176 );
177 ?>
178 </p>
179 <?php
180 }
181 }
182 ?>
183
184 <?php if ( $new_password ) : ?>
185 <div class="notice notice-success notice-alt below-h2">
186 <p class="application-password-display">
187 <label for="new-application-password-value">
188 <?php
189 printf(
190 /* translators: %s: Application name. */
191 esc_html__( 'Your new password for %s is:' ),
192 '<strong>' . esc_html( $app_name ) . '</strong>'
193 );
194 ?>
195 </label>
196 <input id="new-application-password-value" type="text" class="code" readonly="readonly" value="<?php esc_attr( WP_Application_Passwords::chunk_password( $new_password ) ); ?>" />
197 </p>
198 <p><?php _e( 'Be sure to save this in a safe location. You will not be able to retrieve it.' ); ?></p>
199 </div>
200
201 <?php
202 /**
203 * Fires in the Authorize Application Password new password section in the no-JS version.
204 *
205 * In most cases, this should be used in combination with the {@see 'wp_application_passwords_approve_app_request_success'}
206 * action to ensure that both the JS and no-JS variants are handled.
207 *
208 * @since 5.6.0
209 * @since 5.6.1 Corrected action name and signature.
210 *
211 * @param string $new_password The newly generated application password.
212 * @param array $request The array of request data. All arguments are optional and may be empty.
213 * @param WP_User $user The user authorizing the application.
214 */
215 do_action( 'wp_authorize_application_password_form_approved_no_js', $new_password, $request, $user );
216 ?>
217 <?php else : ?>
218 <form action="<?php echo esc_url( admin_url( 'authorize-application.php' ) ); ?>" method="post" class="form-wrap">
219 <?php wp_nonce_field( 'authorize_application_password' ); ?>
220 <input type="hidden" name="action" value="authorize_application_password" />
221 <input type="hidden" name="app_id" value="<?php echo esc_attr( $app_id ); ?>" />
222 <input type="hidden" name="success_url" value="<?php echo esc_url( $success_url ); ?>" />
223 <input type="hidden" name="reject_url" value="<?php echo esc_url( $reject_url ); ?>" />
224
225 <div class="form-field">
226 <label for="app_name"><?php _e( 'New Application Password Name' ); ?></label>
227 <input type="text" id="app_name" name="app_name" value="<?php echo esc_attr( $app_name ); ?>" placeholder="<?php esc_attr_e( 'WordPress App on My Phone' ); ?>" required />
228 </div>
229
230 <?php
231 /**
232 * Fires in the Authorize Application Password form before the submit buttons.
233 *
234 * @since 5.6.0
235 *
236 * @param array $request {
237 * The array of request data. All arguments are optional and may be empty.
238 *
239 * @type string $app_name The suggested name of the application.
240 * @type string $success_url The url the user will be redirected to after approving the application.
241 * @type string $reject_url The url the user will be redirected to after rejecting the application.
242 * }
243 * @param WP_User $user The user authorizing the application.
244 */
245 do_action( 'wp_authorize_application_password_form', $request, $user );
246 ?>
247
248 <?php
249 submit_button(
250 __( 'Yes, I approve of this connection.' ),
251 'primary',
252 'approve',
253 false,
254 array(
255 'aria-describedby' => 'description-approve',
256 )
257 );
258 ?>
259 <p class="description" id="description-approve">
260 <?php
261 if ( $success_url ) {
262 printf(
263 /* translators: %s: The URL the user is being redirected to. */
264 __( 'You will be sent to %s' ),
265 '<strong><kbd>' . esc_html(
266 add_query_arg(
267 array(
268 'site_url' => site_url(),
269 'user_login' => $user->user_login,
270 'password' => '[------]',
271 ),
272 $success_url
273 )
274 ) . '</kbd></strong>'
275 );
276 } else {
277 _e( 'You will be given a password to manually enter into the application in question.' );
278 }
279 ?>
280 </p>
281
282 <?php
283 submit_button(
284 __( 'No, I do not approve of this connection.' ),
285 'secondary',
286 'reject',
287 false,
288 array(
289 'aria-describedby' => 'description-reject',
290 )
291 );
292 ?>
293 <p class="description" id="description-reject">
294 <?php
295 if ( $reject_url ) {
296 printf(
297 /* translators: %s: The URL the user is being redirected to. */
298 __( 'You will be sent to %s' ),
299 '<strong><kbd>' . esc_html( $reject_url ) . '</kbd></strong>'
300 );
301 } else {
302 _e( 'You will be returned to the WordPress Dashboard, and no changes will be made.' );
303 }
304 ?>
305 </p>
306 </form>
307 <?php endif; ?>
308 </div>
309 </div>
310 <?php
311
312 require_once ABSPATH . 'wp-admin/admin-footer.php';
1 <?php
2 /**
3 * Credits administration panel.
4 *
5 * @package WordPress
6 * @subpackage Administration
7 */
8
9 /** WordPress Administration Bootstrap */
10 require_once __DIR__ . '/admin.php';
11 require_once __DIR__ . '/includes/credits.php';
12
13 $title = __( 'Credits' );
14
15 list( $display_version ) = explode( '-', get_bloginfo( 'version' ) );
16
17 require_once ABSPATH . 'wp-admin/admin-header.php';
18
19 $credits = wp_credits();
20 ?>
21 <div class="wrap about__container">
22
23 <div class="about__header">
24 <div class="about__header-title">
25 <h1>
26 <?php _e( 'Contributors' ); ?>
27 </h1>
28 </div>
29
30 <div class="about__header-text">
31 <?php _e( 'WordPress 5.8 was created by a worldwide team of passionate individuals' ); ?>
32 </div>
33
34 <nav class="about__header-navigation nav-tab-wrapper wp-clearfix" aria-label="<?php esc_attr_e( 'Secondary menu' ); ?>">
35 <a href="about.php" class="nav-tab"><?php _e( 'What&#8217;s New' ); ?></a>
36 <a href="credits.php" class="nav-tab nav-tab-active" aria-current="page"><?php _e( 'Credits' ); ?></a>
37 <a href="freedoms.php" class="nav-tab"><?php _e( 'Freedoms' ); ?></a>
38 <a href="privacy.php" class="nav-tab"><?php _e( 'Privacy' ); ?></a>
39 </nav>
40 </div>
41
42 <div class="about__section has-1-column">
43 <div class="column aligncenter">
44 <?php if ( ! $credits ) : ?>
45
46 <p>
47 <?php
48 printf(
49 /* translators: 1: https://wordpress.org/about/ */
50 __( 'WordPress is created by a <a href="%1$s">worldwide team</a> of passionate individuals.' ),
51 __( 'https://wordpress.org/about/' )
52 );
53 ?>
54 <br />
55 <a href="https://make.wordpress.org/"><?php _e( 'Get involved in WordPress.' ); ?></a>
56 </p>
57
58 <?php else : ?>
59
60 <p>
61 <?php _e( 'Want to see your name in lights on this page?' ); ?>
62 <br />
63 <a href="https://make.wordpress.org/"><?php _e( 'Get involved in WordPress.' ); ?></a>
64 </p>
65
66 <?php endif; ?>
67 </div>
68 </div>
69
70 <?php
71 if ( ! $credits ) {
72 echo '</div>';
73 require_once ABSPATH . 'wp-admin/admin-footer.php';
74 exit;
75 }
76 ?>
77
78 <hr />
79
80 <div class="about__section">
81 <div class="column is-edge-to-edge">
82 <?php wp_credits_section_title( $credits['groups']['core-developers'] ); ?>
83 <?php wp_credits_section_list( $credits, 'core-developers' ); ?>
84 <?php wp_credits_section_list( $credits, 'contributing-developers' ); ?>
85 </div>
86 </div>
87
88 <hr />
89
90 <div class="about__section">
91 <div class="column">
92 <?php wp_credits_section_title( $credits['groups']['props'] ); ?>
93 <?php wp_credits_section_list( $credits, 'props' ); ?>
94 </div>
95 </div>
96
97 <hr />
98
99 <?php if ( isset( $credits['groups']['translators'] ) || isset( $credits['groups']['validators'] ) ) : ?>
100 <div class="about__section">
101 <div class="column">
102 <?php wp_credits_section_title( $credits['groups']['validators'] ); ?>
103 <?php wp_credits_section_list( $credits, 'validators' ); ?>
104 <?php wp_credits_section_list( $credits, 'translators' ); ?>
105 </div>
106 </div>
107
108 <hr />
109 <?php endif; ?>
110
111 <div class="about__section">
112 <div class="column">
113 <?php wp_credits_section_title( $credits['groups']['libraries'] ); ?>
114 <?php wp_credits_section_list( $credits, 'libraries' ); ?>
115 </div>
116 </div>
117 </div>
118 <?php
119
120 require_once ABSPATH . 'wp-admin/admin-footer.php';
121
122 return;
123
124 // These are strings returned by the API that we want to be translatable.
125 __( 'Project Leaders' );
126 /* translators: %s: The current WordPress version number. */
127 __( 'Core Contributors to WordPress %s' );
128 __( 'Noteworthy Contributors' );
129 __( 'Cofounder, Project Lead' );
130 __( 'Lead Developer' );
131 __( 'Release Lead' );
132 __( 'Release Design Lead' );
133 __( 'Release Deputy' );
134 __( 'Core Developer' );
135 __( 'External Libraries' );
1 /*! This file is auto-generated */
2 .wrap [class*="CodeMirror-lint-marker"],
3 .wp-core-ui [class*="CodeMirror-lint-message"],
4 .wrap .CodeMirror-lint-marker-multiple {
5 background-image: none;
6 }
7
8 .wp-core-ui .CodeMirror-lint-marker-error,
9 .wp-core-ui .CodeMirror-lint-marker-warning {
10 cursor: help;
11 }
12
13 .wrap .CodeMirror-lint-marker-multiple {
14 position: absolute;
15 top: 0;
16 }
17
18 .wrap [class*="CodeMirror-lint-marker"]:before {
19 font: normal 18px/1 dashicons;
20 position: relative;
21 top: -2px;
22 }
23
24 .wp-core-ui [class*="CodeMirror-lint-message"]:before {
25 font: normal 16px/1 dashicons;
26 right: 16px;
27 position: absolute;
28 }
29
30 .wp-core-ui .CodeMirror-lint-message-error,
31 .wp-core-ui .CodeMirror-lint-message-warning {
32 box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
33 margin: 5px 0 2px;
34 padding: 3px 28px 3px 12px;
35 }
36
37 .wp-core-ui .CodeMirror-lint-message-warning {
38 background-color: #fcf9e8;
39 border-right: 4px solid #dba617;
40 }
41
42 .wrap .CodeMirror-lint-marker-warning:before,
43 .wp-core-ui .CodeMirror-lint-message-warning:before {
44 content: "\f534";
45 color: #dba617;
46 }
47
48 .wp-core-ui .CodeMirror-lint-message-error {
49 background-color: #fcf0f1;
50 border-right: 4px solid #d63638;
51 }
52
53 .wrap .CodeMirror-lint-marker-error:before,
54 .wp-core-ui .CodeMirror-lint-message-error:before {
55 content: "\f153";
56 color: #d63638;
57 }
58
59 .wp-core-ui .CodeMirror-lint-tooltip {
60 background: none;
61 border: none;
62 border-radius: 0;
63 direction: rtl;
64 }
65
66 .wrap .CodeMirror .CodeMirror-matchingbracket {
67 background: rgba(219, 166, 23, 0.3);
68 color: inherit;
69 }
70
71 .CodeMirror {
72 text-align: right;
73 }
74
75 .wrap .CodeMirror .CodeMirror-linenumber {
76 color: #646970;
77 }
1 /*! This file is auto-generated */
2 .wp-core-ui [class*=CodeMirror-lint-message],.wrap .CodeMirror-lint-marker-multiple,.wrap [class*=CodeMirror-lint-marker]{background-image:none}.wp-core-ui .CodeMirror-lint-marker-error,.wp-core-ui .CodeMirror-lint-marker-warning{cursor:help}.wrap .CodeMirror-lint-marker-multiple{position:absolute;top:0}.wrap [class*=CodeMirror-lint-marker]:before{font:normal 18px/1 dashicons;position:relative;top:-2px}.wp-core-ui [class*=CodeMirror-lint-message]:before{font:normal 16px/1 dashicons;right:16px;position:absolute}.wp-core-ui .CodeMirror-lint-message-error,.wp-core-ui .CodeMirror-lint-message-warning{box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 2px;padding:3px 28px 3px 12px}.wp-core-ui .CodeMirror-lint-message-warning{background-color:#fcf9e8;border-right:4px solid #dba617}.wp-core-ui .CodeMirror-lint-message-warning:before,.wrap .CodeMirror-lint-marker-warning:before{content:"\f534";color:#dba617}.wp-core-ui .CodeMirror-lint-message-error{background-color:#fcf0f1;border-right:4px solid #d63638}.wp-core-ui .CodeMirror-lint-message-error:before,.wrap .CodeMirror-lint-marker-error:before{content:"\f153";color:#d63638}.wp-core-ui .CodeMirror-lint-tooltip{background:0 0;border:none;border-radius:0;direction:rtl}.wrap .CodeMirror .CodeMirror-matchingbracket{background:rgba(219,166,23,.3);color:inherit}.CodeMirror{text-align:right}.wrap .CodeMirror .CodeMirror-linenumber{color:#646970}
...\ No newline at end of file ...\ No newline at end of file
1 .wrap [class*="CodeMirror-lint-marker"],
2 .wp-core-ui [class*="CodeMirror-lint-message"],
3 .wrap .CodeMirror-lint-marker-multiple {
4 background-image: none;
5 }
6
7 .wp-core-ui .CodeMirror-lint-marker-error,
8 .wp-core-ui .CodeMirror-lint-marker-warning {
9 cursor: help;
10 }
11
12 .wrap .CodeMirror-lint-marker-multiple {
13 position: absolute;
14 top: 0;
15 }
16
17 .wrap [class*="CodeMirror-lint-marker"]:before {
18 font: normal 18px/1 dashicons;
19 position: relative;
20 top: -2px;
21 }
22
23 .wp-core-ui [class*="CodeMirror-lint-message"]:before {
24 font: normal 16px/1 dashicons;
25 left: 16px;
26 position: absolute;
27 }
28
29 .wp-core-ui .CodeMirror-lint-message-error,
30 .wp-core-ui .CodeMirror-lint-message-warning {
31 box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
32 margin: 5px 0 2px;
33 padding: 3px 12px 3px 28px;
34 }
35
36 .wp-core-ui .CodeMirror-lint-message-warning {
37 background-color: #fcf9e8;
38 border-left: 4px solid #dba617;
39 }
40
41 .wrap .CodeMirror-lint-marker-warning:before,
42 .wp-core-ui .CodeMirror-lint-message-warning:before {
43 content: "\f534";
44 color: #dba617;
45 }
46
47 .wp-core-ui .CodeMirror-lint-message-error {
48 background-color: #fcf0f1;
49 border-left: 4px solid #d63638;
50 }
51
52 .wrap .CodeMirror-lint-marker-error:before,
53 .wp-core-ui .CodeMirror-lint-message-error:before {
54 content: "\f153";
55 color: #d63638;
56 }
57
58 .wp-core-ui .CodeMirror-lint-tooltip {
59 background: none;
60 border: none;
61 border-radius: 0;
62 direction: ltr;
63 }
64
65 .wrap .CodeMirror .CodeMirror-matchingbracket {
66 background: rgba(219, 166, 23, 0.3);
67 color: inherit;
68 }
69
70 .CodeMirror {
71 text-align: left;
72 }
73
74 .wrap .CodeMirror .CodeMirror-linenumber {
75 color: #646970;
76 }
1 /*! This file is auto-generated */
2 .wp-core-ui [class*=CodeMirror-lint-message],.wrap .CodeMirror-lint-marker-multiple,.wrap [class*=CodeMirror-lint-marker]{background-image:none}.wp-core-ui .CodeMirror-lint-marker-error,.wp-core-ui .CodeMirror-lint-marker-warning{cursor:help}.wrap .CodeMirror-lint-marker-multiple{position:absolute;top:0}.wrap [class*=CodeMirror-lint-marker]:before{font:normal 18px/1 dashicons;position:relative;top:-2px}.wp-core-ui [class*=CodeMirror-lint-message]:before{font:normal 16px/1 dashicons;left:16px;position:absolute}.wp-core-ui .CodeMirror-lint-message-error,.wp-core-ui .CodeMirror-lint-message-warning{box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 2px;padding:3px 12px 3px 28px}.wp-core-ui .CodeMirror-lint-message-warning{background-color:#fcf9e8;border-left:4px solid #dba617}.wp-core-ui .CodeMirror-lint-message-warning:before,.wrap .CodeMirror-lint-marker-warning:before{content:"\f534";color:#dba617}.wp-core-ui .CodeMirror-lint-message-error{background-color:#fcf0f1;border-left:4px solid #d63638}.wp-core-ui .CodeMirror-lint-message-error:before,.wrap .CodeMirror-lint-marker-error:before{content:"\f153";color:#d63638}.wp-core-ui .CodeMirror-lint-tooltip{background:0 0;border:none;border-radius:0;direction:ltr}.wrap .CodeMirror .CodeMirror-matchingbracket{background:rgba(219,166,23,.3);color:inherit}.CodeMirror{text-align:left}.wrap .CodeMirror .CodeMirror-linenumber{color:#646970}
...\ No newline at end of file ...\ No newline at end of file
1 /*! This file is auto-generated */
2 /* rtl:ignore */
3 .wp-color-picker {
4 width: 80px;
5 direction: ltr;
6 }
7
8 .wp-picker-container .hidden {
9 display: none;
10 }
11
12 /* Needs higher specificiity. */
13 .wp-picker-container .wp-color-result.button {
14 min-height: 30px;
15 margin: 0 0px 6px 6px;
16 padding: 0 30px 0 0;
17 font-size: 11px;
18 }
19
20 .wp-color-result-text {
21 background: #f6f7f7;
22 border-radius: 2px 0 0 2px;
23 border-right: 1px solid #c3c4c7;
24 color: #50575e;
25 display: block;
26 line-height: 2.54545455; /* 28px */
27 padding: 0 6px;
28 text-align: center;
29 }
30
31 .wp-color-result:hover,
32 .wp-color-result:focus {
33 background: #f6f7f7;
34 border-color: #8c8f94;
35 color: #1d2327;
36 }
37
38 .wp-color-result:hover:after,
39 .wp-color-result:focus:after {
40 color: #1d2327;
41 border-color: #a7aaad;
42 border-right: 1px solid #8c8f94;
43 }
44
45 .wp-picker-container {
46 display: inline-block;
47 }
48
49 .wp-color-result:focus {
50 border-color: #4f94d4;
51 box-shadow: 0 0 3px rgba(34, 113, 177, 0.8);
52 }
53
54 .wp-color-result:active {
55 /* See Trac ticket #39662 */
56 transform: none !important;
57 }
58
59 .wp-picker-open + .wp-picker-input-wrap {
60 display: inline-block;
61 vertical-align: top;
62 }
63
64 .wp-picker-input-wrap label {
65 display: inline-block;
66 vertical-align: top;
67 }
68
69 /* For the old `custom-background` page, to override the inline-block and margins from `.form-table td fieldset label`. */
70 .form-table .wp-picker-input-wrap label {
71 margin: 0 !important;
72 }
73
74 .wp-picker-input-wrap .button.wp-picker-default,
75 .wp-picker-input-wrap .button.wp-picker-clear,
76 .wp-customizer .wp-picker-input-wrap .button.wp-picker-default,
77 .wp-customizer .wp-picker-input-wrap .button.wp-picker-clear {
78 margin-right: 6px;
79 padding: 0 8px;
80 line-height: 2.54545455; /* 28px */
81 min-height: 30px;
82 }
83
84 .wp-picker-container .iris-square-slider .ui-slider-handle:focus {
85 background-color: #50575e
86 }
87
88 .wp-picker-container .iris-picker {
89 border-radius: 0;
90 border-color: #dcdcde;
91 margin-top: 6px;
92 }
93
94 .wp-picker-container input[type="text"].wp-color-picker {
95 width: 4rem;
96 font-size: 12px;
97 font-family: monospace;
98 line-height: 2.33333333; /* 28px */
99 margin: 0;
100 padding: 0 5px;
101 vertical-align: top;
102 min-height: 30px;
103 }
104
105 .wp-color-picker::-webkit-input-placeholder {
106 color: #646970;
107 }
108
109 .wp-color-picker::-moz-placeholder {
110 color: #646970;
111 opacity: 1;
112 }
113
114 .wp-color-picker:-ms-input-placeholder {
115 color: #646970;
116 }
117
118 .wp-picker-container input[type="text"].iris-error {
119 background-color: #fcf0f1;
120 border-color: #d63638;
121 color: #000;
122 }
123
124 .iris-picker .ui-square-handle:focus,
125 .iris-picker .iris-strip .ui-slider-handle:focus {
126 border-color: #3582c4;
127 border-style: solid;
128 box-shadow: 0 0 0 1px #3582c4;
129 outline: 2px solid transparent;
130 }
131
132 .iris-picker .iris-palette:focus {
133 box-shadow: 0 0 0 2px #3582c4;
134 }
135
136 @media screen and (max-width: 782px) {
137 .wp-picker-container input[type="text"].wp-color-picker {
138 width: 5rem;
139 font-size: 16px;
140 line-height: 1.875; /* 30px */
141 min-height: 32px;
142 }
143
144 .wp-customizer .wp-picker-container input[type="text"].wp-color-picker {
145 padding: 0 5px;
146 }
147
148 .wp-picker-input-wrap .button.wp-picker-default,
149 .wp-picker-input-wrap .button.wp-picker-clear {
150 padding: 0 8px;
151 line-height: 2.14285714; /* 30px */
152 min-height: 32px;
153 }
154
155 .wp-customizer .wp-picker-input-wrap .button.wp-picker-default,
156 .wp-customizer .wp-picker-input-wrap .button.wp-picker-clear {
157 padding: 0 8px;
158 font-size: 14px;
159 line-height: 2.14285714; /* 30px */
160 min-height: 32px;
161 }
162
163 .wp-picker-container .wp-color-result.button {
164 padding: 0 40px 0 0;
165 font-size: 14px;
166 line-height: 2.14285714; /* 30px */
167 }
168
169 .wp-customizer .wp-picker-container .wp-color-result.button {
170 font-size: 14px;
171 line-height: 2.14285714; /* 30px */
172 }
173
174 .wp-picker-container .wp-color-result-text {
175 padding: 0 14px;
176 font-size: inherit;
177 line-height: inherit;
178 }
179
180 .wp-customizer .wp-picker-container .wp-color-result-text {
181 padding: 0 10px;
182 }
183 }
1 /*! This file is auto-generated */
2 .wp-color-picker{width:80px;direction:ltr}.wp-picker-container .hidden{display:none}.wp-picker-container .wp-color-result.button{min-height:30px;margin:0 0 6px 6px;padding:0 30px 0 0;font-size:11px}.wp-color-result-text{background:#f6f7f7;border-radius:2px 0 0 2px;border-right:1px solid #c3c4c7;color:#50575e;display:block;line-height:2.54545455;padding:0 6px;text-align:center}.wp-color-result:focus,.wp-color-result:hover{background:#f6f7f7;border-color:#8c8f94;color:#1d2327}.wp-color-result:focus:after,.wp-color-result:hover:after{color:#1d2327;border-color:#a7aaad;border-right:1px solid #8c8f94}.wp-picker-container{display:inline-block}.wp-color-result:focus{border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8)}.wp-color-result:active{transform:none!important}.wp-picker-open+.wp-picker-input-wrap{display:inline-block;vertical-align:top}.wp-picker-input-wrap label{display:inline-block;vertical-align:top}.form-table .wp-picker-input-wrap label{margin:0!important}.wp-customizer .wp-picker-input-wrap .button.wp-picker-clear,.wp-customizer .wp-picker-input-wrap .button.wp-picker-default,.wp-picker-input-wrap .button.wp-picker-clear,.wp-picker-input-wrap .button.wp-picker-default{margin-right:6px;padding:0 8px;line-height:2.54545455;min-height:30px}.wp-picker-container .iris-square-slider .ui-slider-handle:focus{background-color:#50575e}.wp-picker-container .iris-picker{border-radius:0;border-color:#dcdcde;margin-top:6px}.wp-picker-container input[type=text].wp-color-picker{width:4rem;font-size:12px;font-family:monospace;line-height:2.33333333;margin:0;padding:0 5px;vertical-align:top;min-height:30px}.wp-color-picker::-webkit-input-placeholder{color:#646970}.wp-color-picker::-moz-placeholder{color:#646970;opacity:1}.wp-color-picker:-ms-input-placeholder{color:#646970}.wp-picker-container input[type=text].iris-error{background-color:#fcf0f1;border-color:#d63638;color:#000}.iris-picker .iris-strip .ui-slider-handle:focus,.iris-picker .ui-square-handle:focus{border-color:#3582c4;border-style:solid;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.iris-picker .iris-palette:focus{box-shadow:0 0 0 2px #3582c4}@media screen and (max-width:782px){.wp-picker-container input[type=text].wp-color-picker{width:5rem;font-size:16px;line-height:1.875;min-height:32px}.wp-customizer .wp-picker-container input[type=text].wp-color-picker{padding:0 5px}.wp-picker-input-wrap .button.wp-picker-clear,.wp-picker-input-wrap .button.wp-picker-default{padding:0 8px;line-height:2.14285714;min-height:32px}.wp-customizer .wp-picker-input-wrap .button.wp-picker-clear,.wp-customizer .wp-picker-input-wrap .button.wp-picker-default{padding:0 8px;font-size:14px;line-height:2.14285714;min-height:32px}.wp-picker-container .wp-color-result.button{padding:0 40px 0 0;font-size:14px;line-height:2.14285714}.wp-customizer .wp-picker-container .wp-color-result.button{font-size:14px;line-height:2.14285714}.wp-picker-container .wp-color-result-text{padding:0 14px;font-size:inherit;line-height:inherit}.wp-customizer .wp-picker-container .wp-color-result-text{padding:0 10px}}
...\ No newline at end of file ...\ No newline at end of file
1 /* rtl:ignore */
2 .wp-color-picker {
3 width: 80px;
4 direction: ltr;
5 }
6
7 .wp-picker-container .hidden {
8 display: none;
9 }
10
11 /* Needs higher specificiity. */
12 .wp-picker-container .wp-color-result.button {
13 min-height: 30px;
14 margin: 0 6px 6px 0px;
15 padding: 0 0 0 30px;
16 font-size: 11px;
17 }
18
19 .wp-color-result-text {
20 background: #f6f7f7;
21 border-radius: 0 2px 2px 0;
22 border-left: 1px solid #c3c4c7;
23 color: #50575e;
24 display: block;
25 line-height: 2.54545455; /* 28px */
26 padding: 0 6px;
27 text-align: center;
28 }
29
30 .wp-color-result:hover,
31 .wp-color-result:focus {
32 background: #f6f7f7;
33 border-color: #8c8f94;
34 color: #1d2327;
35 }
36
37 .wp-color-result:hover:after,
38 .wp-color-result:focus:after {
39 color: #1d2327;
40 border-color: #a7aaad;
41 border-left: 1px solid #8c8f94;
42 }
43
44 .wp-picker-container {
45 display: inline-block;
46 }
47
48 .wp-color-result:focus {
49 border-color: #4f94d4;
50 box-shadow: 0 0 3px rgba(34, 113, 177, 0.8);
51 }
52
53 .wp-color-result:active {
54 /* See Trac ticket #39662 */
55 transform: none !important;
56 }
57
58 .wp-picker-open + .wp-picker-input-wrap {
59 display: inline-block;
60 vertical-align: top;
61 }
62
63 .wp-picker-input-wrap label {
64 display: inline-block;
65 vertical-align: top;
66 }
67
68 /* For the old `custom-background` page, to override the inline-block and margins from `.form-table td fieldset label`. */
69 .form-table .wp-picker-input-wrap label {
70 margin: 0 !important;
71 }
72
73 .wp-picker-input-wrap .button.wp-picker-default,
74 .wp-picker-input-wrap .button.wp-picker-clear,
75 .wp-customizer .wp-picker-input-wrap .button.wp-picker-default,
76 .wp-customizer .wp-picker-input-wrap .button.wp-picker-clear {
77 margin-left: 6px;
78 padding: 0 8px;
79 line-height: 2.54545455; /* 28px */
80 min-height: 30px;
81 }
82
83 .wp-picker-container .iris-square-slider .ui-slider-handle:focus {
84 background-color: #50575e
85 }
86
87 .wp-picker-container .iris-picker {
88 border-radius: 0;
89 border-color: #dcdcde;
90 margin-top: 6px;
91 }
92
93 .wp-picker-container input[type="text"].wp-color-picker {
94 width: 4rem;
95 font-size: 12px;
96 font-family: monospace;
97 line-height: 2.33333333; /* 28px */
98 margin: 0;
99 padding: 0 5px;
100 vertical-align: top;
101 min-height: 30px;
102 }
103
104 .wp-color-picker::-webkit-input-placeholder {
105 color: #646970;
106 }
107
108 .wp-color-picker::-moz-placeholder {
109 color: #646970;
110 opacity: 1;
111 }
112
113 .wp-color-picker:-ms-input-placeholder {
114 color: #646970;
115 }
116
117 .wp-picker-container input[type="text"].iris-error {
118 background-color: #fcf0f1;
119 border-color: #d63638;
120 color: #000;
121 }
122
123 .iris-picker .ui-square-handle:focus,
124 .iris-picker .iris-strip .ui-slider-handle:focus {
125 border-color: #3582c4;
126 border-style: solid;
127 box-shadow: 0 0 0 1px #3582c4;
128 outline: 2px solid transparent;
129 }
130
131 .iris-picker .iris-palette:focus {
132 box-shadow: 0 0 0 2px #3582c4;
133 }
134
135 @media screen and (max-width: 782px) {
136 .wp-picker-container input[type="text"].wp-color-picker {
137 width: 5rem;
138 font-size: 16px;
139 line-height: 1.875; /* 30px */
140 min-height: 32px;
141 }
142
143 .wp-customizer .wp-picker-container input[type="text"].wp-color-picker {
144 padding: 0 5px;
145 }
146
147 .wp-picker-input-wrap .button.wp-picker-default,
148 .wp-picker-input-wrap .button.wp-picker-clear {
149 padding: 0 8px;
150 line-height: 2.14285714; /* 30px */
151 min-height: 32px;
152 }
153
154 .wp-customizer .wp-picker-input-wrap .button.wp-picker-default,
155 .wp-customizer .wp-picker-input-wrap .button.wp-picker-clear {
156 padding: 0 8px;
157 font-size: 14px;
158 line-height: 2.14285714; /* 30px */
159 min-height: 32px;
160 }
161
162 .wp-picker-container .wp-color-result.button {
163 padding: 0 0 0 40px;
164 font-size: 14px;
165 line-height: 2.14285714; /* 30px */
166 }
167
168 .wp-customizer .wp-picker-container .wp-color-result.button {
169 font-size: 14px;
170 line-height: 2.14285714; /* 30px */
171 }
172
173 .wp-picker-container .wp-color-result-text {
174 padding: 0 14px;
175 font-size: inherit;
176 line-height: inherit;
177 }
178
179 .wp-customizer .wp-picker-container .wp-color-result-text {
180 padding: 0 10px;
181 }
182 }
1 /*! This file is auto-generated */
2 .wp-color-picker{width:80px;direction:ltr}.wp-picker-container .hidden{display:none}.wp-picker-container .wp-color-result.button{min-height:30px;margin:0 6px 6px 0;padding:0 0 0 30px;font-size:11px}.wp-color-result-text{background:#f6f7f7;border-radius:0 2px 2px 0;border-left:1px solid #c3c4c7;color:#50575e;display:block;line-height:2.54545455;padding:0 6px;text-align:center}.wp-color-result:focus,.wp-color-result:hover{background:#f6f7f7;border-color:#8c8f94;color:#1d2327}.wp-color-result:focus:after,.wp-color-result:hover:after{color:#1d2327;border-color:#a7aaad;border-left:1px solid #8c8f94}.wp-picker-container{display:inline-block}.wp-color-result:focus{border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8)}.wp-color-result:active{transform:none!important}.wp-picker-open+.wp-picker-input-wrap{display:inline-block;vertical-align:top}.wp-picker-input-wrap label{display:inline-block;vertical-align:top}.form-table .wp-picker-input-wrap label{margin:0!important}.wp-customizer .wp-picker-input-wrap .button.wp-picker-clear,.wp-customizer .wp-picker-input-wrap .button.wp-picker-default,.wp-picker-input-wrap .button.wp-picker-clear,.wp-picker-input-wrap .button.wp-picker-default{margin-left:6px;padding:0 8px;line-height:2.54545455;min-height:30px}.wp-picker-container .iris-square-slider .ui-slider-handle:focus{background-color:#50575e}.wp-picker-container .iris-picker{border-radius:0;border-color:#dcdcde;margin-top:6px}.wp-picker-container input[type=text].wp-color-picker{width:4rem;font-size:12px;font-family:monospace;line-height:2.33333333;margin:0;padding:0 5px;vertical-align:top;min-height:30px}.wp-color-picker::-webkit-input-placeholder{color:#646970}.wp-color-picker::-moz-placeholder{color:#646970;opacity:1}.wp-color-picker:-ms-input-placeholder{color:#646970}.wp-picker-container input[type=text].iris-error{background-color:#fcf0f1;border-color:#d63638;color:#000}.iris-picker .iris-strip .ui-slider-handle:focus,.iris-picker .ui-square-handle:focus{border-color:#3582c4;border-style:solid;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.iris-picker .iris-palette:focus{box-shadow:0 0 0 2px #3582c4}@media screen and (max-width:782px){.wp-picker-container input[type=text].wp-color-picker{width:5rem;font-size:16px;line-height:1.875;min-height:32px}.wp-customizer .wp-picker-container input[type=text].wp-color-picker{padding:0 5px}.wp-picker-input-wrap .button.wp-picker-clear,.wp-picker-input-wrap .button.wp-picker-default{padding:0 8px;line-height:2.14285714;min-height:32px}.wp-customizer .wp-picker-input-wrap .button.wp-picker-clear,.wp-customizer .wp-picker-input-wrap .button.wp-picker-default{padding:0 8px;font-size:14px;line-height:2.14285714;min-height:32px}.wp-picker-container .wp-color-result.button{padding:0 0 0 40px;font-size:14px;line-height:2.14285714}.wp-customizer .wp-picker-container .wp-color-result.button{font-size:14px;line-height:2.14285714}.wp-picker-container .wp-color-result-text{padding:0 14px;font-size:inherit;line-height:inherit}.wp-customizer .wp-picker-container .wp-color-result-text{padding:0 10px}}
...\ No newline at end of file ...\ No newline at end of file
1 /*
2 * Button mixin- creates a button effect with correct
3 * highlights/shadows, based on a base color.
4 */
5 @mixin button( $button-color, $button-text-color: #fff ) {
6 background: $button-color;
7 border-color: $button-color;
8 color: $button-text-color;
9
10 &:hover,
11 &:focus {
12 background: lighten( $button-color, 3% );
13 border-color: darken( $button-color, 3% );
14 color: $button-text-color;
15 }
16
17 &:focus {
18 box-shadow:
19 0 0 0 1px #fff,
20 0 0 0 3px $button-color;
21 }
22
23 &:active {
24 background: darken( $button-color, 5% );
25 border-color: darken( $button-color, 5% );
26 color: $button-text-color;
27 }
28
29 &.active,
30 &.active:focus,
31 &.active:hover {
32 background: $button-color;
33 color: $button-text-color;
34 border-color: darken( $button-color, 15% );
35 box-shadow: inset 0 2px 5px -3px darken( $button-color, 50% );
36 }
37 }
1 // assign default value to all undefined variables
2
3
4 // core variables
5
6 $text-color: #fff !default;
7 $base-color: #23282d !default;
8 $icon-color: hsl( hue( $base-color ), 7%, 95% ) !default;
9 $highlight-color: #0073aa !default;
10 $notification-color: #d54e21 !default;
11
12
13 // global
14
15 $body-background: #f1f1f1 !default;
16
17 $link: #0073aa !default;
18 $link-focus: lighten( $link, 10% ) !default;
19
20 $button-color: $highlight-color !default;
21 $button-text-color: $text-color !default;
22
23 $form-checked: #7e8993 !default;
24
25 // admin menu & admin-bar
26
27 $menu-text: $text-color !default;
28 $menu-icon: $icon-color !default;
29 $menu-background: $base-color !default;
30
31 $menu-highlight-text: $text-color !default;
32 $menu-highlight-icon: $text-color !default;
33 $menu-highlight-background: $highlight-color !default;
34
35 $menu-current-text: $menu-highlight-text !default;
36 $menu-current-icon: $menu-highlight-icon !default;
37 $menu-current-background: $menu-highlight-background !default;
38
39 $menu-submenu-text: mix( $base-color, $text-color, 30% ) !default;
40 $menu-submenu-background: darken( $base-color, 7% ) !default;
41 $menu-submenu-background-alt: desaturate( lighten( $menu-background, 7% ), 7% ) !default;
42
43 $menu-submenu-focus-text: $highlight-color !default;
44 $menu-submenu-current-text: $text-color !default;
45
46 $menu-bubble-text: $text-color !default;
47 $menu-bubble-background: $notification-color !default;
48 $menu-bubble-current-text: $text-color !default;
49 $menu-bubble-current-background: $menu-submenu-background !default;
50
51 $menu-collapse-text: $menu-icon !default;
52 $menu-collapse-icon: $menu-icon !default;
53 $menu-collapse-focus-text: $text-color !default;
54 $menu-collapse-focus-icon: $menu-highlight-icon !default;
55
56 $adminbar-avatar-frame: lighten( $menu-background, 7% ) !default;
57 $adminbar-input-background: lighten( $menu-background, 7% ) !default;
58
59 $adminbar-recovery-exit-text: $menu-bubble-text !default;
60 $adminbar-recovery-exit-background: $menu-bubble-background !default;
61 $adminbar-recovery-exit-background-alt: mix(black, $adminbar-recovery-exit-background, 10%) !default;
62
63 $menu-customizer-text: mix( $base-color, $text-color, 40% ) !default;
64
65 $low-contrast-theme: "false" !default;
1 $base-color: #52accc;
2 $icon-color: #e5f8ff;
3 $highlight-color: #096484;
4 $notification-color: #e1a948;
5 $button-color: #e1a948;
6
7 $menu-submenu-text: #e2ecf1;
8 $menu-submenu-focus-text: #fff;
9 $menu-submenu-background: #4796b3;
10
11 @import "../_admin.scss";
1 $base-color: #59524c;
2 $highlight-color: #c7a589;
3 $notification-color: #9ea476;
4 $low-contrast-theme: "true";
5
6 $form-checked: $base-color;
7
8 @import "../_admin.scss";
1 $base-color: #523f6d;
2 $icon-color: #ece6f6;
3 $highlight-color: #a3b745;
4 $notification-color: #d46f15;
5
6 $form-checked: $base-color;
7
8 @import "../_admin.scss";
1 $base-color: #e5e5e5;
2 $icon-color: #999;
3 $text-color: #333;
4 $highlight-color: #04a4cc;
5 $notification-color: #d64e07;
6
7 $body-background: #f5f5f5;
8
9 $menu-highlight-text: #fff;
10 $menu-highlight-icon: #ccc;
11 $menu-highlight-background: #888;
12
13 $menu-bubble-text: #fff;
14 $menu-avatar-frame: #aaa;
15 $menu-submenu-background: #fff;
16
17 $menu-collapse-text: #777;
18 $menu-collapse-focus-icon: #555;
19
20 @import "../_admin.scss";
21
22 /* Override the theme filter highlight color for this scheme */
23 .theme-section.current,
24 .theme-filter.current {
25 border-bottom-color: $highlight-color;
26 }
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
No preview for this file type
No preview for this file type
This diff could not be displayed because it is too large.
No preview for this file type
No preview for this file type
This diff could not be displayed because it is too large.
No preview for this file type
No preview for this file type
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.