├── .gitignore ├── .travis.yml ├── Dockerfile ├── LICENSE.txt ├── README.md ├── adapter.log ├── composer.json ├── composer.lock ├── docker-compose.yml ├── docs ├── .htaccess ├── classes.svg ├── classes │ ├── prodigyview.design.Adapter.html │ ├── prodigyview.design.Application.html │ ├── prodigyview.design.Filter.html │ ├── prodigyview.design.InstanceObject.html │ ├── prodigyview.design.Invoke.html │ ├── prodigyview.design.Observer.html │ ├── prodigyview.design.Singleton.html │ ├── prodigyview.design.StaticAdapter.html │ ├── prodigyview.design.StaticApplication.html │ ├── prodigyview.design.StaticFilter.html │ ├── prodigyview.design.StaticInstance.html │ ├── prodigyview.design.StaticInvoke.html │ ├── prodigyview.design.StaticObject.html │ ├── prodigyview.design.StaticObserver.html │ ├── prodigyview.media.Audio.html │ ├── prodigyview.media.Image.html │ ├── prodigyview.media.Video.html │ ├── prodigyview.network.Communicator.html │ ├── prodigyview.network.Curl.html │ ├── prodigyview.network.Request.html │ ├── prodigyview.network.RequestAuth.html │ ├── prodigyview.network.Response.html │ ├── prodigyview.network.Router.html │ ├── prodigyview.system.Bootstrap.html │ ├── prodigyview.system.Configuration.html │ ├── prodigyview.system.Database.html │ ├── prodigyview.system.Libraries.html │ ├── prodigyview.system.Security.html │ ├── prodigyview.system.Session.html │ ├── prodigyview.template.Forms.html │ ├── prodigyview.template.Html.html │ ├── prodigyview.util.Cache.html │ ├── prodigyview.util.Cli.html │ ├── prodigyview.util.Collection.html │ ├── prodigyview.util.Conversions.html │ ├── prodigyview.util.FileManager.html │ ├── prodigyview.util.Iterator.html │ ├── prodigyview.util.Log.html │ ├── prodigyview.util.Mail.html │ ├── prodigyview.util.Mathematics.html │ ├── prodigyview.util.Tools.html │ └── prodigyview.util.Validator.html ├── css │ ├── bootstrap-combined.no-icons.min.css │ ├── bootstrap-responsive.css │ ├── bootstrap-responsive.min.css │ ├── bootstrap.css │ ├── bootstrap.min.css │ ├── font-awesome.min.css │ ├── jquery.iviewer.css │ ├── phpdocumentor-clean-icons │ │ ├── Read Me.txt │ │ ├── fonts │ │ │ ├── phpdocumentor-clean-icons.dev.svg │ │ │ ├── phpdocumentor-clean-icons.eot │ │ │ ├── phpdocumentor-clean-icons.svg │ │ │ ├── phpdocumentor-clean-icons.ttf │ │ │ └── phpdocumentor-clean-icons.woff │ │ ├── lte-ie7.js │ │ └── style.css │ ├── prettify.css │ ├── prism.css │ └── template.css ├── deprecated.html ├── errors.html ├── font │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ └── fontawesome-webfont.woff ├── graph_class.html ├── images │ ├── apple-touch-icon-114x114.png │ ├── apple-touch-icon-72x72.png │ ├── apple-touch-icon.png │ ├── custom-icons.svg │ ├── favicon.ico │ ├── hierarchy-item.png │ ├── icon-class-13x13.png │ ├── icon-class.svg │ ├── icon-interface-13x13.png │ ├── icon-interface.svg │ ├── icon-trait-13x13.png │ ├── icon-trait.svg │ └── iviewer │ │ ├── grab.cur │ │ ├── hand.cur │ │ ├── iviewer.rotate_left.png │ │ ├── iviewer.rotate_right.png │ │ ├── iviewer.zoom_fit.png │ │ ├── iviewer.zoom_in.png │ │ ├── iviewer.zoom_out.png │ │ └── iviewer.zoom_zero.png ├── img │ ├── apple-touch-icon-114x114.png │ ├── apple-touch-icon-72x72.png │ ├── apple-touch-icon.png │ ├── favicon.ico │ ├── glyphicons-halflings-white.png │ ├── glyphicons-halflings.png │ ├── icons │ │ ├── arrow_down.png │ │ ├── arrow_right.png │ │ ├── class.png │ │ ├── constant.png │ │ ├── favicon.ico │ │ ├── file-php.png │ │ ├── file.gif │ │ ├── folder.gif │ │ ├── function.png │ │ ├── icon-folder-open-big.png │ │ ├── icon-th-big.png │ │ ├── icon_template.svg │ │ ├── interface.png │ │ ├── method.png │ │ ├── ok.png │ │ ├── property.png │ │ ├── search.gif │ │ ├── variable.png │ │ ├── view_source.png │ │ ├── visibility_private.png │ │ ├── visibility_protected.png │ │ └── visibility_public.png │ ├── iviewer │ │ ├── grab.cur │ │ ├── hand.cur │ │ ├── iviewer.rotate_left.png │ │ ├── iviewer.rotate_right.png │ │ ├── iviewer.zoom_fit.png │ │ ├── iviewer.zoom_fit2.gif │ │ ├── iviewer.zoom_in.png │ │ ├── iviewer.zoom_in2.gif │ │ ├── iviewer.zoom_out.png │ │ ├── iviewer.zoom_out2.gif │ │ ├── iviewer.zoom_zero.png │ │ └── iviewer.zoom_zero2.gif │ └── loader.gif ├── index.html ├── js │ ├── SVGPan.js │ ├── bootstrap.js │ ├── bootstrap.min.js │ ├── html5.js │ ├── jqplot │ │ ├── MIT-LICENSE.txt │ │ ├── README.txt │ │ ├── changes.txt │ │ ├── copyright.txt │ │ ├── excanvas.min.js │ │ ├── gpl-2.0.txt │ │ ├── jquery.jqplot.min.css │ │ ├── jquery.jqplot.min.js │ │ └── plugins │ │ │ ├── jqplot.BezierCurveRenderer.min.js │ │ │ ├── jqplot.barRenderer.min.js │ │ │ ├── jqplot.blockRenderer.min.js │ │ │ ├── jqplot.bubbleRenderer.min.js │ │ │ ├── jqplot.canvasAxisLabelRenderer.min.js │ │ │ ├── jqplot.canvasAxisTickRenderer.min.js │ │ │ ├── jqplot.canvasOverlay.min.js │ │ │ ├── jqplot.canvasTextRenderer.min.js │ │ │ ├── jqplot.categoryAxisRenderer.min.js │ │ │ ├── jqplot.ciParser.min.js │ │ │ ├── jqplot.cursor.min.js │ │ │ ├── jqplot.dateAxisRenderer.min.js │ │ │ ├── jqplot.donutRenderer.min.js │ │ │ ├── jqplot.dragable.min.js │ │ │ ├── jqplot.enhancedLegendRenderer.min.js │ │ │ ├── jqplot.funnelRenderer.min.js │ │ │ ├── jqplot.highlighter.min.js │ │ │ ├── jqplot.json2.min.js │ │ │ ├── jqplot.logAxisRenderer.min.js │ │ │ ├── jqplot.mekkoAxisRenderer.min.js │ │ │ ├── jqplot.mekkoRenderer.min.js │ │ │ ├── jqplot.meterGaugeRenderer.min.js │ │ │ ├── jqplot.mobile.min.js │ │ │ ├── jqplot.ohlcRenderer.min.js │ │ │ ├── jqplot.pieRenderer.min.js │ │ │ ├── jqplot.pointLabels.min.js │ │ │ ├── jqplot.pyramidAxisRenderer.min.js │ │ │ ├── jqplot.pyramidGridRenderer.min.js │ │ │ ├── jqplot.pyramidRenderer.min.js │ │ │ └── jqplot.trendline.min.js │ ├── jquery-1.11.0.min.js │ ├── jquery-1.4.2.min.js │ ├── jquery-1.7.1.min.js │ ├── jquery-ui-1.8.2.custom.min.js │ ├── jquery.cookie.js │ ├── jquery.dotdotdot-1.5.9.js │ ├── jquery.dotdotdot-1.5.9.min.js │ ├── jquery.iviewer.js │ ├── jquery.iviewer.min.js │ ├── jquery.mousewheel.js │ ├── jquery.mousewheel.min.js │ ├── jquery.panzoom.js │ ├── jquery.smooth-scroll.js │ ├── jquery.splitter.js │ ├── jquery.tools.min.js │ ├── jquery.treeview.js │ ├── jquery.xml2json.js │ ├── menu.js │ ├── prettify │ │ ├── lang-apollo.js │ │ ├── lang-clj.js │ │ ├── lang-css.js │ │ ├── lang-go.js │ │ ├── lang-hs.js │ │ ├── lang-lisp.js │ │ ├── lang-lua.js │ │ ├── lang-ml.js │ │ ├── lang-n.js │ │ ├── lang-proto.js │ │ ├── lang-scala.js │ │ ├── lang-sql.js │ │ ├── lang-tex.js │ │ ├── lang-vb.js │ │ ├── lang-vhdl.js │ │ ├── lang-wiki.js │ │ ├── lang-xq.js │ │ ├── lang-yaml.js │ │ └── prettify.min.js │ ├── prism.min.js │ ├── sidebar.js │ ├── template.js │ └── ui │ │ └── 1.10.4 │ │ └── jquery-ui.min.js ├── markers.html ├── namespaces │ ├── default.html │ ├── prodigyview.design.html │ ├── prodigyview.html │ ├── prodigyview.media.html │ ├── prodigyview.network.html │ ├── prodigyview.system.html │ ├── prodigyview.template.html │ └── prodigyview.util.html ├── packages │ ├── data.html │ ├── default.html │ ├── media.html │ ├── network.html │ ├── system.html │ ├── template.html │ └── util.html ├── phpdoc-cache-00 │ └── phpdoc-cache-file_416ab651a029921f8e16e3defa83692c.dat ├── phpdoc-cache-01 │ └── phpdoc-cache-file_644ab5ec3fcf695fc734a9c8fcdb1785.dat ├── phpdoc-cache-04 │ └── phpdoc-cache-file_3d412074b4fa2a9815f521614c1334cf.dat ├── phpdoc-cache-0d │ └── phpdoc-cache-file_1d02583173f90e88e1e85e333e8a9968.dat ├── phpdoc-cache-0e │ └── phpdoc-cache-file_af7c6e0556f444cbd56721778e906421.dat ├── phpdoc-cache-14 │ └── phpdoc-cache-file_57991a8ffdd9bae0666577e2e8bb7acc.dat ├── phpdoc-cache-15 │ └── phpdoc-cache-file_d5351a8a273633deaf68658f8231ee33.dat ├── phpdoc-cache-18 │ └── phpdoc-cache-file_fbe5b659fc601de34b302bc0aff448ee.dat ├── phpdoc-cache-19 │ └── phpdoc-cache-file_961c6329f0896d43db7b420f9cbe4843.dat ├── phpdoc-cache-1d │ └── phpdoc-cache-file_4919462f98d048bad0081c96802335ac.dat ├── phpdoc-cache-20 │ └── phpdoc-cache-file_3de16ca2d782d77999b1df519a05af6e.dat ├── phpdoc-cache-23 │ └── phpdoc-cache-file_05f1feb4037650842d286a8ad40e6751.dat ├── phpdoc-cache-2c │ ├── phpdoc-cache-file_5e2cb674786a2fafc97f8d910ae8ccf9.dat │ └── phpdoc-cache-file_9b76236c8826baa324aad93dcd3e525c.dat ├── phpdoc-cache-2e │ └── phpdoc-cache-settings.dat ├── phpdoc-cache-3a │ └── phpdoc-cache-file_65e4d82dac763e945f3068bd91d6201d.dat ├── phpdoc-cache-3b │ └── phpdoc-cache-file_a72d0308c4085cee13d6d63f22b251ce.dat ├── phpdoc-cache-46 │ └── phpdoc-cache-file_8f577c4233f74d26ea749565804b87de.dat ├── phpdoc-cache-49 │ └── phpdoc-cache-file_e8c458cc50c5cea1d7b5cd657af7a032.dat ├── phpdoc-cache-4a │ └── phpdoc-cache-file_f032ed08f32286c2b09e3a2c3c686e0a.dat ├── phpdoc-cache-54 │ └── phpdoc-cache-file_3cfd8791c5a4f1a54fcede69aea10e3a.dat ├── phpdoc-cache-56 │ └── phpdoc-cache-file_5880902bc8c63521b5e247b8c7824374.dat ├── phpdoc-cache-57 │ ├── phpdoc-cache-file_608cb7ea2489a4b1eedf7e1e41dcd845.dat │ └── phpdoc-cache-file_ca8e23749810ecf15bfd77e319780528.dat ├── phpdoc-cache-58 │ └── phpdoc-cache-file_3f399dbff30eafda697fb382f929279e.dat ├── phpdoc-cache-5b │ └── phpdoc-cache-file_7068ed29eaaf1dcddd6d15537225b509.dat ├── phpdoc-cache-5c │ ├── phpdoc-cache-file_78b0e18d402faf3c463dfbca29959dd4.dat │ └── phpdoc-cache-file_eade1e31f46517c8b97900d778e048fb.dat ├── phpdoc-cache-5e │ └── phpdoc-cache-file_43850104a78e91196abf2dc9f011053a.dat ├── phpdoc-cache-63 │ └── phpdoc-cache-file_87daf1d1d0dafed30eaeab18201a3098.dat ├── phpdoc-cache-72 │ └── phpdoc-cache-file_de6b30427f8884ddd9493c97ba6dc11e.dat ├── phpdoc-cache-7a │ ├── phpdoc-cache-file_ba39f8f37633aa67515a38bfc59626c1.dat │ └── phpdoc-cache-file_faaa4b568920e9f99c5902a78ffa2e78.dat ├── phpdoc-cache-7c │ └── phpdoc-cache-file_ecaad35925992343a42552176d0beb6d.dat ├── phpdoc-cache-8a │ └── phpdoc-cache-file_01520af33d27cc47eb662a7f58b31b8e.dat ├── phpdoc-cache-8f │ └── phpdoc-cache-file_dfa1418312684d8aea54735f25f5a913.dat ├── phpdoc-cache-99 │ └── phpdoc-cache-file_76658c5983ae094ae7eed7e483b9ac70.dat ├── phpdoc-cache-a8 │ └── phpdoc-cache-file_8e2fc8072a6127f22e334d384294730d.dat ├── phpdoc-cache-c9 │ └── phpdoc-cache-file_fb95e8f891522a0c0b26a2831bf34030.dat ├── phpdoc-cache-cb │ ├── phpdoc-cache-file_737a950642382e805ed3bd79c19d236f.dat │ └── phpdoc-cache-file_d205f83aebf659152f5331643dc47ecf.dat ├── phpdoc-cache-d1 │ └── phpdoc-cache-file_461dd6b49ba5ffb94dac839305fcfe9f.dat ├── phpdoc-cache-d5 │ └── phpdoc-cache-file_83be7c2d97bd046d48ec28be233dcba5.dat ├── phpdoc-cache-de │ └── phpdoc-cache-file_0fedf7150cfffaa43b1a07cd62aa6caa.dat ├── phpdoc-cache-e3 │ └── phpdoc-cache-file_7d0f8eb5e61ae1dcf759effc1b007507.dat ├── phpdoc-cache-e6 │ └── phpdoc-cache-file_753db4a88951a575753b1ee4f2860ff7.dat ├── phpdoc-cache-f0 │ └── phpdoc-cache-file_3cd49b5dc742a31f71956a2245f9a3f4.dat ├── phpdoc-cache-f7 │ └── phpdoc-cache-file_b981646779b113b70250031c3cc3159e.dat ├── phpdoc-cache-f8 │ └── phpdoc-cache-file_a4cb4d9813f7a5ac2a407df5f34a9783.dat └── phpdoc-cache-fd │ └── phpdoc-cache-file_9519f784d047826a64252cc4a5bf8645.dat ├── filter.log ├── observer.log ├── src ├── _BootCompleteSystem.php ├── _BootMinusDatabase.php ├── _classLoader.php ├── database │ ├── DBInterface.php │ ├── Database.php │ ├── Mongo.php │ ├── Mysql.php │ ├── Postgresql.php │ ├── SQL.php │ └── SQLite.php ├── design │ ├── Adapter.php │ ├── Application.php │ ├── Filter.php │ ├── InstanceObject.php │ ├── Invoke.php │ ├── Observer.php │ ├── Singleton.php │ ├── StaticAdapter.php │ ├── StaticApplication.php │ ├── StaticFilter.php │ ├── StaticInstance.php │ ├── StaticInvoke.php │ ├── StaticObject.php │ └── StaticObserver.php ├── media │ ├── Audio.php │ ├── Image.php │ └── Video.php ├── network │ ├── Communicator.php │ ├── Curl.php │ ├── Request.php │ ├── RequestAuth.php │ ├── Response.php │ ├── Router.php │ └── Socket.php ├── system │ ├── Bootstrap.php │ ├── Configuration.php │ ├── Libraries.php │ ├── Security.php │ ├── Server.php │ └── Session.php ├── template │ ├── Forms.php │ ├── Html.php │ └── Template.php └── util │ ├── Cache.php │ ├── Cli.php │ ├── Collection.php │ ├── Conversions.php │ ├── FileManager.php │ ├── Log.php │ ├── Mail.php │ ├── Mathematics.php │ ├── Tools.php │ └── Validator.php └── tests ├── database ├── DatabaseTest.php ├── MongoTest.php ├── MysqlTest.php └── PostgresqlTest.php ├── design ├── AdapterTest.php ├── ApplicationTest.php ├── CollectionTest.php ├── FilterTest.php ├── ObjectTest.php ├── ObserverTest.php └── StaticInstanceTest.php ├── media └── ImageTests.php ├── network ├── CommunicatorTests.php ├── CurlTest.php ├── RequestTests.php ├── RouterTest.php └── SocketTest.php ├── phpunit.xml ├── system ├── ConfigurationTest.php ├── LibrariesTest.php ├── SecurityTest.php └── SessionTest.php ├── template ├── HtmlTest.php └── TemplateTest.php └── util ├── CacheTest.php ├── CliTest.php ├── ConversionTest.php ├── FileManagerTest.php ├── LogTest.php ├── ToolsTest.php └── ValidationTest.php /.gitignore: -------------------------------------------------------------------------------- 1 | .project 2 | .DS_Store 3 | .settings 4 | /vendor 5 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | php: 3 | - '7.0' 4 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:8.1.0-fpm 2 | 3 | RUN apt-get update -y && apt-get upgrade -y 4 | 5 | RUN apt-get install git -y 6 | 7 | RUN curl -sS https://getcomposer.org/installer | \ 8 | php -- --install-dir=/usr/bin/ --filename=composer -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2011-2018 ProdigyView LLC. All rights reserved. 2 | 3 | Redistribution and use in source and binary forms, with or without modification, are 4 | permitted provided that the following conditions are met: 5 | 6 | 1. Redistributions of source code must retain the above copyright notice, this list of 7 | conditions and the following disclaimer. 8 | 9 | 2. Redistributions in binary form must reproduce the above copyright notice, this list 10 | of conditions and the following disclaimer in the documentation and/or other materials 11 | provided with the distribution. 12 | 13 | THIS SOFTWARE IS PROVIDED BY ProdigyView LLC AS IS'' AND ANY EXPRESS OR IMPLIED 14 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 15 | FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL My-Lan OR 16 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 17 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 18 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 19 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 20 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 21 | ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 22 | 23 | The views and conclusions contained in the software and documentation are those of the 24 | authors and should not be interpreted as representing official policies, either expressed 25 | or implied, of ProdigyView LLC. -------------------------------------------------------------------------------- /adapter.log: -------------------------------------------------------------------------------- 1 | adapter 2022-10-02 22:52:24 {"type":"instance","object":"static","call_class":"\/code\/tests\/design\/AdatpterTest.php","class":"TestInstance","method":"execute","call_method":"execute","trace":"TestInstance::execute","start_line":46,"end_line":54} 2 | adapter 2022-10-02 22:52:24 {"object":"static","call_class":"TestAdapterStatic","class":"TestStatic","method":"execute","call_method":"execute","type":"class_method","trace":"TestStatic::execute"} 3 | adapter 2022-10-02 22:54:35 {"type":"instance","object":"static","call_class":"\/code\/tests\/design\/AdatpterTest.php","class":"TestInstance","method":"execute","call_method":"execute","trace":"TestInstance::execute","start_line":46,"end_line":54} 4 | adapter 2022-10-02 22:54:35 {"object":"static","call_class":"TestAdapterStatic","class":"TestStatic","method":"execute","call_method":"execute","type":"class_method","trace":"TestStatic::execute"} 5 | adapter 2022-10-02 22:56:05 {"type":"instance","object":"static","call_class":"\/code\/tests\/design\/AdatpterTest.php","class":"TestInstance","method":"execute","call_method":"execute","trace":"TestInstance::execute","start_line":46,"end_line":54} 6 | adapter 2022-10-02 22:56:05 {"object":"static","call_class":"TestAdapterStatic","class":"TestStatic","method":"execute","call_method":"execute","type":"class_method","trace":"TestStatic::execute"} 7 | adapter 2022-10-02 22:57:35 {"type":"instance","object":"static","call_class":"\/code\/tests\/design\/AdatpterTest.php","class":"TestInstance","method":"execute","call_method":"execute","trace":"TestInstance::execute","start_line":46,"end_line":54} 8 | adapter 2022-10-02 22:57:35 {"object":"static","call_class":"TestAdapterStatic","class":"TestStatic","method":"execute","call_method":"execute","type":"class_method","trace":"TestStatic::execute"} 9 | adapter 2022-10-02 22:58:17 {"type":"instance","object":"static","call_class":"\/code\/tests\/design\/AdapterTest.php","class":"TestInstance","method":"execute","call_method":"execute","trace":"TestInstance::execute","start_line":46,"end_line":54} 10 | adapter 2022-10-02 22:58:17 {"object":"static","call_class":"TestAdapterStatic","class":"TestStatic","method":"execute","call_method":"execute","type":"class_method","trace":"TestStatic::execute"} 11 | adapter 2022-10-02 23:08:52 {"type":"instance","object":"static","call_class":"\/code\/tests\/design\/AdapterTest.php","class":"TestInstance","method":"execute","call_method":"execute","trace":"TestInstance::execute","start_line":46,"end_line":54} 12 | adapter 2022-10-02 23:08:52 {"object":"static","call_class":"TestAdapterStatic","class":"TestStatic","method":"execute","call_method":"execute","type":"class_method","trace":"TestStatic::execute"} 13 | adapter 2022-10-02 23:13:02 {"type":"instance","object":"static","call_class":"\/code\/tests\/design\/AdapterTest.php","class":"TestInstance","method":"execute","call_method":"execute","trace":"TestInstance::execute","start_line":46,"end_line":54} 14 | adapter 2022-10-02 23:13:02 {"object":"static","call_class":"TestAdapterStatic","class":"TestStatic","method":"execute","call_method":"execute","type":"class_method","trace":"TestStatic::execute"} 15 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "prodigyview/prodigyview", 3 | "type": "library", 4 | "description": "Complete PHP Toolkit", 5 | "keywords": ["mvc","php"], 6 | "homepage": "https://github.com/ProdigyView-Toolkit/prodigyview", 7 | "license": "MIT", 8 | "authors": [ 9 | { 10 | "name": "Devin Dixon", 11 | "email": "ddixon@prodigyview.com", 12 | "homepage": "http://www.prodigyview.com", 13 | "role": "Entrepreneur & Developer" 14 | } 15 | ], 16 | "require": { 17 | "php": ">=7.1.0" 18 | }, 19 | "autoload": { 20 | "psr-4": { 21 | "prodigyview\\": "src/" 22 | } 23 | }, 24 | "require-dev": { 25 | "phpunit/phpunit": "^9" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.4" 2 | 3 | services: 4 | php: 5 | build: 6 | context : ./ 7 | dockerfile : Dockerfile 8 | network: host 9 | volumes: 10 | - ./:/code:delegated 11 | container_name: prodigyview 12 | 13 | -------------------------------------------------------------------------------- /docs/.htaccess: -------------------------------------------------------------------------------- 1 | # Fixes a vulnerability in CentOS: http://stackoverflow.com/questions/20533279/prevent-php-from-parsing-non-php-files-such-as-somefile-php-txt 2 | 3 | RemoveHandler .php 4 | ForceType text/plain 5 | -------------------------------------------------------------------------------- /docs/css/jquery.iviewer.css: -------------------------------------------------------------------------------- 1 | .iviewer_common { 2 | position:absolute; 3 | bottom:10px; 4 | border: 1px solid #000; 5 | height: 28px; 6 | z-index: 5000; 7 | } 8 | 9 | .iviewer_cursor { 10 | cursor: url(../img/iviewer/hand.cur) 6 8, pointer; 11 | } 12 | 13 | .iviewer_drag_cursor { 14 | cursor: url(../img/iviewer/grab.cur) 6 8, pointer; 15 | } 16 | 17 | .iviewer_button { 18 | width: 28px; 19 | cursor: pointer; 20 | background-position: center center; 21 | background-repeat: no-repeat; 22 | } 23 | 24 | .iviewer_zoom_in { 25 | left: 20px; 26 | background: url(../img/iviewer/iviewer.zoom_in.png); 27 | } 28 | 29 | .iviewer_zoom_out { 30 | left: 55px; 31 | background: url(../img/iviewer/iviewer.zoom_out.png); 32 | } 33 | 34 | .iviewer_zoom_zero { 35 | left: 90px; 36 | background: url(../img/iviewer/iviewer.zoom_zero.png); 37 | } 38 | 39 | .iviewer_zoom_fit { 40 | left: 125px; 41 | background: url(../img/iviewer/iviewer.zoom_fit.png); 42 | } 43 | 44 | .iviewer_zoom_status { 45 | left: 160px; 46 | font: 1em/28px Sans; 47 | color: #000; 48 | background-color: #fff; 49 | text-align: center; 50 | width: 60px; 51 | } 52 | 53 | .iviewer_rotate_left { 54 | left: 227px; 55 | background: #fff url(../img/iviewer/iviewer.rotate_left.png) center center no-repeat; 56 | } 57 | 58 | .iviewer_rotate_right { 59 | left: 262px; 60 | background: #fff url(../img/iviewer/iviewer.rotate_right.png) center center no-repeat; 61 | } 62 | 63 | .viewer 64 | { 65 | width: 100%; 66 | height: 500px; 67 | position: relative; 68 | background: transparent url('../img/loader.gif') no-repeat center center; 69 | } 70 | 71 | .viewer img 72 | { 73 | max-width: none; 74 | } 75 | 76 | .wrapper 77 | { 78 | overflow: hidden; 79 | } 80 | 81 | .iviewer_common 82 | { 83 | border: 0; 84 | bottom: auto; 85 | top: 10px; 86 | } 87 | 88 | .iviewer_zoom_status 89 | { 90 | border: 1px solid black; 91 | } 92 | -------------------------------------------------------------------------------- /docs/css/phpdocumentor-clean-icons/Read Me.txt: -------------------------------------------------------------------------------- 1 | To modify your generated font, use the *dev.svg* file, located in the *fonts* folder in this package. You can import this dev.svg file to the IcoMoon app. All the tags (class names) and the Unicode points of your glyphs are saved in this file. 2 | 3 | See the documentation for more info on how to use this package: http://icomoon.io/#docs/font-face -------------------------------------------------------------------------------- /docs/css/phpdocumentor-clean-icons/fonts/phpdocumentor-clean-icons.dev.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | This is a custom SVG font generated by IcoMoon. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /docs/css/phpdocumentor-clean-icons/fonts/phpdocumentor-clean-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/css/phpdocumentor-clean-icons/fonts/phpdocumentor-clean-icons.eot -------------------------------------------------------------------------------- /docs/css/phpdocumentor-clean-icons/fonts/phpdocumentor-clean-icons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | This is a custom SVG font generated by IcoMoon. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /docs/css/phpdocumentor-clean-icons/fonts/phpdocumentor-clean-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/css/phpdocumentor-clean-icons/fonts/phpdocumentor-clean-icons.ttf -------------------------------------------------------------------------------- /docs/css/phpdocumentor-clean-icons/fonts/phpdocumentor-clean-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/css/phpdocumentor-clean-icons/fonts/phpdocumentor-clean-icons.woff -------------------------------------------------------------------------------- /docs/css/phpdocumentor-clean-icons/lte-ie7.js: -------------------------------------------------------------------------------- 1 | /* Load this script using conditional IE comments if you need to support IE 7 and IE 6. */ 2 | 3 | window.onload = function() { 4 | function addIcon(el, entity) { 5 | var html = el.innerHTML; 6 | el.innerHTML = '' + entity + '' + html; 7 | } 8 | var icons = { 9 | 'icon-trait' : '', 10 | 'icon-interface' : '', 11 | 'icon-class' : '' 12 | }, 13 | els = document.getElementsByTagName('*'), 14 | i, attr, html, c, el; 15 | for (i = 0; ; i += 1) { 16 | el = els[i]; 17 | if(!el) { 18 | break; 19 | } 20 | attr = el.getAttribute('data-icon'); 21 | if (attr) { 22 | addIcon(el, attr); 23 | } 24 | c = el.className; 25 | c = c.match(/icon-[^\s'"]+/); 26 | if (c && icons[c[0]]) { 27 | addIcon(el, icons[c[0]]); 28 | } 29 | } 30 | }; -------------------------------------------------------------------------------- /docs/css/phpdocumentor-clean-icons/style.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'phpdocumentor-clean-icons'; 3 | src:url('fonts/phpdocumentor-clean-icons.eot'); 4 | src:url('fonts/phpdocumentor-clean-icons.eot?#iefix') format('embedded-opentype'), 5 | url('fonts/phpdocumentor-clean-icons.woff') format('woff'), 6 | url('fonts/phpdocumentor-clean-icons.ttf') format('truetype'), 7 | url('fonts/phpdocumentor-clean-icons.svg#phpdocumentor-clean-icons') format('svg'); 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | 12 | /* Use the following CSS code if you want to use data attributes for inserting your icons */ 13 | [data-icon]:before { 14 | font-family: 'phpdocumentor-clean-icons'; 15 | content: attr(data-icon); 16 | speak: none; 17 | font-weight: normal; 18 | font-variant: normal; 19 | text-transform: none; 20 | line-height: 1; 21 | -webkit-font-smoothing: antialiased; 22 | } 23 | 24 | /* Use the following CSS code if you want to have a class per icon */ 25 | /* 26 | Instead of a list of all class selectors, 27 | you can use the generic selector below, but it's slower: 28 | [class*="icon-"] { 29 | */ 30 | .icon-trait, .icon-interface, .icon-class { 31 | font-family: 'phpdocumentor-clean-icons'; 32 | speak: none; 33 | font-style: normal; 34 | font-weight: normal; 35 | font-variant: normal; 36 | text-transform: none; 37 | line-height: 1; 38 | -webkit-font-smoothing: antialiased; 39 | } 40 | .icon-trait:before { 41 | content: "\e000"; 42 | } 43 | .icon-interface:before { 44 | content: "\e001"; 45 | } 46 | .icon-class:before { 47 | content: "\e002"; 48 | } 49 | -------------------------------------------------------------------------------- /docs/css/prettify.css: -------------------------------------------------------------------------------- 1 | .pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} -------------------------------------------------------------------------------- /docs/css/prism.css: -------------------------------------------------------------------------------- 1 | /** 2 | * prism.js default theme for JavaScript, CSS and HTML 3 | * Based on dabblet (http://dabblet.com) 4 | * @author Lea Verou 5 | */ 6 | 7 | code[class*="language-"], 8 | pre[class*="language-"] { 9 | color: black; 10 | text-shadow: 0 1px white; 11 | font-family: Consolas, Monaco, 'Andale Mono', monospace; 12 | direction: ltr; 13 | text-align: left; 14 | white-space: pre; 15 | word-spacing: normal; 16 | 17 | -moz-tab-size: 4; 18 | -o-tab-size: 4; 19 | tab-size: 4; 20 | 21 | -webkit-hyphens: none; 22 | -moz-hyphens: none; 23 | -ms-hyphens: none; 24 | hyphens: none; 25 | } 26 | 27 | ::-moz-selection { 28 | text-shadow: none; 29 | background: #b3d4fc; 30 | } 31 | 32 | ::selection { 33 | text-shadow: none; 34 | background: #b3d4fc; 35 | } 36 | 37 | @media print { 38 | code[class*="language-"], 39 | pre[class*="language-"] { 40 | text-shadow: none; 41 | } 42 | } 43 | 44 | /* Code blocks */ 45 | pre[class*="language-"] { 46 | padding: 1em; 47 | margin: .5em 0; 48 | overflow: auto; 49 | } 50 | 51 | :not(pre) > code[class*="language-"], 52 | pre[class*="language-"] { 53 | background: #f5f2f0; 54 | } 55 | 56 | /* Inline code */ 57 | :not(pre) > code[class*="language-"] { 58 | padding: .1em; 59 | border-radius: .3em; 60 | } 61 | 62 | .token.comment, 63 | .token.prolog, 64 | .token.doctype, 65 | .token.cdata { 66 | color: slategray; 67 | } 68 | 69 | .token.punctuation { 70 | color: #999; 71 | } 72 | 73 | .namespace { 74 | opacity: .7; 75 | } 76 | 77 | .token.property, 78 | .token.tag, 79 | .token.boolean, 80 | .token.number { 81 | color: #905; 82 | } 83 | 84 | .token.selector, 85 | .token.attr-name, 86 | .token.string { 87 | color: #690; 88 | } 89 | 90 | .token.operator, 91 | .token.entity, 92 | .token.url, 93 | .language-css .token.string, 94 | .style .token.string { 95 | color: #a67f59; 96 | background: hsla(0,0%,100%,.5); 97 | } 98 | 99 | .token.atrule, 100 | .token.attr-value, 101 | .token.keyword { 102 | color: #07a; 103 | } 104 | 105 | 106 | .token.regex, 107 | .token.important { 108 | color: #e90; 109 | } 110 | 111 | .token.important { 112 | font-weight: bold; 113 | } 114 | 115 | .token.entity { 116 | cursor: help; 117 | } 118 | pre[data-line] { 119 | position: relative; 120 | padding: 1em 0 1em 3em; 121 | } 122 | 123 | .line-highlight { 124 | position: absolute; 125 | left: 0; 126 | right: 0; 127 | padding: inherit 0; 128 | margin-top: 1em; /* Same as .prism’s padding-top */ 129 | 130 | background: hsla(24, 20%, 50%,.08); 131 | background: -moz-linear-gradient(left, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0)); 132 | background: -webkit-linear-gradient(left, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0)); 133 | background: -o-linear-gradient(left, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0)); 134 | background: linear-gradient(left, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0)); 135 | 136 | pointer-events: none; 137 | 138 | line-height: inherit; 139 | white-space: pre; 140 | } 141 | 142 | .line-highlight:before, 143 | .line-highlight[data-end]:after { 144 | content: attr(data-start); 145 | position: absolute; 146 | top: .4em; 147 | left: .6em; 148 | min-width: 1em; 149 | padding: 0 .5em; 150 | background-color: hsla(24, 20%, 50%,.4); 151 | color: hsl(24, 20%, 95%); 152 | font: bold 65%/1.5 sans-serif; 153 | text-align: center; 154 | vertical-align: .3em; 155 | border-radius: 999px; 156 | text-shadow: none; 157 | box-shadow: 0 1px white; 158 | } 159 | 160 | .line-highlight[data-end]:after { 161 | content: attr(data-end); 162 | top: auto; 163 | bottom: .4em; 164 | } 165 | pre.line-numbers { 166 | position: relative; 167 | padding-left: 3.8em; 168 | counter-reset: linenumber; 169 | } 170 | 171 | pre.line-numbers > code { 172 | position: relative; 173 | } 174 | 175 | .line-numbers .line-numbers-rows { 176 | position: absolute; 177 | pointer-events: none; 178 | top: 0; 179 | font-size: 100%; 180 | left: -3.8em; 181 | width: 3em; /* works for line-numbers below 1000 lines */ 182 | letter-spacing: -1px; 183 | border-right: 1px solid #999; 184 | 185 | -webkit-user-select: none; 186 | -moz-user-select: none; 187 | -ms-user-select: none; 188 | user-select: none; 189 | 190 | } 191 | 192 | .line-numbers-rows > span { 193 | pointer-events: none; 194 | display: block; 195 | counter-increment: linenumber; 196 | } 197 | 198 | .line-numbers-rows > span:before { 199 | content: counter(linenumber); 200 | color: #999; 201 | display: block; 202 | padding-right: 0.8em; 203 | text-align: right; 204 | } 205 | -------------------------------------------------------------------------------- /docs/font/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/font/FontAwesome.otf -------------------------------------------------------------------------------- /docs/font/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/font/fontawesome-webfont.eot -------------------------------------------------------------------------------- /docs/font/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/font/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /docs/font/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/font/fontawesome-webfont.woff -------------------------------------------------------------------------------- /docs/images/apple-touch-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/images/apple-touch-icon-114x114.png -------------------------------------------------------------------------------- /docs/images/apple-touch-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/images/apple-touch-icon-72x72.png -------------------------------------------------------------------------------- /docs/images/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/images/apple-touch-icon.png -------------------------------------------------------------------------------- /docs/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/images/favicon.ico -------------------------------------------------------------------------------- /docs/images/hierarchy-item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/images/hierarchy-item.png -------------------------------------------------------------------------------- /docs/images/icon-class-13x13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/images/icon-class-13x13.png -------------------------------------------------------------------------------- /docs/images/icon-interface-13x13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/images/icon-interface-13x13.png -------------------------------------------------------------------------------- /docs/images/icon-interface.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 31 | 36 | 37 | 49 | 52 | 55 | 59 | 60 | 61 | 73 | 74 | -------------------------------------------------------------------------------- /docs/images/icon-trait-13x13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/images/icon-trait-13x13.png -------------------------------------------------------------------------------- /docs/images/icon-trait.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 31 | 36 | 37 | 49 | 61 | 64 | 67 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /docs/images/iviewer/grab.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/images/iviewer/grab.cur -------------------------------------------------------------------------------- /docs/images/iviewer/hand.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/images/iviewer/hand.cur -------------------------------------------------------------------------------- /docs/images/iviewer/iviewer.rotate_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/images/iviewer/iviewer.rotate_left.png -------------------------------------------------------------------------------- /docs/images/iviewer/iviewer.rotate_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/images/iviewer/iviewer.rotate_right.png -------------------------------------------------------------------------------- /docs/images/iviewer/iviewer.zoom_fit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/images/iviewer/iviewer.zoom_fit.png -------------------------------------------------------------------------------- /docs/images/iviewer/iviewer.zoom_in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/images/iviewer/iviewer.zoom_in.png -------------------------------------------------------------------------------- /docs/images/iviewer/iviewer.zoom_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/images/iviewer/iviewer.zoom_out.png -------------------------------------------------------------------------------- /docs/images/iviewer/iviewer.zoom_zero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/images/iviewer/iviewer.zoom_zero.png -------------------------------------------------------------------------------- /docs/img/apple-touch-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/apple-touch-icon-114x114.png -------------------------------------------------------------------------------- /docs/img/apple-touch-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/apple-touch-icon-72x72.png -------------------------------------------------------------------------------- /docs/img/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/apple-touch-icon.png -------------------------------------------------------------------------------- /docs/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/favicon.ico -------------------------------------------------------------------------------- /docs/img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /docs/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /docs/img/icons/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/arrow_down.png -------------------------------------------------------------------------------- /docs/img/icons/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/arrow_right.png -------------------------------------------------------------------------------- /docs/img/icons/class.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/class.png -------------------------------------------------------------------------------- /docs/img/icons/constant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/constant.png -------------------------------------------------------------------------------- /docs/img/icons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/favicon.ico -------------------------------------------------------------------------------- /docs/img/icons/file-php.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/file-php.png -------------------------------------------------------------------------------- /docs/img/icons/file.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/file.gif -------------------------------------------------------------------------------- /docs/img/icons/folder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/folder.gif -------------------------------------------------------------------------------- /docs/img/icons/function.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/function.png -------------------------------------------------------------------------------- /docs/img/icons/icon-folder-open-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/icon-folder-open-big.png -------------------------------------------------------------------------------- /docs/img/icons/icon-th-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/icon-th-big.png -------------------------------------------------------------------------------- /docs/img/icons/icon_template.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 21 | 23 | 42 | 49 | 50 | 52 | 53 | 55 | image/svg+xml 56 | 58 | 59 | 60 | 61 | 62 | 67 | 73 | 79 | Co 92 | 93 | 94 | -------------------------------------------------------------------------------- /docs/img/icons/interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/interface.png -------------------------------------------------------------------------------- /docs/img/icons/method.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/method.png -------------------------------------------------------------------------------- /docs/img/icons/ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/ok.png -------------------------------------------------------------------------------- /docs/img/icons/property.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/property.png -------------------------------------------------------------------------------- /docs/img/icons/search.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/search.gif -------------------------------------------------------------------------------- /docs/img/icons/variable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/variable.png -------------------------------------------------------------------------------- /docs/img/icons/view_source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/view_source.png -------------------------------------------------------------------------------- /docs/img/icons/visibility_private.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/visibility_private.png -------------------------------------------------------------------------------- /docs/img/icons/visibility_protected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/visibility_protected.png -------------------------------------------------------------------------------- /docs/img/icons/visibility_public.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/icons/visibility_public.png -------------------------------------------------------------------------------- /docs/img/iviewer/grab.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/iviewer/grab.cur -------------------------------------------------------------------------------- /docs/img/iviewer/hand.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/iviewer/hand.cur -------------------------------------------------------------------------------- /docs/img/iviewer/iviewer.rotate_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/iviewer/iviewer.rotate_left.png -------------------------------------------------------------------------------- /docs/img/iviewer/iviewer.rotate_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/iviewer/iviewer.rotate_right.png -------------------------------------------------------------------------------- /docs/img/iviewer/iviewer.zoom_fit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/iviewer/iviewer.zoom_fit.png -------------------------------------------------------------------------------- /docs/img/iviewer/iviewer.zoom_fit2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/iviewer/iviewer.zoom_fit2.gif -------------------------------------------------------------------------------- /docs/img/iviewer/iviewer.zoom_in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/iviewer/iviewer.zoom_in.png -------------------------------------------------------------------------------- /docs/img/iviewer/iviewer.zoom_in2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/iviewer/iviewer.zoom_in2.gif -------------------------------------------------------------------------------- /docs/img/iviewer/iviewer.zoom_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/iviewer/iviewer.zoom_out.png -------------------------------------------------------------------------------- /docs/img/iviewer/iviewer.zoom_out2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/iviewer/iviewer.zoom_out2.gif -------------------------------------------------------------------------------- /docs/img/iviewer/iviewer.zoom_zero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/iviewer/iviewer.zoom_zero.png -------------------------------------------------------------------------------- /docs/img/iviewer/iviewer.zoom_zero2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/iviewer/iviewer.zoom_zero2.gif -------------------------------------------------------------------------------- /docs/img/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/img/loader.gif -------------------------------------------------------------------------------- /docs/js/html5.js: -------------------------------------------------------------------------------- 1 | /* 2 | HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | (function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); 5 | a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; 6 | c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| 7 | "undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f); 8 | if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d. 9 | 10 | Downloads can be found at . 11 | 12 | The mailing list is at . 13 | 14 | Examples and unit tests are at . 15 | 16 | Documentation is at . 17 | 18 | The project page and source code are at . 19 | 20 | Bugs, issues, feature requests: . 21 | 22 | Basic Usage Instructions: 23 | 24 | jqPlot requires jQuery (1.4+ required for certain features). jQuery 1.9.1 is included in 25 | the distribution. To use jqPlot include jQuery, the jqPlot jQuery plugin, the jqPlot css file and 26 | optionally the excanvas script to support IE version prior to IE 9 in your web page: 27 | 28 | > 29 | > 30 | > 31 | > 32 | 33 | For usage instructions, see in usage.txt. For available options, see 34 | in jqPlotOptions.txt. 35 | 36 | Building from source: 37 | 38 | If you've cloned the repository, you can build a distribution from source. 39 | You need to have ant installed. You can simply 40 | type "ant" from the jqplot directory to build the default "all" target. 41 | There are 6 pertinent targets: clean, dist, min, docs, compress and all. Use: 42 | 43 | > ant -p 44 | 45 | to get a description of the various build targets. 46 | 47 | Legal Notices: 48 | 49 | Copyright (c) 2009-2013 Chris Leonello 50 | jqPlot is currently available for use in all personal or commercial projects 51 | under both the MIT and GPL version 2.0 licenses. This means that you can 52 | choose the license that best suits your project and use it accordingly. 53 | 54 | Although not required, the author would appreciate an email letting him 55 | know of any substantial use of jqPlot. You can reach the author at: 56 | chris at jqplot or see http://www.jqplot.com/info.php . 57 | 58 | If you are feeling kind and generous, consider supporting the project by 59 | making a donation at: http://www.jqplot.com/donate.php . 60 | 61 | jqPlot includes date instance methods and printf/sprintf functions by other authors: 62 | 63 | Date instance methods: 64 | 65 | author Ken Snyder (ken d snyder at gmail dot com) 66 | date 2008-09-10 67 | version 2.0.2 (http://kendsnyder.com/sandbox/date/) 68 | license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) 69 | 70 | JavaScript printf/sprintf functions. 71 | 72 | version 2007.04.27 73 | author Ash Searle 74 | http://hexmen.com/blog/2007/03/printf-sprintf/ 75 | http://hexmen.com/js/sprintf.js 76 | The author (Ash Searle) has placed this code in the public domain: 77 | "This code is unrestricted: you are free to use it however you like." 78 | -------------------------------------------------------------------------------- /docs/js/jqplot/copyright.txt: -------------------------------------------------------------------------------- 1 | /** 2 | * jqPlot 3 | * Pure JavaScript plotting plugin using jQuery 4 | * 5 | * Version: @VERSION 6 | * 7 | * Copyright (c) 2009-2013 Chris Leonello 8 | * jqPlot is currently available for use in all personal or commercial projects 9 | * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL 10 | * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can 11 | * choose the license that best suits your project and use it accordingly. 12 | * 13 | * Although not required, the author would appreciate an email letting him 14 | * know of any substantial use of jqPlot. You can reach the author at: 15 | * chris at jqplot dot com or see http://www.jqplot.com/info.php . 16 | * 17 | * If you are feeling kind and generous, consider supporting the project by 18 | * making a donation at: http://www.jqplot.com/donate.php . 19 | * 20 | * sprintf functions contained in jqplot.sprintf.js by Ash Searle: 21 | * 22 | * version 2007.04.27 23 | * author Ash Searle 24 | * http://hexmen.com/blog/2007/03/printf-sprintf/ 25 | * http://hexmen.com/js/sprintf.js 26 | * The author (Ash Searle) has placed this code in the public domain: 27 | * "This code is unrestricted: you are free to use it however you like." 28 | * 29 | * included jsDate library by Chris Leonello: 30 | * 31 | * Copyright (c) 2010-2013 Chris Leonello 32 | * 33 | * jsDate is currently available for use in all personal or commercial projects 34 | * under both the MIT and GPL version 2.0 licenses. This means that you can 35 | * choose the license that best suits your project and use it accordingly. 36 | * 37 | * jsDate borrows many concepts and ideas from the Date Instance 38 | * Methods by Ken Snyder along with some parts of Ken's actual code. 39 | * 40 | * Ken's origianl Date Instance Methods and copyright notice: 41 | * 42 | * Ken Snyder (ken d snyder at gmail dot com) 43 | * 2008-09-10 44 | * version 2.0.2 (http://kendsnyder.com/sandbox/date/) 45 | * Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) 46 | * 47 | * jqplotToImage function based on Larry Siden's export-jqplot-to-png.js. 48 | * Larry has generously given permission to adapt his code for inclusion 49 | * into jqPlot. 50 | * 51 | * Larry's original code can be found here: 52 | * 53 | * https://github.com/lsiden/export-jqplot-to-png 54 | * 55 | * 56 | */ 57 | -------------------------------------------------------------------------------- /docs/js/jqplot/jquery.jqplot.min.css: -------------------------------------------------------------------------------- 1 | .jqplot-target{position:relative;color:#666;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:1em}.jqplot-axis{font-size:.75em}.jqplot-xaxis{margin-top:10px}.jqplot-x2axis{margin-bottom:10px}.jqplot-yaxis{margin-right:10px}.jqplot-y2axis,.jqplot-y3axis,.jqplot-y4axis,.jqplot-y5axis,.jqplot-y6axis,.jqplot-y7axis,.jqplot-y8axis,.jqplot-y9axis,.jqplot-yMidAxis{margin-left:10px;margin-right:10px}.jqplot-axis-tick,.jqplot-xaxis-tick,.jqplot-yaxis-tick,.jqplot-x2axis-tick,.jqplot-y2axis-tick,.jqplot-y3axis-tick,.jqplot-y4axis-tick,.jqplot-y5axis-tick,.jqplot-y6axis-tick,.jqplot-y7axis-tick,.jqplot-y8axis-tick,.jqplot-y9axis-tick,.jqplot-yMidAxis-tick{position:absolute;white-space:pre}.jqplot-xaxis-tick{top:0;left:15px;vertical-align:top}.jqplot-x2axis-tick{bottom:0;left:15px;vertical-align:bottom}.jqplot-yaxis-tick{right:0;top:15px;text-align:right}.jqplot-yaxis-tick.jqplot-breakTick{right:-20px;margin-right:0;padding:1px 5px 1px 5px;z-index:2;font-size:1.5em}.jqplot-y2axis-tick,.jqplot-y3axis-tick,.jqplot-y4axis-tick,.jqplot-y5axis-tick,.jqplot-y6axis-tick,.jqplot-y7axis-tick,.jqplot-y8axis-tick,.jqplot-y9axis-tick{left:0;top:15px;text-align:left}.jqplot-yMidAxis-tick{text-align:center;white-space:nowrap}.jqplot-xaxis-label{margin-top:10px;font-size:11pt;position:absolute}.jqplot-x2axis-label{margin-bottom:10px;font-size:11pt;position:absolute}.jqplot-yaxis-label{margin-right:10px;font-size:11pt;position:absolute}.jqplot-yMidAxis-label{font-size:11pt;position:absolute}.jqplot-y2axis-label,.jqplot-y3axis-label,.jqplot-y4axis-label,.jqplot-y5axis-label,.jqplot-y6axis-label,.jqplot-y7axis-label,.jqplot-y8axis-label,.jqplot-y9axis-label{font-size:11pt;margin-left:10px;position:absolute}.jqplot-meterGauge-tick{font-size:.75em;color:#999}.jqplot-meterGauge-label{font-size:1em;color:#999}table.jqplot-table-legend{margin-top:12px;margin-bottom:12px;margin-left:12px;margin-right:12px}table.jqplot-table-legend,table.jqplot-cursor-legend{background-color:rgba(255,255,255,0.6);border:1px solid #ccc;position:absolute;font-size:.75em}td.jqplot-table-legend{vertical-align:middle}td.jqplot-seriesToggle:hover,td.jqplot-seriesToggle:active{cursor:pointer}.jqplot-table-legend .jqplot-series-hidden{text-decoration:line-through}div.jqplot-table-legend-swatch-outline{border:1px solid #ccc;padding:1px}div.jqplot-table-legend-swatch{width:0;height:0;border-top-width:5px;border-bottom-width:5px;border-left-width:6px;border-right-width:6px;border-top-style:solid;border-bottom-style:solid;border-left-style:solid;border-right-style:solid}.jqplot-title{top:0;left:0;padding-bottom:.5em;font-size:1.2em}table.jqplot-cursor-tooltip{border:1px solid #ccc;font-size:.75em}.jqplot-cursor-tooltip{border:1px solid #ccc;font-size:.75em;white-space:nowrap;background:rgba(208,208,208,0.5);padding:1px}.jqplot-highlighter-tooltip,.jqplot-canvasOverlay-tooltip{border:1px solid #ccc;font-size:.75em;white-space:nowrap;background:rgba(208,208,208,0.5);padding:1px}.jqplot-point-label{font-size:.75em;z-index:2}td.jqplot-cursor-legend-swatch{vertical-align:middle;text-align:center}div.jqplot-cursor-legend-swatch{width:1.2em;height:.7em}.jqplot-error{text-align:center}.jqplot-error-message{position:relative;top:46%;display:inline-block}div.jqplot-bubble-label{font-size:.8em;padding-left:2px;padding-right:2px;color:rgb(20%,20%,20%)}div.jqplot-bubble-label.jqplot-bubble-label-highlight{background:rgba(90%,90%,90%,0.7)}div.jqplot-noData-container{text-align:center;background-color:rgba(96%,96%,96%,0.3)} -------------------------------------------------------------------------------- /docs/js/jqplot/plugins/jqplot.blockRenderer.min.js: -------------------------------------------------------------------------------- 1 | /* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com 2 | jsDate | (c) 2010-2013 Chris Leonello 3 | */(function(a){a.jqplot.BlockRenderer=function(){a.jqplot.LineRenderer.call(this)};a.jqplot.BlockRenderer.prototype=new a.jqplot.LineRenderer();a.jqplot.BlockRenderer.prototype.constructor=a.jqplot.BlockRenderer;a.jqplot.BlockRenderer.prototype.init=function(b){this.css={padding:"2px",border:"1px solid #999",textAlign:"center"};this.escapeHtml=false;this.insertBreaks=true;this.varyBlockColors=false;a.extend(true,this,b);if(this.css.backgroundColor){this.color=this.css.backgroundColor}else{if(this.css.background){this.color=this.css.background}else{if(!this.varyBlockColors){this.css.background=this.color}}}this.canvas=new a.jqplot.BlockCanvas();this.shadowCanvas=new a.jqplot.BlockCanvas();this.canvas._plotDimensions=this._plotDimensions;this.shadowCanvas._plotDimensions=this._plotDimensions;this._type="block";this.moveBlock=function(l,j,i,e){var c=this.canvas._elem.children(":eq("+l+")");this.data[l][0]=j;this.data[l][1]=i;this._plotData[l][0]=j;this._plotData[l][1]=i;this._stackData[l][0]=j;this._stackData[l][1]=i;this.gridData[l][0]=this._xaxis.series_u2p(j);this.gridData[l][1]=this._yaxis.series_u2p(i);var k=c.outerWidth();var f=c.outerHeight();var d=this.gridData[l][0]-k/2+"px";var g=this.gridData[l][1]-f/2+"px";if(e){if(parseInt(e,10)){e=parseInt(e,10)}c.animate({left:d,top:g},e)}else{c.css({left:d,top:g})}c=null}};a.jqplot.BlockRenderer.prototype.draw=function(q,o,r){if(this.plugins.pointLabels){this.plugins.pointLabels.show=false}var f,c,l,o,p,k,n,g,e,m;var b=(r!=undefined)?r:{};var j=new a.jqplot.ColorGenerator(this.seriesColors);this.canvas._elem.empty();for(f=0;f")}k=a.extend(true,{},this.css,k);c=a('
');this.canvas._elem.append(c);this.escapeHtml?c.text(p):c.html(p);delete k.position;delete k.marginRight;delete k.marginLeft;if(!k.background&&!k.backgroundColor&&!k.backgroundImage){k.background=j.next()}c.css(k);n=c.outerWidth();g=c.outerHeight();e=o[0]-n/2+"px";m=o[1]-g/2+"px";c.css({left:e,top:m});c=null}};a.jqplot.BlockCanvas=function(){a.jqplot.ElemContainer.call(this);this._ctx};a.jqplot.BlockCanvas.prototype=new a.jqplot.ElemContainer();a.jqplot.BlockCanvas.prototype.constructor=a.jqplot.BlockCanvas;a.jqplot.BlockCanvas.prototype.createElement=function(i,e,c){this._offsets=i;var b="jqplot-blockCanvas";if(e!=undefined){b=e}var g;if(this._elem){g=this._elem.get(0)}else{g=document.createElement("div")}if(c!=undefined){this._plotDimensions=c}var d=this._plotDimensions.width-this._offsets.left-this._offsets.right+"px";var f=this._plotDimensions.height-this._offsets.top-this._offsets.bottom+"px";this._elem=a(g);this._elem.css({position:"absolute",width:d,height:f,left:this._offsets.left,top:this._offsets.top});this._elem.addClass(b);return this._elem};a.jqplot.BlockCanvas.prototype.setContext=function(){this._ctx={canvas:{width:0,height:0},clearRect:function(){return null}};return this._ctx}})(jQuery); -------------------------------------------------------------------------------- /docs/js/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js: -------------------------------------------------------------------------------- 1 | /* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com 2 | jsDate | (c) 2010-2013 Chris Leonello 3 | */(function(a){a.jqplot.CanvasAxisLabelRenderer=function(b){this.angle=0;this.axis;this.show=true;this.showLabel=true;this.label="";this.fontFamily='"Trebuchet MS", Arial, Helvetica, sans-serif';this.fontSize="11pt";this.fontWeight="normal";this.fontStretch=1;this.textColor="#666666";this.enableFontSupport=true;this.pt2px=null;this._elem;this._ctx;this._plotWidth;this._plotHeight;this._plotDimensions={height:null,width:null};a.extend(true,this,b);if(b.angle==null&&this.axis!="xaxis"&&this.axis!="x2axis"){this.angle=-90}var c={fontSize:this.fontSize,fontWeight:this.fontWeight,fontStretch:this.fontStretch,fillStyle:this.textColor,angle:this.getAngleRad(),fontFamily:this.fontFamily};if(this.pt2px){c.pt2px=this.pt2px}if(this.enableFontSupport){if(a.jqplot.support_canvas_text()){this._textRenderer=new a.jqplot.CanvasFontRenderer(c)}else{this._textRenderer=new a.jqplot.CanvasTextRenderer(c)}}else{this._textRenderer=new a.jqplot.CanvasTextRenderer(c)}};a.jqplot.CanvasAxisLabelRenderer.prototype.init=function(b){a.extend(true,this,b);this._textRenderer.init({fontSize:this.fontSize,fontWeight:this.fontWeight,fontStretch:this.fontStretch,fillStyle:this.textColor,angle:this.getAngleRad(),fontFamily:this.fontFamily})};a.jqplot.CanvasAxisLabelRenderer.prototype.getWidth=function(d){if(this._elem){return this._elem.outerWidth(true)}else{var f=this._textRenderer;var c=f.getWidth(d);var e=f.getHeight(d);var b=Math.abs(Math.sin(f.angle)*e)+Math.abs(Math.cos(f.angle)*c);return b}};a.jqplot.CanvasAxisLabelRenderer.prototype.getHeight=function(d){if(this._elem){return this._elem.outerHeight(true)}else{var f=this._textRenderer;var c=f.getWidth(d);var e=f.getHeight(d);var b=Math.abs(Math.cos(f.angle)*e)+Math.abs(Math.sin(f.angle)*c);return b}};a.jqplot.CanvasAxisLabelRenderer.prototype.getAngleRad=function(){var b=this.angle*Math.PI/180;return b};a.jqplot.CanvasAxisLabelRenderer.prototype.draw=function(c,f){if(this._elem){if(a.jqplot.use_excanvas&&window.G_vmlCanvasManager.uninitElement!==undefined){window.G_vmlCanvasManager.uninitElement(this._elem.get(0))}this._elem.emptyForce();this._elem=null}var e=f.canvasManager.getCanvas();this._textRenderer.setText(this.label,c);var b=this.getWidth(c);var d=this.getHeight(c);e.width=b;e.height=d;e.style.width=b;e.style.height=d;e=f.canvasManager.initCanvas(e);this._elem=a(e);this._elem.css({position:"absolute"});this._elem.addClass("jqplot-"+this.axis+"-label");e=null;return this._elem};a.jqplot.CanvasAxisLabelRenderer.prototype.pack=function(){this._textRenderer.draw(this._elem.get(0).getContext("2d"),this.label)}})(jQuery); -------------------------------------------------------------------------------- /docs/js/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js: -------------------------------------------------------------------------------- 1 | /* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com 2 | jsDate | (c) 2010-2013 Chris Leonello 3 | */(function(a){a.jqplot.CanvasAxisTickRenderer=function(b){this.mark="outside";this.showMark=true;this.showGridline=true;this.isMinorTick=false;this.angle=0;this.markSize=4;this.show=true;this.showLabel=true;this.labelPosition="auto";this.label="";this.value=null;this._styles={};this.formatter=a.jqplot.DefaultTickFormatter;this.formatString="";this.prefix="";this.fontFamily='"Trebuchet MS", Arial, Helvetica, sans-serif';this.fontSize="10pt";this.fontWeight="normal";this.fontStretch=1;this.textColor="#666666";this.enableFontSupport=true;this.pt2px=null;this._elem;this._ctx;this._plotWidth;this._plotHeight;this._plotDimensions={height:null,width:null};a.extend(true,this,b);var c={fontSize:this.fontSize,fontWeight:this.fontWeight,fontStretch:this.fontStretch,fillStyle:this.textColor,angle:this.getAngleRad(),fontFamily:this.fontFamily};if(this.pt2px){c.pt2px=this.pt2px}if(this.enableFontSupport){if(a.jqplot.support_canvas_text()){this._textRenderer=new a.jqplot.CanvasFontRenderer(c)}else{this._textRenderer=new a.jqplot.CanvasTextRenderer(c)}}else{this._textRenderer=new a.jqplot.CanvasTextRenderer(c)}};a.jqplot.CanvasAxisTickRenderer.prototype.init=function(b){a.extend(true,this,b);this._textRenderer.init({fontSize:this.fontSize,fontWeight:this.fontWeight,fontStretch:this.fontStretch,fillStyle:this.textColor,angle:this.getAngleRad(),fontFamily:this.fontFamily})};a.jqplot.CanvasAxisTickRenderer.prototype.getWidth=function(d){if(this._elem){return this._elem.outerWidth(true)}else{var f=this._textRenderer;var c=f.getWidth(d);var e=f.getHeight(d);var b=Math.abs(Math.sin(f.angle)*e)+Math.abs(Math.cos(f.angle)*c);return b}};a.jqplot.CanvasAxisTickRenderer.prototype.getHeight=function(d){if(this._elem){return this._elem.outerHeight(true)}else{var f=this._textRenderer;var c=f.getWidth(d);var e=f.getHeight(d);var b=Math.abs(Math.cos(f.angle)*e)+Math.abs(Math.sin(f.angle)*c);return b}};a.jqplot.CanvasAxisTickRenderer.prototype.getTop=function(b){if(this._elem){return this._elem.position().top}else{return null}};a.jqplot.CanvasAxisTickRenderer.prototype.getAngleRad=function(){var b=this.angle*Math.PI/180;return b};a.jqplot.CanvasAxisTickRenderer.prototype.setTick=function(b,d,c){this.value=b;if(c){this.isMinorTick=true}return this};a.jqplot.CanvasAxisTickRenderer.prototype.draw=function(c,f){if(!this.label){this.label=this.prefix+this.formatter(this.formatString,this.value)}if(this._elem){if(a.jqplot.use_excanvas&&window.G_vmlCanvasManager.uninitElement!==undefined){window.G_vmlCanvasManager.uninitElement(this._elem.get(0))}this._elem.emptyForce();this._elem=null}var e=f.canvasManager.getCanvas();this._textRenderer.setText(this.label,c);var b=this.getWidth(c);var d=this.getHeight(c);e.width=b;e.height=d;e.style.width=b;e.style.height=d;e.style.textAlign="left";e.style.position="absolute";e=f.canvasManager.initCanvas(e);this._elem=a(e);this._elem.css(this._styles);this._elem.addClass("jqplot-"+this.axis+"-tick");e=null;return this._elem};a.jqplot.CanvasAxisTickRenderer.prototype.pack=function(){this._textRenderer.draw(this._elem.get(0).getContext("2d"),this.label)}})(jQuery); -------------------------------------------------------------------------------- /docs/js/jqplot/plugins/jqplot.ciParser.min.js: -------------------------------------------------------------------------------- 1 | /* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com 2 | jsDate | (c) 2010-2013 Chris Leonello 3 | */(function(a){a.jqplot.ciParser=function(g,l){var m=[],o,n,h,f,e,c;if(typeof(g)=="string"){g=a.jqplot.JSON.parse(g,d)}else{if(typeof(g)=="object"){for(e in g){for(h=0;h=0){i=/^\/Date\((-?[0-9]+)\)\/$/.exec(k);if(i){return parseInt(i[1],10)}}return k}}for(var b in g){o=[];n=g[b];switch(b){case"PriceTicks":for(h=0;h=0.6)?l[3]*0.6:l[3]*(2-l[3]);m.color="rgba("+o[0]+","+o[1]+","+o[2]+","+k+")"}i.color=m.color;i.init();var g=(p.pointIndex>0)?p.pointIndex-1:0;var j=p.pointIndex+2;m._gridData=q.gridData.slice(g,j)}function e(o,l,h,t,m){if(m.plugins.dragable.dragCanvas.isDragging){var u=m.plugins.dragable.dragCanvas;var i=u._neighbor;var w=m.series[i.seriesIndex];var k=w.plugins.dragable;var r=w.gridData;var p=(k.constrainTo=="y")?i.gridData[0]:l.x;var n=(k.constrainTo=="x")?i.gridData[1]:l.y;var g=w._xaxis.series_p2u(p);var q=w._yaxis.series_p2u(n);var v=u._ctx;v.clearRect(0,0,v.canvas.width,v.canvas.height);if(i.pointIndex>0){k._gridData[1]=[p,n]}else{k._gridData[0]=[p,n]}m.series[i.seriesIndex].draw(u._ctx,{gridData:k._gridData,shadow:false,preventJqPlotSeriesDrawTrigger:true,color:k.color,markerOptions:{color:k.color,shadow:false},trendline:{show:false}});m.target.trigger("jqplotSeriesPointChange",[i.seriesIndex,i.pointIndex,[g,q],[p,n]])}else{if(t!=null){var j=m.series[t.seriesIndex];if(j.isDragable){var u=m.plugins.dragable.dragCanvas;if(!u.isOver){u._cursors.push(o.target.style.cursor);o.target.style.cursor="pointer"}u.isOver=true}}else{if(t==null){var u=m.plugins.dragable.dragCanvas;if(u.isOver){o.target.style.cursor=u._cursors.pop();u.isOver=false}}}}}function c(k,i,g,l,j){var m=j.plugins.dragable.dragCanvas;m._cursors.push(k.target.style.cursor);if(l!=null){var o=j.series[l.seriesIndex];var h=o.plugins.dragable;if(o.isDragable&&!m.isDragging){m._neighbor=l;m.isDragging=true;f(j,l);h.markerRenderer.draw(o.gridData[l.pointIndex][0],o.gridData[l.pointIndex][1],m._ctx);k.target.style.cursor="move";j.target.trigger("jqplotDragStart",[l.seriesIndex,l.pointIndex,i,g])}}else{var n=m._ctx;n.clearRect(0,0,n.canvas.width,n.canvas.height);m.isDragging=false}}function a(m,j,g,o,k){if(k.plugins.dragable.dragCanvas.isDragging){var p=k.plugins.dragable.dragCanvas;var q=p._ctx;q.clearRect(0,0,q.canvas.width,q.canvas.height);p.isDragging=false;var h=p._neighbor;var r=k.series[h.seriesIndex];var i=r.plugins.dragable;var n=(i.constrainTo=="y")?h.data[0]:g[r.xaxis];var l=(i.constrainTo=="x")?h.data[1]:g[r.yaxis];r.data[h.pointIndex][0]=n;r.data[h.pointIndex][1]=l;k.drawSeries({preventJqPlotSeriesDrawTrigger:true},h.seriesIndex);p._neighbor=null;m.target.style.cursor=p._cursors.pop();k.target.trigger("jqplotDragStop",[j,g])}}})(jQuery); -------------------------------------------------------------------------------- /docs/js/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js: -------------------------------------------------------------------------------- 1 | /* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com 2 | jsDate | (c) 2010-2013 Chris Leonello 3 | */(function(c){c.jqplot.EnhancedLegendRenderer=function(){c.jqplot.TableLegendRenderer.call(this)};c.jqplot.EnhancedLegendRenderer.prototype=new c.jqplot.TableLegendRenderer();c.jqplot.EnhancedLegendRenderer.prototype.constructor=c.jqplot.EnhancedLegendRenderer;c.jqplot.EnhancedLegendRenderer.prototype.init=function(d){this.numberRows=null;this.numberColumns=null;this.seriesToggle="normal";this.seriesToggleReplot=false;this.disableIEFading=true;c.extend(true,this,d);if(this.seriesToggle){c.jqplot.postDrawHooks.push(b)}};c.jqplot.EnhancedLegendRenderer.prototype.draw=function(m,y){var f=this;if(this.show){var r=this._series;var u;var w="position:absolute;";w+=(this.background)?"background:"+this.background+";":"";w+=(this.border)?"border:"+this.border+";":"";w+=(this.fontSize)?"font-size:"+this.fontSize+";":"";w+=(this.fontFamily)?"font-family:"+this.fontFamily+";":"";w+=(this.textColor)?"color:"+this.textColor+";":"";w+=(this.marginTop!=null)?"margin-top:"+this.marginTop+";":"";w+=(this.marginBottom!=null)?"margin-bottom:"+this.marginBottom+";":"";w+=(this.marginLeft!=null)?"margin-left:"+this.marginLeft+";":"";w+=(this.marginRight!=null)?"margin-right:"+this.marginRight+";":"";this._elem=c('
');if(this.seriesToggle){this._elem.css("z-index","3")}var C=false,q=false,d,o;if(this.numberRows){d=this.numberRows;if(!this.numberColumns){o=Math.ceil(r.length/d)}else{o=this.numberColumns}}else{if(this.numberColumns){o=this.numberColumns;d=Math.ceil(r.length/this.numberColumns)}else{d=r.length;o=1}}var B,z,e,l,k,n,p,t,h,g;var v=0;for(B=r.length-1;B>=0;B--){if(o==1&&r[B]._stack||r[B].renderer.constructor==c.jqplot.BezierCurveRenderer){q=true}}for(B=0;B0){C=true}else{C=false}}else{if(B==d-1){C=false}else{C=true}}p=(C)?this.rowSpacing:"0";l=c(document.createElement("td"));l.addClass("jqplot-table-legend jqplot-table-legend-swatch");l.css({textAlign:"center",paddingTop:p});h=c(document.createElement("div"));h.addClass("jqplot-table-legend-swatch-outline");g=c(document.createElement("div"));g.addClass("jqplot-table-legend-swatch");g.css({backgroundColor:x,borderColor:x});l.append(h.append(g));k=c(document.createElement("td"));k.addClass("jqplot-table-legend jqplot-table-legend-label");k.css("paddingTop",p);if(this.escapeHtml){k.text(n)}else{k.html(n)}if(q){if(this.showLabels){k.prependTo(e)}if(this.showSwatches){l.prependTo(e)}}else{if(this.showSwatches){l.appendTo(e)}if(this.showLabels){k.appendTo(e)}}if(this.seriesToggle){var A;if(typeof(this.seriesToggle)==="string"||typeof(this.seriesToggle)==="number"){if(!c.jqplot.use_excanvas||!this.disableIEFading){A=this.seriesToggle}}if(this.showSwatches){l.bind("click",{series:u,speed:A,plot:y,replot:this.seriesToggleReplot},a);l.addClass("jqplot-seriesToggle")}if(this.showLabels){k.bind("click",{series:u,speed:A,plot:y,replot:this.seriesToggleReplot},a);k.addClass("jqplot-seriesToggle")}if(!u.show&&u.showLabel){l.addClass("jqplot-series-hidden");k.addClass("jqplot-series-hidden")}}C=true}}v++}l=k=h=g=null}}return this._elem};var a=function(j){var i=j.data,m=i.series,k=i.replot,h=i.plot,f=i.speed,l=m.index,g=false;if(m.canvas._elem.is(":hidden")||!m.show){g=true}var e=function(){if(k){var n={};if(c.isPlainObject(k)){c.extend(true,n,k)}h.replot(n);if(g&&f){var d=h.series[l];if(d.shadowCanvas._elem){d.shadowCanvas._elem.hide().fadeIn(f)}d.canvas._elem.hide().fadeIn(f);d.canvas._elem.nextAll(".jqplot-point-label.jqplot-series-"+d.index).hide().fadeIn(f)}}else{var d=h.series[l];if(d.canvas._elem.is(":hidden")||!d.show){if(typeof h.options.legend.showSwatches==="undefined"||h.options.legend.showSwatches===true){h.legend._elem.find("td").eq(l*2).addClass("jqplot-series-hidden")}if(typeof h.options.legend.showLabels==="undefined"||h.options.legend.showLabels===true){h.legend._elem.find("td").eq((l*2)+1).addClass("jqplot-series-hidden")}}else{if(typeof h.options.legend.showSwatches==="undefined"||h.options.legend.showSwatches===true){h.legend._elem.find("td").eq(l*2).removeClass("jqplot-series-hidden")}if(typeof h.options.legend.showLabels==="undefined"||h.options.legend.showLabels===true){h.legend._elem.find("td").eq((l*2)+1).removeClass("jqplot-series-hidden")}}}};m.toggleDisplay(j,e)};var b=function(){if(this.legend.renderer.constructor==c.jqplot.EnhancedLegendRenderer&&this.legend.seriesToggle){var d=this.legend._elem.detach();this.eventCanvas._elem.after(d)}}})(jQuery); -------------------------------------------------------------------------------- /docs/js/jqplot/plugins/jqplot.json2.min.js: -------------------------------------------------------------------------------- 1 | /* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com 2 | jsDate | (c) 2010-2013 Chris Leonello 3 | */(function($){$.jqplot.JSON=window.JSON;if(!window.JSON){$.jqplot.JSON={}}function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;ib.max||b.max==null){b.max=f[c][1]}}}else{for(var c=0;cb.max||b.max==null){b.max=f[c][2]}}}};a.jqplot.OHLCRenderer.prototype.draw=function(A,N,j){var J=this.data;var v=this._xaxis.min;var z=this._xaxis.max;var l=0;var K=J.length;var p=this._xaxis.series_u2p;var G=this._yaxis.series_u2p;var D,E,f,M,F,n,O,C;var y;var u=this.renderer;var s=(j!=undefined)?j:{};var k=(s.shadow!=undefined)?s.shadow:this.shadow;var B=(s.fill!=undefined)?s.fill:this.fill;var c=(s.fillAndStroke!=undefined)?s.fillAndStroke:this.fillAndStroke;u.bodyWidth=(s.bodyWidth!=undefined)?s.bodyWidth:u.bodyWidth;u.tickLength=(s.tickLength!=undefined)?s.tickLength:u.tickLength;A.save();if(this.show){var m,q,g,Q,t;for(var D=0;Dq){if(u.wickColor){y.color=u.wickColor}else{if(u.downBodyColor){y.color=u.downBodyColor}}f=a.extend(true,{},s,y);u.shapeRenderer.draw(A,[[m,g],[m,q]],f);u.shapeRenderer.draw(A,[[m,t],[m,Q]],f);y={};M=q;F=t-q;if(u.fillDownBody){y.fillRect=true}else{y.strokeRect=true;n=n-this.lineWidth;O=m-n/2}if(u.downBodyColor){y.color=u.downBodyColor;y.fillStyle=u.downBodyColor}C=[O,M,n,F]}else{if(u.wickColor){y.color=u.wickColor}f=a.extend(true,{},s,y);u.shapeRenderer.draw(A,[[m,g],[m,Q]],f);y={};y.fillRect=false;y.strokeRect=false;O=[m-n/2,q];M=[m+n/2,t];n=null;F=null;C=[O,M]}}f=a.extend(true,{},s,y);u.shapeRenderer.draw(A,C,f)}else{E=s.color;if(u.openColor){s.color=u.openColor}if(!u.hlc){u.shapeRenderer.draw(A,[[m-u._tickLength,q],[m,q]],s)}s.color=E;if(u.wickColor){s.color=u.wickColor}u.shapeRenderer.draw(A,[[m,g],[m,Q]],s);s.color=E;if(u.closeColor){s.color=u.closeColor}u.shapeRenderer.draw(A,[[m,t],[m+u._tickLength,t]],s);s.color=E}}}A.restore()};a.jqplot.OHLCRenderer.prototype.drawShadow=function(b,d,c){};a.jqplot.OHLCRenderer.checkOptions=function(d,c,b){if(!b.highlighter){b.highlighter={showMarker:false,tooltipAxes:"y",yvalues:4,formatString:'
date:%s
open:%s
hi:%s
low:%s
close:%s
'}}}})(jQuery); -------------------------------------------------------------------------------- /docs/js/jqplot/plugins/jqplot.pointLabels.min.js: -------------------------------------------------------------------------------- 1 | /* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com 2 | jsDate | (c) 2010-2013 Chris Leonello 3 | */(function(c){c.jqplot.PointLabels=function(e){this.show=c.jqplot.config.enablePlugins;this.location="n";this.labelsFromSeries=false;this.seriesLabelIndex=null;this.labels=[];this._labels=[];this.stackedValue=false;this.ypadding=6;this.xpadding=6;this.escapeHTML=true;this.edgeTolerance=-5;this.formatter=c.jqplot.DefaultTickFormatter;this.formatString="";this.hideZeros=false;this._elems=[];c.extend(true,this,e)};var a=["nw","n","ne","e","se","s","sw","w"];var d={nw:0,n:1,ne:2,e:3,se:4,s:5,sw:6,w:7};var b=["se","s","sw","w","nw","n","ne","e"];c.jqplot.PointLabels.init=function(j,h,f,g,i){var e=c.extend(true,{},f,g);e.pointLabels=e.pointLabels||{};if(this.renderer.constructor===c.jqplot.BarRenderer&&this.barDirection==="horizontal"&&!e.pointLabels.location){e.pointLabels.location="e"}this.plugins.pointLabels=new c.jqplot.PointLabels(e.pointLabels);this.plugins.pointLabels.setLabels.call(this)};c.jqplot.PointLabels.prototype.setLabels=function(){var f=this.plugins.pointLabels;var h;if(f.seriesLabelIndex!=null){h=f.seriesLabelIndex}else{if(this.renderer.constructor===c.jqplot.BarRenderer&&this.barDirection==="horizontal"){h=(this._plotData[0].length<3)?0:this._plotData[0].length-1}else{h=(this._plotData.length===0)?0:this._plotData[0].length-1}}f._labels=[];if(f.labels.length===0||f.labelsFromSeries){if(f.stackedValue){if(this._plotData.length&&this._plotData[0].length){for(var e=0;eB||s+C>m){z.remove()}z=null;f=null}}};c.jqplot.postSeriesInitHooks.push(c.jqplot.PointLabels.init);c.jqplot.postDrawSeriesHooks.push(c.jqplot.PointLabels.draw)})(jQuery); -------------------------------------------------------------------------------- /docs/js/jqplot/plugins/jqplot.trendline.min.js: -------------------------------------------------------------------------------- 1 | /* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com 2 | jsDate | (c) 2010-2013 Chris Leonello 3 | */(function(f){f.jqplot.Trendline=function(){this.show=f.jqplot.config.enablePlugins;this.color="#666666";this.renderer=new f.jqplot.LineRenderer();this.rendererOptions={marker:{show:false}};this.label="";this.type="linear";this.shadow=true;this.markerRenderer={show:false};this.lineWidth=1.5;this.shadowAngle=45;this.shadowOffset=1;this.shadowAlpha=0.07;this.shadowDepth=3;this.isTrendline=true};f.jqplot.postSeriesInitHooks.push(e);f.jqplot.postDrawSeriesHooks.push(g);f.jqplot.addLegendRowHooks.push(a);function a(k){var j=null;if(k.trendline&&k.trendline.show){var i=k.trendline.label.toString();if(i){j={label:i,color:k.trendline.color}}}return j}function e(m,k,j,i,l){if(this._type&&(this._type==="line"||this._type=="bar")){this.trendline=new f.jqplot.Trendline();i=i||{};f.extend(true,this.trendline,{color:this.color},j.trendline,i.trendline);this.trendline.renderer.init.call(this.trendline,null)}}function g(m,i){i=f.extend(true,{},this.trendline,i);if(this.trendline&&i.show){var k;var l=i.data||this.data;k=c(l,this.trendline.type);var j=i.gridData||this.renderer.makeGridData.call(this,k.data);this.trendline.renderer.draw.call(this.trendline,m,j,{showLine:true,shadow:this.trendline.shadow})}}function b(w,v,n){var u=(n==null)?"linear":n;var s=w.length;var t;var z;var o=0;var m=0;var r=0;var q=0;var l=0;var j=[];var k=[];if(u=="linear"){k=w;j=v}else{if(u=="exp"||u=="exponential"){for(var p=0;p li').bind('mouseover', menu_open); 28 | $('#file-nav > li').bind('mouseout', menu_timer); 29 | }); 30 | 31 | document.onclick = menu_close; -------------------------------------------------------------------------------- /docs/js/prettify/lang-apollo.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/js/prettify/lang-apollo.js -------------------------------------------------------------------------------- /docs/js/prettify/lang-clj.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2011 Google Inc. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | var a=null; 17 | PR.registerLangHandler(PR.createSimpleLexer([["opn",/^[([{]+/,a,"([{"],["clo",/^[)\]}]+/,a,")]}"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \xa0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\b/,a], 18 | ["typ",/^:[\dA-Za-z-]+/]]),["clj"]); 19 | -------------------------------------------------------------------------------- /docs/js/prettify/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", 2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); 3 | -------------------------------------------------------------------------------- /docs/js/prettify/lang-go.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/js/prettify/lang-go.js -------------------------------------------------------------------------------- /docs/js/prettify/lang-hs.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n \r "],["str",/^"(?:[^\n\f\r"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["str",/^'(?:[^\n\f\r'\\]|\\[^&])'?/,null,"'"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,null,"0123456789"]],[["com",/^(?:--+[^\n\f\r]*|{-(?:[^-]|-+[^}-])*-})/],["kwd",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^\d'A-Za-z]|$)/, 2 | null],["pln",/^(?:[A-Z][\w']*\.)*[A-Za-z][\w']*/],["pun",/^[^\d\t-\r "'A-Za-z]+/]]),["hs"]); 3 | -------------------------------------------------------------------------------- /docs/js/prettify/lang-lisp.js: -------------------------------------------------------------------------------- 1 | var a=null; 2 | PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,a,"("],["clo",/^\)+/,a,")"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \xa0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,a], 3 | ["lit",/^[+-]?(?:[#0]x[\da-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[de][+-]?\d+)?)/i],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[_a-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/i],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["cl","el","lisp","scm"]); 4 | -------------------------------------------------------------------------------- /docs/js/prettify/lang-lua.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/js/prettify/lang-lua.js -------------------------------------------------------------------------------- /docs/js/prettify/lang-ml.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/js/prettify/lang-ml.js -------------------------------------------------------------------------------- /docs/js/prettify/lang-n.js: -------------------------------------------------------------------------------- 1 | var a=null; 2 | PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:'(?:[^\n\r'\\]|\\.)*'|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,a,'"'],["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,a,"#"],["pln",/^\s+/,a," \r\n\t\xa0"]],[["str",/^@"(?:[^"]|"")*(?:"|$)/,a],["str",/^<#[^#>]*(?:#>|$)/,a],["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,a],["com",/^\/\/[^\n\r]*/,a],["com",/^\/\*[\S\s]*?(?:\*\/|$)/, 3 | a],["kwd",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\b/, 4 | a],["typ",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\b/,a],["lit",/^@[$_a-z][\w$@]*/i,a],["typ",/^@[A-Z]+[a-z][\w$@]*/,a],["pln",/^'?[$_a-z][\w$@]*/i,a],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,a,"0123456789"],["pun",/^.[^\s\w"-$'./@`]*/,a]]),["n","nemerle"]); 5 | -------------------------------------------------------------------------------- /docs/js/prettify/lang-proto.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.sourceDecorator({keywords:"bytes,default,double,enum,extend,extensions,false,group,import,max,message,option,optional,package,repeated,required,returns,rpc,service,syntax,to,true",types:/^(bool|(double|s?fixed|[su]?int)(32|64)|float|string)\b/,cStyleComments:!0}),["proto"]); 2 | -------------------------------------------------------------------------------- /docs/js/prettify/lang-scala.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/js/prettify/lang-scala.js -------------------------------------------------------------------------------- /docs/js/prettify/lang-sql.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/js/prettify/lang-sql.js -------------------------------------------------------------------------------- /docs/js/prettify/lang-tex.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/js/prettify/lang-tex.js -------------------------------------------------------------------------------- /docs/js/prettify/lang-vb.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/js/prettify/lang-vb.js -------------------------------------------------------------------------------- /docs/js/prettify/lang-vhdl.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/js/prettify/lang-vhdl.js -------------------------------------------------------------------------------- /docs/js/prettify/lang-wiki.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProdigyView-Toolkit/prodigyview/a3b209a643d3b5a1c833c7734bfc5a56106f0244/docs/js/prettify/lang-wiki.js -------------------------------------------------------------------------------- /docs/js/prettify/lang-yaml.js: -------------------------------------------------------------------------------- 1 | var a=null; 2 | PR.registerLangHandler(PR.createSimpleLexer([["pun",/^[:>?|]+/,a,":|>?"],["dec",/^%(?:YAML|TAG)[^\n\r#]+/,a,"%"],["typ",/^&\S+/,a,"&"],["typ",/^!\S*/,a,"!"],["str",/^"(?:[^"\\]|\\.)*(?:"|$)/,a,'"'],["str",/^'(?:[^']|'')*(?:'|$)/,a,"'"],["com",/^#[^\n\r]*/,a,"#"],["pln",/^\s+/,a," \t\r\n"]],[["dec",/^(?:---|\.\.\.)(?:[\n\r]|$)/],["pun",/^-/],["kwd",/^\w+:[\n\r ]/],["pln",/^\w+/]]),["yaml","yml"]); 3 | -------------------------------------------------------------------------------- /docs/js/sidebar.js: -------------------------------------------------------------------------------- 1 | jQuery.expr[':'].Contains = function(a, i, m) { 2 | return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; 3 | }; 4 | 5 | $(function() { 6 | $("#sidebar-nav").accordion({ 7 | autoHeight: false, 8 | navigation: true, 9 | collapsible: true 10 | }).accordion("activate", false) 11 | .find('a.link').unbind('click').click( 12 | function(ev) { 13 | ev.cancelBubble = true; // IE 14 | if (ev.stopPropagation) { 15 | ev.stopPropagation(); // the rest 16 | } 17 | 18 | return true; 19 | }).prev().prev().remove(); 20 | 21 | $("#sidebar-nav>h3").click(function() { 22 | if ($(this).attr('initialized') == 'true') return; 23 | 24 | $(this).next().find(".sidebar-nav-tree").treeview({ 25 | collapsed: true, 26 | persist: "cookie" 27 | }); 28 | $(this).attr('initialized', true); 29 | }); 30 | }); 31 | 32 | function tree_search(input) { 33 | treeview = $(input).parent().parent().next(); 34 | 35 | // Expand all items 36 | treeview.find('.expandable-hitarea').click(); 37 | 38 | // make all items visible again 39 | treeview.find('li:hidden').show(); 40 | 41 | // hide all items that do not match the given search criteria 42 | if ($(input).val()) { 43 | treeview.find('li').not(':has(a:Contains(' + $(input).val() + '))').hide(); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /docs/phpdoc-cache-2e/phpdoc-cache-settings.dat: -------------------------------------------------------------------------------- 1 | O:51:"phpDocumentor\Descriptor\ProjectDescriptor\Settings":2:{s:13:"*isModified";b:0;s:13:"*visibility";i:7;} -------------------------------------------------------------------------------- /docs/phpdoc-cache-5e/phpdoc-cache-file_43850104a78e91196abf2dc9f011053a.dat: -------------------------------------------------------------------------------- 1 | O:39:"phpDocumentor\Descriptor\FileDescriptor":22:{s:7:"*hash";s:32:"ada0129f7e803efa176832793ac27e9d";s:7:"*path";s:23:"_BootCoreComponents.php";s:9:"*source";s:1591:" false)); 33 | ";s:19:"*namespaceAliases";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:0:{}}s:11:"*includes";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:1:{i:0;O:41:"phpDocumentor\Reflection\IncludeReflector":3:{s:7:"*node";O:28:"PhpParser\Node\Expr\Include_":4:{s:4:"expr";O:29:"PhpParser\Node\Scalar\String_":3:{s:5:"value";s:16:"_classLoader.php";s:36:"PhpParser\NodeAbstractsubNodeNames";N;s:13:"*attributes";a:3:{s:9:"startLine";i:30;s:7:"endLine";i:30;s:13:"originalValue";s:18:"'_classLoader.php'";}}s:4:"type";i:1;s:36:"PhpParser\NodeAbstractsubNodeNames";N;s:13:"*attributes";a:3:{s:8:"comments";a:0:{}s:9:"startLine";i:30;s:7:"endLine";i:30;}}s:23:"*default_package_name";s:0:"";s:10:"*context";O:41:"phpDocumentor\Reflection\DocBlock\Context":3:{s:12:"*namespace";s:0:"";s:20:"*namespace_aliases";a:0:{}s:7:"*lsen";s:0:"";}}}}s:12:"*constants";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:0:{}}s:12:"*functions";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:0:{}}s:10:"*classes";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:0:{}}s:13:"*interfaces";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:0:{}}s:9:"*traits";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:0:{}}s:10:"*markers";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:0:{}}s:8:"*fqsen";s:0:"";s:7:"*name";s:21:"_BootMinusPlugins.php";s:12:"*namespace";N;s:10:"*package";s:7:"Default";s:10:"*summary";s:0:"";s:14:"*description";s:0:"";s:17:"*fileDescriptor";N;s:7:"*line";i:0;s:7:"*tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:2:{s:7:"package";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:1:{i:0;O:38:"phpDocumentor\Descriptor\TagDescriptor":3:{s:7:"*name";s:7:"package";s:14:"*description";s:7:"Default";s:9:"*errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:0:{}}}}}s:10:"subpackage";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:0:{}}}}s:9:"*errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:1:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:"*severity";s:5:"error";s:7:"*code";s:13:"PPC:ERR-50000";s:7:"*line";i:0;s:10:"*context";a:2:{s:11:"{{ value }}";s:2:"""";i:0;s:0:"";}}}}s:19:"*inheritedElement";N;} -------------------------------------------------------------------------------- /docs/phpdoc-cache-8f/phpdoc-cache-file_dfa1418312684d8aea54735f25f5a913.dat: -------------------------------------------------------------------------------- 1 | O:39:"phpDocumentor\Descriptor\FileDescriptor":22:{s:7:"*hash";s:32:"2f055fa2b951f317768c5fed65733dfc";s:7:"*path";s:22:"_BootMinusDatabase.php";s:9:"*source";s:1675:" false, 'load_database' => false)); 32 | ";s:19:"*namespaceAliases";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:0:{}}s:11:"*includes";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:1:{i:0;O:41:"phpDocumentor\Reflection\IncludeReflector":3:{s:7:"*node";O:28:"PhpParser\Node\Expr\Include_":4:{s:4:"expr";O:29:"PhpParser\Node\Scalar\String_":3:{s:5:"value";s:16:"_classLoader.php";s:36:"PhpParser\NodeAbstractsubNodeNames";N;s:13:"*attributes";a:3:{s:9:"startLine";i:30;s:7:"endLine";i:30;s:13:"originalValue";s:18:"'_classLoader.php'";}}s:4:"type";i:1;s:36:"PhpParser\NodeAbstractsubNodeNames";N;s:13:"*attributes";a:3:{s:8:"comments";a:0:{}s:9:"startLine";i:30;s:7:"endLine";i:30;}}s:23:"*default_package_name";s:0:"";s:10:"*context";O:41:"phpDocumentor\Reflection\DocBlock\Context":3:{s:12:"*namespace";s:0:"";s:20:"*namespace_aliases";a:0:{}s:7:"*lsen";s:0:"";}}}}s:12:"*constants";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:0:{}}s:12:"*functions";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:0:{}}s:10:"*classes";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:0:{}}s:13:"*interfaces";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:0:{}}s:9:"*traits";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:0:{}}s:10:"*markers";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:0:{}}s:8:"*fqsen";s:0:"";s:7:"*name";s:22:"_BootMinusDatabase.php";s:12:"*namespace";N;s:10:"*package";s:7:"Default";s:10:"*summary";s:0:"";s:14:"*description";s:0:"";s:17:"*fileDescriptor";N;s:7:"*line";i:0;s:7:"*tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:2:{s:7:"package";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:1:{i:0;O:38:"phpDocumentor\Descriptor\TagDescriptor":3:{s:7:"*name";s:7:"package";s:14:"*description";s:7:"Default";s:9:"*errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:0:{}}}}}s:10:"subpackage";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:0:{}}}}s:9:"*errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:"*items";a:1:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:"*severity";s:5:"error";s:7:"*code";s:13:"PPC:ERR-50000";s:7:"*line";i:0;s:10:"*context";a:2:{s:11:"{{ value }}";s:2:"""";i:0;s:0:"";}}}}s:19:"*inheritedElement";N;} -------------------------------------------------------------------------------- /docs/phpdoc-cache-c9/phpdoc-cache-file_fb95e8f891522a0c0b26a2831bf34030.dat: -------------------------------------------------------------------------------- 1 | O:39:"phpDocumentor\Descriptor\FileDescriptor":22:{s:7:"*hash";s:32:"399f3009d1445b31c4bafa03bbc38e8c";s:7:"*path";s:23:"_BootCompleteSystem.php";s:9:"*source";s:1620:" false, 'load_database' => false)); 32 | -------------------------------------------------------------------------------- /src/_classLoader.php: -------------------------------------------------------------------------------- 1 | &$arg) { 52 | $passable_args[$key] = &$arg; 53 | } 54 | 55 | if ($this->_hasAdapter(get_called_class(), __FUNCTION__)) 56 | return $this->_callAdapter(get_called_class(), __FUNCTION__, $command, $passable_args); 57 | 58 | $filtered = $this->_applyFilter(get_called_class(), __FUNCTION__, array( 59 | 'command' => $command, 60 | 'passable_args' => $passable_args 61 | ), array('event' => 'args')); 62 | 63 | $command = $filtered['command']; 64 | $passable_args = $filtered['passable_args']; 65 | 66 | if (method_exists($this, $command)) { 67 | $value = $this->_invokeMethod($this, $command, $passable_args); 68 | } else { 69 | $value = $this->_invokeMethod($this, 'defaultFunction', $passable_args); 70 | } 71 | 72 | $this->_notify(get_called_class() . '::' . __FUNCTION__, $value, $command, $passable_args); 73 | $value = $this->_applyFilter(get_called_class(), __FUNCTION__, $value, array('event' => 'return')); 74 | 75 | return $value; 76 | } 77 | 78 | /** 79 | * The default function and abstract that must be implemented. If the commandIntepreter cannot find a 80 | * correspoding function, this function will be called. 81 | */ 82 | abstract function defaultFunction($params = array()); 83 | 84 | }//end class 85 | -------------------------------------------------------------------------------- /src/design/Invoke.php: -------------------------------------------------------------------------------- 1 | {$method}(); 26 | break; 27 | case 1 : 28 | return $class->{$method}($args[0]); 29 | break; 30 | case 2 : 31 | return $class->{$method}($args[0], $args[1]); 32 | break; 33 | case 3 : 34 | return $class->{$method}($args[0], $args[1], $args[2]); 35 | break; 36 | case 4 : 37 | return $class->{$method}($args[0], $args[1], $args[2], $args[3]); 38 | break; 39 | case 5 : 40 | return $class->{$method}($args[0], $args[1], $args[2], $args[3], $args[4]); 41 | break; 42 | default : 43 | return call_user_func_array(array( 44 | $class, 45 | $method 46 | ), $args); 47 | break; 48 | endswitch; 49 | 50 | }//end _invokeMethod 51 | 52 | /** 53 | * Calls a methods that is a method of a class. This method is generally 54 | * faster than using user_call_func_array. 55 | * 56 | * @param string $class The name of the class to be called 57 | * @param string $method The name of the method in the class to be called 58 | * @param array $args An array of arguements. Arguements have to be embedded in an array to be 59 | * called. 60 | * 61 | * @return mixed $data Data returned by the function called 62 | * @access protected 63 | */ 64 | protected function _invokeStaticMethod($class, $method, $args) { 65 | 66 | switch(count($args)) : 67 | case 0 : 68 | return $class::$method(); 69 | break; 70 | case 1 : 71 | return $class::$method($args[0]); 72 | break; 73 | case 2 : 74 | return $class::$method($args[0], $args[1]); 75 | break; 76 | case 3 : 77 | return $class::$method($args[0], $args[1], $args[2]); 78 | break; 79 | case 4 : 80 | return $class::$method($args[0], $args[1], $args[2], $args[3]); 81 | break; 82 | case 5 : 83 | return $class::$method($args[0], $args[1], $args[2], $args[3], $args[4]); 84 | break; 85 | default : 86 | return call_user_func_array(array( 87 | $class, 88 | $method 89 | ), $args); 90 | break; 91 | endswitch; 92 | 93 | }//end _invokeMethod 94 | 95 | /** 96 | * Breaks down the data to be logged from an adapter, filter or observer. 97 | * 98 | * @param array $data 99 | * 100 | * @return string $message JSON encode message of information about the data 101 | * @access private 102 | */ 103 | protected function _prepareLogData($data) { 104 | 105 | foreach ($data as $key => $value) { 106 | if ($value instanceof Closure) { 107 | $closure = new \ReflectionFunction($value); 108 | $data[$key] = $closure->getFileName(); 109 | $data['start_line'] = $closure->getStartLine(); 110 | $data['end_line'] = $closure->getEndLine(); 111 | } else if (is_object($value)) { 112 | $object = new \ReflectionClass($value); 113 | $data[$key] = $object->getFileName(); 114 | $data['start_line'] = $object->getStartLine(); 115 | $data['end_line'] = $object->getEndLine(); 116 | } else if (!is_string($value)) { 117 | unset($data[$key]); 118 | } 119 | 120 | } 121 | 122 | return json_encode($data); 123 | } 124 | } 125 | -------------------------------------------------------------------------------- /src/design/Observer.php: -------------------------------------------------------------------------------- 1 | 'static', 43 | 'class' => $class, 44 | 'method' => $method, 45 | 'type' => 'class_method' 46 | ); 47 | 48 | $options += $default; 49 | $this->_observers[$event][] = $options; 50 | }//end _addObersver 51 | 52 | /** 53 | * Calls any functions that have been added to the observer if the event is present in the 54 | * observers array. 55 | * 56 | * @param string $event The name of the event that will trigger notifiers 57 | * @param mixed $args An array of infinite arguements that will passed to each function related to 58 | * the event 59 | * 60 | * @return void 61 | * @access protected 62 | */ 63 | protected function _notify(string $event) { 64 | 65 | $args = func_get_args(); 66 | array_shift($args); 67 | 68 | $passable_args = array(); 69 | foreach ($args as $key => &$arg) { 70 | $passable_args[$key] = &$arg; 71 | } 72 | 73 | if (isset($this->_observers[$event])) { 74 | foreach ($this->_observers[$event] as $options) { 75 | 76 | if ($this->_traceObservers) { 77 | $trace = debug_backtrace(); 78 | $options['trace'] = $trace[1]['class'] . '::' . $trace[1]['function']; 79 | $this->_logObserver($options); 80 | } 81 | 82 | if ($options['type'] === 'closure') 83 | call_user_func_array($options['method'], $passable_args); 84 | else if ($options['type'] === 'instance') 85 | $this->_invokeMethod($options['class'], $options['method'], $passable_args); 86 | else 87 | $this->_invokeStaticMethod($options['class'], $options['method'], $passable_args); 88 | }//end for each 89 | } 90 | 91 | }//end _notify 92 | 93 | /** 94 | * Removes all the observers assoicated with an event. 95 | * 96 | * @param string $event The event to remove all the observers from 97 | * 98 | * @return void 99 | * @access public 100 | */ 101 | public function clearObservers(string $event) { 102 | unset($this->_observers[$event]); 103 | } 104 | 105 | /** 106 | * Turn on/off the ability to trace an observer.Turning on will log 107 | * an observer using Log when the observer is executed. 108 | * 109 | * @param boolean $trace Default is false. If set to true, will trace observer. 110 | * 111 | * @return void 112 | * @access public 113 | */ 114 | public function setObserverTrace(bool $trace = false) { 115 | $this->_traceObservers = $trace; 116 | } 117 | 118 | /** 119 | * Write out the contents of an observer to a log. 120 | * 121 | * @param array $data The data in the observer 122 | * 123 | * @return void 124 | * @access private 125 | */ 126 | protected function _logObserver(array $data) { 127 | 128 | $message = $this->_prepareLogData($data); 129 | Log::writeLog('observer', $message); 130 | } 131 | } 132 | -------------------------------------------------------------------------------- /src/design/Singleton.php: -------------------------------------------------------------------------------- 1 | &$arg) { 53 | $passable_args[$key] = &$arg; 54 | } 55 | 56 | if (self::_hasAdapter(get_called_class(), __FUNCTION__)) 57 | return self::_callAdapter(get_called_class(), __FUNCTION__, $command, $passable_args); 58 | 59 | $filtered = self::_applyFilter(get_called_class(), __FUNCTION__, array( 60 | 'command' => $command, 61 | 'passable_args' => $passable_args 62 | ), array('event' => 'args')); 63 | 64 | $command = $filtered['command']; 65 | $passable_args = $filtered['passable_args']; 66 | 67 | if (method_exists($this, $command)) { 68 | $value = self::_invokeMethod($this, $command, $passable_args); 69 | } else { 70 | $value = self::_invokeMethod($this, 'defaultFunction', $passable_args); 71 | } 72 | 73 | self::_notify(get_called_class() . '::' . __FUNCTION__, $value, $command, $passable_args); 74 | $value = self::_applyFilter(get_called_class(), __FUNCTION__, $value, array('event' => 'return')); 75 | 76 | return $value; 77 | } 78 | 79 | /** 80 | * The default function that must be implemented. If the commandIntepreter cannot find a correspoding 81 | * function, this function will be called. 82 | */ 83 | abstract function defaultFunction($params = array()); 84 | 85 | }//end class 86 | -------------------------------------------------------------------------------- /src/design/StaticInvoke.php: -------------------------------------------------------------------------------- 1 | {$method}(); 25 | break; 26 | case 1 : 27 | return $class->{$method}($args[0]); 28 | break; 29 | case 2 : 30 | return $class->{$method}($args[0], $args[1]); 31 | break; 32 | case 3 : 33 | return $class->{$method}($args[0], $args[1], $args[2]); 34 | break; 35 | case 4 : 36 | return $class->{$method}($args[0], $args[1], $args[2], $args[3]); 37 | break; 38 | case 5 : 39 | return $class->{$method}($args[0], $args[1], $args[2], $args[3], $args[4]); 40 | break; 41 | default : 42 | return call_user_func_array(array( 43 | $class, 44 | $method 45 | ), $args); 46 | break; 47 | endswitch; 48 | 49 | }//end _invokeMethod 50 | 51 | /** 52 | * Calls a methods that is a static method of a class. This method is generally 53 | * faster than using user_call_func_array. 54 | * 55 | * @param string $class The name of the class to be called 56 | * @param string $method The name of the method in the class to be called 57 | * @param array $args An array of arguements. Arguements have to be embedded in an array to be 58 | * called. 59 | * 60 | * @return mixed $data Data returned by the function called 61 | * @access protected 62 | */ 63 | protected static function _invokeStaticMethod($class, $method, $args) { 64 | switch(count($args)) : 65 | case 0 : 66 | return $class::$method(); 67 | break; 68 | case 1 : 69 | return $class::$method($args[0]); 70 | break; 71 | case 2 : 72 | return $class::$method($args[0], $args[1]); 73 | break; 74 | case 3 : 75 | return $class::$method($args[0], $args[1], $args[2]); 76 | break; 77 | case 4 : 78 | return $class::$method($args[0], $args[1], $args[2], $args[3]); 79 | break; 80 | case 5 : 81 | return $class::$method($args[0], $args[1], $args[2], $args[3], $args[4]); 82 | break; 83 | default : 84 | return call_user_func_array(array( 85 | $class, 86 | $method 87 | ), $args); 88 | break; 89 | endswitch; 90 | 91 | }//end _invokeMethod 92 | 93 | /** 94 | * Breaks down the data to be logged from an adapter, filter or observer. 95 | * 96 | * @param array $data 97 | * 98 | * @return string $message JSON encode message of information about the data 99 | * @access private 100 | */ 101 | private static function _prepareLogData($data) { 102 | 103 | foreach ($data as $key => $value) { 104 | if ($value instanceof Closure) { 105 | $closure = new \ReflectionFunction($value); 106 | $data[$key] = $closure->getFileName(); 107 | $data['start_line'] = $closure->getStartLine(); 108 | $data['end_line'] = $closure->getEndLine(); 109 | } else if (is_object($value)) { 110 | $object = new \ReflectionClass($value); 111 | $data[$key] = $object->getFileName(); 112 | $data['start_line'] = $object->getStartLine(); 113 | $data['end_line'] = $object->getEndLine(); 114 | } else if (!is_string($value)) { 115 | unset($data[$key]); 116 | } 117 | 118 | } 119 | 120 | return json_encode($data); 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /src/design/StaticObserver.php: -------------------------------------------------------------------------------- 1 | 'static', 45 | 'class' => $class, 46 | 'method' => $method, 47 | 'type' => 'class_method' 48 | ); 49 | 50 | $options += $default; 51 | self::$_observers[$event][] = $options; 52 | }//end _addObersver 53 | 54 | /** 55 | * Calls any functions that have been added to the observer if the event is present in the 56 | * observers array. 57 | * 58 | * @param string $event The name of the even that occured that will trigger notifies 59 | * @param mixed $args An array of infinite arguements that will passed to each function related to 60 | * the event 61 | * 62 | * @return void 63 | * @access protected 64 | */ 65 | protected static function _notify($event) { 66 | 67 | $args = func_get_args(); 68 | array_shift($args); 69 | 70 | $passable_args = array(); 71 | foreach ($args as $key => &$arg) { 72 | $passable_args[$key] = &$arg; 73 | } 74 | 75 | if (isset(self::$_observers[$event])) { 76 | foreach (self::$_observers[$event] as $options) { 77 | 78 | if (self::$_traceObservers) { 79 | $trace = debug_backtrace(); 80 | $options['trace'] = $trace[1]['class'] . '::' . $trace[1]['function']; 81 | self::_logObserver($options); 82 | } 83 | 84 | if ($options['type'] === 'closure') 85 | call_user_func_array($options['method'], $passable_args); 86 | else if ($options['type'] === 'instance') 87 | self::_invokeMethod($options['class'], $options['method'], $passable_args); 88 | else 89 | self::_invokeStaticMethod($options['class'], $options['method'], $passable_args); 90 | }//end for each 91 | } 92 | 93 | }//end _notify 94 | 95 | /** 96 | * Removes all the observers assoicated with an event. 97 | * 98 | * @param string $event The event to remove all the observers from 99 | * 100 | * @return void 101 | * @access public 102 | */ 103 | public static function clearObservers($event) { 104 | unset(self::$_observers[$event]); 105 | } 106 | 107 | /** 108 | * Turn on/off the ability to trace an observer.Turning on will log 109 | * an observer using Log when the observer is executed. 110 | * 111 | * @param boolean $trace Default is false. If set to true, will trace observer. 112 | * 113 | * @return void 114 | * @access public 115 | */ 116 | public static function setObserverTrace($trace = false) { 117 | self::$_traceObservers = $trace; 118 | } 119 | 120 | /** 121 | * Write out the contents of an observer to a log. 122 | * 123 | * @param array $data The data in the observer 124 | * 125 | * @return void 126 | * @access private 127 | */ 128 | protected static function _logObserver($data) { 129 | $message = self::_prepareLogData($data); 130 | Log::writeLog('observer', $message); 131 | } 132 | 133 | 134 | 135 | } 136 | -------------------------------------------------------------------------------- /src/util/Cli.php: -------------------------------------------------------------------------------- 1 | 13 | * @since August 21, 2009 14 | * @see https://github.com/pwfisher/CommandLine.php 15 | * 16 | * This work is licensed under the Creative Commons Attribution License. 17 | * http://creativecommons.org/licenses/by/3.0/ 18 | * 19 | * @package util 20 | */ 21 | class Cli { 22 | 23 | use StaticObject; 24 | 25 | /** 26 | * Args parsed from command linke entry 27 | */ 28 | public static $args; 29 | 30 | /** 31 | * Parse the command line arguements 32 | * 33 | * @param string $argv Arguements from teh command line 34 | * 35 | * @return array An array of items to output 36 | */ 37 | public static function parse($argv = null) { 38 | 39 | if (self::_hasAdapter(get_class(), __FUNCTION__)) 40 | return self::_callAdapter(get_class(), __FUNCTION__, $argv); 41 | 42 | $argv = self::_applyFilter(get_class(), __FUNCTION__, $argv, array('event' => 'args')); 43 | 44 | $argv = ($argv) ? : $_SERVER['argv']; 45 | 46 | array_shift($argv); 47 | 48 | $out = array(); 49 | 50 | for ($i = 0, $j = count($argv); $i < $j; $i++) { 51 | $arg = $argv[$i]; 52 | 53 | // --foo --bar=baz 54 | if (substr($arg, 0, 2) === '--') { 55 | $eqPos = strpos($arg, '='); 56 | 57 | // --foo 58 | if ($eqPos === false) { 59 | $key = substr($arg, 2); 60 | 61 | // --foo value 62 | if ($i + 1 < $j && $argv[$i + 1][0] !== '-') { 63 | $value = $argv[$i + 1]; 64 | $i++; 65 | } else { 66 | $value = isset($out[$key]) ? $out[$key] : true; 67 | } 68 | $out[$key] = $value; 69 | } 70 | 71 | // --bar=baz 72 | else { 73 | $key = substr($arg, 2, $eqPos - 2); 74 | $value = substr($arg, $eqPos + 1); 75 | $out[$key] = $value; 76 | } 77 | } 78 | 79 | // -k=value -abc 80 | else if (substr($arg, 0, 1) === '-') { 81 | // -k=value 82 | if (substr($arg, 2, 1) === '=') { 83 | $key = substr($arg, 1, 1); 84 | $value = substr($arg, 3); 85 | $out[$key] = $value; 86 | } 87 | // -abc 88 | else { 89 | $chars = str_split(substr($arg, 1)); 90 | foreach ($chars as $char) { 91 | $key = $char; 92 | $value = isset($out[$key]) ? $out[$key] : true; 93 | $out[$key] = $value; 94 | } 95 | // -a value1 -abc value2 96 | if ($i + 1 < $j && $argv[$i + 1][0] !== '-') { 97 | $out[$key] = $argv[$i + 1]; 98 | $i++; 99 | } 100 | } 101 | } 102 | 103 | // plain-arg 104 | else { 105 | $value = $arg; 106 | $out[] = $value; 107 | } 108 | } 109 | 110 | self::$args = $out; 111 | 112 | $out = self::_applyFilter(get_class(), __FUNCTION__, $out, array('event' => 'return')); 113 | 114 | return $out; 115 | } 116 | 117 | /** 118 | * GET BOOLEAN 119 | * 120 | * @param string $key 121 | * @param string $default 122 | * 123 | * @todo Revist for figure out what this function was for. 124 | */ 125 | public static function getBoolean($key, $default = false) { 126 | 127 | if (self::_hasAdapter(get_class(), __FUNCTION__)) 128 | return self::_callAdapter(get_class(), __FUNCTION__, $key, $default); 129 | 130 | if (!isset(self::$args[$key])) { 131 | return $default; 132 | } 133 | $value = self::$args[$key]; 134 | 135 | if (is_bool($value)) { 136 | return $value; 137 | } 138 | 139 | if (is_int($value)) { 140 | return (bool)$value; 141 | } 142 | 143 | if (is_string($value)) { 144 | $value = strtolower($value); 145 | $map = array( 146 | 'y' => true, 147 | 'n' => false, 148 | 'yes' => true, 149 | 'no' => false, 150 | 'true' => true, 151 | 'false' => false, 152 | '1' => true, 153 | '0' => false, 154 | 'on' => true, 155 | 'off' => false, 156 | ); 157 | if (isset($map[$value])) { 158 | return $map[$value]; 159 | } 160 | } 161 | 162 | return $default; 163 | } 164 | 165 | } 166 | -------------------------------------------------------------------------------- /src/util/Mathematics.php: -------------------------------------------------------------------------------- 1 | 'Cat', 'big' => 'Dog', 1 => 'Ferret', 2 => 'Parrots'); 9 | 10 | public function testPrefilledData() { 11 | 12 | $collection = new Collection($this ->_data); 13 | 14 | $this-> assertEquals($this ->_data['big'], $collection -> big); 15 | } 16 | 17 | public function testPrefilledDataCompare() { 18 | 19 | $collection = new Collection($this ->_data); 20 | 21 | $this-> assertEquals($this -> _data, $collection -> getData()); 22 | } 23 | 24 | public function testAddingData() { 25 | $collection = new Collection(); 26 | 27 | foreach($this -> _data as $key => $value) { 28 | $collection->add($value); 29 | } 30 | 31 | $data = $collection -> getIterator() -> getData(); 32 | 33 | $cleaned_data = array_values($this -> _data); 34 | 35 | $this-> assertEquals($data, $cleaned_data); 36 | } 37 | 38 | public function testAddingDataWithName() { 39 | $collection = new Collection(); 40 | 41 | foreach($this -> _data as $key => $value) { 42 | $collection->addWithName($key, $value); 43 | } 44 | 45 | $this-> assertEquals($this -> _data, $collection -> getData()); 46 | } 47 | 48 | } 49 | 50 | -------------------------------------------------------------------------------- /tests/design/ObjectTest.php: -------------------------------------------------------------------------------- 1 | 'Dog', 29 | 'meow' => 'Cat', 30 | 'gallup' => 'Horse' 31 | ); 32 | 33 | public function testInstanceAddDataWithSetters() { 34 | 35 | $instance = new InstanceTest(); 36 | 37 | foreach($this ->_data as $key => $value) { 38 | 39 | $instance->$key=$value; 40 | 41 | }//endforeach 42 | 43 | $this -> assertEquals($this->_data['meow'], $instance-> meow); 44 | } 45 | 46 | public function testInstanceAddDataWithAddWithName() { 47 | 48 | $instance = new InstanceTest(); 49 | 50 | foreach($this ->_data as $key => $value) { 51 | 52 | $instance->addToCollectionWithName($key, $value); 53 | 54 | }//endforeach 55 | 56 | $this -> assertEquals($this->_data['gallup'], $instance-> gallup); 57 | } 58 | 59 | public function testInstanceAddDataWithAddWithoutName() { 60 | 61 | $instance = new InstanceTest(); 62 | 63 | foreach($this ->_data as $key => $value) { 64 | 65 | $instance->addToCollection($value); 66 | 67 | }//endforeach 68 | 69 | $this -> assertEquals(array_values($this->_data), $instance-> getIterator()->getData()); 70 | } 71 | 72 | public function testInstanceWithMethod() { 73 | 74 | $instance = new InstanceTest(); 75 | 76 | $instance->addMethod('foo', function($string) { 77 | return 'bar-'.$string; 78 | }); 79 | 80 | 81 | $this -> assertEquals('bar-test', $instance->foo('test')); 82 | 83 | 84 | } 85 | 86 | public function testStaticAddDataWithSetters() { 87 | 88 | foreach($this ->_data as $key => $value) { 89 | 90 | StaticTest::set($key,$value); 91 | 92 | }//endforeach 93 | 94 | $this -> assertEquals($this->_data['meow'], StaticTest::get('meow')); 95 | } 96 | 97 | public function testStaticAddDataWithAddWithName() { 98 | 99 | foreach($this ->_data as $key => $value) { 100 | 101 | StaticTest::addToCollectionWithName($key, $value); 102 | 103 | }//endforeach 104 | 105 | $this -> assertEquals($this->_data['gallup'], StaticTest::get('gallup')); 106 | } 107 | 108 | public function testStaticAddDataWithAddWithoutName() { 109 | 110 | StaticTest::resetCollection(); 111 | 112 | foreach($this ->_data as $key => $value) { 113 | 114 | StaticTest::addToCollection($value); 115 | 116 | }//endforeach 117 | 118 | $this -> assertEquals(array_values($this->_data), StaticTest::getIterator()->getData()); 119 | } 120 | 121 | public function testStaticWithMethod() { 122 | 123 | StaticTest::addMethod('foo', function($string) { 124 | return 'bar-'.$string; 125 | }); 126 | 127 | 128 | $this -> assertEquals('bar-test', StaticTest::foo('test')); 129 | 130 | 131 | } 132 | } 133 | -------------------------------------------------------------------------------- /tests/design/ObserverTest.php: -------------------------------------------------------------------------------- 1 | _notify(__FUNCTION__, $this, $string, $unit); 14 | 15 | } 16 | } 17 | 18 | class ObserverTestStatic { 19 | 20 | use StaticObserver; 21 | 22 | public static function observe($string, $unit) { 23 | 24 | self::_notify(__FUNCTION__, null, $string, $unit); 25 | 26 | } 27 | } 28 | 29 | class InstanceListener { 30 | 31 | public function observed($object, $string, $unit) { 32 | 33 | $unit -> assertEquals('Pass Me Along To Instance', $string); 34 | 35 | } 36 | 37 | } 38 | 39 | class StaticListener { 40 | 41 | public static function observed($object, $string, $unit) { 42 | 43 | $unit -> assertEquals('Pass Me Along To Static', $string); 44 | 45 | } 46 | } 47 | 48 | class ObserverTest extends TestCase { 49 | 50 | public function testInstanceWithClosure() { 51 | 52 | $string = 'Pass Me Along'; 53 | 54 | $instance = new ObserverTestInstance(); 55 | 56 | $instance -> addObserver('observe', 'ObserverTestInstance', function($object, $string, $unit) { 57 | 58 | $unit -> assertEquals('Pass Me Along', $string); 59 | 60 | }, array('type' => 'closure')); 61 | 62 | $instance->observe($string, $this); 63 | 64 | } 65 | 66 | public function testInstanceWithInstance() { 67 | 68 | $string = 'Pass Me Along To Instance'; 69 | 70 | $instance = new ObserverTestInstance(); 71 | 72 | $listener = new InstanceListener(); 73 | 74 | $instance -> addObserver('observe', $listener , 'observed', array('type' => 'instance')); 75 | 76 | $instance->observe($string, $this); 77 | 78 | } 79 | 80 | public function testInstanceWithStatic() { 81 | 82 | $string = 'Pass Me Along To Static'; 83 | 84 | $instance = new ObserverTestInstance(); 85 | 86 | $instance -> setObserverTrace(true); 87 | 88 | $instance -> addObserver('observe', 'StaticListener' , 'observed', array('type' => 'static')); 89 | 90 | $instance->observe($string, $this); 91 | } 92 | 93 | public function testStaticWithClosure() { 94 | 95 | $string = 'Pass Me Along'; 96 | 97 | ObserverTestStatic::addObserver('observe', 'ObserverTestStatic', function($object, $string, $unit) { 98 | 99 | $unit -> assertEquals('Pass Me Along', $string); 100 | 101 | }, array('type' => 'closure')); 102 | 103 | ObserverTestStatic::observe($string, $this); 104 | 105 | } 106 | 107 | public function testStaticWithInstance() { 108 | 109 | ObserverTestStatic::clearObservers('observe'); 110 | 111 | $string = 'Pass Me Along To Instance'; 112 | 113 | $listener = new InstanceListener(); 114 | 115 | ObserverTestStatic::addObserver('observe', $listener , 'observed', array('type' => 'instance')); 116 | 117 | ObserverTestStatic::setObserverTrace(true); 118 | 119 | ObserverTestStatic::observe($string, $this); 120 | 121 | } 122 | 123 | public function testStaticWithStatic() { 124 | 125 | ObserverTestStatic::clearObservers('observe'); 126 | 127 | $string = 'Pass Me Along To Static'; 128 | 129 | ObserverTestStatic::addObserver('observe', 'StaticListener' , 'observed', array('type' => 'static')); 130 | 131 | ObserverTestStatic::observe($string, $this); 132 | } 133 | 134 | } 135 | -------------------------------------------------------------------------------- /tests/design/StaticInstanceTest.php: -------------------------------------------------------------------------------- 1 | 'Dog', 14 | 'meow' => 'Cat', 15 | 'gallup' => 'Horse' 16 | ); 17 | 18 | public function testInstanceAddDataWithSetters() { 19 | 20 | $instance = new StaticInstanceObject(); 21 | 22 | foreach($this ->_data as $key => $value) { 23 | 24 | $instance->$key=$value; 25 | 26 | }//endforeach 27 | 28 | $this -> assertEquals($this->_data['meow'], $instance-> meow); 29 | } 30 | 31 | public function testInstanceAddDataWithAddWithName() { 32 | 33 | $instance = new StaticInstanceObject(); 34 | 35 | foreach($this ->_data as $key => $value) { 36 | 37 | $instance->addToCollectionWithName($key, $value); 38 | 39 | }//endforeach 40 | 41 | $this -> assertEquals($this->_data['gallup'], $instance-> gallup); 42 | } 43 | 44 | public function testInstanceAddDataWithAddWithoutName() { 45 | 46 | $instance = new StaticInstanceObject(); 47 | 48 | foreach($this ->_data as $key => $value) { 49 | 50 | $instance->addToCollection($value); 51 | 52 | }//endforeach 53 | 54 | $this -> assertEquals(array_values($this->_data), $instance-> getIterator()->getData()); 55 | } 56 | 57 | public function testInstanceWithMethod() { 58 | 59 | $instance = new StaticInstanceObject(); 60 | 61 | $instance->addMethod('foo', function($string) { 62 | return 'bar-'.$string; 63 | }); 64 | 65 | 66 | $this -> assertEquals('bar-test', $instance->foo('test')); 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /tests/media/ImageTests.php: -------------------------------------------------------------------------------- 1 | sys_get_temp_dir () 14 | )); 15 | } 16 | 17 | protected function tearDown(): void { 18 | PVCache::deleteCache($this->cacheKey); 19 | } 20 | 21 | public function testCacheNotExist() { 22 | $result = PVCache::hasExpired($this->cacheKey); 23 | $this->assertTrue($result); 24 | } 25 | 26 | public function testCacheNotReadable() { 27 | $result = PVCache::readCache($this->cacheKey); 28 | $this->assertEquals($result, ''); 29 | } 30 | 31 | public function testCacheWrite() { 32 | PVCache::writeCache($this->cacheKey, $this->cacheContent); 33 | $result = PVCache::readCache($this->cacheKey); 34 | $this->assertEquals($result,$this->cacheContent); 35 | } 36 | 37 | public function testCacheDelete() { 38 | PVCache::deleteCache($this->cacheKey); 39 | $result = PVCache::readCache($this->cacheKey); 40 | $this->assertEquals($result, ''); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /tests/network/CurlTest.php: -------------------------------------------------------------------------------- 1 | send('get'); 14 | $data = json_decode($curl->getResponse(), true); 15 | 16 | $this->assertTrue(is_array($data)); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /tests/network/RequestTests.php: -------------------------------------------------------------------------------- 1 | assertEquals('http://www.example.com?item=1', $url); 24 | } 25 | 26 | public function testGetCurrentUrlNotPort80() { 27 | 28 | $_SERVER['SERVER_PORT'] = 8080; 29 | 30 | $_SERVER['HTTP_HOST'] = 'www.example.com'; 31 | 32 | $_SERVER['REQUEST_URI'] = '?item=1'; 33 | 34 | $url = Router::getCurrentUrl(); 35 | 36 | $this->assertEquals('http://www.example.com:8080?item=1', $url); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /tests/network/SocketTest.php: -------------------------------------------------------------------------------- 1 | assertTrue(true); 14 | /* 15 | $socket = new Socket('ws://demos.kaazing.com/echo-auth', 0); 16 | $response = $socket->send('Rock it with HTML5 WebSocket'); 17 | 18 | $server = new Socket('localhost', 8000,array('bind' => true, 'listen' => true)); 19 | $server->startServer('',function($message){ 20 | echo $message; 21 | }, 'closure'); 22 | echo 'Ok'; 23 | 24 | 25 | print_r($response); 26 | 27 | exit(); 28 | exit();*/ 29 | 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /tests/phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ./ 5 | 6 | -------------------------------------------------------------------------------- /tests/system/ConfigurationTest.php: -------------------------------------------------------------------------------- 1 | assertEquals($value, Configuration::getConfiguration($key)); 22 | } 23 | 24 | public function testAddRetrieveArrayConfiguration() { 25 | 26 | $key = 'config2'; 27 | 28 | $value = array( 29 | 'item1' => 'Apples', 30 | 'item2' => 'Bears', 31 | ); 32 | 33 | Configuration::addConfiguration($key, $value); 34 | 35 | $this-> assertEquals('Bears', Configuration::getConfiguration($key) -> item2); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /tests/system/LibrariesTest.php: -------------------------------------------------------------------------------- 1 | 'https://code.jquery.com/jquery-3.3.1.min.js', 17 | 'https://unpkg.com/tooltip.js' => 'https://unpkg.com/tooltip.js', 18 | ); 19 | 20 | foreach($scripts as $script) { 21 | Libraries::enqueueJavascript($script); 22 | }//endforeach 23 | 24 | $queued_scripts = Libraries::getJavascriptQueue(); 25 | 26 | $this->assertEquals($scripts, $queued_scripts); 27 | } 28 | 29 | public function testCss() { 30 | 31 | $scripts = array( 32 | 'https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css' => 'https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css', 33 | 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css' => 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css', 34 | ); 35 | 36 | foreach($scripts as $script) { 37 | Libraries::enqueueCss($script); 38 | }//endforeach 39 | 40 | $queued_scripts = Libraries::getCssQueue(); 41 | 42 | $this->assertEquals($scripts, $queued_scripts); 43 | } 44 | 45 | public function testLibraries() { 46 | 47 | $libraries = array( 48 | 'library1' => array(), 49 | ); 50 | 51 | foreach($libraries as $key => $options) { 52 | Libraries::addLibrary($key, $options); 53 | } 54 | 55 | $this->assertTrue(true); 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /tests/system/SecurityTest.php: -------------------------------------------------------------------------------- 1 | assertEquals($string, Security::decrypt($result)); 20 | 21 | } 22 | 23 | public function testPasswordHash() { 24 | 25 | $result = Security::hash('abc123'); 26 | 27 | $this -> assertTrue(true); 28 | } 29 | 30 | public function testToken() { 31 | 32 | $length = 10; 33 | 34 | $token = Security::generateToken($length); 35 | 36 | $this -> assertEquals(strlen($token), $length*2); 37 | } 38 | 39 | public function testHMacSignature() { 40 | 41 | $public_key = 'public_key'; 42 | 43 | $private_key = 'private_key'; 44 | 45 | $signature_1 = Security::encodeHmacSignature($public_key, $private_key); 46 | 47 | $signature_2 = Security::encodeHmacSignature($public_key, $private_key); 48 | 49 | $this->assertTrue(hash_equals($signature_1, $signature_2)); 50 | 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /tests/system/SessionTest.php: -------------------------------------------------------------------------------- 1 | assertTrue(true); 24 | 25 | } 26 | 27 | public function testSession() { 28 | $cookie_name = 'test_cookie'; 29 | $cookie_value = 'test_cookie_value'; 30 | 31 | Session::writeSession($cookie_name, $cookie_value); 32 | 33 | $this -> assertEquals($cookie_value, Session::readSession($cookie_name)); 34 | 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /tests/template/HtmlTest.php: -------------------------------------------------------------------------------- 1 | assertEquals('', $result); 15 | } 16 | 17 | public function testStandardAttributes() { 18 | 19 | $options = array( 20 | 'class' => 'bootstrap', 21 | 'id' => 'div1', 22 | 'style' => 'width:300', 23 | 'xml:lang' => 'html5', 24 | 'spellcheck' => 'false', 25 | 'title' => 'Title' 26 | ); 27 | 28 | $result = Html::getStandardAttributes($options); 29 | 30 | $this -> assertEquals('class="bootstrap" id="div1" style="width:300" xml:lang="html5" spellcheck="false" title="Title"', trim($result)); 31 | } 32 | 33 | public function testImageFullUrl() { 34 | $image_url = 'https://avatars2.githubusercontent.com/u/1185218?s=200&v=4'; 35 | 36 | $result = Html::image($image_url); 37 | 38 | $this -> assertEquals('', trim($result)); 39 | } 40 | 41 | public function testImageLocal() { 42 | $image_url = '/img/test.jpeg'; 43 | 44 | $result = Html::image($image_url); 45 | 46 | $this -> assertEquals('', trim($result)); 47 | } 48 | 49 | public function testTimeTag() { 50 | $time = '10:00'; 51 | 52 | $result = Html::time($time); 53 | 54 | $this -> assertEquals('', Tools::removeWhiteSpace($result)); 55 | } 56 | 57 | public function testIframe() { 58 | $src = 'https://github.com/ProdigyView-Toolkit/prodigyview'; 59 | $data = 'HeloWorld'; 60 | 61 | $result = Html::iframe($src, $data); 62 | 63 | $this -> assertEquals('', $result); 64 | } 65 | 66 | 67 | 68 | } 69 | -------------------------------------------------------------------------------- /tests/template/TemplateTest.php: -------------------------------------------------------------------------------- 1 | 'success', 'message' => 'First message'), 10 | array('type' => 'success', 'message' => 'Second message'), 11 | array('type' => 'danger', 'message' => 'Third message'), 12 | array('type' => 'danger', 'message' => 'Fourth message'), 13 | ); 14 | 15 | public function testSiteTitle() { 16 | 17 | $string = 'Site Title'; 18 | 19 | Template::setSiteTitle($string); 20 | 21 | $this -> assertEquals($string, Template::getSiteTitle()); 22 | } 23 | 24 | public function testSiteKeywords() { 25 | 26 | $string = 'Site Keywords'; 27 | 28 | Template::setSiteKeywords($string); 29 | 30 | $this -> assertEquals($string, Template::getSiteKeywords()); 31 | } 32 | 33 | public function testSiteMetaDescription() { 34 | 35 | $string = 'Site Meta Description'; 36 | 37 | Template::setSiteMetaDescription($string); 38 | 39 | $this -> assertEquals($string, Template::getSiteMetaDescription()); 40 | } 41 | 42 | public function testSiteMetaTags() { 43 | 44 | $string = 'Site Meta Tags'; 45 | 46 | Template::setSiteMetaTags($string); 47 | 48 | $this -> assertEquals($string, Template::getSiteMetaTags()); 49 | } 50 | 51 | public function testFlashMessages() { 52 | 53 | $successes = array(); 54 | 55 | foreach($this -> _flashMessages as $message) { 56 | Template::addFlashMessage($message['type'], $message['message']); 57 | 58 | if($message['type'] == 'success') { 59 | $successes[] = $message['message']; 60 | } 61 | 62 | } 63 | 64 | $messages = Template::getFlashMessages('success'); 65 | 66 | $this->assertEquals($messages, $successes); 67 | } 68 | 69 | 70 | } 71 | -------------------------------------------------------------------------------- /tests/util/CacheTest.php: -------------------------------------------------------------------------------- 1 | sys_get_temp_dir () 15 | )); 16 | } 17 | 18 | protected function tearDown(): void { 19 | Cache::deleteCache($this->cacheKey); 20 | } 21 | 22 | public function testCacheNotExist() { 23 | $result = Cache::hasExpired($this->cacheKey); 24 | 25 | $this->assertTrue($result); 26 | } 27 | 28 | public function testCacheNotReadable() { 29 | $result = Cache::readCache($this->cacheKey); 30 | 31 | $this->assertEquals($result, ''); 32 | } 33 | 34 | public function testCacheWrite() { 35 | Cache::writeCache($this->cacheKey, $this->cacheContent); 36 | 37 | $result = Cache::readCache($this->cacheKey); 38 | $this->assertEquals($result,$this->cacheContent); 39 | } 40 | 41 | public function testCacheDelete() { 42 | Cache::deleteCache($this->cacheKey); 43 | 44 | $result = Cache::readCache($this->cacheKey); 45 | $this->assertEquals($result, ''); 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /tests/util/CliTest.php: -------------------------------------------------------------------------------- 1 | 'file.php --file=test.text --path=none', 15 | 'output' => array( 16 | 'file' => 'test.text', 17 | 'path' => 'none' 18 | ), 19 | ); 20 | 21 | private function convertStringToArgv($string) { 22 | preg_match_all('/(?<=^|\s)([\'"]?)(.+?)(?convertStringToArgv($this->_command_line_1['input'])); 29 | 30 | $this->assertTrue($this -> arrays_are_similar($output, $this->_command_line_1['output'])); 31 | } 32 | 33 | /** 34 | * Determine if two associative arrays are similar 35 | * 36 | * Both arrays must have the same indexes with identical values 37 | * without respect to key ordering 38 | * 39 | * @param array $a 40 | * @param array $b 41 | * @return bool 42 | * @author https://stackoverflow.com/questions/3838288/phpunit-assert-two-arrays-are-equal-but-order-of-elements-not-important 43 | */ 44 | private function arrays_are_similar($a, $b) { 45 | // if the indexes don't match, return immediately 46 | if (count(array_diff_assoc($a, $b))) { 47 | return false; 48 | } 49 | // we know that the indexes, but maybe not values, match. 50 | // compare the values between the two arrays 51 | foreach ($a as $k => $v) { 52 | if ($v !== $b[$k]) { 53 | return false; 54 | } 55 | } 56 | // we have identical indexes, and no unequal values 57 | return true; 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /tests/util/ConversionTest.php: -------------------------------------------------------------------------------- 1 | SLOT 1SLOT 2child1Chid 2'; 20 | 21 | protected function setUp(): void { 22 | $this -> _testArray = array('slot_1' => 'SLOT 1', 123 => 'SLOT 2', 'sub' => array('child1', 'one' => 'Chid 2')); 23 | 24 | $this -> _testObject = (object) array('slot_1' => 'SLOT 1', 123 => 'SLOT 2', 'sub' => (object) array('child1', 'one' => 'Chid 2')); 25 | } 26 | 27 | public function testObjectToArray() { 28 | 29 | $output = Conversions::objectToArray($this -> _testObject); 30 | 31 | $this->assertEquals($output, $this -> _testArray); 32 | 33 | $this->assertCount(3, $output); 34 | } 35 | 36 | public function testArrayToObject() { 37 | 38 | $output = Conversions::arrayToObject($this -> _testArray); 39 | 40 | $this->assertEquals($output, $this -> _testObject); 41 | 42 | $this->assertCount(3, (array)$output); 43 | } 44 | 45 | public function testArrayToXML() { 46 | 47 | $output = Conversions::arrayToXml($this -> _testArray); 48 | 49 | $this->assertEquals($output, $this -> _testXML); 50 | 51 | } 52 | 53 | public function testXmlToArray() { 54 | 55 | $output = Conversions::xmlToArray($this -> _testXML); 56 | 57 | Tools::replaceKeyNamesInArray($output, 'item_', ''); 58 | 59 | $this->assertEquals($output, $this -> _testArray); 60 | } 61 | 62 | public function testEncodingSameArray() { 63 | 64 | $output = $this -> _testArray; 65 | Conversions::encodeRecursive($output); 66 | 67 | $this->assertEquals($output, $this -> _testArray); 68 | } 69 | 70 | public function testEncodingDifferentArray() { 71 | 72 | $output = $this -> _testArray; 73 | Conversions::encodeRecursive($output,'EUC-JP'); 74 | 75 | $this->assertEquals($output, $this -> _testArray); 76 | } 77 | 78 | } 79 | -------------------------------------------------------------------------------- /tests/util/FileManagerTest.php: -------------------------------------------------------------------------------- 1 | _test_dir)) { 25 | mkdir($this -> _test_dir); 26 | } 27 | } 28 | 29 | protected function tearDown(): void { 30 | FileManager::deleteDirectory($this -> _test_dir); 31 | } 32 | 33 | public function testFileSizePerl() { 34 | 35 | $file_name = $this -> _test_dir.'perl_file_test.txt'; 36 | $size = 500; 37 | 38 | if(!file_exists($file_name)) { 39 | $fp = fopen($file_name, 'w'); 40 | fseek($fp, $size-1,SEEK_CUR); 41 | fwrite($fp,'a'); 42 | fclose($fp); 43 | } 44 | 45 | $perl_size = FileManager::getFileSize_PERL($file_name); 46 | 47 | $this->assertEquals($perl_size, $size); 48 | } 49 | 50 | public function testFileCount() { 51 | $folder = $this -> _test_dir.'file_count/'; 52 | 53 | if(!file_exists($folder)) { 54 | mkdir($folder); 55 | } 56 | 57 | foreach($this -> _random_files as $file) { 58 | $tmp_file = $folder.$file; 59 | 60 | if(!file_exists($tmp_file)) { 61 | $fp = fopen($tmp_file, "w"); 62 | fclose($fp); 63 | 64 | } 65 | }//endforeach 66 | 67 | $found_files = FileManager::getFilesInDirectory($folder); 68 | 69 | 70 | $this->assertEquals(count($found_files), count($this -> _random_files)); 71 | } 72 | 73 | public function testWriteFile() { 74 | $stored_file = $this -> _test_dir.'stored_file.txt'; 75 | 76 | FileManager::writeFile($stored_file, 'PHP Unit Tests'); 77 | 78 | $this->assertTrue(file_exists($stored_file)); 79 | } 80 | 81 | public function testWillNotWriteOverExisting() { 82 | 83 | $stored_file = $this -> _test_dir.'stored_file.txt'; 84 | 85 | FileManager::writeFile($stored_file, 'PHP Unit Tests'); 86 | 87 | $result = FileManager::writeNewFile($stored_file, 'PHP Unit Tests'); 88 | 89 | $this->assertFalse($result); 90 | 91 | } 92 | 93 | public function testCreateRandomNewFile() { 94 | 95 | $stored_file = $this -> _test_dir. Tools::generateRandomString(30) .'.txt'; 96 | 97 | $result = FileManager::writeNewFile($stored_file, 'PHP Unit Tests'); 98 | 99 | $this->assertTrue(file_exists($stored_file)); 100 | 101 | } 102 | 103 | public function testFileContent() { 104 | 105 | $stored_file = $this -> _test_dir. 'test_contents.txt'; 106 | 107 | $content = 'ProdigyView is awesome!'; 108 | 109 | FileManager::writeNewFile($stored_file, $content); 110 | 111 | $read_contents = FileManager::readFile($stored_file); 112 | 113 | $this->assertEquals($read_contents, $content); 114 | 115 | } 116 | 117 | 118 | } 119 | -------------------------------------------------------------------------------- /tests/util/LogTest.php: -------------------------------------------------------------------------------- 1 | _test_dir)) { 13 | mkdir($this -> _test_dir); 14 | } 15 | 16 | Log::init(array('directory' => $this -> _test_dir)); 17 | } 18 | 19 | protected function tearDown(): void { 20 | FileManager::deleteDirectory($this -> _test_dir); 21 | } 22 | 23 | public function testWriteLog() { 24 | $result = Log::writeLog('Low', 'Testing Low Log Message'); 25 | 26 | $this -> assertTrue($result); 27 | } 28 | 29 | public function testReadLog() { 30 | $priority = 'High'; 31 | $message = 'Testing High Log Message'; 32 | 33 | Log::writeLog($priority, $message); 34 | 35 | $log = Log::readLog($priority); 36 | 37 | $this -> assertTrue((strpos($log, $priority) !== false && strpos($log, $message) !== false)); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /tests/util/ToolsTest.php: -------------------------------------------------------------------------------- 1 | array( 11 | 'food' => array( 12 | 'eggs', 13 | 'bacon' 14 | ), 15 | 'drinks' => array( 16 | 'coffee', 17 | 'tea' 18 | ) 19 | ), 20 | 'dinner' => array( 21 | 'food' => array( 22 | 'steak', 23 | 'bread' 24 | ), 25 | 'drinks' => array( 26 | 'wine', 27 | 'juice' 28 | ) 29 | ), 30 | ); 31 | 32 | public function testRandomString() { 33 | 34 | $length = 20; 35 | 36 | $result = Tools::generateRandomString($length); 37 | 38 | $this->assertEquals(strlen($result), $length); 39 | } 40 | 41 | public function testTruncateText() { 42 | $length = 15; 43 | 44 | $text = 'Everything should be like a Tweet. No one likes long paragraphs'; 45 | 46 | $text = Tools::truncateText($text, $length, $trailing = '---'); 47 | 48 | $this->assertEquals('Everything shou---', $text); 49 | } 50 | 51 | public function testTruncateTextWithAllHtml() { 52 | $length = 15; 53 | 54 | $text = '

Everything should be like a Tweet. No one likes long paragraphs

'; 55 | 56 | $text = Tools::truncateText($text, $length, $trailing = '-.-', false); 57 | 58 | $this->assertEquals('

Ever-.-', $text); 59 | } 60 | 61 | public function testTruncateTextWithLimitedHtml() { 62 | $length = 15; 63 | 64 | $text = '

Everything should be like a Tweet. No one likes long paragraphs

'; 65 | 66 | $text = Tools::truncateText($text, $length, $trailing = '...', true, '

'); 67 | 68 | $this->assertEquals('

Everything s...', $text); 69 | } 70 | 71 | public function testArrayRecursiveFound() { 72 | 73 | $result = Tools::arraySearchRecursive('wine',$this -> _largeArray); 74 | 75 | $this -> assertNotEmpty($result); 76 | } 77 | 78 | public function testArrayRecursiveNotFound() { 79 | 80 | $result = Tools::arraySearchRecursive('chicken',$this -> _largeArray); 81 | 82 | $this -> assertFalse($result); 83 | } 84 | 85 | public function testRemoveWhiteSpace() { 86 | $string = "

Hello \t\n\r\x0B World

"; 87 | 88 | $result = Tools::removeWhiteSpace($string); 89 | 90 | $this -> assertEquals("

HelloWorld

", $result); 91 | } 92 | 93 | public function testRemoveNonAscii() { 94 | $string = "Hello’\0World

"; 95 | 96 | $result = Tools::removeNonAsciiCharacters($string); 97 | 98 | $this -> assertEquals("

HelloWorld

", $result); 99 | } 100 | 101 | public function testArrayKeyReplace() { 102 | 103 | $data = $this -> _largeArray; 104 | 105 | Tools::replaceKeyNamesInArray($data, 'breakfast', 'desayuna'); 106 | Tools::replaceKeyNamesInArray($data, 'drinks', 'bebidas'); 107 | 108 | $this->assertEquals($this -> _largeArray['breakfast']['drinks'], $data['desayuna']['bebidas']); 109 | } 110 | 111 | } 112 | --------------------------------------------------------------------------------