From b410fd15ddb1ae5bb31e0c1856ddaf4c4fc698e7 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Tue, 28 Dec 2010 20:37:24 -0500 Subject: [PATCH 01/52] just getting lighttpd set up --- .gitignore | 2 ++ docroot/html/index.txt | 1 + docroot/lighttpd.conf | 70 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 .gitignore create mode 100644 docroot/html/index.txt create mode 100644 docroot/lighttpd.conf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a573cee --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.log +*.pid diff --git a/docroot/html/index.txt b/docroot/html/index.txt new file mode 100644 index 0000000..eb7a983 --- /dev/null +++ b/docroot/html/index.txt @@ -0,0 +1 @@ +here we be diff --git a/docroot/lighttpd.conf b/docroot/lighttpd.conf new file mode 100644 index 0000000..f3d99ee --- /dev/null +++ b/docroot/lighttpd.conf @@ -0,0 +1,70 @@ +server.document-root = env.VIRTUAL_ENV + "/src/docroot/html" +server.port = 49449 +server.modules = ("mod_setenv", "mod_cgi", "mod_access", "mod_accesslog") +server.indexfiles = ("index.txt", "index.html", "index.php") +server.pid-file = env.VIRTUAL_ENV + "/src/docroot/server.pid" +server.errorlog = env.VIRTUAL_ENV + "/src/docroot/error.log" + +# to enable, add "mod_access", "mod_accesslog" to server.modules +# variable above and uncomment this +accesslog.filename = env.VIRTUAL_ENV + "/src/docroot/access.log" + +setenv.add-environment = ("PATH" => env.PATH) + +cgi.assign = (".cgi" => "") + +# mimetype mapping +mimetype.assign = ( + ".pdf" => "application/pdf", + ".sig" => "application/pgp-signature", + ".spl" => "application/futuresplash", + ".class" => "application/octet-stream", + ".ps" => "application/postscript", + ".torrent" => "application/x-bittorrent", + ".dvi" => "application/x-dvi", + ".gz" => "application/x-gzip", + ".pac" => "application/x-ns-proxy-autoconfig", + ".swf" => "application/x-shockwave-flash", + ".tar.gz" => "application/x-tgz", + ".tgz" => "application/x-tgz", + ".tar" => "application/x-tar", + ".zip" => "application/zip", + ".mp3" => "audio/mpeg", + ".m3u" => "audio/x-mpegurl", + ".wma" => "audio/x-ms-wma", + ".wax" => "audio/x-ms-wax", + ".ogg" => "application/ogg", + ".wav" => "audio/x-wav", + ".gif" => "image/gif", + ".jpg" => "image/jpeg", + ".jpeg" => "image/jpeg", + ".png" => "image/png", + ".xbm" => "image/x-xbitmap", + ".xpm" => "image/x-xpixmap", + ".xwd" => "image/x-xwindowdump", + ".css" => "text/css", + ".html" => "text/html", + ".htm" => "text/html", + ".js" => "text/javascript", + ".asc" => "text/plain", + ".c" => "text/plain", + ".cpp" => "text/plain", + ".log" => "text/plain", + ".conf" => "text/plain", + ".text" => "text/plain", + ".txt" => "text/plain", + ".dtd" => "text/xml", + ".xml" => "text/xml", + ".mpeg" => "video/mpeg", + ".mpg" => "video/mpeg", + ".mov" => "video/quicktime", + ".qt" => "video/quicktime", + ".avi" => "video/x-msvideo", + ".asf" => "video/x-ms-asf", + ".asx" => "video/x-ms-asf", + ".wmv" => "video/x-ms-wmv", + ".bz2" => "application/x-bzip", + ".tbz" => "application/x-bzip-compressed-tar", + ".tar.bz2" => "application/x-bzip-compressed-tar", + "" => "text/plain" + ) From 72d0174884432e0f9aede0cce10acd1a30c391cc Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Tue, 28 Dec 2010 20:44:26 -0500 Subject: [PATCH 02/52] a touch more futzing with lighttpd config before just ditching it for nginx :P --- docroot/html/phpinfo.php | 1 + docroot/lighttpd.conf | 61 +++------------------------------------- 2 files changed, 5 insertions(+), 57 deletions(-) create mode 100644 docroot/html/phpinfo.php diff --git a/docroot/html/phpinfo.php b/docroot/html/phpinfo.php new file mode 100644 index 0000000..147cebc --- /dev/null +++ b/docroot/html/phpinfo.php @@ -0,0 +1 @@ + diff --git a/docroot/lighttpd.conf b/docroot/lighttpd.conf index f3d99ee..11a553f 100644 --- a/docroot/lighttpd.conf +++ b/docroot/lighttpd.conf @@ -11,60 +11,7 @@ accesslog.filename = env.VIRTUAL_ENV + "/src/docroot/access.log" setenv.add-environment = ("PATH" => env.PATH) -cgi.assign = (".cgi" => "") - -# mimetype mapping -mimetype.assign = ( - ".pdf" => "application/pdf", - ".sig" => "application/pgp-signature", - ".spl" => "application/futuresplash", - ".class" => "application/octet-stream", - ".ps" => "application/postscript", - ".torrent" => "application/x-bittorrent", - ".dvi" => "application/x-dvi", - ".gz" => "application/x-gzip", - ".pac" => "application/x-ns-proxy-autoconfig", - ".swf" => "application/x-shockwave-flash", - ".tar.gz" => "application/x-tgz", - ".tgz" => "application/x-tgz", - ".tar" => "application/x-tar", - ".zip" => "application/zip", - ".mp3" => "audio/mpeg", - ".m3u" => "audio/x-mpegurl", - ".wma" => "audio/x-ms-wma", - ".wax" => "audio/x-ms-wax", - ".ogg" => "application/ogg", - ".wav" => "audio/x-wav", - ".gif" => "image/gif", - ".jpg" => "image/jpeg", - ".jpeg" => "image/jpeg", - ".png" => "image/png", - ".xbm" => "image/x-xbitmap", - ".xpm" => "image/x-xpixmap", - ".xwd" => "image/x-xwindowdump", - ".css" => "text/css", - ".html" => "text/html", - ".htm" => "text/html", - ".js" => "text/javascript", - ".asc" => "text/plain", - ".c" => "text/plain", - ".cpp" => "text/plain", - ".log" => "text/plain", - ".conf" => "text/plain", - ".text" => "text/plain", - ".txt" => "text/plain", - ".dtd" => "text/xml", - ".xml" => "text/xml", - ".mpeg" => "video/mpeg", - ".mpg" => "video/mpeg", - ".mov" => "video/quicktime", - ".qt" => "video/quicktime", - ".avi" => "video/x-msvideo", - ".asf" => "video/x-ms-asf", - ".asx" => "video/x-ms-asf", - ".wmv" => "video/x-ms-wmv", - ".bz2" => "application/x-bzip", - ".tbz" => "application/x-bzip-compressed-tar", - ".tar.bz2" => "application/x-bzip-compressed-tar", - "" => "text/plain" - ) +cgi.assign = ( + ".cgi" => "", + ".php" => "/usr/bin/php-cgi" +) From 41d8e83728e0bd5da1efa122eabdf95aedb9bc7b Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Tue, 28 Dec 2010 21:11:51 -0500 Subject: [PATCH 03/52] switching from lighttpd to nginx ... and that's quite enough nonsense for now --- docroot/fastcgi_params | 19 +++++++++++ docroot/lighttpd.conf | 17 ---------- docroot/mime.types | 71 ++++++++++++++++++++++++++++++++++++++++++ docroot/nginx-serve | 3 ++ docroot/nginx.conf | 42 +++++++++++++++++++++++++ docroot/php-serve | 2 ++ 6 files changed, 137 insertions(+), 17 deletions(-) create mode 100644 docroot/fastcgi_params delete mode 100644 docroot/lighttpd.conf create mode 100644 docroot/mime.types create mode 100755 docroot/nginx-serve create mode 100644 docroot/nginx.conf create mode 100755 docroot/php-serve diff --git a/docroot/fastcgi_params b/docroot/fastcgi_params new file mode 100644 index 0000000..d1862e9 --- /dev/null +++ b/docroot/fastcgi_params @@ -0,0 +1,19 @@ +fastcgi_param GATEWAY_INTERFACE CGI/1.1; +fastcgi_param SERVER_SOFTWARE nginx; +fastcgi_param QUERY_STRING $query_string; +fastcgi_param REQUEST_METHOD $request_method; +fastcgi_param CONTENT_TYPE $content_type; +fastcgi_param CONTENT_LENGTH $content_length; +fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; +fastcgi_param SCRIPT_NAME $fastcgi_script_name; +fastcgi_param REQUEST_URI $request_uri; +fastcgi_param DOCUMENT_URI $document_uri; +fastcgi_param DOCUMENT_ROOT $document_root; +fastcgi_param SERVER_PROTOCOL $server_protocol; +fastcgi_param REMOTE_ADDR $remote_addr; +fastcgi_param REMOTE_PORT $remote_port; +fastcgi_param SERVER_ADDR $server_addr; +fastcgi_param SERVER_PORT $server_port; +fastcgi_param SERVER_NAME $server_name; + +# vim:filetype=nginx diff --git a/docroot/lighttpd.conf b/docroot/lighttpd.conf deleted file mode 100644 index 11a553f..0000000 --- a/docroot/lighttpd.conf +++ /dev/null @@ -1,17 +0,0 @@ -server.document-root = env.VIRTUAL_ENV + "/src/docroot/html" -server.port = 49449 -server.modules = ("mod_setenv", "mod_cgi", "mod_access", "mod_accesslog") -server.indexfiles = ("index.txt", "index.html", "index.php") -server.pid-file = env.VIRTUAL_ENV + "/src/docroot/server.pid" -server.errorlog = env.VIRTUAL_ENV + "/src/docroot/error.log" - -# to enable, add "mod_access", "mod_accesslog" to server.modules -# variable above and uncomment this -accesslog.filename = env.VIRTUAL_ENV + "/src/docroot/access.log" - -setenv.add-environment = ("PATH" => env.PATH) - -cgi.assign = ( - ".cgi" => "", - ".php" => "/usr/bin/php-cgi" -) diff --git a/docroot/mime.types b/docroot/mime.types new file mode 100644 index 0000000..808160d --- /dev/null +++ b/docroot/mime.types @@ -0,0 +1,71 @@ + +types { + text/html html htm shtml; + text/css css; + text/xml xml rss; + image/gif gif; + image/jpeg jpeg jpg; + application/x-javascript js; + application/atom+xml atom; + + text/mathml mml; + text/plain txt; + text/vnd.sun.j2me.app-descriptor jad; + text/vnd.wap.wml wml; + text/x-component htc; + + image/png png; + image/tiff tif tiff; + image/vnd.wap.wbmp wbmp; + image/x-icon ico; + image/x-jng jng; + image/x-ms-bmp bmp; + image/svg+xml svg svgz; + + application/java-archive jar war ear; + application/mac-binhex40 hqx; + application/msword doc; + application/pdf pdf; + application/postscript ps eps ai; + application/rtf rtf; + application/vnd.ms-excel xls; + application/vnd.ms-powerpoint ppt; + application/vnd.wap.wmlc wmlc; + application/vnd.wap.xhtml+xml xhtml; + application/x-7z-compressed 7z; + application/x-cocoa cco; + application/x-java-archive-diff jardiff; + application/x-java-jnlp-file jnlp; + application/x-makeself run; + application/x-perl pl pm; + application/x-pilot prc pdb; + application/x-rar-compressed rar; + application/x-redhat-package-manager rpm; + application/x-sea sea; + application/x-shockwave-flash swf; + application/x-stuffit sit; + application/x-tcl tcl tk; + application/x-x509-ca-cert der pem crt; + application/x-xpinstall xpi; + application/zip zip; + + application/octet-stream bin exe dll; + application/octet-stream deb; + application/octet-stream dmg; + application/octet-stream eot; + application/octet-stream iso img; + application/octet-stream msi msp msm; + + audio/midi mid midi kar; + audio/mpeg mp3; + audio/x-realaudio ra; + + video/3gpp 3gpp 3gp; + video/mpeg mpeg mpg; + video/quicktime mov; + video/x-flv flv; + video/x-mng mng; + video/x-ms-asf asx asf; + video/x-ms-wmv wmv; + video/x-msvideo avi; +} diff --git a/docroot/nginx-serve b/docroot/nginx-serve new file mode 100755 index 0000000..50beb58 --- /dev/null +++ b/docroot/nginx-serve @@ -0,0 +1,3 @@ +#!/bin/bash +HERE="$(dirname $(readlink -f $0))" +exec nginx -p $HERE/ -c $HERE/nginx.conf diff --git a/docroot/nginx.conf b/docroot/nginx.conf new file mode 100644 index 0000000..2458611 --- /dev/null +++ b/docroot/nginx.conf @@ -0,0 +1,42 @@ +worker_processes 1; +error_log error.log; +pid server.pid; +worker_rlimit_nofile 8192; +daemon off; + + +events { + worker_connections 4096; +} + + +http { + include mime.types; + + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] $status ' + '"$request" $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + sendfile on; + tcp_nopush on; + autoindex on; + + server { + listen 49448; + server_name localhost; + access_log access.log main; + root /home/me/src/LearningPhp/src/docroot/html; + + location / { + index index.html index.txt index.php; + } + + location ~ \.php$ { + include fastcgi_params; + fastcgi_pass 127.0.0.1:49449; + } + } +} + + +# vim:filetype=nginx diff --git a/docroot/php-serve b/docroot/php-serve new file mode 100755 index 0000000..b69fb3c --- /dev/null +++ b/docroot/php-serve @@ -0,0 +1,2 @@ +#!/bin/bash +exec php-cgi -b 127.0.0.1:49449 From bc7831d9da0c534c9b5255e25717b01a4436f87b Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Tue, 28 Dec 2010 21:15:40 -0500 Subject: [PATCH 04/52] adding a dumb readme --- README.rst | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 README.rst diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..371e483 --- /dev/null +++ b/README.rst @@ -0,0 +1,5 @@ +OMG I'm (re?) learning PHP +========================== + +Because I seriously need to stop hating on wildly successful technologies. + From c704331740c04fe1af2ae8429f7818606abaf443 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Tue, 28 Dec 2010 21:21:42 -0500 Subject: [PATCH 05/52] working through http://en.wikibooks.org/wiki/PHP_Programming, adding the requisite hello world page --- docroot/html/helloworld.php | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 docroot/html/helloworld.php diff --git a/docroot/html/helloworld.php b/docroot/html/helloworld.php new file mode 100644 index 0000000..fb63ef2 --- /dev/null +++ b/docroot/html/helloworld.php @@ -0,0 +1,3 @@ + From d4d0b090773860f8f9b7b536e55ba0389aa5ed68 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Tue, 28 Dec 2010 21:23:26 -0500 Subject: [PATCH 06/52] hello world with variables and different output statements/functions --- docroot/html/helloworld.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docroot/html/helloworld.php b/docroot/html/helloworld.php index fb63ef2..ebbdab0 100644 --- a/docroot/html/helloworld.php +++ b/docroot/html/helloworld.php @@ -1,3 +1,9 @@ "; + + echo $string; + + print $string; + + printf("%s", $string); ?> From e40a4a00c220aabd4e29a2845ab6c634a9e5326b Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Tue, 28 Dec 2010 23:06:20 -0500 Subject: [PATCH 07/52] more hello world-ish stuff with the print statement --- docroot/html/printing.php | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 docroot/html/printing.php diff --git a/docroot/html/printing.php b/docroot/html/printing.php new file mode 100644 index 0000000..e180dc9 --- /dev/null +++ b/docroot/html/printing.php @@ -0,0 +1,11 @@ +"; + + print "Hello" . ", " . "World!
"; + + if (print "Hello" . ", " . "Fail?
") { + print "last 'print' succeeded!"; + } + +?> From a4d57e3e34f232d55e369cbb7a80329663879222 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Tue, 28 Dec 2010 23:16:20 -0500 Subject: [PATCH 08/52] working through "basics" section --- docroot/html/basics.php | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 docroot/html/basics.php diff --git a/docroot/html/basics.php b/docroot/html/basics.php new file mode 100644 index 0000000..55a51ff --- /dev/null +++ b/docroot/html/basics.php @@ -0,0 +1,25 @@ + + + + php basics + + + + +

+ + + +

+ + + +

+ + From a0dda0bcfbeab24c14c8a2dbc9446a853519f006 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Tue, 28 Dec 2010 23:18:20 -0500 Subject: [PATCH 09/52] more basic stuff ... getting bored ... --- docroot/html/basics.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docroot/html/basics.php b/docroot/html/basics.php index 55a51ff..97f9b7a 100644 --- a/docroot/html/basics.php +++ b/docroot/html/basics.php @@ -21,5 +21,15 @@

+ + +

+ +

+ From 168d7edcf3a74726e1047df940768d5d732cd919 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Tue, 28 Dec 2010 23:22:27 -0500 Subject: [PATCH 10/52] reading something from stdin --- docroot/html/io.php | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 docroot/html/io.php diff --git a/docroot/html/io.php b/docroot/html/io.php new file mode 100644 index 0000000..6102399 --- /dev/null +++ b/docroot/html/io.php @@ -0,0 +1,9 @@ + From cb0c3e3f4bcc167beaa8fb5c854d01bc2202ed40 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Tue, 28 Dec 2010 23:25:41 -0500 Subject: [PATCH 11/52] messing around with $_GET --- docroot/html/webvars.php | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 docroot/html/webvars.php diff --git a/docroot/html/webvars.php b/docroot/html/webvars.php new file mode 100644 index 0000000..f37fcf3 --- /dev/null +++ b/docroot/html/webvars.php @@ -0,0 +1,10 @@ + From 6475ec09b046a4d5ee32b1682a349282709c5abc Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Tue, 28 Dec 2010 23:34:50 -0500 Subject: [PATCH 12/52] array stuff --- docroot/html/arrays.php | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 docroot/html/arrays.php diff --git a/docroot/html/arrays.php b/docroot/html/arrays.php new file mode 100644 index 0000000..9742b2c --- /dev/null +++ b/docroot/html/arrays.php @@ -0,0 +1,27 @@ +"Toyota", + "type"=>"Celica", + "color"=>"black", + "manufactured"=>"1991" + ); + + $array2 = array( + "Toyota", + "Celica", + "black", + "1991" + ); + + $array3 = array( + "name"=>"Toyota", + "Celica", + "color"=>"black", + "1991" + ); + + ?>
From 0d8ce1a206731b9c3c817ad1af0ca8ce932ced68 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Tue, 28 Dec 2010 23:38:54 -0500 Subject: [PATCH 13/52] yet more array crap --- docroot/html/arrays.php | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/docroot/html/arrays.php b/docroot/html/arrays.php index 9742b2c..4ae6f5a 100644 --- a/docroot/html/arrays.php +++ b/docroot/html/arrays.php @@ -20,8 +20,20 @@ "1991" ); - ?>
+?> + +
+ +
Manufacturer
+
+ +
Brand
+
+ +
Color
+
+ +
Year Manufactured
+
+ +
From 893f3bf3a50c2378e8ef19ee9b45281fae45bed4 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Tue, 28 Dec 2010 23:45:44 -0500 Subject: [PATCH 14/52] working through control flow bits (snore) ... smugness is winning ... --- docroot/html/if-structure.php | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 docroot/html/if-structure.php diff --git a/docroot/html/if-structure.php b/docroot/html/if-structure.php new file mode 100644 index 0000000..c2bffa3 --- /dev/null +++ b/docroot/html/if-structure.php @@ -0,0 +1,10 @@ + From de6a85b421aac9f46aa1f53cc6b73ec0c02177cd Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Wed, 29 Dec 2010 13:39:41 -0500 Subject: [PATCH 15/52] removing index file and just using the autoindex --- docroot/html/index.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 docroot/html/index.txt diff --git a/docroot/html/index.txt b/docroot/html/index.txt deleted file mode 100644 index eb7a983..0000000 --- a/docroot/html/index.txt +++ /dev/null @@ -1 +0,0 @@ -here we be From 5f9583bfaeb5e3c58b54e94eefbbd44985a53fc8 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Wed, 29 Dec 2010 21:17:41 -0500 Subject: [PATCH 16/52] jeebus ... futzing around with nginx again so that absolute path in conf is not necessary --- docroot/Makefile | 22 ++++++++++++++++++++++ docroot/nginx-serve | 3 --- docroot/{nginx.conf => nginx.conf.in} | 13 ++++++------- docroot/php-serve | 2 -- 4 files changed, 28 insertions(+), 12 deletions(-) create mode 100644 docroot/Makefile delete mode 100755 docroot/nginx-serve rename docroot/{nginx.conf => nginx.conf.in} (75%) delete mode 100755 docroot/php-serve diff --git a/docroot/Makefile b/docroot/Makefile new file mode 100644 index 0000000..64bf3a2 --- /dev/null +++ b/docroot/Makefile @@ -0,0 +1,22 @@ + +ROOT ?= $(PWD) +HTTP_PORT ?= 49448 +PHP_FCGI_PORT ?= 49449 + + +serve: nginx.conf + nginx -p $(ROOT)/ -c $(ROOT)/$< + + +serve-php: + php-cgi -b 127.0.0.1:$(PHP_FCGI_PORT) + + +nginx.conf: nginx.conf.in + cat $< | \ + sed -e 's@__ROOT__@$(ROOT)@g' \ + -e 's@__HTTP_PORT__@$(HTTP_PORT)@g' \ + -e 's@__PHP_FCGI_PORT__@$(PHP_FCGI_PORT)@g' > $@ + + +.PHONY: serve diff --git a/docroot/nginx-serve b/docroot/nginx-serve deleted file mode 100755 index 50beb58..0000000 --- a/docroot/nginx-serve +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -HERE="$(dirname $(readlink -f $0))" -exec nginx -p $HERE/ -c $HERE/nginx.conf diff --git a/docroot/nginx.conf b/docroot/nginx.conf.in similarity index 75% rename from docroot/nginx.conf rename to docroot/nginx.conf.in index 2458611..34be73b 100644 --- a/docroot/nginx.conf +++ b/docroot/nginx.conf.in @@ -1,7 +1,6 @@ worker_processes 1; -error_log error.log; -pid server.pid; -worker_rlimit_nofile 8192; +error_log __ROOT__/error.log; +pid __ROOT__/server.pid; daemon off; @@ -11,7 +10,7 @@ events { http { - include mime.types; + include __ROOT__/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] $status ' @@ -22,10 +21,10 @@ http { autoindex on; server { - listen 49448; + listen __HTTP_PORT__; server_name localhost; access_log access.log main; - root /home/me/src/LearningPhp/src/docroot/html; + root __ROOT__/html; location / { index index.html index.txt index.php; @@ -33,7 +32,7 @@ http { location ~ \.php$ { include fastcgi_params; - fastcgi_pass 127.0.0.1:49449; + fastcgi_pass 127.0.0.1:__PHP_FCGI_PORT__; } } } diff --git a/docroot/php-serve b/docroot/php-serve deleted file mode 100755 index b69fb3c..0000000 --- a/docroot/php-serve +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -exec php-cgi -b 127.0.0.1:49449 From ea522b13e72220c2ff59652b52112b37afc2c88d Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Wed, 29 Dec 2010 21:19:18 -0500 Subject: [PATCH 17/52] ignoring generated nginx conf --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index a573cee..af881c9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.log *.pid +docroot/nginx.conf From b39eaef485fb823c9d90dd5f36d02708af535f3c Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Wed, 29 Dec 2010 21:30:13 -0500 Subject: [PATCH 18/52] adding file for working through looping control structures --- docroot/html/loops.php | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 docroot/html/loops.php diff --git a/docroot/html/loops.php b/docroot/html/loops.php new file mode 100644 index 0000000..5f7f1c2 --- /dev/null +++ b/docroot/html/loops.php @@ -0,0 +1,34 @@ +
+
+
+ + +
+
+
From 3970fead8fe369bd7df6a21dec52c38e24049fbf Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Wed, 29 Dec 2010 21:43:03 -0500 Subject: [PATCH 19/52] more with looping control flow bits --- docroot/html/loops.php | 104 ++++++++++++++++++++++++++++++++--------- 1 file changed, 81 insertions(+), 23 deletions(-) diff --git a/docroot/html/loops.php b/docroot/html/loops.php index 5f7f1c2..b34d44d 100644 --- a/docroot/html/loops.php +++ b/docroot/html/loops.php @@ -1,34 +1,92 @@ -
-
+
+  
+    looping!
+    
+  
+  
+    
+ + +
+ + +
+ + +
-?> -
+

-
-?> - + + From 9dab7bf8d760bf83ea3612310b6a8c1356c57df5 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Thu, 30 Dec 2010 08:31:03 -0500 Subject: [PATCH 20/52] more looping stuff and playing with colors for Stephen, generalized header bits a touch --- docroot/html/_head.php | 35 +++++++++++++++++++++ docroot/html/loops.php | 71 ++++++++++++++++++++++++++++++++---------- 2 files changed, 89 insertions(+), 17 deletions(-) create mode 100644 docroot/html/_head.php diff --git a/docroot/html/_head.php b/docroot/html/_head.php new file mode 100644 index 0000000..cd44d35 --- /dev/null +++ b/docroot/html/_head.php @@ -0,0 +1,35 @@ + + + + + <?php echo $title; ?> + + + diff --git a/docroot/html/loops.php b/docroot/html/loops.php index b34d44d..c1a075d 100644 --- a/docroot/html/loops.php +++ b/docroot/html/loops.php @@ -1,22 +1,34 @@ - - - - looping! - - +

Using <pre> bgcolor =

+ +
+
+
+
+
+ + +
 "My House",
+        "2nd" => "My Car",
+        "3rd" => "My Lab"
+    );
+
+    foreach ($array as $key => $value) {
+
+        if ($value == "My Lab") {
+            $array[$key] = $value = "My Laboratory";
+        }
+
+        print "$key holds the value $value \n";
+    }
+
+    ?>
+ From da075b76ba832ba0b71b335b22c06de2b4cb1845 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Thu, 30 Dec 2010 13:50:34 -0500 Subject: [PATCH 21/52] some stuff for the chapter on functions --- docroot/html/functions.php | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 docroot/html/functions.php diff --git a/docroot/html/functions.php b/docroot/html/functions.php new file mode 100644 index 0000000..fb2a0d5 --- /dev/null +++ b/docroot/html/functions.php @@ -0,0 +1,30 @@ + + + + + +
+ + + + From 15b891ff979397bc704809a8fef29e108d1fe69e Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Thu, 30 Dec 2010 13:57:54 -0500 Subject: [PATCH 22/52] starting the chapter on files --- docroot/html/data.txt | 7 +++++++ docroot/html/files.php | 29 +++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 docroot/html/data.txt create mode 100644 docroot/html/files.php diff --git a/docroot/html/data.txt b/docroot/html/data.txt new file mode 100644 index 0000000..fc03e00 --- /dev/null +++ b/docroot/html/data.txt @@ -0,0 +1,7 @@ +dogs +cats +babies +monkeys +hats +dollars +ham diff --git a/docroot/html/files.php b/docroot/html/files.php new file mode 100644 index 0000000..ea050bf --- /dev/null +++ b/docroot/html/files.php @@ -0,0 +1,29 @@ + + + + +
+ + + +
+ + + From e39e9cc0914b92b8af2b55ff6568c57eca6d4169 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Fri, 31 Dec 2010 01:46:02 -0500 Subject: [PATCH 23/52] more work with file io --- docroot/html/files.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docroot/html/files.php b/docroot/html/files.php index ea050bf..fbe87c8 100644 --- a/docroot/html/files.php +++ b/docroot/html/files.php @@ -13,6 +13,7 @@ mkheader('files!', '#aaa'); // do nothing! $handle = fopen('data.txt', 'r'); fclose($handle); + print "didn't actually do anything here ..."; ?> @@ -25,5 +26,19 @@ mkheader('files!', '#aaa'); ?> + + +
 $line) {
+        $linenum = $key + 1;
+        print "Line $linenum: $line";
+    }
+
+
+    ?>
+ From 3617a0843050bcc86c9aa6d84dcce8bd1ab9577b Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Fri, 31 Dec 2010 02:29:03 -0500 Subject: [PATCH 24/52] more fun with file io --- .gitignore | 1 + docroot/html/files.php | 69 +++++++++++++++++++++++++++++++++++++ docroot/html/writable/.keep | 0 3 files changed, 70 insertions(+) create mode 100644 docroot/html/writable/.keep diff --git a/.gitignore b/.gitignore index af881c9..57e3572 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ *.log *.pid docroot/nginx.conf +docroot/html/writable/*.* diff --git a/docroot/html/files.php b/docroot/html/files.php index fbe87c8..733501a 100644 --- a/docroot/html/files.php +++ b/docroot/html/files.php @@ -40,5 +40,74 @@ mkheader('files!', '#aaa'); ?> + + +
+ + + +
wrote stuff";
+
+    ?>
+ + + + +
+ + + +
+ +

Saved!

+

+ clear this message +

+ + + + diff --git a/docroot/html/writable/.keep b/docroot/html/writable/.keep new file mode 100644 index 0000000..e69de29 From 295db7cee7c3ffb9d1f9cb727a89519949b84183 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Fri, 31 Dec 2010 02:32:41 -0500 Subject: [PATCH 25/52] cleaning up file io bits a touch --- docroot/html/files.php | 104 +++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 60 deletions(-) diff --git a/docroot/html/files.php b/docroot/html/files.php index 733501a..62071c0 100644 --- a/docroot/html/files.php +++ b/docroot/html/files.php @@ -2,16 +2,56 @@ require_once('_head.php'); +$DATASTORE = 'writable/datastore.txt'; + mkheader('files!', '#aaa'); ?> + + +
+ + + +
+ +

Saved!

+

+ clear this message +

+ + + +
@@ -30,7 +70,7 @@ mkheader('files!', '#aaa');
 $line) {
         $linenum = $key + 1;
@@ -44,7 +84,7 @@ mkheader('files!', '#aaa');
     
     
- -
wrote stuff";
-
-    ?>
- - - - -
- - - -
- -

Saved!

-

- clear this message -

- - - - From cfcb95b3ad9c70d3add49bd988289d0af22a241a Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Fri, 31 Dec 2010 02:57:02 -0500 Subject: [PATCH 26/52] doing mail stuff --- docroot/html/mailing.php | 45 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 docroot/html/mailing.php diff --git a/docroot/html/mailing.php b/docroot/html/mailing.php new file mode 100644 index 0000000..4c13690 --- /dev/null +++ b/docroot/html/mailing.php @@ -0,0 +1,45 @@ + + + + + + " + ); + ?>

Sent!

clear this

+ +
+ + + + + + + + + + +
+ + + + + From 136a2dbe1036785eb6d4b4deeecd1310ab4a2cf3 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Fri, 31 Dec 2010 13:14:13 -0500 Subject: [PATCH 27/52] more touchup of mailing stuff --- docroot/html/_head.php | 4 ++++ docroot/html/mailing.php | 26 ++++++++++++++------------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/docroot/html/_head.php b/docroot/html/_head.php index cd44d35..40dafe3 100644 --- a/docroot/html/_head.php +++ b/docroot/html/_head.php @@ -24,6 +24,10 @@ function mkheader($title, $bgcolor) { margin: 10px; } + .block { + display: block; + } + /*]]>*/ diff --git a/docroot/html/mailing.php b/docroot/html/mailing.php index 4c13690..8ad3f83 100644 --- a/docroot/html/mailing.php +++ b/docroot/html/mailing.php @@ -2,7 +2,7 @@ require_once("_head.php"); -mkheader("looping!", "#eee"); +mkheader("mailing!", "#eee"); ?> @@ -13,9 +13,9 @@ mkheader("looping!", "#eee"); if ($_SERVER['REQUEST_METHOD'] == 'POST') { mail( - $_POST['email-toaddr'], - $_POST['email-subject'], - $_POST['email-message'], + $_POST['toaddr'], + $_POST['subject'], + $_POST['message'], "From: {$_SERVER['PHP_SELF']} " ); ?>

Sent!

clear this

-
- - +

Send an email to somebody!

- - + + + - - + + + + + - +
Date: Fri, 31 Dec 2010 13:27:27 -0500 Subject: [PATCH 28/52] cookie stuff --- docroot/html/cookies.php | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 docroot/html/cookies.php diff --git a/docroot/html/cookies.php b/docroot/html/cookies.php new file mode 100644 index 0000000..9d8f63d --- /dev/null +++ b/docroot/html/cookies.php @@ -0,0 +1,37 @@ + + + + + +
+ + + From ccc7b95af3c6b8b7635d0b0d5f969cbf6f5ea833 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Fri, 31 Dec 2010 13:48:40 -0500 Subject: [PATCH 29/52] setting up stuff for a local php.ini with local tmp directories --- .gitignore | 1 + docroot/Makefile | 8 +- docroot/php.ini.in | 1852 +++++++++++++++++++++++++++++ docroot/session.save_path/.keep | 0 docroot/soap.wsdl_cache_dir/.keep | 0 docroot/upload_tmp_dir/.keep | 0 6 files changed, 1859 insertions(+), 2 deletions(-) create mode 100644 docroot/php.ini.in create mode 100644 docroot/session.save_path/.keep create mode 100644 docroot/soap.wsdl_cache_dir/.keep create mode 100644 docroot/upload_tmp_dir/.keep diff --git a/.gitignore b/.gitignore index 57e3572..166bdbc 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ *.pid docroot/nginx.conf docroot/html/writable/*.* +docroot/php.ini diff --git a/docroot/Makefile b/docroot/Makefile index 64bf3a2..c41f1e7 100644 --- a/docroot/Makefile +++ b/docroot/Makefile @@ -8,8 +8,8 @@ serve: nginx.conf nginx -p $(ROOT)/ -c $(ROOT)/$< -serve-php: - php-cgi -b 127.0.0.1:$(PHP_FCGI_PORT) +serve-php: php.ini + php-cgi -c $< -b 127.0.0.1:$(PHP_FCGI_PORT) nginx.conf: nginx.conf.in @@ -19,4 +19,8 @@ nginx.conf: nginx.conf.in -e 's@__PHP_FCGI_PORT__@$(PHP_FCGI_PORT)@g' > $@ +php.ini: php.ini.in + cat $< | sed -e 's@__ROOT__@$(ROOT)@g' > $@ + + .PHONY: serve diff --git a/docroot/php.ini.in b/docroot/php.ini.in new file mode 100644 index 0000000..57349e9 --- /dev/null +++ b/docroot/php.ini.in @@ -0,0 +1,1852 @@ +[PHP] + +;;;;;;;;;;;;;;;;;;; +; About php.ini ; +;;;;;;;;;;;;;;;;;;; +; PHP's initialization file, generally called php.ini, is responsible for +; configuring many of the aspects of PHP's behavior. + +; PHP attempts to find and load this configuration from a number of locations. +; The following is a summary of its search order: +; 1. SAPI module specific location. +; 2. The PHPRC environment variable. (As of PHP 5.2.0) +; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0) +; 4. Current working directory (except CLI) +; 5. The web server's directory (for SAPI modules), or directory of PHP +; (otherwise in Windows) +; 6. The directory from the --with-config-file-path compile time option, or the +; Windows directory (C:\windows or C:\winnt) +; See the PHP docs for more specific information. +; http://php.net/configuration.file + +; The syntax of the file is extremely simple. Whitespace and Lines +; beginning with a semicolon are silently ignored (as you probably guessed). +; Section headers (e.g. [Foo]) are also silently ignored, even though +; they might mean something in the future. + +; Directives following the section heading [PATH=/www/mysite] only +; apply to PHP files in the /www/mysite directory. Directives +; following the section heading [HOST=www.example.com] only apply to +; PHP files served from www.example.com. Directives set in these +; special sections cannot be overridden by user-defined INI files or +; at runtime. Currently, [PATH=] and [HOST=] sections only work under +; CGI/FastCGI. +; http://php.net/ini.sections + +; Directives are specified using the following syntax: +; directive = value +; Directive names are *case sensitive* - foo=bar is different from FOO=bar. +; Directives are variables used to configure PHP or PHP extensions. +; There is no name validation. If PHP can't find an expected +; directive because it is not set or is mistyped, a default value will be used. + +; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one +; of the INI constants (On, Off, True, False, Yes, No and None) or an expression +; (e.g. E_ALL & ~E_NOTICE), a quoted string ("bar"), or a reference to a +; previously set variable or directive (e.g. ${foo}) + +; Expressions in the INI file are limited to bitwise operators and parentheses: +; | bitwise OR +; ^ bitwise XOR +; & bitwise AND +; ~ bitwise NOT +; ! boolean NOT + +; Boolean flags can be turned on using the values 1, On, True or Yes. +; They can be turned off using the values 0, Off, False or No. + +; An empty string can be denoted by simply not writing anything after the equal +; sign, or by using the None keyword: + +; foo = ; sets foo to an empty string +; foo = None ; sets foo to an empty string +; foo = "None" ; sets foo to the string 'None' + +; If you use constants in your value, and these constants belong to a +; dynamically loaded extension (either a PHP extension or a Zend extension), +; you may only use these constants *after* the line that loads the extension. + +;;;;;;;;;;;;;;;;;;; +; About this file ; +;;;;;;;;;;;;;;;;;;; +; PHP comes packaged with two INI files. One that is recommended to be used +; in production environments and one that is recommended to be used in +; development environments. + +; php.ini-production contains settings which hold security, performance and +; best practices at its core. But please be aware, these settings may break +; compatibility with older or less security conscience applications. We +; recommending using the production ini in production and testing environments. + +; php.ini-development is very similar to its production variant, except it's +; much more verbose when it comes to errors. We recommending using the +; development version only in development environments as errors shown to +; application users can inadvertently leak otherwise secure information. + +;;;;;;;;;;;;;;;;;;; +; Quick Reference ; +;;;;;;;;;;;;;;;;;;; +; The following are all the settings which are different in either the production +; or development versions of the INIs with respect to PHP's default behavior. +; Please see the actual settings later in the document for more details as to why +; we recommend these changes in PHP's behavior. + +; allow_call_time_pass_reference +; Default Value: On +; Development Value: Off +; Production Value: Off + +; display_errors +; Default Value: On +; Development Value: On +; Production Value: Off + +; display_startup_errors +; Default Value: Off +; Development Value: On +; Production Value: Off + +; error_reporting +; Default Value: E_ALL & ~E_NOTICE +; Development Value: E_ALL | E_STRICT +; Production Value: E_ALL & ~E_DEPRECATED + +; html_errors +; Default Value: On +; Development Value: On +; Production value: Off + +; log_errors +; Default Value: Off +; Development Value: On +; Production Value: On + +; magic_quotes_gpc +; Default Value: On +; Development Value: Off +; Production Value: Off + +; max_input_time +; Default Value: -1 (Unlimited) +; Development Value: 60 (60 seconds) +; Production Value: 60 (60 seconds) + +; output_buffering +; Default Value: Off +; Development Value: 4096 +; Production Value: 4096 + +; register_argc_argv +; Default Value: On +; Development Value: Off +; Production Value: Off + +; register_long_arrays +; Default Value: On +; Development Value: Off +; Production Value: Off + +; request_order +; Default Value: None +; Development Value: "GP" +; Production Value: "GP" + +; session.bug_compat_42 +; Default Value: On +; Development Value: On +; Production Value: Off + +; session.bug_compat_warn +; Default Value: On +; Development Value: On +; Production Value: Off + +; session.gc_divisor +; Default Value: 100 +; Development Value: 1000 +; Production Value: 1000 + +; session.hash_bits_per_character +; Default Value: 4 +; Development Value: 5 +; Production Value: 5 + +; short_open_tag +; Default Value: On +; Development Value: Off +; Production Value: Off + +; track_errors +; Default Value: Off +; Development Value: On +; Production Value: Off + +; url_rewriter.tags +; Default Value: "a=href,area=href,frame=src,form=,fieldset=" +; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry" +; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry" + +; variables_order +; Default Value: "EGPCS" +; Development Value: "GPCS" +; Production Value: "GPCS" + +;;;;;;;;;;;;;;;;;;;; +; php.ini Options ; +;;;;;;;;;;;;;;;;;;;; +; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini" +;user_ini.filename = ".user.ini" + +; To disable this feature set this option to empty value +;user_ini.filename = + +; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes) +;user_ini.cache_ttl = 300 + +;;;;;;;;;;;;;;;;;;;; +; Language Options ; +;;;;;;;;;;;;;;;;;;;; + +; Enable the PHP scripting language engine under Apache. +; http://php.net/engine +engine = On + +; This directive determines whether or not PHP will recognize code between +; tags as PHP source which should be processed as such. It's been +; recommended for several years that you not use the short tag "short cut" and +; instead to use the full tag combination. With the wide spread use +; of XML and use of these tags by other languages, the server can become easily +; confused and end up parsing the wrong code in the wrong context. But because +; this short cut has been a feature for such a long time, it's currently still +; supported for backwards compatibility, but we recommend you don't use them. +; Default Value: On +; Development Value: Off +; Production Value: Off +; http://php.net/short-open-tag +short_open_tag = On + +; Allow ASP-style <% %> tags. +; http://php.net/asp-tags +asp_tags = Off + +; The number of significant digits displayed in floating point numbers. +; http://php.net/precision +precision = 14 + +; Enforce year 2000 compliance (will cause problems with non-compliant browsers) +; http://php.net/y2k-compliance +y2k_compliance = On + +; Output buffering is a mechanism for controlling how much output data +; (excluding headers and cookies) PHP should keep internally before pushing that +; data to the client. If your application's output exceeds this setting, PHP +; will send that data in chunks of roughly the size you specify. +; Turning on this setting and managing its maximum buffer size can yield some +; interesting side-effects depending on your application and web server. +; You may be able to send headers and cookies after you've already sent output +; through print or echo. You also may see performance benefits if your server is +; emitting less packets due to buffered output versus PHP streaming the output +; as it gets it. On production servers, 4096 bytes is a good setting for performance +; reasons. +; Note: Output buffering can also be controlled via Output Buffering Control +; functions. +; Possible Values: +; On = Enabled and buffer is unlimited. (Use with caution) +; Off = Disabled +; Integer = Enables the buffer and sets its maximum size in bytes. +; Note: This directive is hardcoded to Off for the CLI SAPI +; Default Value: Off +; Development Value: 4096 +; Production Value: 4096 +; http://php.net/output-buffering +output_buffering = 4096 + +; You can redirect all of the output of your scripts to a function. For +; example, if you set output_handler to "mb_output_handler", character +; encoding will be transparently converted to the specified encoding. +; Setting any output handler automatically turns on output buffering. +; Note: People who wrote portable scripts should not depend on this ini +; directive. Instead, explicitly set the output handler using ob_start(). +; Using this ini directive may cause problems unless you know what script +; is doing. +; Note: You cannot use both "mb_output_handler" with "ob_iconv_handler" +; and you cannot use both "ob_gzhandler" and "zlib.output_compression". +; Note: output_handler must be empty if this is set 'On' !!!! +; Instead you must use zlib.output_handler. +; http://php.net/output-handler +;output_handler = + +; Transparent output compression using the zlib library +; Valid values for this option are 'off', 'on', or a specific buffer size +; to be used for compression (default is 4KB) +; Note: Resulting chunk size may vary due to nature of compression. PHP +; outputs chunks that are few hundreds bytes each as a result of +; compression. If you prefer a larger chunk size for better +; performance, enable output_buffering in addition. +; Note: You need to use zlib.output_handler instead of the standard +; output_handler, or otherwise the output will be corrupted. +; http://php.net/zlib.output-compression +zlib.output_compression = Off + +; http://php.net/zlib.output-compression-level +;zlib.output_compression_level = -1 + +; You cannot specify additional output handlers if zlib.output_compression +; is activated here. This setting does the same as output_handler but in +; a different order. +; http://php.net/zlib.output-handler +;zlib.output_handler = + +; Implicit flush tells PHP to tell the output layer to flush itself +; automatically after every output block. This is equivalent to calling the +; PHP function flush() after each and every call to print() or echo() and each +; and every HTML block. Turning this option on has serious performance +; implications and is generally recommended for debugging purposes only. +; http://php.net/implicit-flush +; Note: This directive is hardcoded to On for the CLI SAPI +implicit_flush = Off + +; The unserialize callback function will be called (with the undefined class' +; name as parameter), if the unserializer finds an undefined class +; which should be instantiated. A warning appears if the specified function is +; not defined, or if the function doesn't include/implement the missing class. +; So only set this entry, if you really want to implement such a +; callback-function. +unserialize_callback_func = + +; When floats & doubles are serialized store serialize_precision significant +; digits after the floating point. The default value ensures that when floats +; are decoded with unserialize, the data will remain the same. +serialize_precision = 100 + +; This directive allows you to enable and disable warnings which PHP will issue +; if you pass a value by reference at function call time. Passing values by +; reference at function call time is a deprecated feature which will be removed +; from PHP at some point in the near future. The acceptable method for passing a +; value by reference to a function is by declaring the reference in the functions +; definition, not at call time. This directive does not disable this feature, it +; only determines whether PHP will warn you about it or not. These warnings +; should enabled in development environments only. +; Default Value: On (Suppress warnings) +; Development Value: Off (Issue warnings) +; Production Value: Off (Issue warnings) +; http://php.net/allow-call-time-pass-reference +allow_call_time_pass_reference = Off + +; Safe Mode +; http://php.net/safe-mode +safe_mode = Off + +; By default, Safe Mode does a UID compare check when +; opening files. If you want to relax this to a GID compare, +; then turn on safe_mode_gid. +; http://php.net/safe-mode-gid +safe_mode_gid = Off + +; When safe_mode is on, UID/GID checks are bypassed when +; including files from this directory and its subdirectories. +; (directory must also be in include_path or full path must +; be used when including) +; http://php.net/safe-mode-include-dir +safe_mode_include_dir = + +; When safe_mode is on, only executables located in the safe_mode_exec_dir +; will be allowed to be executed via the exec family of functions. +; http://php.net/safe-mode-exec-dir +safe_mode_exec_dir = + +; Setting certain environment variables may be a potential security breach. +; This directive contains a comma-delimited list of prefixes. In Safe Mode, +; the user may only alter environment variables whose names begin with the +; prefixes supplied here. By default, users will only be able to set +; environment variables that begin with PHP_ (e.g. PHP_FOO=BAR). +; Note: If this directive is empty, PHP will let the user modify ANY +; environment variable! +; http://php.net/safe-mode-allowed-env-vars +safe_mode_allowed_env_vars = PHP_ + +; This directive contains a comma-delimited list of environment variables that +; the end user won't be able to change using putenv(). These variables will be +; protected even if safe_mode_allowed_env_vars is set to allow to change them. +; http://php.net/safe-mode-protected-env-vars +safe_mode_protected_env_vars = LD_LIBRARY_PATH + +; open_basedir, if set, limits all file operations to the defined directory +; and below. This directive makes most sense if used in a per-directory +; or per-virtualhost web server configuration file. This directive is +; *NOT* affected by whether Safe Mode is turned On or Off. +; http://php.net/open-basedir +;open_basedir = + +; This directive allows you to disable certain functions for security reasons. +; It receives a comma-delimited list of function names. This directive is +; *NOT* affected by whether Safe Mode is turned On or Off. +; http://php.net/disable-functions +disable_functions = + +; This directive allows you to disable certain classes for security reasons. +; It receives a comma-delimited list of class names. This directive is +; *NOT* affected by whether Safe Mode is turned On or Off. +; http://php.net/disable-classes +disable_classes = + +; Colors for Syntax Highlighting mode. Anything that's acceptable in +; would work. +; http://php.net/syntax-highlighting +;highlight.string = #DD0000 +;highlight.comment = #FF9900 +;highlight.keyword = #007700 +;highlight.bg = #FFFFFF +;highlight.default = #0000BB +;highlight.html = #000000 + +; If enabled, the request will be allowed to complete even if the user aborts +; the request. Consider enabling it if executing long requests, which may end up +; being interrupted by the user or a browser timing out. PHP's default behavior +; is to disable this feature. +; http://php.net/ignore-user-abort +;ignore_user_abort = On + +; Determines the size of the realpath cache to be used by PHP. This value should +; be increased on systems where PHP opens many files to reflect the quantity of +; the file operations performed. +; http://php.net/realpath-cache-size +;realpath_cache_size = 16k + +; Duration of time, in seconds for which to cache realpath information for a given +; file or directory. For systems with rarely changing files, consider increasing this +; value. +; http://php.net/realpath-cache-ttl +;realpath_cache_ttl = 120 + +;;;;;;;;;;;;;;;;; +; Miscellaneous ; +;;;;;;;;;;;;;;;;; + +; Decides whether PHP may expose the fact that it is installed on the server +; (e.g. by adding its signature to the Web server header). It is no security +; threat in any way, but it makes it possible to determine whether you use PHP +; on your server or not. +; http://php.net/expose-php +expose_php = On + +;;;;;;;;;;;;;;;;;;; +; Resource Limits ; +;;;;;;;;;;;;;;;;;;; + +; Maximum execution time of each script, in seconds +; http://php.net/max-execution-time +; Note: This directive is hardcoded to 0 for the CLI SAPI +max_execution_time = 30 + +; Maximum amount of time each script may spend parsing request data. It's a good +; idea to limit this time on productions servers in order to eliminate unexpectedly +; long running scripts. +; Note: This directive is hardcoded to -1 for the CLI SAPI +; Default Value: -1 (Unlimited) +; Development Value: 60 (60 seconds) +; Production Value: 60 (60 seconds) +; http://php.net/max-input-time +max_input_time = 60 + +; Maximum input variable nesting level +; http://php.net/max-input-nesting-level +;max_input_nesting_level = 64 + +; Maximum amount of memory a script may consume (128MB) +; http://php.net/memory-limit +memory_limit = 128M + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Error handling and logging ; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +; This directive informs PHP of which errors, warnings and notices you would like +; it to take action for. The recommended way of setting values for this +; directive is through the use of the error level constants and bitwise +; operators. The error level constants are below here for convenience as well as +; some common settings and their meanings. +; By default, PHP is set to take action on all errors, notices and warnings EXCEPT +; those related to E_NOTICE and E_STRICT, which together cover best practices and +; recommended coding standards in PHP. For performance reasons, this is the +; recommend error reporting setting. Your production server shouldn't be wasting +; resources complaining about best practices and coding standards. That's what +; development servers and development settings are for. +; Note: The php.ini-development file has this setting as E_ALL | E_STRICT. This +; means it pretty much reports everything which is exactly what you want during +; development and early testing. +; +; Error Level Constants: +; E_ALL - All errors and warnings (includes E_STRICT as of PHP 6.0.0) +; E_ERROR - fatal run-time errors +; E_RECOVERABLE_ERROR - almost fatal run-time errors +; E_WARNING - run-time warnings (non-fatal errors) +; E_PARSE - compile-time parse errors +; E_NOTICE - run-time notices (these are warnings which often result +; from a bug in your code, but it's possible that it was +; intentional (e.g., using an uninitialized variable and +; relying on the fact it's automatically initialized to an +; empty string) +; E_STRICT - run-time notices, enable to have PHP suggest changes +; to your code which will ensure the best interoperability +; and forward compatibility of your code +; E_CORE_ERROR - fatal errors that occur during PHP's initial startup +; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's +; initial startup +; E_COMPILE_ERROR - fatal compile-time errors +; E_COMPILE_WARNING - compile-time warnings (non-fatal errors) +; E_USER_ERROR - user-generated error message +; E_USER_WARNING - user-generated warning message +; E_USER_NOTICE - user-generated notice message +; E_DEPRECATED - warn about code that will not work in future versions +; of PHP +; E_USER_DEPRECATED - user-generated deprecation warnings +; +; Common Values: +; E_ALL & ~E_NOTICE (Show all errors, except for notices and coding standards warnings.) +; E_ALL & ~E_NOTICE | E_STRICT (Show all errors, except for notices) +; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors) +; E_ALL | E_STRICT (Show all errors, warnings and notices including coding standards.) +; Default Value: E_ALL & ~E_NOTICE +; Development Value: E_ALL | E_STRICT +; Production Value: E_ALL & ~E_DEPRECATED +; http://php.net/error-reporting +error_reporting = E_ALL & ~E_DEPRECATED + +; This directive controls whether or not and where PHP will output errors, +; notices and warnings too. Error output is very useful during development, but +; it could be very dangerous in production environments. Depending on the code +; which is triggering the error, sensitive information could potentially leak +; out of your application such as database usernames and passwords or worse. +; It's recommended that errors be logged on production servers rather than +; having the errors sent to STDOUT. +; Possible Values: +; Off = Do not display any errors +; stderr = Display errors to STDERR (affects only CGI/CLI binaries!) +; On or stdout = Display errors to STDOUT +; Default Value: On +; Development Value: On +; Production Value: Off +; http://php.net/display-errors +display_errors = Off + +; The display of errors which occur during PHP's startup sequence are handled +; separately from display_errors. PHP's default behavior is to suppress those +; errors from clients. Turning the display of startup errors on can be useful in +; debugging configuration problems. But, it's strongly recommended that you +; leave this setting off on production servers. +; Default Value: Off +; Development Value: On +; Production Value: Off +; http://php.net/display-startup-errors +display_startup_errors = Off + +; Besides displaying errors, PHP can also log errors to locations such as a +; server-specific log, STDERR, or a location specified by the error_log +; directive found below. While errors should not be displayed on productions +; servers they should still be monitored and logging is a great way to do that. +; Default Value: Off +; Development Value: On +; Production Value: On +; http://php.net/log-errors +log_errors = On + +; Set maximum length of log_errors. In error_log information about the source is +; added. The default is 1024 and 0 allows to not apply any maximum length at all. +; http://php.net/log-errors-max-len +log_errors_max_len = 1024 + +; Do not log repeated messages. Repeated errors must occur in same file on same +; line unless ignore_repeated_source is set true. +; http://php.net/ignore-repeated-errors +ignore_repeated_errors = Off + +; Ignore source of message when ignoring repeated messages. When this setting +; is On you will not log errors with repeated messages from different files or +; source lines. +; http://php.net/ignore-repeated-source +ignore_repeated_source = Off + +; If this parameter is set to Off, then memory leaks will not be shown (on +; stdout or in the log). This has only effect in a debug compile, and if +; error reporting includes E_WARNING in the allowed list +; http://php.net/report-memleaks +report_memleaks = On + +; This setting is on by default. +;report_zend_debug = 0 + +; Store the last error/warning message in $php_errormsg (boolean). Setting this value +; to On can assist in debugging and is appropriate for development servers. It should +; however be disabled on production servers. +; Default Value: Off +; Development Value: On +; Production Value: Off +; http://php.net/track-errors +track_errors = Off + +; Turn off normal error reporting and emit XML-RPC error XML +; http://php.net/xmlrpc-errors +;xmlrpc_errors = 0 + +; An XML-RPC faultCode +;xmlrpc_error_number = 0 + +; When PHP displays or logs an error, it has the capability of inserting html +; links to documentation related to that error. This directive controls whether +; those HTML links appear in error messages or not. For performance and security +; reasons, it's recommended you disable this on production servers. +; Note: This directive is hardcoded to Off for the CLI SAPI +; Default Value: On +; Development Value: On +; Production value: Off +; http://php.net/html-errors +html_errors = Off + +; If html_errors is set On PHP produces clickable error messages that direct +; to a page describing the error or function causing the error in detail. +; You can download a copy of the PHP manual from http://php.net/docs +; and change docref_root to the base URL of your local copy including the +; leading '/'. You must also specify the file extension being used including +; the dot. PHP's default behavior is to leave these settings empty. +; Note: Never use this feature for production boxes. +; http://php.net/docref-root +; Examples +;docref_root = "/phpmanual/" + +; http://php.net/docref-ext +;docref_ext = .html + +; String to output before an error message. PHP's default behavior is to leave +; this setting blank. +; http://php.net/error-prepend-string +; Example: +;error_prepend_string = "" + +; String to output after an error message. PHP's default behavior is to leave +; this setting blank. +; http://php.net/error-append-string +; Example: +;error_append_string = "" + +; Log errors to specified file. PHP's default behavior is to leave this value +; empty. +; http://php.net/error-log +; Example: +;error_log = php_errors.log +; Log errors to syslog (Event Log on NT, not valid in Windows 95). +;error_log = syslog + +;;;;;;;;;;;;;;;;; +; Data Handling ; +;;;;;;;;;;;;;;;;; + +; The separator used in PHP generated URLs to separate arguments. +; PHP's default setting is "&". +; http://php.net/arg-separator.output +; Example: +;arg_separator.output = "&" + +; List of separator(s) used by PHP to parse input URLs into variables. +; PHP's default setting is "&". +; NOTE: Every character in this directive is considered as separator! +; http://php.net/arg-separator.input +; Example: +;arg_separator.input = ";&" + +; This directive determines which super global arrays are registered when PHP +; starts up. If the register_globals directive is enabled, it also determines +; what order variables are populated into the global space. G,P,C,E & S are +; abbreviations for the following respective super globals: GET, POST, COOKIE, +; ENV and SERVER. There is a performance penalty paid for the registration of +; these arrays and because ENV is not as commonly used as the others, ENV is +; is not recommended on productions servers. You can still get access to +; the environment variables through getenv() should you need to. +; Default Value: "EGPCS" +; Development Value: "GPCS" +; Production Value: "GPCS"; +; http://php.net/variables-order +variables_order = "GPCS" + +; This directive determines which super global data (G,P,C,E & S) should +; be registered into the super global array REQUEST. If so, it also determines +; the order in which that data is registered. The values for this directive are +; specified in the same manner as the variables_order directive, EXCEPT one. +; Leaving this value empty will cause PHP to use the value set in the +; variables_order directive. It does not mean it will leave the super globals +; array REQUEST empty. +; Default Value: None +; Development Value: "GP" +; Production Value: "GP" +; http://php.net/request-order +request_order = "GP" + +; Whether or not to register the EGPCS variables as global variables. You may +; want to turn this off if you don't want to clutter your scripts' global scope +; with user data. +; You should do your best to write your scripts so that they do not require +; register_globals to be on; Using form variables as globals can easily lead +; to possible security problems, if the code is not very well thought of. +; http://php.net/register-globals +register_globals = Off + +; Determines whether the deprecated long $HTTP_*_VARS type predefined variables +; are registered by PHP or not. As they are deprecated, we obviously don't +; recommend you use them. They are on by default for compatibility reasons but +; they are not recommended on production servers. +; Default Value: On +; Development Value: Off +; Production Value: Off +; http://php.net/register-long-arrays +register_long_arrays = Off + +; This directive determines whether PHP registers $argv & $argc each time it +; runs. $argv contains an array of all the arguments passed to PHP when a script +; is invoked. $argc contains an integer representing the number of arguments +; that were passed when the script was invoked. These arrays are extremely +; useful when running scripts from the command line. When this directive is +; enabled, registering these variables consumes CPU cycles and memory each time +; a script is executed. For performance reasons, this feature should be disabled +; on production servers. +; Note: This directive is hardcoded to On for the CLI SAPI +; Default Value: On +; Development Value: Off +; Production Value: Off +; http://php.net/register-argc-argv +register_argc_argv = Off + +; When enabled, the SERVER and ENV variables are created when they're first +; used (Just In Time) instead of when the script starts. If these variables +; are not used within a script, having this directive on will result in a +; performance gain. The PHP directives register_globals, register_long_arrays, +; and register_argc_argv must be disabled for this directive to have any affect. +; http://php.net/auto-globals-jit +auto_globals_jit = On + +; Maximum size of POST data that PHP will accept. +; http://php.net/post-max-size +post_max_size = 8M + +; Magic quotes are a preprocessing feature of PHP where PHP will attempt to +; escape any character sequences in GET, POST, COOKIE and ENV data which might +; otherwise corrupt data being placed in resources such as databases before +; making that data available to you. Because of character encoding issues and +; non-standard SQL implementations across many databases, it's not currently +; possible for this feature to be 100% accurate. PHP's default behavior is to +; enable the feature. We strongly recommend you use the escaping mechanisms +; designed specifically for the database your using instead of relying on this +; feature. Also note, this feature has been deprecated as of PHP 5.3.0 and is +; scheduled for removal in PHP 6. +; Default Value: On +; Development Value: Off +; Production Value: Off +; http://php.net/magic-quotes-gpc +magic_quotes_gpc = Off + +; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc. +; http://php.net/magic-quotes-runtime +magic_quotes_runtime = Off + +; Use Sybase-style magic quotes (escape ' with '' instead of \'). +; http://php.net/magic-quotes-sybase +magic_quotes_sybase = Off + +; Automatically add files before PHP document. +; http://php.net/auto-prepend-file +auto_prepend_file = + +; Automatically add files after PHP document. +; http://php.net/auto-append-file +auto_append_file = + +; By default, PHP will output a character encoding using +; the Content-type: header. To disable sending of the charset, simply +; set it to be empty. +; +; PHP's built-in default is text/html +; http://php.net/default-mimetype +default_mimetype = "text/plain" + +; PHP's default character set is set to empty. +; http://php.net/default-charset +;default_charset = "iso-8859-1" + +; Always populate the $HTTP_RAW_POST_DATA variable. PHP's default behavior is +; to disable this feature. +; http://php.net/always-populate-raw-post-data +;always_populate_raw_post_data = On + +;;;;;;;;;;;;;;;;;;;;;;;;; +; Paths and Directories ; +;;;;;;;;;;;;;;;;;;;;;;;;; + +; UNIX: "/path1:/path2" +;include_path = ".:/usr/share/php" +; +; Windows: "\path1;\path2" +;include_path = ".;c:\php\includes" +; +; PHP's default setting for include_path is ".;/path/to/php/pear" +; http://php.net/include-path + +; The root of the PHP pages, used only if nonempty. +; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root +; if you are running php as a CGI under any web server (other than IIS) +; see documentation for security issues. The alternate is to use the +; cgi.force_redirect configuration below +; http://php.net/doc-root +doc_root = __ROOT__/html + +; The directory under which PHP opens the script using /~username used only +; if nonempty. +; http://php.net/user-dir +user_dir = + +; Directory in which the loadable extensions (modules) reside. +; http://php.net/extension-dir +; extension_dir = "./" +; On windows: +; extension_dir = "ext" + +; Whether or not to enable the dl() function. The dl() function does NOT work +; properly in multithreaded servers, such as IIS or Zeus, and is automatically +; disabled on them. +; http://php.net/enable-dl +enable_dl = Off + +; cgi.force_redirect is necessary to provide security running PHP as a CGI under +; most web servers. Left undefined, PHP turns this on by default. You can +; turn it off here AT YOUR OWN RISK +; **You CAN safely turn this off for IIS, in fact, you MUST.** +; http://php.net/cgi.force-redirect +;cgi.force_redirect = 1 + +; if cgi.nph is enabled it will force cgi to always sent Status: 200 with +; every request. PHP's default behavior is to disable this feature. +;cgi.nph = 1 + +; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape +; (iPlanet) web servers, you MAY need to set an environment variable name that PHP +; will look for to know it is OK to continue execution. Setting this variable MAY +; cause security issues, KNOW WHAT YOU ARE DOING FIRST. +; http://php.net/cgi.redirect-status-env +;cgi.redirect_status_env = ; + +; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's +; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok +; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting +; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting +; of zero causes PHP to behave as before. Default is 1. You should fix your scripts +; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. +; http://php.net/cgi.fix-pathinfo +;cgi.fix_pathinfo=1 + +; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate +; security tokens of the calling client. This allows IIS to define the +; security context that the request runs under. mod_fastcgi under Apache +; does not currently support this feature (03/17/2002) +; Set to 1 if running under IIS. Default is zero. +; http://php.net/fastcgi.impersonate +;fastcgi.impersonate = 1; + +; Disable logging through FastCGI connection. PHP's default behavior is to enable +; this feature. +;fastcgi.logging = 0 + +; cgi.rfc2616_headers configuration option tells PHP what type of headers to +; use when sending HTTP response code. If it's set 0 PHP sends Status: header that +; is supported by Apache. When this option is set to 1 PHP will send +; RFC2616 compliant header. +; Default is zero. +; http://php.net/cgi.rfc2616-headers +;cgi.rfc2616_headers = 0 + +;;;;;;;;;;;;;;;; +; File Uploads ; +;;;;;;;;;;;;;;;; + +; Whether to allow HTTP file uploads. +; http://php.net/file-uploads +file_uploads = On + +; Temporary directory for HTTP uploaded files (will use system default if not +; specified). +; http://php.net/upload-tmp-dir +upload_tmp_dir = __ROOT__/upload_tmp_dir + +; Maximum allowed size for uploaded files. +; http://php.net/upload-max-filesize +upload_max_filesize = 2M + +; Maximum number of files that can be uploaded via a single request +max_file_uploads = 20 + +;;;;;;;;;;;;;;;;;; +; Fopen wrappers ; +;;;;;;;;;;;;;;;;;; + +; Whether to allow the treatment of URLs (like http:// or ftp://) as files. +; http://php.net/allow-url-fopen +allow_url_fopen = On + +; Whether to allow include/require to open URLs (like http:// or ftp://) as files. +; http://php.net/allow-url-include +allow_url_include = Off + +; Define the anonymous ftp password (your email address). PHP's default setting +; for this is empty. +; http://php.net/from +;from="john@doe.com" + +; Define the User-Agent string. PHP's default setting for this is empty. +; http://php.net/user-agent +;user_agent="PHP" + +; Default timeout for socket based streams (seconds) +; http://php.net/default-socket-timeout +default_socket_timeout = 60 + +; If your scripts have to deal with files from Macintosh systems, +; or you are running on a Mac and need to deal with files from +; unix or win32 systems, setting this flag will cause PHP to +; automatically detect the EOL character in those files so that +; fgets() and file() will work regardless of the source of the file. +; http://php.net/auto-detect-line-endings +;auto_detect_line_endings = Off + +;;;;;;;;;;;;;;;;;;;;;; +; Dynamic Extensions ; +;;;;;;;;;;;;;;;;;;;;;; + +; If you wish to have an extension loaded automatically, use the following +; syntax: +; +; extension=modulename.extension +; +; For example, on Windows: +; +; extension=msql.dll +; +; ... or under UNIX: +; +; extension=msql.so +; +; ... or with a path: +; +; extension=/path/to/extension/msql.so +; +; If you only provide the name of the extension, PHP will look for it in its +; default extension directory. +; + +;;;;;;;;;;;;;;;;;;; +; Module Settings ; +;;;;;;;;;;;;;;;;;;; + +[Date] +; Defines the default timezone used by the date functions +; http://php.net/date.timezone +;date.timezone = + +; http://php.net/date.default-latitude +;date.default_latitude = 31.7667 + +; http://php.net/date.default-longitude +;date.default_longitude = 35.2333 + +; http://php.net/date.sunrise-zenith +;date.sunrise_zenith = 90.583333 + +; http://php.net/date.sunset-zenith +;date.sunset_zenith = 90.583333 + +[filter] +; http://php.net/filter.default +;filter.default = unsafe_raw + +; http://php.net/filter.default-flags +;filter.default_flags = + +[iconv] +;iconv.input_encoding = ISO-8859-1 +;iconv.internal_encoding = ISO-8859-1 +;iconv.output_encoding = ISO-8859-1 + +[intl] +;intl.default_locale = +; This directive allows you to produce PHP errors when some error +; happens within intl functions. The value is the level of the error produced. +; Default is 0, which does not produce any errors. +;intl.error_level = E_WARNING + +[sqlite] +; http://php.net/sqlite.assoc-case +;sqlite.assoc_case = 0 + +[sqlite3] +;sqlite3.extension_dir = + +[Pcre] +;PCRE library backtracking limit. +; http://php.net/pcre.backtrack-limit +;pcre.backtrack_limit=100000 + +;PCRE library recursion limit. +;Please note that if you set this value to a high number you may consume all +;the available process stack and eventually crash PHP (due to reaching the +;stack size limit imposed by the Operating System). +; http://php.net/pcre.recursion-limit +;pcre.recursion_limit=100000 + +[Pdo] +; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off" +; http://php.net/pdo-odbc.connection-pooling +;pdo_odbc.connection_pooling=strict + +;pdo_odbc.db2_instance_name + +[Pdo_mysql] +; If mysqlnd is used: Number of cache slots for the internal result set cache +; http://php.net/pdo_mysql.cache_size +pdo_mysql.cache_size = 2000 + +; Default socket name for local MySQL connects. If empty, uses the built-in +; MySQL defaults. +; http://php.net/pdo_mysql.default-socket +pdo_mysql.default_socket= + +[Phar] +; http://php.net/phar.readonly +;phar.readonly = On + +; http://php.net/phar.require-hash +;phar.require_hash = On + +;phar.cache_list = + +[Syslog] +; Whether or not to define the various syslog variables (e.g. $LOG_PID, +; $LOG_CRON, etc.). Turning it off is a good idea performance-wise. In +; runtime, you can define these variables by calling define_syslog_variables(). +; http://php.net/define-syslog-variables +define_syslog_variables = Off + +[mail function] +; For Win32 only. +; http://php.net/smtp +SMTP = localhost +; http://php.net/smtp-port +smtp_port = 25 + +; For Win32 only. +; http://php.net/sendmail-from +;sendmail_from = me@example.com + +; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). +; http://php.net/sendmail-path +;sendmail_path = + +; Force the addition of the specified parameters to be passed as extra parameters +; to the sendmail binary. These parameters will always replace the value of +; the 5th parameter to mail(), even in safe mode. +;mail.force_extra_parameters = + +; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename +mail.add_x_header = On + +; Log all mail() calls including the full path of the script, line #, to address and headers +;mail.log = + +[SQL] +; http://php.net/sql.safe-mode +sql.safe_mode = Off + +[ODBC] +; http://php.net/odbc.default-db +;odbc.default_db = Not yet implemented + +; http://php.net/odbc.default-user +;odbc.default_user = Not yet implemented + +; http://php.net/odbc.default-pw +;odbc.default_pw = Not yet implemented + +; Controls the ODBC cursor model. +; Default: SQL_CURSOR_STATIC (default). +;odbc.default_cursortype + +; Allow or prevent persistent links. +; http://php.net/odbc.allow-persistent +odbc.allow_persistent = On + +; Check that a connection is still valid before reuse. +; http://php.net/odbc.check-persistent +odbc.check_persistent = On + +; Maximum number of persistent links. -1 means no limit. +; http://php.net/odbc.max-persistent +odbc.max_persistent = -1 + +; Maximum number of links (persistent + non-persistent). -1 means no limit. +; http://php.net/odbc.max-links +odbc.max_links = -1 + +; Handling of LONG fields. Returns number of bytes to variables. 0 means +; passthru. +; http://php.net/odbc.defaultlrl +odbc.defaultlrl = 4096 + +; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char. +; See the documentation on odbc_binmode and odbc_longreadlen for an explanation +; of odbc.defaultlrl and odbc.defaultbinmode +; http://php.net/odbc.defaultbinmode +odbc.defaultbinmode = 1 + +;birdstep.max_links = -1 + +[Interbase] +; Allow or prevent persistent links. +ibase.allow_persistent = 1 + +; Maximum number of persistent links. -1 means no limit. +ibase.max_persistent = -1 + +; Maximum number of links (persistent + non-persistent). -1 means no limit. +ibase.max_links = -1 + +; Default database name for ibase_connect(). +;ibase.default_db = + +; Default username for ibase_connect(). +;ibase.default_user = + +; Default password for ibase_connect(). +;ibase.default_password = + +; Default charset for ibase_connect(). +;ibase.default_charset = + +; Default timestamp format. +ibase.timestampformat = "%Y-%m-%d %H:%M:%S" + +; Default date format. +ibase.dateformat = "%Y-%m-%d" + +; Default time format. +ibase.timeformat = "%H:%M:%S" + +[MySQL] +; Allow accessing, from PHP's perspective, local files with LOAD DATA statements +; http://php.net/mysql.allow_local_infile +mysql.allow_local_infile = On + +; Allow or prevent persistent links. +; http://php.net/mysql.allow-persistent +mysql.allow_persistent = On + +; If mysqlnd is used: Number of cache slots for the internal result set cache +; http://php.net/mysql.cache_size +mysql.cache_size = 2000 + +; Maximum number of persistent links. -1 means no limit. +; http://php.net/mysql.max-persistent +mysql.max_persistent = -1 + +; Maximum number of links (persistent + non-persistent). -1 means no limit. +; http://php.net/mysql.max-links +mysql.max_links = -1 + +; Default port number for mysql_connect(). If unset, mysql_connect() will use +; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the +; compile-time value defined MYSQL_PORT (in that order). Win32 will only look +; at MYSQL_PORT. +; http://php.net/mysql.default-port +mysql.default_port = + +; Default socket name for local MySQL connects. If empty, uses the built-in +; MySQL defaults. +; http://php.net/mysql.default-socket +mysql.default_socket = + +; Default host for mysql_connect() (doesn't apply in safe mode). +; http://php.net/mysql.default-host +mysql.default_host = + +; Default user for mysql_connect() (doesn't apply in safe mode). +; http://php.net/mysql.default-user +mysql.default_user = + +; Default password for mysql_connect() (doesn't apply in safe mode). +; Note that this is generally a *bad* idea to store passwords in this file. +; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password") +; and reveal this password! And of course, any users with read access to this +; file will be able to reveal the password as well. +; http://php.net/mysql.default-password +mysql.default_password = + +; Maximum time (in seconds) for connect timeout. -1 means no limit +; http://php.net/mysql.connect-timeout +mysql.connect_timeout = 60 + +; Trace mode. When trace_mode is active (=On), warnings for table/index scans and +; SQL-Errors will be displayed. +; http://php.net/mysql.trace-mode +mysql.trace_mode = Off + +[MySQLi] + +; Maximum number of persistent links. -1 means no limit. +; http://php.net/mysqli.max-persistent +mysqli.max_persistent = -1 + +; Allow accessing, from PHP's perspective, local files with LOAD DATA statements +; http://php.net/mysqli.allow_local_infile +;mysqli.allow_local_infile = On + +; Allow or prevent persistent links. +; http://php.net/mysqli.allow-persistent +mysqli.allow_persistent = On + +; Maximum number of links. -1 means no limit. +; http://php.net/mysqli.max-links +mysqli.max_links = -1 + +; If mysqlnd is used: Number of cache slots for the internal result set cache +; http://php.net/mysqli.cache_size +mysqli.cache_size = 2000 + +; Default port number for mysqli_connect(). If unset, mysqli_connect() will use +; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the +; compile-time value defined MYSQL_PORT (in that order). Win32 will only look +; at MYSQL_PORT. +; http://php.net/mysqli.default-port +mysqli.default_port = 3306 + +; Default socket name for local MySQL connects. If empty, uses the built-in +; MySQL defaults. +; http://php.net/mysqli.default-socket +mysqli.default_socket = + +; Default host for mysql_connect() (doesn't apply in safe mode). +; http://php.net/mysqli.default-host +mysqli.default_host = + +; Default user for mysql_connect() (doesn't apply in safe mode). +; http://php.net/mysqli.default-user +mysqli.default_user = + +; Default password for mysqli_connect() (doesn't apply in safe mode). +; Note that this is generally a *bad* idea to store passwords in this file. +; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw") +; and reveal this password! And of course, any users with read access to this +; file will be able to reveal the password as well. +; http://php.net/mysqli.default-pw +mysqli.default_pw = + +; Allow or prevent reconnect +mysqli.reconnect = Off + +[mysqlnd] +; Enable / Disable collection of general statstics by mysqlnd which can be +; used to tune and monitor MySQL operations. +; http://php.net/mysqlnd.collect_statistics +mysqlnd.collect_statistics = On + +; Enable / Disable collection of memory usage statstics by mysqlnd which can be +; used to tune and monitor MySQL operations. +; http://php.net/mysqlnd.collect_memory_statistics +mysqlnd.collect_memory_statistics = Off + +; Size of a pre-allocated buffer used when sending commands to MySQL in bytes. +; http://php.net/mysqlnd.net_cmd_buffer_size +;mysqlnd.net_cmd_buffer_size = 2048 + +; Size of a pre-allocated buffer used for reading data sent by the server in +; bytes. +; http://php.net/mysqlnd.net_read_buffer_size +;mysqlnd.net_read_buffer_size = 32768 + +[OCI8] + +; Connection: Enables privileged connections using external +; credentials (OCI_SYSOPER, OCI_SYSDBA) +; http://php.net/oci8.privileged-connect +;oci8.privileged_connect = Off + +; Connection: The maximum number of persistent OCI8 connections per +; process. Using -1 means no limit. +; http://php.net/oci8.max-persistent +;oci8.max_persistent = -1 + +; Connection: The maximum number of seconds a process is allowed to +; maintain an idle persistent connection. Using -1 means idle +; persistent connections will be maintained forever. +; http://php.net/oci8.persistent-timeout +;oci8.persistent_timeout = -1 + +; Connection: The number of seconds that must pass before issuing a +; ping during oci_pconnect() to check the connection validity. When +; set to 0, each oci_pconnect() will cause a ping. Using -1 disables +; pings completely. +; http://php.net/oci8.ping-interval +;oci8.ping_interval = 60 + +; Connection: Set this to a user chosen connection class to be used +; for all pooled server requests with Oracle 11g Database Resident +; Connection Pooling (DRCP). To use DRCP, this value should be set to +; the same string for all web servers running the same application, +; the database pool must be configured, and the connection string must +; specify to use a pooled server. +;oci8.connection_class = + +; High Availability: Using On lets PHP receive Fast Application +; Notification (FAN) events generated when a database node fails. The +; database must also be configured to post FAN events. +;oci8.events = Off + +; Tuning: This option enables statement caching, and specifies how +; many statements to cache. Using 0 disables statement caching. +; http://php.net/oci8.statement-cache-size +;oci8.statement_cache_size = 20 + +; Tuning: Enables statement prefetching and sets the default number of +; rows that will be fetched automatically after statement execution. +; http://php.net/oci8.default-prefetch +;oci8.default_prefetch = 100 + +; Compatibility. Using On means oci_close() will not close +; oci_connect() and oci_new_connect() connections. +; http://php.net/oci8.old-oci-close-semantics +;oci8.old_oci_close_semantics = Off + +[PostgresSQL] +; Allow or prevent persistent links. +; http://php.net/pgsql.allow-persistent +pgsql.allow_persistent = On + +; Detect broken persistent links always with pg_pconnect(). +; Auto reset feature requires a little overheads. +; http://php.net/pgsql.auto-reset-persistent +pgsql.auto_reset_persistent = Off + +; Maximum number of persistent links. -1 means no limit. +; http://php.net/pgsql.max-persistent +pgsql.max_persistent = -1 + +; Maximum number of links (persistent+non persistent). -1 means no limit. +; http://php.net/pgsql.max-links +pgsql.max_links = -1 + +; Ignore PostgreSQL backends Notice message or not. +; Notice message logging require a little overheads. +; http://php.net/pgsql.ignore-notice +pgsql.ignore_notice = 0 + +; Log PostgreSQL backends Notice message or not. +; Unless pgsql.ignore_notice=0, module cannot log notice message. +; http://php.net/pgsql.log-notice +pgsql.log_notice = 0 + +[Sybase-CT] +; Allow or prevent persistent links. +; http://php.net/sybct.allow-persistent +sybct.allow_persistent = On + +; Maximum number of persistent links. -1 means no limit. +; http://php.net/sybct.max-persistent +sybct.max_persistent = -1 + +; Maximum number of links (persistent + non-persistent). -1 means no limit. +; http://php.net/sybct.max-links +sybct.max_links = -1 + +; Minimum server message severity to display. +; http://php.net/sybct.min-server-severity +sybct.min_server_severity = 10 + +; Minimum client message severity to display. +; http://php.net/sybct.min-client-severity +sybct.min_client_severity = 10 + +; Set per-context timeout +; http://php.net/sybct.timeout +;sybct.timeout= + +;sybct.packet_size + +; The maximum time in seconds to wait for a connection attempt to succeed before returning failure. +; Default: one minute +;sybct.login_timeout= + +; The name of the host you claim to be connecting from, for display by sp_who. +; Default: none +;sybct.hostname= + +; Allows you to define how often deadlocks are to be retried. -1 means "forever". +; Default: 0 +;sybct.deadlock_retry_count= + +[bcmath] +; Number of decimal digits for all bcmath functions. +; http://php.net/bcmath.scale +bcmath.scale = 0 + +[browscap] +; http://php.net/browscap +;browscap = extra/browscap.ini + +[Session] +; Handler used to store/retrieve data. +; http://php.net/session.save-handler +session.save_handler = files + +; Argument passed to save_handler. In the case of files, this is the path +; where data files are stored. Note: Windows users have to change this +; variable in order to use PHP's session functions. +; +; The path can be defined as: +; +; session.save_path = "N;/path" +; +; where N is an integer. Instead of storing all the session files in +; /path, what this will do is use subdirectories N-levels deep, and +; store the session data in those directories. This is useful if you +; or your OS have problems with lots of files in one directory, and is +; a more efficient layout for servers that handle lots of sessions. +; +; NOTE 1: PHP will not create this directory structure automatically. +; You can use the script in the ext/session dir for that purpose. +; NOTE 2: See the section on garbage collection below if you choose to +; use subdirectories for session storage +; +; The file storage module creates files using mode 600 by default. +; You can change that by using +; +; session.save_path = "N;MODE;/path" +; +; where MODE is the octal representation of the mode. Note that this +; does not overwrite the process's umask. +; http://php.net/session.save-path +session.save_path = __ROOT__/session.save_path + +; Whether to use cookies. +; http://php.net/session.use-cookies +session.use_cookies = 1 + +; http://php.net/session.cookie-secure +;session.cookie_secure = + +; This option forces PHP to fetch and use a cookie for storing and maintaining +; the session id. We encourage this operation as it's very helpful in combatting +; session hijacking when not specifying and managing your own session id. It is +; not the end all be all of session hijacking defense, but it's a good start. +; http://php.net/session.use-only-cookies +session.use_only_cookies = 1 + +; Name of the session (used as cookie name). +; http://php.net/session.name +session.name = PHPSESSID + +; Initialize session on request startup. +; http://php.net/session.auto-start +session.auto_start = 0 + +; Lifetime in seconds of cookie or, if 0, until browser is restarted. +; http://php.net/session.cookie-lifetime +session.cookie_lifetime = 0 + +; The path for which the cookie is valid. +; http://php.net/session.cookie-path +session.cookie_path = / + +; The domain for which the cookie is valid. +; http://php.net/session.cookie-domain +session.cookie_domain = + +; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript. +; http://php.net/session.cookie-httponly +session.cookie_httponly = + +; Handler used to serialize data. php is the standard serializer of PHP. +; http://php.net/session.serialize-handler +session.serialize_handler = php + +; Defines the probability that the 'garbage collection' process is started +; on every session initialization. The probability is calculated by using +; gc_probability/gc_divisor. Where session.gc_probability is the numerator +; and gc_divisor is the denominator in the equation. Setting this value to 1 +; when the session.gc_divisor value is 100 will give you approximately a 1% chance +; the gc will run on any give request. +; Default Value: 1 +; Development Value: 1 +; Production Value: 1 +; http://php.net/session.gc-probability +session.gc_probability = 1 + +; Defines the probability that the 'garbage collection' process is started on every +; session initialization. The probability is calculated by using the following equation: +; gc_probability/gc_divisor. Where session.gc_probability is the numerator and +; session.gc_divisor is the denominator in the equation. Setting this value to 1 +; when the session.gc_divisor value is 100 will give you approximately a 1% chance +; the gc will run on any give request. Increasing this value to 1000 will give you +; a 0.1% chance the gc will run on any give request. For high volume production servers, +; this is a more efficient approach. +; Default Value: 100 +; Development Value: 1000 +; Production Value: 1000 +; http://php.net/session.gc-divisor +session.gc_divisor = 1000 + +; After this number of seconds, stored data will be seen as 'garbage' and +; cleaned up by the garbage collection process. +; http://php.net/session.gc-maxlifetime +session.gc_maxlifetime = 1440 + +; NOTE: If you are using the subdirectory option for storing session files +; (see session.save_path above), then garbage collection does *not* +; happen automatically. You will need to do your own garbage +; collection through a shell script, cron entry, or some other method. +; For example, the following script would is the equivalent of +; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes): +; cd /path/to/sessions; find -cmin +24 | xargs rm + +; PHP 4.2 and less have an undocumented feature/bug that allows you to +; to initialize a session variable in the global scope, even when register_globals +; is disabled. PHP 4.3 and later will warn you, if this feature is used. +; You can disable the feature and the warning separately. At this time, +; the warning is only displayed, if bug_compat_42 is enabled. This feature +; introduces some serious security problems if not handled correctly. It's +; recommended that you do not use this feature on production servers. But you +; should enable this on development servers and enable the warning as well. If you +; do not enable the feature on development servers, you won't be warned when it's +; used and debugging errors caused by this can be difficult to track down. +; Default Value: On +; Development Value: On +; Production Value: Off +; http://php.net/session.bug-compat-42 +session.bug_compat_42 = Off + +; This setting controls whether or not you are warned by PHP when initializing a +; session value into the global space. session.bug_compat_42 must be enabled before +; these warnings can be issued by PHP. See the directive above for more information. +; Default Value: On +; Development Value: On +; Production Value: Off +; http://php.net/session.bug-compat-warn +session.bug_compat_warn = Off + +; Check HTTP Referer to invalidate externally stored URLs containing ids. +; HTTP_REFERER has to contain this substring for the session to be +; considered as valid. +; http://php.net/session.referer-check +session.referer_check = + +; How many bytes to read from the file. +; http://php.net/session.entropy-length +session.entropy_length = 0 + +; Specified here to create the session id. +; http://php.net/session.entropy-file +; On systems that don't have /dev/urandom /dev/arandom can be used +; On windows, setting the entropy_length setting will activate the +; Windows random source (using the CryptoAPI) +;session.entropy_file = /dev/urandom + +; Set to {nocache,private,public,} to determine HTTP caching aspects +; or leave this empty to avoid sending anti-caching headers. +; http://php.net/session.cache-limiter +session.cache_limiter = nocache + +; Document expires after n minutes. +; http://php.net/session.cache-expire +session.cache_expire = 180 + +; trans sid support is disabled by default. +; Use of trans sid may risk your users security. +; Use this option with caution. +; - User may send URL contains active session ID +; to other person via. email/irc/etc. +; - URL that contains active session ID may be stored +; in publically accessible computer. +; - User may access your site with the same session ID +; always using URL stored in browser's history or bookmarks. +; http://php.net/session.use-trans-sid +session.use_trans_sid = 0 + +; Select a hash function for use in generating session ids. +; Possible Values +; 0 (MD5 128 bits) +; 1 (SHA-1 160 bits) +; This option may also be set to the name of any hash function supported by +; the hash extension. A list of available hashes is returned by the hash_algos() +; function. +; http://php.net/session.hash-function +session.hash_function = 0 + +; Define how many bits are stored in each character when converting +; the binary hash data to something readable. +; Possible values: +; 4 (4 bits: 0-9, a-f) +; 5 (5 bits: 0-9, a-v) +; 6 (6 bits: 0-9, a-z, A-Z, "-", ",") +; Default Value: 4 +; Development Value: 5 +; Production Value: 5 +; http://php.net/session.hash-bits-per-character +session.hash_bits_per_character = 5 + +; The URL rewriter will look for URLs in a defined set of HTML tags. +; form/fieldset are special; if you include them here, the rewriter will +; add a hidden field with the info which is otherwise appended +; to URLs. If you want XHTML conformity, remove the form entry. +; Note that all valid entries require a "=", even if no value follows. +; Default Value: "a=href,area=href,frame=src,form=,fieldset=" +; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry" +; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry" +; http://php.net/url-rewriter.tags +url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" + +[MSSQL] +; Allow or prevent persistent links. +mssql.allow_persistent = On + +; Maximum number of persistent links. -1 means no limit. +mssql.max_persistent = -1 + +; Maximum number of links (persistent+non persistent). -1 means no limit. +mssql.max_links = -1 + +; Minimum error severity to display. +mssql.min_error_severity = 10 + +; Minimum message severity to display. +mssql.min_message_severity = 10 + +; Compatibility mode with old versions of PHP 3.0. +mssql.compatability_mode = Off + +; Connect timeout +;mssql.connect_timeout = 5 + +; Query timeout +;mssql.timeout = 60 + +; Valid range 0 - 2147483647. Default = 4096. +;mssql.textlimit = 4096 + +; Valid range 0 - 2147483647. Default = 4096. +;mssql.textsize = 4096 + +; Limits the number of records in each batch. 0 = all records in one batch. +;mssql.batchsize = 0 + +; Specify how datetime and datetim4 columns are returned +; On => Returns data converted to SQL server settings +; Off => Returns values as YYYY-MM-DD hh:mm:ss +;mssql.datetimeconvert = On + +; Use NT authentication when connecting to the server +mssql.secure_connection = Off + +; Specify max number of processes. -1 = library default +; msdlib defaults to 25 +; FreeTDS defaults to 4096 +;mssql.max_procs = -1 + +; Specify client character set. +; If empty or not set the client charset from freetds.comf is used +; This is only used when compiled with FreeTDS +;mssql.charset = "ISO-8859-1" + +[Assertion] +; Assert(expr); active by default. +; http://php.net/assert.active +;assert.active = On + +; Issue a PHP warning for each failed assertion. +; http://php.net/assert.warning +;assert.warning = On + +; Don't bail out by default. +; http://php.net/assert.bail +;assert.bail = Off + +; User-function to be called if an assertion fails. +; http://php.net/assert.callback +;assert.callback = 0 + +; Eval the expression with current error_reporting(). Set to true if you want +; error_reporting(0) around the eval(). +; http://php.net/assert.quiet-eval +;assert.quiet_eval = 0 + +[COM] +; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs +; http://php.net/com.typelib-file +;com.typelib_file = + +; allow Distributed-COM calls +; http://php.net/com.allow-dcom +;com.allow_dcom = true + +; autoregister constants of a components typlib on com_load() +; http://php.net/com.autoregister-typelib +;com.autoregister_typelib = true + +; register constants casesensitive +; http://php.net/com.autoregister-casesensitive +;com.autoregister_casesensitive = false + +; show warnings on duplicate constant registrations +; http://php.net/com.autoregister-verbose +;com.autoregister_verbose = true + +; The default character set code-page to use when passing strings to and from COM objects. +; Default: system ANSI code page +;com.code_page= + +[mbstring] +; language for internal character representation. +; http://php.net/mbstring.language +;mbstring.language = Japanese + +; internal/script encoding. +; Some encoding cannot work as internal encoding. +; (e.g. SJIS, BIG5, ISO-2022-*) +; http://php.net/mbstring.internal-encoding +;mbstring.internal_encoding = EUC-JP + +; http input encoding. +; http://php.net/mbstring.http-input +;mbstring.http_input = auto + +; http output encoding. mb_output_handler must be +; registered as output buffer to function +; http://php.net/mbstring.http-output +;mbstring.http_output = SJIS + +; enable automatic encoding translation according to +; mbstring.internal_encoding setting. Input chars are +; converted to internal encoding by setting this to On. +; Note: Do _not_ use automatic encoding translation for +; portable libs/applications. +; http://php.net/mbstring.encoding-translation +;mbstring.encoding_translation = Off + +; automatic encoding detection order. +; auto means +; http://php.net/mbstring.detect-order +;mbstring.detect_order = auto + +; substitute_character used when character cannot be converted +; one from another +; http://php.net/mbstring.substitute-character +;mbstring.substitute_character = none; + +; overload(replace) single byte functions by mbstring functions. +; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), +; etc. Possible values are 0,1,2,4 or combination of them. +; For example, 7 for overload everything. +; 0: No overload +; 1: Overload mail() function +; 2: Overload str*() functions +; 4: Overload ereg*() functions +; http://php.net/mbstring.func-overload +;mbstring.func_overload = 0 + +; enable strict encoding detection. +;mbstring.strict_detection = Off + +; This directive specifies the regex pattern of content types for which mb_output_handler() +; is activated. +; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml\+xml) +;mbstring.http_output_conv_mimetype= + +; Allows to set script encoding. Only affects if PHP is compiled with --enable-zend-multibyte +; Default: "" +;mbstring.script_encoding= + +[gd] +; Tell the jpeg decode to ignore warnings and try to create +; a gd image. The warning will then be displayed as notices +; disabled by default +; http://php.net/gd.jpeg-ignore-warning +;gd.jpeg_ignore_warning = 0 + +[exif] +; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS. +; With mbstring support this will automatically be converted into the encoding +; given by corresponding encode setting. When empty mbstring.internal_encoding +; is used. For the decode settings you can distinguish between motorola and +; intel byte order. A decode setting cannot be empty. +; http://php.net/exif.encode-unicode +;exif.encode_unicode = ISO-8859-15 + +; http://php.net/exif.decode-unicode-motorola +;exif.decode_unicode_motorola = UCS-2BE + +; http://php.net/exif.decode-unicode-intel +;exif.decode_unicode_intel = UCS-2LE + +; http://php.net/exif.encode-jis +;exif.encode_jis = + +; http://php.net/exif.decode-jis-motorola +;exif.decode_jis_motorola = JIS + +; http://php.net/exif.decode-jis-intel +;exif.decode_jis_intel = JIS + +[Tidy] +; The path to a default tidy configuration file to use when using tidy +; http://php.net/tidy.default-config +;tidy.default_config = /usr/local/lib/php/default.tcfg + +; Should tidy clean and repair output automatically? +; WARNING: Do not use this option if you are generating non-html content +; such as dynamic images +; http://php.net/tidy.clean-output +tidy.clean_output = Off + +[soap] +; Enables or disables WSDL caching feature. +; http://php.net/soap.wsdl-cache-enabled +soap.wsdl_cache_enabled=1 + +; Sets the directory name where SOAP extension will put cache files. +; http://php.net/soap.wsdl-cache-dir +soap.wsdl_cache_dir=__ROOT__/soap.wsdl_cache_dir + +; (time to live) Sets the number of second while cached file will be used +; instead of original one. +; http://php.net/soap.wsdl-cache-ttl +soap.wsdl_cache_ttl=86400 + +; Sets the size of the cache limit. (Max. number of WSDL files to cache) +soap.wsdl_cache_limit = 5 + +[sysvshm] +; A default size of the shared memory segment +;sysvshm.init_mem = 10000 + +[ldap] +; Sets the maximum number of open links or -1 for unlimited. +ldap.max_links = -1 + +[mcrypt] +; For more information about mcrypt settings see http://php.net/mcrypt-module-open + +; Directory where to load mcrypt algorithms +; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt) +;mcrypt.algorithms_dir= + +; Directory where to load mcrypt modes +; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt) +;mcrypt.modes_dir= + +[dba] +;dba.default_handler= + +; Local Variables: +; tab-width: 4 +; End: diff --git a/docroot/session.save_path/.keep b/docroot/session.save_path/.keep new file mode 100644 index 0000000..e69de29 diff --git a/docroot/soap.wsdl_cache_dir/.keep b/docroot/soap.wsdl_cache_dir/.keep new file mode 100644 index 0000000..e69de29 diff --git a/docroot/upload_tmp_dir/.keep b/docroot/upload_tmp_dir/.keep new file mode 100644 index 0000000..e69de29 From f0c5b3b756f5c76662e941dfc7cfe1060171d706 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Fri, 31 Dec 2010 14:12:18 -0500 Subject: [PATCH 30/52] more session stuff --- .gitignore | 1 + docroot/html/sessions.php | 56 +++++++++++++++++++++++++++++++++++++++ docroot/php.ini.in | 2 +- 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 docroot/html/sessions.php diff --git a/.gitignore b/.gitignore index 166bdbc..2116b6c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ docroot/nginx.conf docroot/html/writable/*.* docroot/php.ini +docroot/session.save_path/sess_* diff --git a/docroot/html/sessions.php b/docroot/html/sessions.php new file mode 100644 index 0000000..901b945 --- /dev/null +++ b/docroot/html/sessions.php @@ -0,0 +1,56 @@ + + + + + + +

Successfully destroyed session

+ clear this + +
+ + +
+ + + +
+ + +
+ + + + diff --git a/docroot/php.ini.in b/docroot/php.ini.in index 57349e9..1cb68dc 100644 --- a/docroot/php.ini.in +++ b/docroot/php.ini.in @@ -765,7 +765,7 @@ auto_append_file = ; ; PHP's built-in default is text/html ; http://php.net/default-mimetype -default_mimetype = "text/plain" +default_mimetype = "text/html" ; PHP's default character set is set to empty. ; http://php.net/default-charset From 38cef4483692fb65b33065dc6e7ddd8368781b7a Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Fri, 31 Dec 2010 20:35:25 -0500 Subject: [PATCH 31/52] removing session vars within same page request --- docroot/html/sessions.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docroot/html/sessions.php b/docroot/html/sessions.php index 901b945..0ee7c4e 100644 --- a/docroot/html/sessions.php +++ b/docroot/html/sessions.php @@ -20,6 +20,8 @@ mkheader("sessions!", "#aea");

Successfully destroyed session

clear this From 2d9cd9de75a7572ee310b6f38cffd7afad56d6cf Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Fri, 31 Dec 2010 23:08:00 -0500 Subject: [PATCH 32/52] doing mysql stuff --- docroot/html/mysql.php | 58 ++++++++++++++++++++++++++++++++++++++++++ docroot/setup.sql | 6 +++++ 2 files changed, 64 insertions(+) create mode 100644 docroot/html/mysql.php create mode 100644 docroot/setup.sql diff --git a/docroot/html/mysql.php b/docroot/html/mysql.php new file mode 100644 index 0000000..64b8611 --- /dev/null +++ b/docroot/html/mysql.php @@ -0,0 +1,58 @@ + + + + + +
+ + +
clear + +
+ + +
+ + + + + diff --git a/docroot/setup.sql b/docroot/setup.sql new file mode 100644 index 0000000..7c15acb --- /dev/null +++ b/docroot/setup.sql @@ -0,0 +1,6 @@ +CREATE TABLE IF NOT EXISTS customers ( + customer_id INTEGER, + name VARCHAR(255), + email VARCHAR(255), + PRIMARY KEY(customer_id) +); From 0807e2ee9d6748ce6bb0661ef11f06a322edda89 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Sat, 1 Jan 2011 08:50:02 -0500 Subject: [PATCH 33/52] yet more mysql stuff --- docroot/html/mysql.php | 127 +++++++++++++++++++++++++++++++++++------ docroot/php.ini.in | 6 +- docroot/setup.sql | 8 +-- 3 files changed, 116 insertions(+), 25 deletions(-) diff --git a/docroot/html/mysql.php b/docroot/html/mysql.php index 64b8611..d61c3b9 100644 --- a/docroot/html/mysql.php +++ b/docroot/html/mysql.php @@ -1,19 +1,32 @@ + clear + - -

Creating tables...

query("DROP TABLE IF EXISTS customers");
+        $create_result = $MYSQLCONN->query("
+            CREATE TABLE customers (
+                customer_id MEDIUMINT NOT NULL AUTO_INCREMENT,
+                name VARCHAR(255) NOT NULL,
+                email VARCHAR(255) NOT NULL,
+                PRIMARY KEY(customer_id)
+            ) ENGINE=InnoDB
+        ");
 
-    ?>
+ if (!$create_result) { + printf("Failed to create tables: %s\n", $MYSQLCONN->error); + } else { + printf("%d Row inserted.\n", $MYSQLCONN->affected_rows); + print_r($MYSQLCONN->query("DESCRIBE customers")); + print_r($MYSQLCONN->query("SELECT * FROM customers")); + } -
+
clear
prepare( + "INSERT INTO customers (customer_id, name, email) VALUES (NULL, ?, ?)" + ); + $add_customer->bind_param('ss', $_POST["name"], $_POST["email"]); + $result = $add_customer->execute(); + + if (!$result) { + ?>

Failed to create customer!: error ?>

affected_rows; ?> Row inserted.

-
- - + +
+ Database Admin + + + + + + + + + + + + + +
+
+ +
+
Add Customer + + + + + + + + + + +
+ +
query("SELECT * FROM customers");
+            while ($row = $results->fetch_array(MYSQLI_ASSOC)) {
+                print_r($row);
+            }
+        ?>
+ + +close(); + +?> diff --git a/docroot/php.ini.in b/docroot/php.ini.in index 1cb68dc..2c8e921 100644 --- a/docroot/php.ini.in +++ b/docroot/php.ini.in @@ -528,7 +528,7 @@ error_reporting = E_ALL & ~E_DEPRECATED ; Development Value: On ; Production Value: Off ; http://php.net/display-errors -display_errors = Off +display_errors = On ; The display of errors which occur during PHP's startup sequence are handled ; separately from display_errors. PHP's default behavior is to suppress those @@ -539,7 +539,7 @@ display_errors = Off ; Development Value: On ; Production Value: Off ; http://php.net/display-startup-errors -display_startup_errors = Off +display_startup_errors = On ; Besides displaying errors, PHP can also log errors to locations such as a ; server-specific log, STDERR, or a location specified by the error_log @@ -601,7 +601,7 @@ track_errors = Off ; Development Value: On ; Production value: Off ; http://php.net/html-errors -html_errors = Off +html_errors = On ; If html_errors is set On PHP produces clickable error messages that direct ; to a page describing the error or function causing the error in detail. diff --git a/docroot/setup.sql b/docroot/setup.sql index 7c15acb..937eece 100644 --- a/docroot/setup.sql +++ b/docroot/setup.sql @@ -1,6 +1,6 @@ -CREATE TABLE IF NOT EXISTS customers ( +CREATE TABLE customers ( customer_id INTEGER, - name VARCHAR(255), - email VARCHAR(255), + name VARCHAR(255) NOT NULL, + email VARCHAR(255) NOT NULL, PRIMARY KEY(customer_id) -); +) AUTO_INCREMENT = 1, ENGINE = InnoDB From c41a44ad13fa9143596869f0791c9ccd95a3f8ac Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Sat, 1 Jan 2011 11:14:12 -0500 Subject: [PATCH 34/52] making pdo version of mysql stuff --- docroot/html/pdo.php | 152 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 docroot/html/pdo.php diff --git a/docroot/html/pdo.php b/docroot/html/pdo.php new file mode 100644 index 0000000..0bb5ea3 --- /dev/null +++ b/docroot/html/pdo.php @@ -0,0 +1,152 @@ +getMessage()); + exit(); +} + +$ACTION = ""; + +if (array_key_exists("action", $_POST)) { + $ACTION = $_POST["action"]; +} + + +require_once("_head.php"); + + +function show_clear_link() { + ?> + clear + + + + +

Creating tables...

exec("DROP TABLE IF EXISTS customers");
+
+        try {
+            $nrows = $PDOCONN->exec("
+                CREATE TABLE customers (
+                    customer_id MEDIUMINT NOT NULL AUTO_INCREMENT,
+                    name VARCHAR(255) NOT NULL,
+                    email VARCHAR(255) NOT NULL,
+                    PRIMARY KEY(customer_id)
+                ) ENGINE=InnoDB
+            ");
+
+            printf("%d Row inserted.\n", $nrows);
+
+        } catch (PDOException $e) {
+            printf("Failed to create tables: \n%s\n", $e->getMessage());
+        }
+
+        ?>
+ +
prepare( + "INSERT INTO customers (customer_id, name, email) VALUES (NULL, :name, :email)" + ); + $add_customer->bindParam(':name', $_POST["name"], PDO::PARAM_STR, 12); + $add_customer->bindParam(':email', $_POST["email"], PDO::PARAM_STR, 12); + $nrows = $add_customer->execute(); + + ?>

Row inserted.

Failed to create customer!: getMessage() ?>

+ +
+
+ Database Admin + + + + + + + + + + + + + +
+
+ +
+
Add Customer + + + + + + + + + + +
+
+ + +
query("SELECT * FROM customers");
+            while ($row = $results->fetchAll()) {
+                print_r($row);
+            }
+        ?>
+ + + + + + + From f90e4222b6417d055013d26831cec75be4c587c7 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Sat, 1 Jan 2011 13:06:45 -0500 Subject: [PATCH 35/52] class/oop stuff --- docroot/html/classes.php | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 docroot/html/classes.php diff --git a/docroot/html/classes.php b/docroot/html/classes.php new file mode 100644 index 0000000..8aa2c59 --- /dev/null +++ b/docroot/html/classes.php @@ -0,0 +1,27 @@ +"; + + public function printline($message) { + printf("%s%s\n", $message, $this->br); + } +} + + +?> + + + printline("This is some text, eh?"); + + ?> + + From 426f516ec9f8af8ed1a66b71e669079719f6bbc4 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Sat, 1 Jan 2011 13:40:24 -0500 Subject: [PATCH 36/52] adding more oo bits to the class/oop exercise --- docroot/html/classes.php | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/docroot/html/classes.php b/docroot/html/classes.php index 8aa2c59..e259735 100644 --- a/docroot/html/classes.php +++ b/docroot/html/classes.php @@ -5,11 +5,20 @@ mkheader("classes!", '#8bb'); class html { + private $contents = ""; + private $heading = ""; - public $br = "
"; + public function __construct($heading) { + $this->heading = $heading; + } + + public function addparagraph($message) { + $this->contents .= ("

" . $message . "

\n"); + } - public function printline($message) { - printf("%s%s\n", $message, $this->br); + public function show() { + print "\n\n

" . $this->heading . "

\n"; + print $this->contents; } } @@ -19,8 +28,20 @@ class html { printline("This is some text, eh?"); + $elvis = new html("Elvis ist rad"); + $goth = new html("Goth Poetry ist rad"); + + $elvis->addparagraph("Welcome to my Elvis Fan Page! Uh-huh, uh-huh, uh-huh."); + $elvis->addparagraph("Do you love Elvis? Yes! Yes you do!"); + + $goth->addparagraph("Enter thee into the Goth Poetry Labyrinth of Spooooky Dooooom..."); + $goth->addparagraph("Many terribly terrifying poems await thee."); + + $elvis->show(); + + printf("\n

\n"); + + $goth->show(); ?> From 3031feb3d68e70b197da6256d443ff9df9cca240 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Sat, 1 Jan 2011 13:51:50 -0500 Subject: [PATCH 37/52] starting work on Smarty stuff --- docroot/html/libs/Smarty.class.php | 809 +++++ docroot/html/libs/debug.tpl | 133 + docroot/html/libs/plugins/block.php.php | 27 + .../html/libs/plugins/block.textformat.php | 102 + .../html/libs/plugins/function.counter.php | 78 + docroot/html/libs/plugins/function.cycle.php | 106 + docroot/html/libs/plugins/function.fetch.php | 216 ++ .../libs/plugins/function.html_checkboxes.php | 143 + .../html/libs/plugins/function.html_image.php | 137 + .../libs/plugins/function.html_options.php | 119 + .../libs/plugins/function.html_radios.php | 154 + .../plugins/function.html_select_date.php | 330 ++ .../plugins/function.html_select_time.php | 194 ++ .../html/libs/plugins/function.html_table.php | 177 + docroot/html/libs/plugins/function.mailto.php | 156 + docroot/html/libs/plugins/function.math.php | 83 + docroot/html/libs/plugins/function.popup.php | 118 + .../html/libs/plugins/function.popup_init.php | 39 + .../html/libs/plugins/modifier.capitalize.php | 37 + .../libs/plugins/modifier.date_format.php | 61 + .../libs/plugins/modifier.debug_print_var.php | 87 + docroot/html/libs/plugins/modifier.escape.php | 114 + .../libs/plugins/modifier.regex_replace.php | 46 + .../html/libs/plugins/modifier.replace.php | 51 + .../html/libs/plugins/modifier.spacify.php | 37 + .../html/libs/plugins/modifier.truncate.php | 67 + .../libs/plugins/modifiercompiler.cat.php | 29 + .../modifiercompiler.count_characters.php | 39 + .../modifiercompiler.count_paragraphs.php | 27 + .../modifiercompiler.count_sentences.php | 27 + .../plugins/modifiercompiler.count_words.php | 31 + .../libs/plugins/modifiercompiler.default.php | 33 + .../libs/plugins/modifiercompiler.indent.php | 32 + .../libs/plugins/modifiercompiler.lower.php | 31 + .../libs/plugins/modifiercompiler.noprint.php | 24 + .../modifiercompiler.string_format.php | 26 + .../libs/plugins/modifiercompiler.strip.php | 33 + .../plugins/modifiercompiler.strip_tags.php | 34 + .../libs/plugins/modifiercompiler.upper.php | 30 + .../plugins/modifiercompiler.wordwrap.php | 35 + .../plugins/outputfilter.trimwhitespace.php | 77 + .../plugins/shared.escape_special_chars.php | 29 + .../libs/plugins/shared.make_timestamp.php | 43 + .../variablefilter.htmlspecialchars.php | 22 + .../smarty_internal_cacheresource_file.php | 205 ++ .../smarty_internal_compile_append.php | 50 + .../smarty_internal_compile_assign.php | 63 + .../smarty_internal_compile_block.php | 187 ++ .../smarty_internal_compile_break.php | 65 + .../smarty_internal_compile_call.php | 108 + .../smarty_internal_compile_capture.php | 81 + .../smarty_internal_compile_config_load.php | 64 + .../smarty_internal_compile_continue.php | 64 + .../smarty_internal_compile_debug.php | 38 + .../smarty_internal_compile_eval.php | 51 + .../smarty_internal_compile_extends.php | 90 + .../smarty_internal_compile_for.php | 147 + .../smarty_internal_compile_foreach.php | 219 ++ .../smarty_internal_compile_function.php | 132 + .../sysplugins/smarty_internal_compile_if.php | 179 + .../smarty_internal_compile_include.php | 174 + .../smarty_internal_compile_include_php.php | 90 + .../smarty_internal_compile_insert.php | 123 + .../smarty_internal_compile_ldelim.php | 37 + .../smarty_internal_compile_nocache.php | 63 + ..._internal_compile_private_block_plugin.php | 78 + ...ternal_compile_private_function_plugin.php | 58 + ...arty_internal_compile_private_modifier.php | 69 + ..._compile_private_object_block_function.php | 80 + ...ternal_compile_private_object_function.php | 71 + ...ernal_compile_private_print_expression.php | 77 + ...ernal_compile_private_registered_block.php | 92 + ...al_compile_private_registered_function.php | 64 + ...ernal_compile_private_special_variable.php | 101 + .../smarty_internal_compile_rdelim.php | 37 + .../smarty_internal_compile_section.php | 173 + .../smarty_internal_compile_while.php | 83 + .../smarty_internal_compilebase.php | 150 + .../sysplugins/smarty_internal_config.php | 288 ++ .../smarty_internal_config_file_compiler.php | 106 + .../smarty_internal_configfilelexer.php | 527 +++ .../smarty_internal_configfileparser.php | 872 +++++ .../libs/sysplugins/smarty_internal_data.php | 475 +++ .../libs/sysplugins/smarty_internal_debug.php | 170 + .../sysplugins/smarty_internal_filter.php | 89 + .../smarty_internal_filter_handler.php | 67 + .../smarty_internal_function_call_handler.php | 40 + .../smarty_internal_nocache_insert.php | 49 + .../sysplugins/smarty_internal_parsetree.php | 236 ++ .../sysplugins/smarty_internal_register.php | 159 + .../smarty_internal_resource_eval.php | 89 + .../smarty_internal_resource_extends.php | 176 + .../smarty_internal_resource_file.php | 128 + .../smarty_internal_resource_php.php | 127 + .../smarty_internal_resource_registered.php | 143 + .../smarty_internal_resource_stream.php | 99 + .../smarty_internal_resource_string.php | 133 + ...smarty_internal_smartytemplatecompiler.php | 72 + .../sysplugins/smarty_internal_template.php | 983 ++++++ .../smarty_internal_templatecompilerbase.php | 429 +++ .../smarty_internal_templatelexer.php | 1180 +++++++ .../smarty_internal_templateparser.php | 2977 +++++++++++++++++ .../sysplugins/smarty_internal_utility.php | 296 ++ .../sysplugins/smarty_internal_wrapper.php | 131 + .../sysplugins/smarty_internal_write_file.php | 56 + .../html/libs/sysplugins/smarty_security.php | 229 ++ docroot/html/smarty.php | 5 + 107 files changed, 17917 insertions(+) create mode 100644 docroot/html/libs/Smarty.class.php create mode 100644 docroot/html/libs/debug.tpl create mode 100644 docroot/html/libs/plugins/block.php.php create mode 100644 docroot/html/libs/plugins/block.textformat.php create mode 100644 docroot/html/libs/plugins/function.counter.php create mode 100644 docroot/html/libs/plugins/function.cycle.php create mode 100644 docroot/html/libs/plugins/function.fetch.php create mode 100644 docroot/html/libs/plugins/function.html_checkboxes.php create mode 100644 docroot/html/libs/plugins/function.html_image.php create mode 100644 docroot/html/libs/plugins/function.html_options.php create mode 100644 docroot/html/libs/plugins/function.html_radios.php create mode 100644 docroot/html/libs/plugins/function.html_select_date.php create mode 100644 docroot/html/libs/plugins/function.html_select_time.php create mode 100644 docroot/html/libs/plugins/function.html_table.php create mode 100644 docroot/html/libs/plugins/function.mailto.php create mode 100644 docroot/html/libs/plugins/function.math.php create mode 100644 docroot/html/libs/plugins/function.popup.php create mode 100644 docroot/html/libs/plugins/function.popup_init.php create mode 100644 docroot/html/libs/plugins/modifier.capitalize.php create mode 100644 docroot/html/libs/plugins/modifier.date_format.php create mode 100644 docroot/html/libs/plugins/modifier.debug_print_var.php create mode 100644 docroot/html/libs/plugins/modifier.escape.php create mode 100644 docroot/html/libs/plugins/modifier.regex_replace.php create mode 100644 docroot/html/libs/plugins/modifier.replace.php create mode 100644 docroot/html/libs/plugins/modifier.spacify.php create mode 100644 docroot/html/libs/plugins/modifier.truncate.php create mode 100644 docroot/html/libs/plugins/modifiercompiler.cat.php create mode 100644 docroot/html/libs/plugins/modifiercompiler.count_characters.php create mode 100644 docroot/html/libs/plugins/modifiercompiler.count_paragraphs.php create mode 100644 docroot/html/libs/plugins/modifiercompiler.count_sentences.php create mode 100644 docroot/html/libs/plugins/modifiercompiler.count_words.php create mode 100644 docroot/html/libs/plugins/modifiercompiler.default.php create mode 100644 docroot/html/libs/plugins/modifiercompiler.indent.php create mode 100644 docroot/html/libs/plugins/modifiercompiler.lower.php create mode 100644 docroot/html/libs/plugins/modifiercompiler.noprint.php create mode 100644 docroot/html/libs/plugins/modifiercompiler.string_format.php create mode 100644 docroot/html/libs/plugins/modifiercompiler.strip.php create mode 100644 docroot/html/libs/plugins/modifiercompiler.strip_tags.php create mode 100644 docroot/html/libs/plugins/modifiercompiler.upper.php create mode 100644 docroot/html/libs/plugins/modifiercompiler.wordwrap.php create mode 100644 docroot/html/libs/plugins/outputfilter.trimwhitespace.php create mode 100644 docroot/html/libs/plugins/shared.escape_special_chars.php create mode 100644 docroot/html/libs/plugins/shared.make_timestamp.php create mode 100644 docroot/html/libs/plugins/variablefilter.htmlspecialchars.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_cacheresource_file.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_append.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_assign.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_block.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_break.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_call.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_capture.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_config_load.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_continue.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_debug.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_eval.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_extends.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_for.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_foreach.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_function.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_if.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_include.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_include_php.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_insert.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_ldelim.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_nocache.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_private_block_plugin.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_private_function_plugin.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_private_modifier.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_private_object_block_function.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_private_object_function.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_private_print_expression.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_private_registered_block.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_private_registered_function.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_private_special_variable.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_rdelim.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_section.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compile_while.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_compilebase.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_config.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_config_file_compiler.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_configfilelexer.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_configfileparser.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_data.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_debug.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_filter.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_filter_handler.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_function_call_handler.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_nocache_insert.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_parsetree.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_register.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_resource_eval.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_resource_extends.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_resource_file.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_resource_php.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_resource_registered.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_resource_stream.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_resource_string.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_smartytemplatecompiler.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_template.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_templatecompilerbase.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_templatelexer.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_templateparser.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_utility.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_wrapper.php create mode 100644 docroot/html/libs/sysplugins/smarty_internal_write_file.php create mode 100644 docroot/html/libs/sysplugins/smarty_security.php create mode 100644 docroot/html/smarty.php diff --git a/docroot/html/libs/Smarty.class.php b/docroot/html/libs/Smarty.class.php new file mode 100644 index 0000000..75c90ff --- /dev/null +++ b/docroot/html/libs/Smarty.class.php @@ -0,0 +1,809 @@ + + * @author Uwe Tews + * @package Smarty + * @version 3.0.6 + */ + +/** + * define shorthand directory separator constant + */ +if (!defined('DS')) { + define('DS', DIRECTORY_SEPARATOR); +} + +/** + * set SMARTY_DIR to absolute path to Smarty library files. + * Sets SMARTY_DIR only if user application has not already defined it. + */ +if (!defined('SMARTY_DIR')) { + define('SMARTY_DIR', dirname(__FILE__) . DS); +} + +/** + * set SMARTY_SYSPLUGINS_DIR to absolute path to Smarty internal plugins. + * Sets SMARTY_SYSPLUGINS_DIR only if user application has not already defined it. + */ +if (!defined('SMARTY_SYSPLUGINS_DIR')) { + define('SMARTY_SYSPLUGINS_DIR', SMARTY_DIR . 'sysplugins' . DS); +} +if (!defined('SMARTY_PLUGINS_DIR')) { + define('SMARTY_PLUGINS_DIR', SMARTY_DIR . 'plugins' . DS); +} +if (!defined('SMARTY_RESOURCE_CHAR_SET')) { + define('SMARTY_RESOURCE_CHAR_SET', 'UTF-8'); +} +if (!defined('SMARTY_RESOURCE_DATE_FORMAT')) { + define('SMARTY_RESOURCE_DATE_FORMAT', '%b %e, %Y'); +} + +/** + * register the class autoloader + */ +if (!defined('SMARTY_SPL_AUTOLOAD')) { + define('SMARTY_SPL_AUTOLOAD', 0); +} + +if (SMARTY_SPL_AUTOLOAD && set_include_path(get_include_path() . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !== false) { + $registeredAutoLoadFunctions = spl_autoload_functions(); + if (!isset($registeredAutoLoadFunctions['spl_autoload'])) { + spl_autoload_register(); + } +} else { + spl_autoload_register('smartyAutoload'); +} + +/** + * This is the main Smarty class + */ +class Smarty extends Smarty_Internal_Data { + /** + * constant definitions + */ + // smarty version + const SMARTY_VERSION = 'Smarty-3.0.6'; + //define variable scopes + const SCOPE_LOCAL = 0; + const SCOPE_PARENT = 1; + const SCOPE_ROOT = 2; + const SCOPE_GLOBAL = 3; + // define caching modes + const CACHING_OFF = 0; + const CACHING_LIFETIME_CURRENT = 1; + const CACHING_LIFETIME_SAVED = 2; + /** modes for handling of "" tags in templates. **/ + const PHP_PASSTHRU = 0; //-> print tags as plain text + const PHP_QUOTE = 1; //-> escape tags as entities + const PHP_REMOVE = 2; //-> escape tags as entities + const PHP_ALLOW = 3; //-> escape tags as entities + // filter types + const FILTER_POST = 'post'; + const FILTER_PRE = 'pre'; + const FILTER_OUTPUT = 'output'; + const FILTER_VARIABLE = 'variable'; + // plugin types + const PLUGIN_FUNCTION = 'function'; + const PLUGIN_BLOCK = 'block'; + const PLUGIN_COMPILER = 'compiler'; + const PLUGIN_MODIFIER = 'modifier'; + + /** + * static variables + */ + // assigned global tpl vars + static $global_tpl_vars = array(); + + /** + * variables + */ + // auto literal on delimiters with whitspace + public $auto_literal = true; + // display error on not assigned variables + public $error_unassigned = false; + // template directory + public $template_dir = null; + // default template handler + public $default_template_handler_func = null; + // compile directory + public $compile_dir = null; + // plugins directory + public $plugins_dir = null; + // cache directory + public $cache_dir = null; + // config directory + public $config_dir = null; + // force template compiling? + public $force_compile = false; + // check template for modifications? + public $compile_check = true; + // locking concurrent compiles + public $compile_locking = true; + // use sub dirs for compiled/cached files? + public $use_sub_dirs = false; + // compile_error? + public $compile_error = false; + // caching enabled + public $caching = false; + // merge compiled includes + public $merge_compiled_includes = false; + // cache lifetime + public $cache_lifetime = 3600; + // force cache file creation + public $force_cache = false; + // cache_id + public $cache_id = null; + // compile_id + public $compile_id = null; + // template delimiters + public $left_delimiter = "{"; + public $right_delimiter = "}"; + // security + public $security_class = 'Smarty_Security'; + public $security_policy = null; + public $php_handling = self::PHP_PASSTHRU; + public $allow_php_tag = false; + public $allow_php_templates = false; + public $direct_access_security = true; + public $trusted_dir = array(); + // debug mode + public $debugging = false; + public $debugging_ctrl = 'NONE'; + public $smarty_debug_id = 'SMARTY_DEBUG'; + public $debug_tpl = null; + // When set, smarty does uses this value as error_reporting-level. + public $error_reporting = null; + // config var settings + public $config_overwrite = true; //Controls whether variables with the same name overwrite each other. + public $config_booleanize = true; //Controls whether config values of on/true/yes and off/false/no get converted to boolean + public $config_read_hidden = true; //Controls whether hidden config sections/vars are read from the file. + // config vars + public $config_vars = array(); + // assigned tpl vars + public $tpl_vars = array(); + // dummy parent object + public $parent = null; + // global template functions + public $template_functions = array(); + // resource type used if none given + public $default_resource_type = 'file'; + // caching type + public $caching_type = 'file'; + // internal cache resource types + public $cache_resource_types = array('file'); + // internal config properties + public $properties = array(); + // config type + public $default_config_type = 'file'; + // cached template objects + public $template_objects = null; + // check If-Modified-Since headers + public $cache_modified_check = false; + // registered plugins + public $registered_plugins = array(); + // plugin search order + public $plugin_search_order = array('function', 'block', 'compiler', 'class'); + // registered objects + public $registered_objects = array(); + // registered classes + public $registered_classes = array(); + // registered filters + public $registered_filters = array(); + // registered resources + public $registered_resources = array(); + // autoload filter + public $autoload_filters = array(); + // status of filter on variable output + public $variable_filter = true; + // default modifier + public $default_modifiers = array(); + // global internal smarty vars + static $_smarty_vars = array(); + // start time for execution time calculation + public $start_time = 0; + // default file permissions + public $_file_perms = 0644; + // default dir permissions + public $_dir_perms = 0771; + // block tag hierarchy + public $_tag_stack = array(); + // flag if {block} tag is compiled for template inheritance + public $inheritance = false; + // generate deprecated function call notices? + public $deprecation_notices = true; + // Smarty 2 BC + public $_version = self::SMARTY_VERSION; + // self pointer to Smarty object + public $smarty; + + /** + * Class constructor, initializes basic smarty properties + */ + public function __construct() + { + // selfpointer need by some other class methods + $this->smarty = $this; + if (is_callable('mb_internal_encoding')) { + mb_internal_encoding(SMARTY_RESOURCE_CHAR_SET); + } + $this->start_time = microtime(true); + // set default dirs + $this->template_dir = array('.' . DS . 'templates' . DS); + $this->compile_dir = '.' . DS . 'templates_c' . DS; + $this->plugins_dir = array(SMARTY_PLUGINS_DIR); + $this->cache_dir = '.' . DS . 'cache' . DS; + $this->config_dir = '.' . DS . 'configs' . DS; + $this->debug_tpl = SMARTY_DIR . 'debug.tpl'; + if (!$this->debugging && $this->debugging_ctrl == 'URL') { + if (isset($_SERVER['QUERY_STRING'])) { + $_query_string = $_SERVER['QUERY_STRING']; + } else { + $_query_string = ''; + } + if (false !== strpos($_query_string, $this->smarty_debug_id)) { + if (false !== strpos($_query_string, $this->smarty_debug_id . '=on')) { + // enable debugging for this browser session + setcookie('SMARTY_DEBUG', true); + $this->debugging = true; + } elseif (false !== strpos($_query_string, $this->smarty_debug_id . '=off')) { + // disable debugging for this browser session + setcookie('SMARTY_DEBUG', false); + $this->debugging = false; + } else { + // enable debugging for this page + $this->debugging = true; + } + } else { + if (isset($_COOKIE['SMARTY_DEBUG'])) { + $this->debugging = true; + } + } + } + if (isset($_SERVER['SCRIPT_NAME'])) { + $this->assignGlobal('SCRIPT_NAME', $_SERVER['SCRIPT_NAME']); + } + } + + /** + * Class destructor + */ + public function __destruct() + { + } + + /** + * fetches a rendered Smarty template + * + * @param string $template the resource handle of the template file or template object + * @param mixed $cache_id cache id to be used with this template + * @param mixed $compile_id compile id to be used with this template + * @param object $ |null $parent next higher level of Smarty variables + * @return string rendered template output + */ + public function fetch($template, $cache_id = null, $compile_id = null, $parent = null, $display = false) + { + if (!empty($cache_id) && is_object($cache_id)) { + $parent = $cache_id; + $cache_id = null; + } + if ($parent === null) { + // get default Smarty data object + $parent = $this; + } + // create template object if necessary + ($template instanceof $this->template_class)? $_template = $template : + $_template = $this->createTemplate ($template, $cache_id, $compile_id, $parent); + if (isset($this->error_reporting)) { + $_smarty_old_error_level = error_reporting($this->error_reporting); + } + // obtain data for cache modified check + if ($this->cache_modified_check && $this->caching && $display) { + $_isCached = $_template->isCached() && !$_template->has_nocache_code; + if ($_isCached) { + $_gmt_mtime = gmdate('D, d M Y H:i:s', $_template->getCachedTimestamp()) . ' GMT'; + } else { + $_gmt_mtime = ''; + } + } + // return redered template + if ((!$this->caching || $_template->resource_object->isEvaluated) && (isset($this->autoload_filters['output']) || isset($this->registered_filters['output']))) { + $_output = Smarty_Internal_Filter_Handler::runFilter('output', $_template->getRenderedTemplate(), $_template); + } else { + $_output = $_template->getRenderedTemplate(); + } + $_template->rendered_content = null; + if (isset($this->error_reporting)) { + error_reporting($_smarty_old_error_level); + } + // display or fetch + if ($display) { + if ($this->caching && $this->cache_modified_check) { + $_last_modified_date = @substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 0, strpos($_SERVER['HTTP_IF_MODIFIED_SINCE'], 'GMT') + 3); + if ($_isCached && $_gmt_mtime == $_last_modified_date) { + if (php_sapi_name() == 'cgi') + header('Status: 304 Not Modified'); + else + header('HTTP/1.1 304 Not Modified'); + } else { + header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $_template->getCachedTimestamp()) . ' GMT'); + echo $_output; + } + } else { + echo $_output; + } + // debug output + if ($this->debugging) { + Smarty_Internal_Debug::display_debug($this); + } + return; + } else { + // return fetched content + return $_output; + } + } + + /** + * displays a Smarty template + * + * @param string $ |object $template the resource handle of the template file or template object + * @param mixed $cache_id cache id to be used with this template + * @param mixed $compile_id compile id to be used with this template + * @param object $parent next higher level of Smarty variables + */ + public function display($template, $cache_id = null, $compile_id = null, $parent = null) + { + // display template + $this->fetch ($template, $cache_id, $compile_id, $parent, true); + } + + /** + * test if cache i valid + * + * @param string $ |object $template the resource handle of the template file or template object + * @param mixed $cache_id cache id to be used with this template + * @param mixed $compile_id compile id to be used with this template + * @param object $parent next higher level of Smarty variables + * @return boolean cache status + */ + public function isCached($template, $cache_id = null, $compile_id = null, $parent = null) + { + if ($parent === null) { + $parent = $this; + } + if (!($template instanceof $this->template_class)) { + $template = $this->createTemplate ($template, $cache_id, $compile_id, $parent); + } + // return cache status of template + return $template->isCached(); + } + + /** + * creates a data object + * + * @param object $parent next higher level of Smarty variables + * @returns object data object + */ + public function createData($parent = null) + { + return new Smarty_Data($parent, $this); + } + + /** + * creates a template object + * + * @param string $template the resource handle of the template file + * @param object $parent next higher level of Smarty variables + * @param mixed $cache_id cache id to be used with this template + * @param mixed $compile_id compile id to be used with this template + * @returns object template object + */ + public function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null) + { + if (!empty($cache_id) && (is_object($cache_id) || is_array($cache_id))) { + $parent = $cache_id; + $cache_id = null; + } + if (!empty($parent) && is_array($parent)) { + $data = $parent; + $parent = null; + } else { + $data = null; + } + if (!is_object($template)) { + // we got a template resource + // already in template cache? + $_templateId = sha1($template . $cache_id . $compile_id); + if (isset($this->template_objects[$_templateId]) && $this->caching) { + // return cached template object + $tpl = $this->template_objects[$_templateId]; + } else { + // create new template object + $tpl = new $this->template_class($template, clone $this, $parent, $cache_id, $compile_id); + } + } else { + // just return a copy of template class + $tpl = $template; + } + // fill data if present + if (!empty($data) && is_array($data)) { + // set up variable values + foreach ($data as $_key => $_val) { + $tpl->tpl_vars[$_key] = new Smarty_variable($_val); + } + } + return $tpl; + } + + + + /** + * Check if a template resource exists + * + * @param string $resource_name template name + * @return boolean status + */ + function templateExists($resource_name) + { + // create template object + $save = $this->template_objects; + $tpl = new $this->template_class($resource_name, $this); + // check if it does exists + $result = $tpl->isExisting(); + $this->template_objects = $save; + return $result; + } + + /** + * Returns a single or all global variables + * + * @param object $smarty + * @param string $varname variable name or null + * @return string variable value or or array of variables + */ + function getGlobal($varname = null) + { + if (isset($varname)) { + if (isset(self::$global_tpl_vars[$varname])) { + return self::$global_tpl_vars[$varname]->value; + } else { + return ''; + } + } else { + $_result = array(); + foreach (self::$global_tpl_vars AS $key => $var) { + $_result[$key] = $var->value; + } + return $_result; + } + } + + /** + * Empty cache folder + * + * @param integer $exp_time expiration time + * @param string $type resource type + * @return integer number of cache files deleted + */ + function clearAllCache($exp_time = null, $type = null) + { + // load cache resource and call clearAll + return $this->loadCacheResource($type)->clearAll($exp_time); + } + + /** + * Empty cache for a specific template + * + * @param string $template_name template name + * @param string $cache_id cache id + * @param string $compile_id compile id + * @param integer $exp_time expiration time + * @param string $type resource type + * @return integer number of cache files deleted + */ + function clearCache($template_name, $cache_id = null, $compile_id = null, $exp_time = null, $type = null) + { + // load cache resource and call clear + return $this->loadCacheResource($type)->clear($template_name, $cache_id, $compile_id, $exp_time); + } + + /** + * Loads security class and enables security + */ + public function enableSecurity($security_class = null) + { + if ($security_class instanceof Smarty_Security) { + $this->security_policy = $security_class; + return; + } + if ($security_class == null) { + $security_class = $this->security_class; + } + if (class_exists($security_class)) { + $this->security_policy = new $security_class($this); + } else { + throw new SmartyException("Security class '$security_class' is not defined"); + } + } + + /** + * Disable security + */ + public function disableSecurity() + { + $this->security_policy = null; + } + + /** + * Loads cache resource. + * + * @param string $type cache resource type + * @return object of cache resource + */ + public function loadCacheResource($type = null) { + if (!isset($type)) { + $type = $this->caching_type; + } + if (in_array($type, $this->cache_resource_types)) { + $cache_resource_class = 'Smarty_Internal_CacheResource_' . ucfirst($type); + return new $cache_resource_class($this); + } + else { + // try plugins dir + $cache_resource_class = 'Smarty_CacheResource_' . ucfirst($type); + if ($this->loadPlugin($cache_resource_class)) { + return new $cache_resource_class($this); + } + else { + throw new SmartyException("Unable to load cache resource '{$type}'"); + } + } + } + + + /** + * Set template directory + * + * @param string $ |array $template_dir folder(s) of template sorces + */ + public function setTemplateDir($template_dir) + { + $this->template_dir = (array)$template_dir; + return; + } + + /** + * Adds template directory(s) to existing ones + * + * @param string $ |array $template_dir folder(s) of template sources + */ + public function addTemplateDir($template_dir) + { + $this->template_dir = array_unique(array_merge((array)$this->template_dir, (array)$template_dir)); + return; + } + + /** + * Adds directory of plugin files + * + * @param object $smarty + * @param string $ |array $ plugins folder + * @return + */ + function addPluginsDir($plugins_dir) + { + $this->plugins_dir = array_unique(array_merge((array)$this->plugins_dir, (array)$plugins_dir)); + return; + } + + + /** + * return a reference to a registered object + * + * @param string $name object name + * @return object + */ + function getRegisteredObject($name) + { + if (!isset($this->registered_objects[$name])) + throw new SmartyException("'$name' is not a registered object"); + + if (!is_object($this->registered_objects[$name][0])) + throw new SmartyException("registered '$name' is not an object"); + + return $this->registered_objects[$name][0]; + } + + + /** + * return name of debugging template + * + * @return string + */ + function getDebugTemplate() + { + return $this->debug_tpl; + } + + /** + * set the debug template + * + * @param string $tpl_name + * @return bool + */ + function setDebugTemplate($tpl_name) + { + return $this->debug_tpl = $tpl_name; + } + + /** + * Takes unknown classes and loads plugin files for them + * class name format: Smarty_PluginType_PluginName + * plugin filename format: plugintype.pluginname.php + * + * @param string $plugin_name class plugin name to load + * @return string |boolean filepath of loaded file or false + */ + public function loadPlugin($plugin_name, $check = true) + { + // if function or class exists, exit silently (already loaded) + if ($check && (is_callable($plugin_name) || class_exists($plugin_name, false))) + return true; + // Plugin name is expected to be: Smarty_[Type]_[Name] + $_plugin_name = strtolower($plugin_name); + $_name_parts = explode('_', $_plugin_name, 3); + // class name must have three parts to be valid plugin + if (count($_name_parts) < 3 || $_name_parts[0] !== 'smarty') { + throw new SmartyException("plugin {$plugin_name} is not a valid name format"); + return false; + } + // if type is "internal", get plugin from sysplugins + if ($_name_parts[1] == 'internal') { + $file = SMARTY_SYSPLUGINS_DIR . $_plugin_name . '.php'; + if (file_exists($file)) { + require_once($file); + return $file; + } else { + return false; + } + } + // plugin filename is expected to be: [type].[name].php + $_plugin_filename = "{$_name_parts[1]}.{$_name_parts[2]}.php"; + // loop through plugin dirs and find the plugin + foreach((array)$this->plugins_dir as $_plugin_dir) { + if (strpos('/\\', substr($_plugin_dir, -1)) === false) { + $_plugin_dir .= DS; + } + $file = $_plugin_dir . $_plugin_filename; + if (file_exists($file)) { + require_once($file); + return $file; + } + } + // no plugin loaded + return false; + } + + /** + * clean up properties on cloned object + */ + public function __clone() + { + // clear config vars + $this->config_vars = array(); + // clear assigned tpl vars + $this->tpl_vars = array(); + // clear objects for external methods + unset($this->register); + unset($this->filter); + } + + + /** + * Handle unknown class methods + * + * @param string $name unknown methode name + * @param array $args aurgument array + */ + public function __call($name, $args) + { + static $camel_func; + if (!isset($camel_func)) + $camel_func = create_function('$c', 'return "_" . strtolower($c[1]);'); + // see if this is a set/get for a property + $first3 = strtolower(substr($name, 0, 3)); + if (in_array($first3, array('set', 'get')) && substr($name, 3, 1) !== '_') { + // try to keep case correct for future PHP 6.0 case-sensitive class methods + // lcfirst() not available < PHP 5.3.0, so improvise + $property_name = strtolower(substr($name, 3, 1)) . substr($name, 4); + // convert camel case to underscored name + $property_name = preg_replace_callback('/([A-Z])/', $camel_func, $property_name); + if (!property_exists($this, $property_name)) { + throw new SmartyException("property '$property_name' does not exist."); + return false; + } + if ($first3 == 'get') + return $this->$property_name; + else + return $this->$property_name = $args[0]; + } + // Smarty Backward Compatible wrapper + if (strpos($name,'_') !== false) { + if (!isset($this->wrapper)) { + $this->wrapper = new Smarty_Internal_Wrapper($this); + } + return $this->wrapper->convert($name, $args); + } + // external Smarty methods ? + foreach(array('filter','register') as $external) { + if (method_exists("Smarty_Internal_{$external}",$name)) { + if (!isset($this->$external)) { + $class = "Smarty_Internal_{$external}"; + $this->$external = new $class($this); + } + return call_user_func_array(array($this->$external,$name), $args); + } + } + if (in_array($name,array('clearCompiledTemplate','compileAllTemplates','compileAllConfig','testInstall','getTags'))) { + if (!isset($this->utility)) { + $this->utility = new Smarty_Internal_Utility($this); + } + return call_user_func_array(array($this->utility,$name), $args); + } + // PHP4 call to constructor? + if (strtolower($name) == 'smarty') { + throw new SmartyException('Please use parent::__construct() to call parent constuctor'); + return false; + } + throw new SmartyException("Call of unknown function '$name'."); + } +} + +/** + * Autoloader + */ +function smartyAutoload($class) +{ + $_class = strtolower($class); + if (substr($_class, 0, 16) === 'smarty_internal_' || $_class == 'smarty_security') { + include SMARTY_SYSPLUGINS_DIR . $_class . '.php'; + } +} + +/** + * Smarty exception class + */ +Class SmartyException extends Exception { +} + +/** + * Smarty compiler exception class + */ +Class SmartyCompilerException extends SmartyException { +} + +?> diff --git a/docroot/html/libs/debug.tpl b/docroot/html/libs/debug.tpl new file mode 100644 index 0000000..058c5b2 --- /dev/null +++ b/docroot/html/libs/debug.tpl @@ -0,0 +1,133 @@ +{capture name='_smarty_debug' assign=debug_output} + + + + Smarty Debug Console + + + + +

Smarty Debug Console - {if isset($template_name)}{$template_name|debug_print_var}{else}Total Time {$execution_time|string_format:"%.5f"}{/if}

+ +{if !empty($template_data)} +

included templates & config files (load time in seconds)

+ +
+{foreach $template_data as $template} + {$template.name} + + (compile {$template['compile_time']|string_format:"%.5f"}) (render {$template['render_time']|string_format:"%.5f"}) (cache {$template['cache_time']|string_format:"%.5f"}) + +
+{/foreach} +
+{/if} + +

assigned template variables

+ + + {foreach $assigned_vars as $vars} + + + + {/foreach} +
${$vars@key|escape:'html'}{$vars|debug_print_var}
+ +

assigned config file variables (outer template scope)

+ + + {foreach $config_vars as $vars} + + + + {/foreach} + +
{$vars@key|escape:'html'}{$vars|debug_print_var}
+ + +{/capture} + diff --git a/docroot/html/libs/plugins/block.php.php b/docroot/html/libs/plugins/block.php.php new file mode 100644 index 0000000..8fedd8b --- /dev/null +++ b/docroot/html/libs/plugins/block.php.php @@ -0,0 +1,27 @@ +allow_php_tag) { + throw new SmartyException("{php} is deprecated, set allow_php_tag = true to enable"); + } + eval($content); + return ''; +} + +?> \ No newline at end of file diff --git a/docroot/html/libs/plugins/block.textformat.php b/docroot/html/libs/plugins/block.textformat.php new file mode 100644 index 0000000..517fd62 --- /dev/null +++ b/docroot/html/libs/plugins/block.textformat.php @@ -0,0 +1,102 @@ + + * Name: textformat
+ * Purpose: format text a certain way with preset styles + * or custom wrap/indent settings
+ * + * @link http://smarty.php.net/manual/en/language.function.textformat.php {textformat} + * (Smarty online manual) + * @param array $params parameters + *
+ * Params:   style: string (email)
+ *            indent: integer (0)
+ *            wrap: integer (80)
+ *            wrap_char string ("\n")
+ *            indent_char: string (" ")
+ *            wrap_boundary: boolean (true)
+ * 
+ * @author Monte Ohrt + * @param string $content contents of the block + * @param object $template template object + * @param boolean &$repeat repeat flag + * @return string content re-formatted + */ +function smarty_block_textformat($params, $content, $template, &$repeat) +{ + if (is_null($content)) { + return; + } + + $style = null; + $indent = 0; + $indent_first = 0; + $indent_char = ' '; + $wrap = 80; + $wrap_char = "\n"; + $wrap_cut = false; + $assign = null; + + foreach ($params as $_key => $_val) { + switch ($_key) { + case 'style': + case 'indent_char': + case 'wrap_char': + case 'assign': + $$_key = (string)$_val; + break; + + case 'indent': + case 'indent_first': + case 'wrap': + $$_key = (int)$_val; + break; + + case 'wrap_cut': + $$_key = (bool)$_val; + break; + + default: + trigger_error("textformat: unknown attribute '$_key'"); + } + } + + if ($style == 'email') { + $wrap = 72; + } + // split into paragraphs + $_paragraphs = preg_split('![\r\n][\r\n]!', $content); + $_output = ''; + + for($_x = 0, $_y = count($_paragraphs); $_x < $_y; $_x++) { + if ($_paragraphs[$_x] == '') { + continue; + } + // convert mult. spaces & special chars to single space + $_paragraphs[$_x] = preg_replace(array('!\s+!', '!(^\s+)|(\s+$)!'), array(' ', ''), $_paragraphs[$_x]); + // indent first line + if ($indent_first > 0) { + $_paragraphs[$_x] = str_repeat($indent_char, $indent_first) . $_paragraphs[$_x]; + } + // wordwrap sentences + $_paragraphs[$_x] = wordwrap($_paragraphs[$_x], $wrap - $indent, $wrap_char, $wrap_cut); + // indent lines + if ($indent > 0) { + $_paragraphs[$_x] = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraphs[$_x]); + } + } + $_output = implode($wrap_char . $wrap_char, $_paragraphs); + + return $assign ? $template->assign($assign, $_output) : $_output; +} + +?> \ No newline at end of file diff --git a/docroot/html/libs/plugins/function.counter.php b/docroot/html/libs/plugins/function.counter.php new file mode 100644 index 0000000..7c50bd4 --- /dev/null +++ b/docroot/html/libs/plugins/function.counter.php @@ -0,0 +1,78 @@ + + * Name: counter
+ * Purpose: print out a counter value + * @author Monte Ohrt + * @link http://smarty.php.net/manual/en/language.function.counter.php {counter} + * (Smarty online manual) + * @param array parameters + * @param Smarty + * @param object $template template object + * @return string|null + */ +function smarty_function_counter($params, $template) +{ + static $counters = array(); + + $name = (isset($params['name'])) ? $params['name'] : 'default'; + if (!isset($counters[$name])) { + $counters[$name] = array( + 'start'=>1, + 'skip'=>1, + 'direction'=>'up', + 'count'=>1 + ); + } + $counter =& $counters[$name]; + + if (isset($params['start'])) { + $counter['start'] = $counter['count'] = (int)$params['start']; + } + + if (!empty($params['assign'])) { + $counter['assign'] = $params['assign']; + } + + if (isset($counter['assign'])) { + $template->assign($counter['assign'], $counter['count']); + } + + if (isset($params['print'])) { + $print = (bool)$params['print']; + } else { + $print = empty($counter['assign']); + } + + if ($print) { + $retval = $counter['count']; + } else { + $retval = null; + } + + if (isset($params['skip'])) { + $counter['skip'] = $params['skip']; + } + + if (isset($params['direction'])) { + $counter['direction'] = $params['direction']; + } + + if ($counter['direction'] == "down") + $counter['count'] -= $counter['skip']; + else + $counter['count'] += $counter['skip']; + + return $retval; + +} + +?> \ No newline at end of file diff --git a/docroot/html/libs/plugins/function.cycle.php b/docroot/html/libs/plugins/function.cycle.php new file mode 100644 index 0000000..98e3e28 --- /dev/null +++ b/docroot/html/libs/plugins/function.cycle.php @@ -0,0 +1,106 @@ + + * Name: cycle
+ * Date: May 3, 2002
+ * Purpose: cycle through given values
+ * Input: + * - name = name of cycle (optional) + * - values = comma separated list of values to cycle, + * or an array of values to cycle + * (this can be left out for subsequent calls) + * - reset = boolean - resets given var to true + * - print = boolean - print var or not. default is true + * - advance = boolean - whether or not to advance the cycle + * - delimiter = the value delimiter, default is "," + * - assign = boolean, assigns to template var instead of + * printed. + * + * Examples:
+ *
+ * {cycle values="#eeeeee,#d0d0d0d"}
+ * {cycle name=row values="one,two,three" reset=true}
+ * {cycle name=row}
+ * 
+ * @link http://smarty.php.net/manual/en/language.function.cycle.php {cycle} + * (Smarty online manual) + * @author Monte Ohrt + * @author credit to Mark Priatel + * @author credit to Gerard + * @author credit to Jason Sweat + * @version 1.3 + * @param array + * @param object $template template object + * @return string|null + */ + +function smarty_function_cycle($params, $template) +{ + static $cycle_vars; + + $name = (empty($params['name'])) ? 'default' : $params['name']; + $print = (isset($params['print'])) ? (bool)$params['print'] : true; + $advance = (isset($params['advance'])) ? (bool)$params['advance'] : true; + $reset = (isset($params['reset'])) ? (bool)$params['reset'] : false; + + if (!in_array('values', array_keys($params))) { + if(!isset($cycle_vars[$name]['values'])) { + trigger_error("cycle: missing 'values' parameter"); + return; + } + } else { + if(isset($cycle_vars[$name]['values']) + && $cycle_vars[$name]['values'] != $params['values'] ) { + $cycle_vars[$name]['index'] = 0; + } + $cycle_vars[$name]['values'] = $params['values']; + } + + if (isset($params['delimiter'])) { + $cycle_vars[$name]['delimiter'] = $params['delimiter']; + } elseif (!isset($cycle_vars[$name]['delimiter'])) { + $cycle_vars[$name]['delimiter'] = ','; + } + + if(is_array($cycle_vars[$name]['values'])) { + $cycle_array = $cycle_vars[$name]['values']; + } else { + $cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']); + } + + if(!isset($cycle_vars[$name]['index']) || $reset ) { + $cycle_vars[$name]['index'] = 0; + } + + if (isset($params['assign'])) { + $print = false; + $template->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]); + } + + if($print) { + $retval = $cycle_array[$cycle_vars[$name]['index']]; + } else { + $retval = null; + } + + if($advance) { + if ( $cycle_vars[$name]['index'] >= count($cycle_array) -1 ) { + $cycle_vars[$name]['index'] = 0; + } else { + $cycle_vars[$name]['index']++; + } + } + + return $retval; +} + +?> \ No newline at end of file diff --git a/docroot/html/libs/plugins/function.fetch.php b/docroot/html/libs/plugins/function.fetch.php new file mode 100644 index 0000000..2b09fb9 --- /dev/null +++ b/docroot/html/libs/plugins/function.fetch.php @@ -0,0 +1,216 @@ + + * Name: fetch
+ * Purpose: fetch file, web or ftp data and display results + * @link http://smarty.php.net/manual/en/language.function.fetch.php {fetch} + * (Smarty online manual) + * @author Monte Ohrt + * @param array $params parameters + * @param object $template template object + * @return string|null if the assign parameter is passed, Smarty assigns the + * result to a template variable + */ +function smarty_function_fetch($params, $template) +{ + if (empty($params['file'])) { + trigger_error("[plugin] fetch parameter 'file' cannot be empty",E_USER_NOTICE); + return; + } + + $content = ''; + if (isset($template->security_policy) && !preg_match('!^(http|ftp)://!i', $params['file'])) { + if(!$template->security_policy->isTrustedResourceDir($params['file'])) { + return; + } + + // fetch the file + if($fp = @fopen($params['file'],'r')) { + while(!feof($fp)) { + $content .= fgets ($fp,4096); + } + fclose($fp); + } else { + trigger_error('[plugin] fetch cannot read file \'' . $params['file'] . '\'',E_USER_NOTICE); + return; + } + } else { + // not a local file + if(preg_match('!^http://!i',$params['file'])) { + // http fetch + if($uri_parts = parse_url($params['file'])) { + // set defaults + $host = $server_name = $uri_parts['host']; + $timeout = 30; + $accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*"; + $agent = "Smarty Template Engine ".$template->_version; + $referer = ""; + $uri = !empty($uri_parts['path']) ? $uri_parts['path'] : '/'; + $uri .= !empty($uri_parts['query']) ? '?' . $uri_parts['query'] : ''; + $_is_proxy = false; + if(empty($uri_parts['port'])) { + $port = 80; + } else { + $port = $uri_parts['port']; + } + if(!empty($uri_parts['user'])) { + $user = $uri_parts['user']; + } + if(!empty($uri_parts['pass'])) { + $pass = $uri_parts['pass']; + } + // loop through parameters, setup headers + foreach($params as $param_key => $param_value) { + switch($param_key) { + case "file": + case "assign": + case "assign_headers": + break; + case "user": + if(!empty($param_value)) { + $user = $param_value; + } + break; + case "pass": + if(!empty($param_value)) { + $pass = $param_value; + } + break; + case "accept": + if(!empty($param_value)) { + $accept = $param_value; + } + break; + case "header": + if(!empty($param_value)) { + if(!preg_match('![\w\d-]+: .+!',$param_value)) { + trigger_error("[plugin] invalid header format '".$param_value."'",E_USER_NOTICE); + return; + } else { + $extra_headers[] = $param_value; + } + } + break; + case "proxy_host": + if(!empty($param_value)) { + $proxy_host = $param_value; + } + break; + case "proxy_port": + if(!preg_match('!\D!', $param_value)) { + $proxy_port = (int) $param_value; + } else { + trigger_error("[plugin] invalid value for attribute '".$param_key."'",E_USER_NOTICE); + return; + } + break; + case "agent": + if(!empty($param_value)) { + $agent = $param_value; + } + break; + case "referer": + if(!empty($param_value)) { + $referer = $param_value; + } + break; + case "timeout": + if(!preg_match('!\D!', $param_value)) { + $timeout = (int) $param_value; + } else { + trigger_error("[plugin] invalid value for attribute '".$param_key."'",E_USER_NOTICE); + return; + } + break; + default: + trigger_error("[plugin] unrecognized attribute '".$param_key."'",E_USER_NOTICE); + return; + } + } + if(!empty($proxy_host) && !empty($proxy_port)) { + $_is_proxy = true; + $fp = fsockopen($proxy_host,$proxy_port,$errno,$errstr,$timeout); + } else { + $fp = fsockopen($server_name,$port,$errno,$errstr,$timeout); + } + + if(!$fp) { + trigger_error("[plugin] unable to fetch: $errstr ($errno)",E_USER_NOTICE); + return; + } else { + if($_is_proxy) { + fputs($fp, 'GET ' . $params['file'] . " HTTP/1.0\r\n"); + } else { + fputs($fp, "GET $uri HTTP/1.0\r\n"); + } + if(!empty($host)) { + fputs($fp, "Host: $host\r\n"); + } + if(!empty($accept)) { + fputs($fp, "Accept: $accept\r\n"); + } + if(!empty($agent)) { + fputs($fp, "User-Agent: $agent\r\n"); + } + if(!empty($referer)) { + fputs($fp, "Referer: $referer\r\n"); + } + if(isset($extra_headers) && is_array($extra_headers)) { + foreach($extra_headers as $curr_header) { + fputs($fp, $curr_header."\r\n"); + } + } + if(!empty($user) && !empty($pass)) { + fputs($fp, "Authorization: BASIC ".base64_encode("$user:$pass")."\r\n"); + } + + fputs($fp, "\r\n"); + while(!feof($fp)) { + $content .= fgets($fp,4096); + } + fclose($fp); + $csplit = preg_split("!\r\n\r\n!",$content,2); + + $content = $csplit[1]; + + if(!empty($params['assign_headers'])) { + $template->assign($params['assign_headers'],preg_split("!\r\n!",$csplit[0])); + } + } + } else { + trigger_error("[plugin fetch] unable to parse URL, check syntax",E_USER_NOTICE); + return; + } + } else { + // ftp fetch + if($fp = @fopen($params['file'],'r')) { + while(!feof($fp)) { + $content .= fgets ($fp,4096); + } + fclose($fp); + } else { + trigger_error('[plugin] fetch cannot read file \'' . $params['file'] .'\'',E_USER_NOTICE); + return; + } + } + + } + + + if (!empty($params['assign'])) { + $template->assign($params['assign'],$content); + } else { + return $content; + } +} + +?> \ No newline at end of file diff --git a/docroot/html/libs/plugins/function.html_checkboxes.php b/docroot/html/libs/plugins/function.html_checkboxes.php new file mode 100644 index 0000000..6a1a3ff --- /dev/null +++ b/docroot/html/libs/plugins/function.html_checkboxes.php @@ -0,0 +1,143 @@ + + * Type: function
+ * Name: html_checkboxes
+ * Date: 24.Feb.2003
+ * Purpose: Prints out a list of checkbox input types
+ * Examples: + *
+ * {html_checkboxes values=$ids output=$names}
+ * {html_checkboxes values=$ids name='box' separator='
' output=$names} + * {html_checkboxes values=$ids checked=$checked separator='
' output=$names} + *
+ * @link http://smarty.php.net/manual/en/language.function.html.checkboxes.php {html_checkboxes} + * (Smarty online manual) + * @author Christopher Kvarme + * @author credits to Monte Ohrt + * @version 1.0 + * @param array $params parameters + * Input:
+ * - name (optional) - string default "checkbox" + * - values (required) - array + * - options (optional) - associative array + * - checked (optional) - array default not set + * - separator (optional) - ie
or   + * - output (optional) - the output next to each checkbox + * - assign (optional) - assign the output as an array to this variable + * @param object $template template object + * @return string + * @uses smarty_function_escape_special_chars() + */ +function smarty_function_html_checkboxes($params, $template) +{ + require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); + + $name = 'checkbox'; + $values = null; + $options = null; + $selected = null; + $separator = ''; + $labels = true; + $output = null; + + $extra = ''; + + foreach($params as $_key => $_val) { + switch($_key) { + case 'name': + case 'separator': + $$_key = $_val; + break; + + case 'labels': + $$_key = (bool)$_val; + break; + + case 'options': + $$_key = (array)$_val; + break; + + case 'values': + case 'output': + $$_key = array_values((array)$_val); + break; + + case 'checked': + case 'selected': + $selected = array_map('strval', array_values((array)$_val)); + break; + + case 'checkboxes': + trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', E_USER_WARNING); + $options = (array)$_val; + break; + + case 'assign': + break; + + default: + if(!is_array($_val)) { + $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"'; + } else { + trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + } + break; + } + } + + if (!isset($options) && !isset($values)) + return ''; /* raise error here? */ + + settype($selected, 'array'); + $_html_result = array(); + + if (isset($options)) { + + foreach ($options as $_key=>$_val) + $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels); + + + } else { + foreach ($values as $_i=>$_key) { + $_val = isset($output[$_i]) ? $output[$_i] : ''; + $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels); + } + + } + + if(!empty($params['assign'])) { + $template->assign($params['assign'], $_html_result); + } else { + return implode("\n",$_html_result); + } + +} + +function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels) { + $_output = ''; + if ($labels) $_output .= ''; + $_output .= $separator; + + return $_output; +} + +?> \ No newline at end of file diff --git a/docroot/html/libs/plugins/function.html_image.php b/docroot/html/libs/plugins/function.html_image.php new file mode 100644 index 0000000..abb7b57 --- /dev/null +++ b/docroot/html/libs/plugins/function.html_image.php @@ -0,0 +1,137 @@ + + * Name: html_image
+ * Date: Feb 24, 2003
+ * Purpose: format HTML tags for the image
+ * Examples: {html_image file="/images/masthead.gif"} + * Output: + * + * @link http://smarty.php.net/manual/en/language.function.html.image.php {html_image} + * (Smarty online manual) + * @author Monte Ohrt + * @author credits to Duda + * @version 1.0 + * @param array $params parameters + * Input:
+ * - file = file (and path) of image (required) + * - height = image height (optional, default actual height) + * - width = image width (optional, default actual width) + * - basedir = base directory for absolute paths, default + * is environment variable DOCUMENT_ROOT + * - path_prefix = prefix for path output (optional, default empty) + * @param object $template template object + * @return string + * @uses smarty_function_escape_special_chars() + */ +function smarty_function_html_image($params, $template) +{ + require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); + + $alt = ''; + $file = ''; + $height = ''; + $width = ''; + $extra = ''; + $prefix = ''; + $suffix = ''; + $path_prefix = ''; + $server_vars = $_SERVER; + $basedir = isset($server_vars['DOCUMENT_ROOT']) ? $server_vars['DOCUMENT_ROOT'] : ''; + foreach($params as $_key => $_val) { + switch ($_key) { + case 'file': + case 'height': + case 'width': + case 'dpi': + case 'path_prefix': + case 'basedir': + $$_key = $_val; + break; + + case 'alt': + if (!is_array($_val)) { + $$_key = smarty_function_escape_special_chars($_val); + } else { + throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + } + break; + + case 'link': + case 'href': + $prefix = ''; + $suffix = ''; + break; + + default: + if (!is_array($_val)) { + $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"'; + } else { + throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + } + break; + } + } + + if (empty($file)) { + trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE); + return; + } + + if (substr($file, 0, 1) == '/') { + $_image_path = $basedir . $file; + } else { + $_image_path = $file; + } + + if (!isset($params['width']) || !isset($params['height'])) { + if (!$_image_data = @getimagesize($_image_path)) { + if (!file_exists($_image_path)) { + trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE); + return; + } else if (!is_readable($_image_path)) { + trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE); + return; + } else { + trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE); + return; + } + } + if (isset($template->security_policy)) { + if (!$template->security_policy->isTrustedResourceDir($_image_path)) { + return; + } + } + + if (!isset($params['width'])) { + $width = $_image_data[0]; + } + if (!isset($params['height'])) { + $height = $_image_data[1]; + } + } + + if (isset($params['dpi'])) { + if (strstr($server_vars['HTTP_USER_AGENT'], 'Mac')) { + $dpi_default = 72; + } else { + $dpi_default = 96; + } + $_resize = $dpi_default / $params['dpi']; + $width = round($width * $_resize); + $height = round($height * $_resize); + } + + return $prefix . '' . $alt . '' . $suffix; +} + +?> \ No newline at end of file diff --git a/docroot/html/libs/plugins/function.html_options.php b/docroot/html/libs/plugins/function.html_options.php new file mode 100644 index 0000000..65c77c6 --- /dev/null +++ b/docroot/html/libs/plugins/function.html_options.php @@ -0,0 +1,119 @@ + + * Name: html_options
+ * Purpose: Prints the list of