powerdlz23 1.1.6 → 1.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Zefoy-Automation/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- package/Zefoy-Automation/README.md +134 -0
- package/Zefoy-Automation/captcha.png +0 -0
- package/Zefoy-Automation/donation-userlist.md +7 -0
- package/Zefoy-Automation/main.py +257 -0
- package/Zefoy-Automation/output/Zefoy Automation for Windows.exe +0 -0
- package/Zefoy-Automation/requirements.txt +5 -0
- package/Zefoy-Automation/src/captcha.png +0 -0
- package/Zefoy-Automation/src/process.py +269 -0
- package/package.json +1 -1
- package/pto/yaamp/README.md +70 -0
- package/pto/yaamp/blocknotify/blocknotify.cpp +90 -0
- package/pto/yaamp/config/blake.conf +16 -0
- package/pto/yaamp/config/fresh.conf +16 -0
- package/pto/yaamp/config/groestl.conf +16 -0
- package/pto/yaamp/config/keccak.conf +16 -0
- package/pto/yaamp/config/lyra2.conf +16 -0
- package/pto/yaamp/config/neo.conf +16 -0
- package/pto/yaamp/config/nist5.conf +16 -0
- package/pto/yaamp/config/quark.conf +16 -0
- package/pto/yaamp/config/qubit.conf +16 -0
- package/pto/yaamp/config/run.sh +12 -0
- package/pto/yaamp/config/scrypt.conf +16 -0
- package/pto/yaamp/config/scryptn.conf +16 -0
- package/pto/yaamp/config/sha.conf +17 -0
- package/pto/yaamp/config/skein.conf +16 -0
- package/pto/yaamp/config/x11.conf +16 -0
- package/pto/yaamp/config/x13.conf +16 -0
- package/pto/yaamp/config/x14.conf +16 -0
- package/pto/yaamp/config/x15.conf +16 -0
- package/pto/yaamp/rc.local +30 -0
- package/pto/yaamp/stratum/algos/Lyra2.c +208 -0
- package/pto/yaamp/stratum/algos/Lyra2.h +50 -0
- package/pto/yaamp/stratum/algos/Lyra2RE.c +70 -0
- package/pto/yaamp/stratum/algos/Lyra2RE.h +16 -0
- package/pto/yaamp/stratum/algos/Sponge.c +745 -0
- package/pto/yaamp/stratum/algos/Sponge.h +115 -0
- package/pto/yaamp/stratum/algos/blake.c +16 -0
- package/pto/yaamp/stratum/algos/blake.h +16 -0
- package/pto/yaamp/stratum/algos/fresh.c +44 -0
- package/pto/yaamp/stratum/algos/fresh.h +16 -0
- package/pto/yaamp/stratum/algos/groestl.c +41 -0
- package/pto/yaamp/stratum/algos/groestl.h +18 -0
- package/pto/yaamp/stratum/algos/jha.c +135 -0
- package/pto/yaamp/stratum/algos/jha.h +16 -0
- package/pto/yaamp/stratum/algos/keccak.c +32 -0
- package/pto/yaamp/stratum/algos/keccak.h +16 -0
- package/pto/yaamp/stratum/algos/makefile +32 -0
- package/pto/yaamp/stratum/algos/neoscrypt.c +962 -0
- package/pto/yaamp/stratum/algos/neoscrypt.h +33 -0
- package/pto/yaamp/stratum/algos/nist5.c +47 -0
- package/pto/yaamp/stratum/algos/nist5.h +16 -0
- package/pto/yaamp/stratum/algos/quark.c +210 -0
- package/pto/yaamp/stratum/algos/quark.h +16 -0
- package/pto/yaamp/stratum/algos/qubit.c +44 -0
- package/pto/yaamp/stratum/algos/qubit.h +17 -0
- package/pto/yaamp/stratum/algos/scrypt.c +681 -0
- package/pto/yaamp/stratum/algos/scryptn.c +257 -0
- package/pto/yaamp/stratum/algos/scryptn.h +16 -0
- package/pto/yaamp/stratum/algos/sha256.c +287 -0
- package/pto/yaamp/stratum/algos/sha256.h +440 -0
- package/pto/yaamp/stratum/algos/skein.c +27 -0
- package/pto/yaamp/stratum/algos/skein.h +16 -0
- package/pto/yaamp/stratum/algos/whirlpoolx.c +44 -0
- package/pto/yaamp/stratum/algos/whirlpoolx.h +16 -0
- package/pto/yaamp/stratum/algos/x11.c +85 -0
- package/pto/yaamp/stratum/algos/x11.h +16 -0
- package/pto/yaamp/stratum/algos/x13.c +98 -0
- package/pto/yaamp/stratum/algos/x13.h +16 -0
- package/pto/yaamp/stratum/algos/x14.c +102 -0
- package/pto/yaamp/stratum/algos/x14.h +16 -0
- package/pto/yaamp/stratum/algos/x15.c +106 -0
- package/pto/yaamp/stratum/algos/x15.h +16 -0
- package/pto/yaamp/stratum/algos/zr5.c +104 -0
- package/pto/yaamp/stratum/algos/zr5.h +17 -0
- package/pto/yaamp/stratum/base58.cpp +99 -0
- package/pto/yaamp/stratum/client.cpp +432 -0
- package/pto/yaamp/stratum/client.h +142 -0
- package/pto/yaamp/stratum/client_core.cpp +312 -0
- package/pto/yaamp/stratum/client_difficulty.cpp +105 -0
- package/pto/yaamp/stratum/client_submit.cpp +304 -0
- package/pto/yaamp/stratum/coinbase.cpp +139 -0
- package/pto/yaamp/stratum/coind.cpp +188 -0
- package/pto/yaamp/stratum/coind.h +97 -0
- package/pto/yaamp/stratum/coind_aux.cpp +107 -0
- package/pto/yaamp/stratum/coind_submit.cpp +113 -0
- package/pto/yaamp/stratum/coind_template.cpp +309 -0
- package/pto/yaamp/stratum/db.cpp +418 -0
- package/pto/yaamp/stratum/db.h +32 -0
- package/pto/yaamp/stratum/iniparser/AUTHORS +6 -0
- package/pto/yaamp/stratum/iniparser/INSTALL +15 -0
- package/pto/yaamp/stratum/iniparser/LICENSE +21 -0
- package/pto/yaamp/stratum/iniparser/Makefile +72 -0
- package/pto/yaamp/stratum/iniparser/README +12 -0
- package/pto/yaamp/stratum/iniparser/doc/Makefile +16 -0
- package/pto/yaamp/stratum/iniparser/doc/iniparser.dox +81 -0
- package/pto/yaamp/stratum/iniparser/doc/iniparser.main +207 -0
- package/pto/yaamp/stratum/iniparser/html/doxygen.css +545 -0
- package/pto/yaamp/stratum/iniparser/html/doxygen.png +0 -0
- package/pto/yaamp/stratum/iniparser/html/globals_func.html +64 -0
- package/pto/yaamp/stratum/iniparser/html/index.html +101 -0
- package/pto/yaamp/stratum/iniparser/html/iniparser_8h.html +583 -0
- package/pto/yaamp/stratum/iniparser/html/iniparser_8main.html +19 -0
- package/pto/yaamp/stratum/iniparser/html/tab_b.gif +0 -0
- package/pto/yaamp/stratum/iniparser/html/tab_l.gif +0 -0
- package/pto/yaamp/stratum/iniparser/html/tab_r.gif +0 -0
- package/pto/yaamp/stratum/iniparser/html/tabs.css +105 -0
- package/pto/yaamp/stratum/iniparser/src/dictionary.c +402 -0
- package/pto/yaamp/stratum/iniparser/src/dictionary.h +185 -0
- package/pto/yaamp/stratum/iniparser/src/iniparser.c +904 -0
- package/pto/yaamp/stratum/iniparser/src/iniparser.h +315 -0
- package/pto/yaamp/stratum/iniparser/test/Makefile +27 -0
- package/pto/yaamp/stratum/iniparser/test/iniexample.c +100 -0
- package/pto/yaamp/stratum/iniparser/test/parse.c +24 -0
- package/pto/yaamp/stratum/iniparser/test/twisted-errors.ini +9 -0
- package/pto/yaamp/stratum/iniparser/test/twisted-genhuge.py +12 -0
- package/pto/yaamp/stratum/iniparser/test/twisted-ofkey.ini +66 -0
- package/pto/yaamp/stratum/iniparser/test/twisted-ofval.ini +56 -0
- package/pto/yaamp/stratum/iniparser/test/twisted.ini +131 -0
- package/pto/yaamp/stratum/job.cpp +324 -0
- package/pto/yaamp/stratum/job.h +120 -0
- package/pto/yaamp/stratum/job_core.cpp +132 -0
- package/pto/yaamp/stratum/job_send.cpp +162 -0
- package/pto/yaamp/stratum/json.cpp +980 -0
- package/pto/yaamp/stratum/json.h +271 -0
- package/pto/yaamp/stratum/list.cpp +165 -0
- package/pto/yaamp/stratum/makefile +53 -0
- package/pto/yaamp/stratum/merkle.cpp +86 -0
- package/pto/yaamp/stratum/object.cpp +73 -0
- package/pto/yaamp/stratum/object.h +25 -0
- package/pto/yaamp/stratum/remote.cpp +301 -0
- package/pto/yaamp/stratum/remote.h +96 -0
- package/pto/yaamp/stratum/remote_template.cpp +138 -0
- package/pto/yaamp/stratum/rpc.cpp +270 -0
- package/pto/yaamp/stratum/rpc.h +32 -0
- package/pto/yaamp/stratum/sha3/aes_helper.c +392 -0
- package/pto/yaamp/stratum/sha3/hamsi_helper.c +39648 -0
- package/pto/yaamp/stratum/sha3/libhash.a +0 -0
- package/pto/yaamp/stratum/sha3/makefile +34 -0
- package/pto/yaamp/stratum/sha3/md_helper.c +347 -0
- package/pto/yaamp/stratum/sha3/sph_blake.c +1127 -0
- package/pto/yaamp/stratum/sha3/sph_blake.h +327 -0
- package/pto/yaamp/stratum/sha3/sph_bmw.c +965 -0
- package/pto/yaamp/stratum/sha3/sph_bmw.h +328 -0
- package/pto/yaamp/stratum/sha3/sph_cubehash.c +723 -0
- package/pto/yaamp/stratum/sha3/sph_cubehash.h +292 -0
- package/pto/yaamp/stratum/sha3/sph_echo.c +1031 -0
- package/pto/yaamp/stratum/sha3/sph_echo.h +320 -0
- package/pto/yaamp/stratum/sha3/sph_fugue.c +1208 -0
- package/pto/yaamp/stratum/sha3/sph_fugue.h +81 -0
- package/pto/yaamp/stratum/sha3/sph_groestl.c +3119 -0
- package/pto/yaamp/stratum/sha3/sph_groestl.h +329 -0
- package/pto/yaamp/stratum/sha3/sph_hamsi.c +867 -0
- package/pto/yaamp/stratum/sha3/sph_hamsi.h +322 -0
- package/pto/yaamp/stratum/sha3/sph_hefty1.c +378 -0
- package/pto/yaamp/stratum/sha3/sph_hefty1.h +66 -0
- package/pto/yaamp/stratum/sha3/sph_jh.c +1116 -0
- package/pto/yaamp/stratum/sha3/sph_jh.h +298 -0
- package/pto/yaamp/stratum/sha3/sph_keccak.c +1824 -0
- package/pto/yaamp/stratum/sha3/sph_keccak.h +293 -0
- package/pto/yaamp/stratum/sha3/sph_luffa.c +1426 -0
- package/pto/yaamp/stratum/sha3/sph_luffa.h +296 -0
- package/pto/yaamp/stratum/sha3/sph_shabal.c +806 -0
- package/pto/yaamp/stratum/sha3/sph_shabal.h +344 -0
- package/pto/yaamp/stratum/sha3/sph_shavite.c +1764 -0
- package/pto/yaamp/stratum/sha3/sph_shavite.h +314 -0
- package/pto/yaamp/stratum/sha3/sph_simd.c +1799 -0
- package/pto/yaamp/stratum/sha3/sph_simd.h +309 -0
- package/pto/yaamp/stratum/sha3/sph_skein.c +1254 -0
- package/pto/yaamp/stratum/sha3/sph_skein.h +298 -0
- package/pto/yaamp/stratum/sha3/sph_types.h +1976 -0
- package/pto/yaamp/stratum/sha3/sph_whirlpool.c +3480 -0
- package/pto/yaamp/stratum/sha3/sph_whirlpool.h +209 -0
- package/pto/yaamp/stratum/share.cpp +279 -0
- package/pto/yaamp/stratum/share.h +106 -0
- package/pto/yaamp/stratum/socket.cpp +159 -0
- package/pto/yaamp/stratum/socket.h +28 -0
- package/pto/yaamp/stratum/stratum.cpp +321 -0
- package/pto/yaamp/stratum/stratum.h +141 -0
- package/pto/yaamp/stratum/user.cpp +104 -0
- package/pto/yaamp/stratum/util.cpp +666 -0
- package/pto/yaamp/stratum/util.h +127 -0
- package/pto/yaamp/web/.project +22 -0
- package/pto/yaamp/web/blocks.sh +10 -0
- package/pto/yaamp/web/extensions/jqplot/MIT-LICENSE.txt +21 -0
- package/pto/yaamp/web/extensions/jqplot/README.txt +77 -0
- package/pto/yaamp/web/extensions/jqplot/changes.txt +458 -0
- package/pto/yaamp/web/extensions/jqplot/copyright.txt +56 -0
- package/pto/yaamp/web/extensions/jqplot/excanvas.js +1438 -0
- package/pto/yaamp/web/extensions/jqplot/excanvas.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/gpl-2.0.txt +280 -0
- package/pto/yaamp/web/extensions/jqplot/jqPlotCssStyling.txt +53 -0
- package/pto/yaamp/web/extensions/jqplot/jqPlotOptions.txt +391 -0
- package/pto/yaamp/web/extensions/jqplot/jquery.jqplot.css +259 -0
- package/pto/yaamp/web/extensions/jqplot/jquery.jqplot.js +11411 -0
- package/pto/yaamp/web/extensions/jqplot/jquery.jqplot.min.css +1 -0
- package/pto/yaamp/web/extensions/jqplot/jquery.jqplot.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/optionsTutorial.txt +243 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.BezierCurveRenderer.js +314 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.BezierCurveRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.barRenderer.js +801 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.barRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.blockRenderer.js +235 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.blockRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.bubbleRenderer.js +759 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.bubbleRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.canvasAxisLabelRenderer.js +203 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.canvasAxisTickRenderer.js +253 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.canvasOverlay.js +1021 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.canvasOverlay.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.canvasTextRenderer.js +449 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.canvasTextRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.categoryAxisRenderer.js +679 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.categoryAxisRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.ciParser.js +116 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.ciParser.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.cursor.js +1108 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.cursor.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.dateAxisRenderer.js +741 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.dateAxisRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.donutRenderer.js +805 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.donutRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.dragable.js +225 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.dragable.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.enhancedLegendRenderer.js +305 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.funnelRenderer.js +943 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.funnelRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.highlighter.js +465 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.highlighter.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.json2.js +475 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.json2.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.logAxisRenderer.js +534 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.logAxisRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.mekkoAxisRenderer.js +611 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.mekkoRenderer.js +437 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.mekkoRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.meterGaugeRenderer.js +1029 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.meterGaugeRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.mobile.js +45 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.mobile.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.ohlcRenderer.js +373 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.ohlcRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pieRenderer.js +904 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pieRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pointLabels.js +377 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pointLabels.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pyramidAxisRenderer.js +728 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pyramidAxisRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pyramidGridRenderer.js +429 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pyramidGridRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pyramidRenderer.js +514 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pyramidRenderer.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.trendline.js +223 -0
- package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.trendline.min.js +3 -0
- package/pto/yaamp/web/extensions/jqplot/usage.txt +126 -0
- package/pto/yaamp/web/extensions/jquery/js/jquery-1.10.2.min.js +6 -0
- package/pto/yaamp/web/extensions/jquery/js/jquery-1.8.3-dev.js +9472 -0
- package/pto/yaamp/web/extensions/jquery/js/jquery-ui-1.10.3.custom.min.js +7 -0
- package/pto/yaamp/web/extensions/jquery/js/jquery-ui-1.9.1.custom.min.js +6 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/animated-overlay.gif +0 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery-ui.css +1178 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.accordion.css +38 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.all.css +12 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.autocomplete.css +16 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.base.css +25 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.button.css +114 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.core.css +93 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.datepicker.css +178 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.dialog.css +69 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.menu.css +79 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.progressbar.css +28 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.resizable.css +78 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.selectable.css +15 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.slider.css +73 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.spinner.css +65 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.tabs.css +52 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.theme.css +406 -0
- package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.tooltip.css +19 -0
- package/pto/yaamp/web/favicon.ico +0 -0
- package/pto/yaamp/web/framework-1.0.8/.htaccess +1 -0
- package/pto/yaamp/web/framework-1.0.8/YiiBase.php +684 -0
- package/pto/yaamp/web/framework-1.0.8/base/CApplication.php +718 -0
- package/pto/yaamp/web/framework-1.0.8/base/CApplicationComponent.php +56 -0
- package/pto/yaamp/web/framework-1.0.8/base/CBehavior.php +87 -0
- package/pto/yaamp/web/framework-1.0.8/base/CComponent.php +599 -0
- package/pto/yaamp/web/framework-1.0.8/base/CErrorEvent.php +54 -0
- package/pto/yaamp/web/framework-1.0.8/base/CErrorHandler.php +336 -0
- package/pto/yaamp/web/framework-1.0.8/base/CException.php +22 -0
- package/pto/yaamp/web/framework-1.0.8/base/CExceptionEvent.php +36 -0
- package/pto/yaamp/web/framework-1.0.8/base/CHttpException.php +40 -0
- package/pto/yaamp/web/framework-1.0.8/base/CModel.php +634 -0
- package/pto/yaamp/web/framework-1.0.8/base/CModelBehavior.php +54 -0
- package/pto/yaamp/web/framework-1.0.8/base/CModelEvent.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/base/CModule.php +465 -0
- package/pto/yaamp/web/framework-1.0.8/base/CSecurityManager.php +245 -0
- package/pto/yaamp/web/framework-1.0.8/base/CStatePersister.php +102 -0
- package/pto/yaamp/web/framework-1.0.8/base/interfaces.php +534 -0
- package/pto/yaamp/web/framework-1.0.8/caching/CApcCache.php +108 -0
- package/pto/yaamp/web/framework-1.0.8/caching/CCache.php +312 -0
- package/pto/yaamp/web/framework-1.0.8/caching/CDbCache.php +250 -0
- package/pto/yaamp/web/framework-1.0.8/caching/CDummyCache.php +145 -0
- package/pto/yaamp/web/framework-1.0.8/caching/CEAcceleratorCache.php +104 -0
- package/pto/yaamp/web/framework-1.0.8/caching/CFileCache.php +217 -0
- package/pto/yaamp/web/framework-1.0.8/caching/CMemCache.php +272 -0
- package/pto/yaamp/web/framework-1.0.8/caching/CXCache.php +97 -0
- package/pto/yaamp/web/framework-1.0.8/caching/CZendDataCache.php +98 -0
- package/pto/yaamp/web/framework-1.0.8/caching/dependencies/CCacheDependency.php +62 -0
- package/pto/yaamp/web/framework-1.0.8/caching/dependencies/CChainedCacheDependency.php +68 -0
- package/pto/yaamp/web/framework-1.0.8/caching/dependencies/CDbCacheDependency.php +87 -0
- package/pto/yaamp/web/framework-1.0.8/caching/dependencies/CDirectoryCacheDependency.php +134 -0
- package/pto/yaamp/web/framework-1.0.8/caching/dependencies/CExpressionDependency.php +49 -0
- package/pto/yaamp/web/framework-1.0.8/caching/dependencies/CFileCacheDependency.php +53 -0
- package/pto/yaamp/web/framework-1.0.8/caching/dependencies/CGlobalStateCacheDependency.php +54 -0
- package/pto/yaamp/web/framework-1.0.8/collections/CAttributeCollection.php +187 -0
- package/pto/yaamp/web/framework-1.0.8/collections/CConfiguration.php +121 -0
- package/pto/yaamp/web/framework-1.0.8/collections/CList.php +341 -0
- package/pto/yaamp/web/framework-1.0.8/collections/CListIterator.php +94 -0
- package/pto/yaamp/web/framework-1.0.8/collections/CMap.php +319 -0
- package/pto/yaamp/web/framework-1.0.8/collections/CMapIterator.php +93 -0
- package/pto/yaamp/web/framework-1.0.8/collections/CQueue.php +168 -0
- package/pto/yaamp/web/framework-1.0.8/collections/CQueueIterator.php +94 -0
- package/pto/yaamp/web/framework-1.0.8/collections/CStack.php +169 -0
- package/pto/yaamp/web/framework-1.0.8/collections/CStackIterator.php +94 -0
- package/pto/yaamp/web/framework-1.0.8/collections/CTypedList.php +52 -0
- package/pto/yaamp/web/framework-1.0.8/db/CDbCommand.php +326 -0
- package/pto/yaamp/web/framework-1.0.8/db/CDbConnection.php +645 -0
- package/pto/yaamp/web/framework-1.0.8/db/CDbDataReader.php +221 -0
- package/pto/yaamp/web/framework-1.0.8/db/CDbException.php +21 -0
- package/pto/yaamp/web/framework-1.0.8/db/CDbTransaction.php +108 -0
- package/pto/yaamp/web/framework-1.0.8/db/ar/CActiveFinder.php +1359 -0
- package/pto/yaamp/web/framework-1.0.8/db/ar/CActiveRecord.php +2212 -0
- package/pto/yaamp/web/framework-1.0.8/db/ar/CActiveRecordBehavior.php +96 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/CDbColumnSchema.php +143 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/CDbCommandBuilder.php +664 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/CDbCriteria.php +166 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/CDbExpression.php +49 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/CDbSchema.php +203 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/CDbTableSchema.php +76 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/mssql/CMssqlColumnSchema.php +55 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/mssql/CMssqlCommandBuilder.php +304 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/mssql/CMssqlPdoAdapter.php +74 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/mssql/CMssqlSchema.php +310 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/mssql/CMssqlTableSchema.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/mysql/CMysqlColumnSchema.php +46 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/mysql/CMysqlSchema.php +201 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/mysql/CMysqlTableSchema.php +26 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/oci/COciColumnSchema.php +54 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/oci/COciCommandBuilder.php +122 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/oci/COciSchema.php +276 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/oci/COciTableSchema.php +26 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/pgsql/CPgsqlColumnSchema.php +56 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/pgsql/CPgsqlSchema.php +282 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/pgsql/CPgsqlTableSchema.php +25 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/sqlite/CSqliteColumnSchema.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/sqlite/CSqliteCommandBuilder.php +41 -0
- package/pto/yaamp/web/framework-1.0.8/db/schema/sqlite/CSqliteSchema.php +129 -0
- package/pto/yaamp/web/framework-1.0.8/i18n/CChoiceFormat.php +77 -0
- package/pto/yaamp/web/framework-1.0.8/i18n/CDateFormatter.php +507 -0
- package/pto/yaamp/web/framework-1.0.8/i18n/CDbMessageSource.php +114 -0
- package/pto/yaamp/web/framework-1.0.8/i18n/CGettextMessageSource.php +111 -0
- package/pto/yaamp/web/framework-1.0.8/i18n/CLocale.php +243 -0
- package/pto/yaamp/web/framework-1.0.8/i18n/CMessageSource.php +157 -0
- package/pto/yaamp/web/framework-1.0.8/i18n/CNumberFormatter.php +280 -0
- package/pto/yaamp/web/framework-1.0.8/i18n/CPhpMessageSource.php +96 -0
- package/pto/yaamp/web/framework-1.0.8/i18n/gettext/CGettextFile.php +36 -0
- package/pto/yaamp/web/framework-1.0.8/i18n/gettext/CGettextMoFile.php +269 -0
- package/pto/yaamp/web/framework-1.0.8/i18n/gettext/CGettextPoFile.php +89 -0
- package/pto/yaamp/web/framework-1.0.8/logging/CDbLogRoute.php +168 -0
- package/pto/yaamp/web/framework-1.0.8/logging/CEmailLogRoute.php +122 -0
- package/pto/yaamp/web/framework-1.0.8/logging/CFileLogRoute.php +162 -0
- package/pto/yaamp/web/framework-1.0.8/logging/CLogFilter.php +103 -0
- package/pto/yaamp/web/framework-1.0.8/logging/CLogRoute.php +107 -0
- package/pto/yaamp/web/framework-1.0.8/logging/CLogRouter.php +107 -0
- package/pto/yaamp/web/framework-1.0.8/logging/CLogger.php +237 -0
- package/pto/yaamp/web/framework-1.0.8/logging/CProfileLogRoute.php +201 -0
- package/pto/yaamp/web/framework-1.0.8/logging/CWebLogRoute.php +57 -0
- package/pto/yaamp/web/framework-1.0.8/messages/bg/yii.php +213 -0
- package/pto/yaamp/web/framework-1.0.8/messages/config.php +19 -0
- package/pto/yaamp/web/framework-1.0.8/messages/de/yii.php +221 -0
- package/pto/yaamp/web/framework-1.0.8/messages/el/yii.php +222 -0
- package/pto/yaamp/web/framework-1.0.8/messages/es/yii.php +231 -0
- package/pto/yaamp/web/framework-1.0.8/messages/fr/yii.php +210 -0
- package/pto/yaamp/web/framework-1.0.8/messages/he/yii.php +206 -0
- package/pto/yaamp/web/framework-1.0.8/messages/hu/yii.php +213 -0
- package/pto/yaamp/web/framework-1.0.8/messages/id/yii.php +213 -0
- package/pto/yaamp/web/framework-1.0.8/messages/it/yii.php +208 -0
- package/pto/yaamp/web/framework-1.0.8/messages/ja/yii.php +230 -0
- package/pto/yaamp/web/framework-1.0.8/messages/nl/yii.php +206 -0
- package/pto/yaamp/web/framework-1.0.8/messages/no/yii.php +222 -0
- package/pto/yaamp/web/framework-1.0.8/messages/pl/yii.php +213 -0
- package/pto/yaamp/web/framework-1.0.8/messages/pt/yii.php +213 -0
- package/pto/yaamp/web/framework-1.0.8/messages/ro/yii.php +213 -0
- package/pto/yaamp/web/framework-1.0.8/messages/ru/yii.php +214 -0
- package/pto/yaamp/web/framework-1.0.8/messages/sr_sr/yii.php +205 -0
- package/pto/yaamp/web/framework-1.0.8/messages/sr_yu/yii.php +205 -0
- package/pto/yaamp/web/framework-1.0.8/messages/sv/yii.php +226 -0
- package/pto/yaamp/web/framework-1.0.8/messages/uk/yii.php +213 -0
- package/pto/yaamp/web/framework-1.0.8/messages/vi/yii.php +213 -0
- package/pto/yaamp/web/framework-1.0.8/messages/zh_cn/yii.php +213 -0
- package/pto/yaamp/web/framework-1.0.8/messages/zh_tw/yii.php +207 -0
- package/pto/yaamp/web/framework-1.0.8/utils/CDateTimeParser.php +230 -0
- package/pto/yaamp/web/framework-1.0.8/utils/CFileHelper.php +228 -0
- package/pto/yaamp/web/framework-1.0.8/utils/CMarkdownParser.php +179 -0
- package/pto/yaamp/web/framework-1.0.8/utils/CPropertyValue.php +158 -0
- package/pto/yaamp/web/framework-1.0.8/utils/CTimestamp.php +715 -0
- package/pto/yaamp/web/framework-1.0.8/utils/CVarDumper.php +142 -0
- package/pto/yaamp/web/framework-1.0.8/utils/mimeTypes.php +178 -0
- package/pto/yaamp/web/framework-1.0.8/validators/CCaptchaValidator.php +72 -0
- package/pto/yaamp/web/framework-1.0.8/validators/CCompareValidator.php +151 -0
- package/pto/yaamp/web/framework-1.0.8/validators/CDefaultValueValidator.php +51 -0
- package/pto/yaamp/web/framework-1.0.8/validators/CEmailValidator.php +80 -0
- package/pto/yaamp/web/framework-1.0.8/validators/CExistValidator.php +88 -0
- package/pto/yaamp/web/framework-1.0.8/validators/CFileValidator.php +159 -0
- package/pto/yaamp/web/framework-1.0.8/validators/CFilterValidator.php +49 -0
- package/pto/yaamp/web/framework-1.0.8/validators/CInlineValidator.php +41 -0
- package/pto/yaamp/web/framework-1.0.8/validators/CNumberValidator.php +86 -0
- package/pto/yaamp/web/framework-1.0.8/validators/CRangeValidator.php +53 -0
- package/pto/yaamp/web/framework-1.0.8/validators/CRegularExpressionValidator.php +51 -0
- package/pto/yaamp/web/framework-1.0.8/validators/CRequiredValidator.php +36 -0
- package/pto/yaamp/web/framework-1.0.8/validators/CStringValidator.php +78 -0
- package/pto/yaamp/web/framework-1.0.8/validators/CTypeValidator.php +99 -0
- package/pto/yaamp/web/framework-1.0.8/validators/CUniqueValidator.php +106 -0
- package/pto/yaamp/web/framework-1.0.8/validators/CUrlValidator.php +49 -0
- package/pto/yaamp/web/framework-1.0.8/validators/CValidator.php +194 -0
- package/pto/yaamp/web/framework-1.0.8/vendors/README.html +89 -0
- package/pto/yaamp/web/framework-1.0.8/vendors/adodb/LICENSE.txt +182 -0
- package/pto/yaamp/web/framework-1.0.8/vendors/cldr/LICENSE.txt +33 -0
- package/pto/yaamp/web/framework-1.0.8/vendors/gettext/LICENSE.txt +22 -0
- package/pto/yaamp/web/framework-1.0.8/vendors/json/LICENSE.txt +22 -0
- package/pto/yaamp/web/framework-1.0.8/vendors/markdown/LICENSE.txt +36 -0
- package/pto/yaamp/web/framework-1.0.8/vendors/markdown/markdown.php +2623 -0
- package/pto/yaamp/web/framework-1.0.8/views/de/error.php +38 -0
- package/pto/yaamp/web/framework-1.0.8/views/de/error400.php +34 -0
- package/pto/yaamp/web/framework-1.0.8/views/de/error403.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/de/error404.php +34 -0
- package/pto/yaamp/web/framework-1.0.8/views/de/error500.php +35 -0
- package/pto/yaamp/web/framework-1.0.8/views/de/error503.php +31 -0
- package/pto/yaamp/web/framework-1.0.8/views/de/exception.php +74 -0
- package/pto/yaamp/web/framework-1.0.8/views/de/log-firebug.php +23 -0
- package/pto/yaamp/web/framework-1.0.8/views/de/log.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/de/profile-callstack-firebug.php +19 -0
- package/pto/yaamp/web/framework-1.0.8/views/de/profile-callstack.php +30 -0
- package/pto/yaamp/web/framework-1.0.8/views/de/profile-summary-firebug.php +23 -0
- package/pto/yaamp/web/framework-1.0.8/views/de/profile-summary.php +41 -0
- package/pto/yaamp/web/framework-1.0.8/views/error.php +37 -0
- package/pto/yaamp/web/framework-1.0.8/views/error400.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/error403.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/error404.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/error500.php +35 -0
- package/pto/yaamp/web/framework-1.0.8/views/error503.php +31 -0
- package/pto/yaamp/web/framework-1.0.8/views/es/error.php +37 -0
- package/pto/yaamp/web/framework-1.0.8/views/es/error400.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/es/error403.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/es/error404.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/es/error500.php +35 -0
- package/pto/yaamp/web/framework-1.0.8/views/es/error503.php +31 -0
- package/pto/yaamp/web/framework-1.0.8/views/es/exception.php +74 -0
- package/pto/yaamp/web/framework-1.0.8/views/es/log-firebug.php +23 -0
- package/pto/yaamp/web/framework-1.0.8/views/es/log.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/es/profile-callstack-firebug.php +19 -0
- package/pto/yaamp/web/framework-1.0.8/views/es/profile-callstack.php +30 -0
- package/pto/yaamp/web/framework-1.0.8/views/es/profile-summary-firebug.php +22 -0
- package/pto/yaamp/web/framework-1.0.8/views/es/profile-summary.php +41 -0
- package/pto/yaamp/web/framework-1.0.8/views/exception.php +74 -0
- package/pto/yaamp/web/framework-1.0.8/views/fr/error.php +37 -0
- package/pto/yaamp/web/framework-1.0.8/views/fr/error400.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/fr/error403.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/fr/error404.php +34 -0
- package/pto/yaamp/web/framework-1.0.8/views/fr/error500.php +35 -0
- package/pto/yaamp/web/framework-1.0.8/views/fr/error503.php +31 -0
- package/pto/yaamp/web/framework-1.0.8/views/fr/exception.php +74 -0
- package/pto/yaamp/web/framework-1.0.8/views/fr/log-firebug.php +23 -0
- package/pto/yaamp/web/framework-1.0.8/views/fr/log.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/fr/profile-callstack-firebug.php +19 -0
- package/pto/yaamp/web/framework-1.0.8/views/fr/profile-callstack.php +30 -0
- package/pto/yaamp/web/framework-1.0.8/views/fr/profile-summary-firebug.php +22 -0
- package/pto/yaamp/web/framework-1.0.8/views/fr/profile-summary.php +41 -0
- package/pto/yaamp/web/framework-1.0.8/views/he/error.php +38 -0
- package/pto/yaamp/web/framework-1.0.8/views/he/error400.php +34 -0
- package/pto/yaamp/web/framework-1.0.8/views/he/error403.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/he/error404.php +34 -0
- package/pto/yaamp/web/framework-1.0.8/views/he/error500.php +36 -0
- package/pto/yaamp/web/framework-1.0.8/views/he/error503.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/he/exception.php +75 -0
- package/pto/yaamp/web/framework-1.0.8/views/he/log-firebug.php +23 -0
- package/pto/yaamp/web/framework-1.0.8/views/he/log.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/he/profile-callstack-firebug.php +19 -0
- package/pto/yaamp/web/framework-1.0.8/views/he/profile-callstack.php +30 -0
- package/pto/yaamp/web/framework-1.0.8/views/he/profile-summary-firebug.php +22 -0
- package/pto/yaamp/web/framework-1.0.8/views/he/profile-summary.php +41 -0
- package/pto/yaamp/web/framework-1.0.8/views/id/error.php +37 -0
- package/pto/yaamp/web/framework-1.0.8/views/id/error400.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/id/error403.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/id/error404.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/id/error500.php +35 -0
- package/pto/yaamp/web/framework-1.0.8/views/id/error503.php +31 -0
- package/pto/yaamp/web/framework-1.0.8/views/id/exception.php +74 -0
- package/pto/yaamp/web/framework-1.0.8/views/id/log-firebug.php +23 -0
- package/pto/yaamp/web/framework-1.0.8/views/id/log.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/id/profile-callstack-firebug.php +19 -0
- package/pto/yaamp/web/framework-1.0.8/views/id/profile-callstack.php +30 -0
- package/pto/yaamp/web/framework-1.0.8/views/id/profile-summary-firebug.php +22 -0
- package/pto/yaamp/web/framework-1.0.8/views/id/profile-summary.php +41 -0
- package/pto/yaamp/web/framework-1.0.8/views/ja/error.php +37 -0
- package/pto/yaamp/web/framework-1.0.8/views/ja/error400.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/ja/error403.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/ja/error404.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/ja/error500.php +35 -0
- package/pto/yaamp/web/framework-1.0.8/views/ja/error503.php +31 -0
- package/pto/yaamp/web/framework-1.0.8/views/ja/exception.php +74 -0
- package/pto/yaamp/web/framework-1.0.8/views/ja/log-firebug.php +23 -0
- package/pto/yaamp/web/framework-1.0.8/views/ja/log.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/ja/profile-callstack-firebug.php +19 -0
- package/pto/yaamp/web/framework-1.0.8/views/ja/profile-callstack.php +30 -0
- package/pto/yaamp/web/framework-1.0.8/views/ja/profile-summary-firebug.php +22 -0
- package/pto/yaamp/web/framework-1.0.8/views/ja/profile-summary.php +41 -0
- package/pto/yaamp/web/framework-1.0.8/views/log-firebug.php +23 -0
- package/pto/yaamp/web/framework-1.0.8/views/log.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/nl/error.php +25 -0
- package/pto/yaamp/web/framework-1.0.8/views/nl/error400.php +24 -0
- package/pto/yaamp/web/framework-1.0.8/views/nl/error403.php +24 -0
- package/pto/yaamp/web/framework-1.0.8/views/nl/error404.php +24 -0
- package/pto/yaamp/web/framework-1.0.8/views/nl/error500.php +24 -0
- package/pto/yaamp/web/framework-1.0.8/views/nl/error503.php +24 -0
- package/pto/yaamp/web/framework-1.0.8/views/nl/exception.php +62 -0
- package/pto/yaamp/web/framework-1.0.8/views/nl/log-firebug.php +22 -0
- package/pto/yaamp/web/framework-1.0.8/views/nl/log.php +29 -0
- package/pto/yaamp/web/framework-1.0.8/views/nl/profile-callstack-firebug.php +17 -0
- package/pto/yaamp/web/framework-1.0.8/views/nl/profile-callstack.php +29 -0
- package/pto/yaamp/web/framework-1.0.8/views/nl/profile-summary-firebug.php +20 -0
- package/pto/yaamp/web/framework-1.0.8/views/nl/profile-summary.php +41 -0
- package/pto/yaamp/web/framework-1.0.8/views/no/error.php +37 -0
- package/pto/yaamp/web/framework-1.0.8/views/no/error400.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/no/error403.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/no/error404.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/no/error500.php +35 -0
- package/pto/yaamp/web/framework-1.0.8/views/no/error503.php +31 -0
- package/pto/yaamp/web/framework-1.0.8/views/no/exception.php +74 -0
- package/pto/yaamp/web/framework-1.0.8/views/no/log-firebug.php +23 -0
- package/pto/yaamp/web/framework-1.0.8/views/no/log.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/no/profile-callstack-firebug.php +19 -0
- package/pto/yaamp/web/framework-1.0.8/views/no/profile-callstack.php +30 -0
- package/pto/yaamp/web/framework-1.0.8/views/no/profile-summary-firebug.php +22 -0
- package/pto/yaamp/web/framework-1.0.8/views/no/profile-summary.php +41 -0
- package/pto/yaamp/web/framework-1.0.8/views/profile-callstack-firebug.php +19 -0
- package/pto/yaamp/web/framework-1.0.8/views/profile-callstack.php +30 -0
- package/pto/yaamp/web/framework-1.0.8/views/profile-summary-firebug.php +22 -0
- package/pto/yaamp/web/framework-1.0.8/views/profile-summary.php +41 -0
- package/pto/yaamp/web/framework-1.0.8/views/pt/error.php +37 -0
- package/pto/yaamp/web/framework-1.0.8/views/pt/error400.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/pt/error403.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/pt/error404.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/pt/error500.php +35 -0
- package/pto/yaamp/web/framework-1.0.8/views/pt/error503.php +31 -0
- package/pto/yaamp/web/framework-1.0.8/views/pt/exception.php +74 -0
- package/pto/yaamp/web/framework-1.0.8/views/pt/log-firebug.php +23 -0
- package/pto/yaamp/web/framework-1.0.8/views/pt/log.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/pt/profile-callstack-firebug.php +19 -0
- package/pto/yaamp/web/framework-1.0.8/views/pt/profile-callstack.php +30 -0
- package/pto/yaamp/web/framework-1.0.8/views/pt/profile-summary-firebug.php +22 -0
- package/pto/yaamp/web/framework-1.0.8/views/pt/profile-summary.php +41 -0
- package/pto/yaamp/web/framework-1.0.8/views/ro/error.php +37 -0
- package/pto/yaamp/web/framework-1.0.8/views/ro/error400.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/ro/error403.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/ro/error404.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/ro/error500.php +35 -0
- package/pto/yaamp/web/framework-1.0.8/views/ro/error503.php +31 -0
- package/pto/yaamp/web/framework-1.0.8/views/ro/exception.php +74 -0
- package/pto/yaamp/web/framework-1.0.8/views/ro/log-firebug.php +23 -0
- package/pto/yaamp/web/framework-1.0.8/views/ro/log.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/ro/profile-callstack-firebug.php +19 -0
- package/pto/yaamp/web/framework-1.0.8/views/ro/profile-callstack.php +30 -0
- package/pto/yaamp/web/framework-1.0.8/views/ro/profile-summary-firebug.php +22 -0
- package/pto/yaamp/web/framework-1.0.8/views/ro/profile-summary.php +41 -0
- package/pto/yaamp/web/framework-1.0.8/views/ru/error.php +37 -0
- package/pto/yaamp/web/framework-1.0.8/views/ru/error400.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/ru/error403.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/ru/error404.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/ru/error500.php +35 -0
- package/pto/yaamp/web/framework-1.0.8/views/ru/error503.php +31 -0
- package/pto/yaamp/web/framework-1.0.8/views/ru/exception.php +74 -0
- package/pto/yaamp/web/framework-1.0.8/views/ru/log-firebug.php +23 -0
- package/pto/yaamp/web/framework-1.0.8/views/ru/log.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/ru/profile-callstack-firebug.php +19 -0
- package/pto/yaamp/web/framework-1.0.8/views/ru/profile-callstack.php +30 -0
- package/pto/yaamp/web/framework-1.0.8/views/ru/profile-summary-firebug.php +22 -0
- package/pto/yaamp/web/framework-1.0.8/views/ru/profile-summary.php +41 -0
- package/pto/yaamp/web/framework-1.0.8/views/sv/error.php +37 -0
- package/pto/yaamp/web/framework-1.0.8/views/sv/error400.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/sv/error403.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/sv/error404.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/sv/error500.php +35 -0
- package/pto/yaamp/web/framework-1.0.8/views/sv/error503.php +31 -0
- package/pto/yaamp/web/framework-1.0.8/views/sv/exception.php +74 -0
- package/pto/yaamp/web/framework-1.0.8/views/sv/log-firebug.php +23 -0
- package/pto/yaamp/web/framework-1.0.8/views/sv/log.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/sv/profile-callstack-firebug.php +19 -0
- package/pto/yaamp/web/framework-1.0.8/views/sv/profile-callstack.php +30 -0
- package/pto/yaamp/web/framework-1.0.8/views/sv/profile-summary-firebug.php +22 -0
- package/pto/yaamp/web/framework-1.0.8/views/sv/profile-summary.php +41 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_cn/error.php +37 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_cn/error400.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_cn/error403.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_cn/error404.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_cn/error500.php +35 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_cn/error503.php +31 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_cn/exception.php +74 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_cn/log-firebug.php +23 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_cn/log.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_cn/profile-callstack-firebug.php +19 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_cn/profile-callstack.php +28 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_cn/profile-summary-firebug.php +22 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_cn/profile-summary.php +41 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_tw/error.php +37 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_tw/error400.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_tw/error403.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_tw/error404.php +33 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_tw/error500.php +35 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_tw/error503.php +31 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_tw/exception.php +74 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_tw/log-firebug.php +23 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_tw/log.php +32 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_tw/profile-callstack-firebug.php +19 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_tw/profile-callstack.php +30 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_tw/profile-summary-firebug.php +22 -0
- package/pto/yaamp/web/framework-1.0.8/views/zh_tw/profile-summary.php +41 -0
- package/pto/yaamp/web/framework-1.0.8/web/CAssetManager.php +227 -0
- package/pto/yaamp/web/framework-1.0.8/web/CBaseController.php +283 -0
- package/pto/yaamp/web/framework-1.0.8/web/CCacheHttpSession.php +111 -0
- package/pto/yaamp/web/framework-1.0.8/web/CClientScript.php +562 -0
- package/pto/yaamp/web/framework-1.0.8/web/CController.php +1072 -0
- package/pto/yaamp/web/framework-1.0.8/web/CDbHttpSession.php +203 -0
- package/pto/yaamp/web/framework-1.0.8/web/CExtController.php +53 -0
- package/pto/yaamp/web/framework-1.0.8/web/CFormModel.php +113 -0
- package/pto/yaamp/web/framework-1.0.8/web/CHttpCookie.php +63 -0
- package/pto/yaamp/web/framework-1.0.8/web/CHttpRequest.php +763 -0
- package/pto/yaamp/web/framework-1.0.8/web/CHttpSession.php +522 -0
- package/pto/yaamp/web/framework-1.0.8/web/CHttpSessionIterator.php +92 -0
- package/pto/yaamp/web/framework-1.0.8/web/COutputEvent.php +38 -0
- package/pto/yaamp/web/framework-1.0.8/web/CPagination.php +161 -0
- package/pto/yaamp/web/framework-1.0.8/web/CSort.php +292 -0
- package/pto/yaamp/web/framework-1.0.8/web/CTheme.php +124 -0
- package/pto/yaamp/web/framework-1.0.8/web/CThemeManager.php +127 -0
- package/pto/yaamp/web/framework-1.0.8/web/CUploadedFile.php +210 -0
- package/pto/yaamp/web/framework-1.0.8/web/CUrlManager.php +613 -0
- package/pto/yaamp/web/framework-1.0.8/web/CWebApplication.php +608 -0
- package/pto/yaamp/web/framework-1.0.8/web/CWebModule.php +187 -0
- package/pto/yaamp/web/framework-1.0.8/web/actions/CAction.php +58 -0
- package/pto/yaamp/web/framework-1.0.8/web/actions/CInlineAction.php +34 -0
- package/pto/yaamp/web/framework-1.0.8/web/actions/CViewAction.php +165 -0
- package/pto/yaamp/web/framework-1.0.8/web/auth/CAccessControlFilter.php +295 -0
- package/pto/yaamp/web/framework-1.0.8/web/auth/CAuthAssignment.php +102 -0
- package/pto/yaamp/web/framework-1.0.8/web/auth/CAuthItem.php +269 -0
- package/pto/yaamp/web/framework-1.0.8/web/auth/CAuthManager.php +157 -0
- package/pto/yaamp/web/framework-1.0.8/web/auth/CBaseUserIdentity.php +116 -0
- package/pto/yaamp/web/framework-1.0.8/web/auth/CDbAuthManager.php +584 -0
- package/pto/yaamp/web/framework-1.0.8/web/auth/CPhpAuthManager.php +535 -0
- package/pto/yaamp/web/framework-1.0.8/web/auth/CUserIdentity.php +79 -0
- package/pto/yaamp/web/framework-1.0.8/web/auth/CWebUser.php +583 -0
- package/pto/yaamp/web/framework-1.0.8/web/auth/schema.sql +42 -0
- package/pto/yaamp/web/framework-1.0.8/web/filters/CFilter.php +64 -0
- package/pto/yaamp/web/framework-1.0.8/web/filters/CFilterChain.php +131 -0
- package/pto/yaamp/web/framework-1.0.8/web/filters/CInlineFilter.php +61 -0
- package/pto/yaamp/web/framework-1.0.8/web/helpers/CGoogleApi.php +72 -0
- package/pto/yaamp/web/framework-1.0.8/web/helpers/CHtml.php +1801 -0
- package/pto/yaamp/web/framework-1.0.8/web/helpers/CJSON.php +698 -0
- package/pto/yaamp/web/framework-1.0.8/web/helpers/CJavaScript.php +128 -0
- package/pto/yaamp/web/framework-1.0.8/web/renderers/CPradoViewRenderer.php +245 -0
- package/pto/yaamp/web/framework-1.0.8/web/renderers/CViewRenderer.php +93 -0
- package/pto/yaamp/web/framework-1.0.8/web/services/CWebService.php +271 -0
- package/pto/yaamp/web/framework-1.0.8/web/services/CWebServiceAction.php +130 -0
- package/pto/yaamp/web/framework-1.0.8/web/services/CWsdlGenerator.php +373 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/CAutoComplete.php +285 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/CClipWidget.php +55 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/CContentDecorator.php +83 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/CFilterWidget.php +74 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/CFlexWidget.php +116 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/CHtmlPurifier.php +64 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/CInputWidget.php +80 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/CMarkdown.php +119 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/CMaskedTextField.php +106 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/CMultiFileUpload.php +115 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/COutputCache.php +336 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/COutputProcessor.php +77 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/CStarRating.php +207 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/CTabView.php +201 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/CTextHighlighter.php +127 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/CTreeView.php +232 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/CWidget.php +202 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/captcha/CCaptcha.php +132 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/captcha/CCaptchaAction.php +233 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/captcha/Duality.ttf +0 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/pagers/CBasePager.php +129 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/pagers/CLinkPager.php +194 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/pagers/CListPager.php +85 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/pagers/pager.css +68 -0
- package/pto/yaamp/web/framework-1.0.8/web/widgets/views/flexWidget.php +98 -0
- package/pto/yaamp/web/framework-1.0.8/yii.php +29 -0
- package/pto/yaamp/web/images/41.png +0 -0
- package/pto/yaamp/web/images/amc.jpg +0 -0
- package/pto/yaamp/web/images/base/action_refresh_blue.gif +0 -0
- package/pto/yaamp/web/images/base/action_save.gif +0 -0
- package/pto/yaamp/web/images/base/delete.png +0 -0
- package/pto/yaamp/web/images/base/dot.png +0 -0
- package/pto/yaamp/web/images/base/download.png +0 -0
- package/pto/yaamp/web/images/base/edit.png +0 -0
- package/pto/yaamp/web/images/base/enroll.png +0 -0
- package/pto/yaamp/web/images/base/favorite.png +0 -0
- package/pto/yaamp/web/images/base/folder_new.png +0 -0
- package/pto/yaamp/web/images/base/new.png +0 -0
- package/pto/yaamp/web/images/base/newcomment.png +0 -0
- package/pto/yaamp/web/images/base/newfile.png +0 -0
- package/pto/yaamp/web/images/base/newfolder.png +0 -0
- package/pto/yaamp/web/images/base/newuser.png +0 -0
- package/pto/yaamp/web/images/base/pause.png +0 -0
- package/pto/yaamp/web/images/base/play.png +0 -0
- package/pto/yaamp/web/images/base/tools.png +0 -0
- package/pto/yaamp/web/images/base/top.png +0 -0
- package/pto/yaamp/web/images/base/top_header.png +0 -0
- package/pto/yaamp/web/images/base/top_header_selected.png +0 -0
- package/pto/yaamp/web/images/base/video_play.png +0 -0
- package/pto/yaamp/web/images/beta_corner_banner.png +0 -0
- package/pto/yaamp/web/images/beta_corner_banner2.png +0 -0
- package/pto/yaamp/web/images/btc.png +0 -0
- package/pto/yaamp/web/images/coin-154.png +0 -0
- package/pto/yaamp/web/images/coin-22.png +0 -0
- package/pto/yaamp/web/images/coin-251.png +0 -0
- package/pto/yaamp/web/images/coin-30.png +0 -0
- package/pto/yaamp/web/images/coin-316.png +0 -0
- package/pto/yaamp/web/images/coin-33.png +0 -0
- package/pto/yaamp/web/images/coin-6.png +0 -0
- package/pto/yaamp/web/images/coin-834.png +0 -0
- package/pto/yaamp/web/images/gears.png +0 -0
- package/pto/yaamp/web/images/minus2-78.png +0 -0
- package/pto/yaamp/web/images/next.png +0 -0
- package/pto/yaamp/web/images/pause.png +0 -0
- package/pto/yaamp/web/images/play.png +0 -0
- package/pto/yaamp/web/images/plus2-78.png +0 -0
- package/pto/yaamp/web/images/sign-in-with-twitter-gray.png +0 -0
- package/pto/yaamp/web/images/sign-in-with-twitter-link.png +0 -0
- package/pto/yaamp/web/images/start.png +0 -0
- package/pto/yaamp/web/images/t_mini-a.png +0 -0
- package/pto/yaamp/web/images/tweet.jpg +0 -0
- package/pto/yaamp/web/images/twitter.jpg +0 -0
- package/pto/yaamp/web/images/ui/16x16_2leftarrow.png +0 -0
- package/pto/yaamp/web/images/ui/16x16_2rightarrow.png +0 -0
- package/pto/yaamp/web/images/ui/16x16_bottom.png +0 -0
- package/pto/yaamp/web/images/ui/16x16_chat.png +0 -0
- package/pto/yaamp/web/images/ui/16x16_delete.png +0 -0
- package/pto/yaamp/web/images/ui/16x16_edit.png +0 -0
- package/pto/yaamp/web/images/ui/16x16_email.png +0 -0
- package/pto/yaamp/web/images/ui/16x16_fileclose.png +0 -0
- package/pto/yaamp/web/images/ui/16x16_kcontrol.png +0 -0
- package/pto/yaamp/web/images/ui/16x16_kuser.png +0 -0
- package/pto/yaamp/web/images/ui/16x16_ledgreen.png +0 -0
- package/pto/yaamp/web/images/ui/16x16_link.png +0 -0
- package/pto/yaamp/web/images/ui/16x16_misc.png +0 -0
- package/pto/yaamp/web/images/ui/16x16_package_edutainment.png +0 -0
- package/pto/yaamp/web/images/ui/16x16_window_list.png +0 -0
- package/pto/yaamp/web/images/ui/22x22_bottom.png +0 -0
- package/pto/yaamp/web/images/ui/24x24_link.png +0 -0
- package/pto/yaamp/web/images/ui/32x32_link.png +0 -0
- package/pto/yaamp/web/images/ui/48x48_link.png +0 -0
- package/pto/yaamp/web/images/ui/arrow-down.gif +0 -0
- package/pto/yaamp/web/images/ui/arrow-right.gif +0 -0
- package/pto/yaamp/web/images/ui/asc.gif +0 -0
- package/pto/yaamp/web/images/ui/away.gif +0 -0
- package/pto/yaamp/web/images/ui/bg.gif +0 -0
- package/pto/yaamp/web/images/ui/control_play_blue.png +0 -0
- package/pto/yaamp/web/images/ui/desc.gif +0 -0
- package/pto/yaamp/web/images/ui/down_arrow.png +0 -0
- package/pto/yaamp/web/images/ui/empty.png +0 -0
- package/pto/yaamp/web/images/ui/expand_down.png +0 -0
- package/pto/yaamp/web/images/ui/expand_up.png +0 -0
- package/pto/yaamp/web/images/ui/green-check.png +0 -0
- package/pto/yaamp/web/images/ui/icon-check.gif +0 -0
- package/pto/yaamp/web/images/ui/install-flash.jpg +0 -0
- package/pto/yaamp/web/images/ui/linkout.png +0 -0
- package/pto/yaamp/web/images/ui/loading.gif +0 -0
- package/pto/yaamp/web/images/ui/loading_white.gif +0 -0
- package/pto/yaamp/web/images/ui/menudot.png +0 -0
- package/pto/yaamp/web/images/ui/menuo_bg.gif +0 -0
- package/pto/yaamp/web/images/ui/offline.gif +0 -0
- package/pto/yaamp/web/images/ui/online.gif +0 -0
- package/pto/yaamp/web/images/ui/shade.gif +0 -0
- package/pto/yaamp/web/images/ui/shadeactive.gif +0 -0
- package/pto/yaamp/web/images/ui/showactivity.png +0 -0
- package/pto/yaamp/web/images/ui/showcourse.png +0 -0
- package/pto/yaamp/web/images/ui/showdetail.png +0 -0
- package/pto/yaamp/web/images/ui/showfile.png +0 -0
- package/pto/yaamp/web/images/ui/showfolder.png +0 -0
- package/pto/yaamp/web/images/ui/showgraph.png +0 -0
- package/pto/yaamp/web/images/ui/showlink.png +0 -0
- package/pto/yaamp/web/images/ui/showmedium.png +0 -0
- package/pto/yaamp/web/images/ui/showsmall.png +0 -0
- package/pto/yaamp/web/images/ui/tintblue.gif +0 -0
- package/pto/yaamp/web/images/ui/tintbluedark.gif +0 -0
- package/pto/yaamp/web/images/vn_embed.png +0 -0
- package/pto/yaamp/web/index.php +30 -0
- package/pto/yaamp/web/loop2.sh +9 -0
- package/pto/yaamp/web/main.sh +9 -0
- package/pto/yaamp/web/robots.txt +2 -0
- package/pto/yaamp/web/run.php +25 -0
- package/pto/yaamp/web/serverconfig.php +26 -0
- package/pto/yaamp/web/yaamp/components/CUFHtml.php +136 -0
- package/pto/yaamp/web/yaamp/components/UniForm.php +25 -0
- package/pto/yaamp/web/yaamp/components/UserIdentity.php +25 -0
- package/pto/yaamp/web/yaamp/config.php +68 -0
- package/pto/yaamp/web/yaamp/core/backend/backend.php +17 -0
- package/pto/yaamp/web/yaamp/core/backend/blocks.php +243 -0
- package/pto/yaamp/web/yaamp/core/backend/clear.php +47 -0
- package/pto/yaamp/web/yaamp/core/backend/coins.php +245 -0
- package/pto/yaamp/web/yaamp/core/backend/markets.php +505 -0
- package/pto/yaamp/web/yaamp/core/backend/payment.php +153 -0
- package/pto/yaamp/web/yaamp/core/backend/rawcoins.php +144 -0
- package/pto/yaamp/web/yaamp/core/backend/renting.php +271 -0
- package/pto/yaamp/web/yaamp/core/backend/sell.php +126 -0
- package/pto/yaamp/web/yaamp/core/backend/services.php +210 -0
- package/pto/yaamp/web/yaamp/core/backend/stats.php +347 -0
- package/pto/yaamp/web/yaamp/core/backend/system.php +253 -0
- package/pto/yaamp/web/yaamp/core/backend/users.php +95 -0
- package/pto/yaamp/web/yaamp/core/common/Shortcuts.php +77 -0
- package/pto/yaamp/web/yaamp/core/common/common.php +10 -0
- package/pto/yaamp/web/yaamp/core/common/libUtil.php +305 -0
- package/pto/yaamp/web/yaamp/core/common/libdbo.php +91 -0
- package/pto/yaamp/web/yaamp/core/common/system.php +135 -0
- package/pto/yaamp/web/yaamp/core/common/util.php +317 -0
- package/pto/yaamp/web/yaamp/core/common/utilConversion.php +296 -0
- package/pto/yaamp/web/yaamp/core/core.php +11 -0
- package/pto/yaamp/web/yaamp/core/exchange/bittrex.php +28 -0
- package/pto/yaamp/web/yaamp/core/exchange/bleutrade.php +28 -0
- package/pto/yaamp/web/yaamp/core/exchange/ccexapi.php +106 -0
- package/pto/yaamp/web/yaamp/core/exchange/cryptsy.php +63 -0
- package/pto/yaamp/web/yaamp/core/exchange/exchange.php +12 -0
- package/pto/yaamp/web/yaamp/core/exchange/jubi.php +20 -0
- package/pto/yaamp/web/yaamp/core/exchange/poloniex.php +242 -0
- package/pto/yaamp/web/yaamp/core/exchange/yobit.php +77 -0
- package/pto/yaamp/web/yaamp/core/exchange2/CExchange.php +198 -0
- package/pto/yaamp/web/yaamp/core/exchange2/CExchangeCoin.php +84 -0
- package/pto/yaamp/web/yaamp/core/exchange2/exchange.php +7 -0
- package/pto/yaamp/web/yaamp/core/functions/curloauth.php +50 -0
- package/pto/yaamp/web/yaamp/core/functions/easybitcoin.php +220 -0
- package/pto/yaamp/web/yaamp/core/functions/functions.php +11 -0
- package/pto/yaamp/web/yaamp/core/functions/memcache.php +85 -0
- package/pto/yaamp/web/yaamp/core/functions/url.php +79 -0
- package/pto/yaamp/web/yaamp/core/functions/yaamp.php +365 -0
- package/pto/yaamp/web/yaamp/core/trading/bittrex_trading.php +221 -0
- package/pto/yaamp/web/yaamp/core/trading/bleutrade_trading.php +218 -0
- package/pto/yaamp/web/yaamp/core/trading/c-cex_trading.php +192 -0
- package/pto/yaamp/web/yaamp/core/trading/cryptsy_trading.php +231 -0
- package/pto/yaamp/web/yaamp/core/trading/poloniex_trading.php +179 -0
- package/pto/yaamp/web/yaamp/core/trading/trading.php +11 -0
- package/pto/yaamp/web/yaamp/core/trading/yobit_trading.php +205 -0
- package/pto/yaamp/web/yaamp/include.php +11 -0
- package/pto/yaamp/web/yaamp/models/db_accountsModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_algosModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_balancesModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_balanceuserModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_blocksModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_coinsModel.php +46 -0
- package/pto/yaamp/web/yaamp/models/db_connectionsModel.php +35 -0
- package/pto/yaamp/web/yaamp/models/db_earningsModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_exchangeModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_hashrateModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_hashrenterModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_hashstatsModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_hashuserModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_jobsModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_jobsubmitsModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_marketsModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_miningModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_nicehashModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_ordersModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_payoutsModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_rawcoinsModel.php +36 -0
- package/pto/yaamp/web/yaamp/models/db_rentersModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_rentertxsModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_serversModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_servicesModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_sharesModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_shares_vipModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_statsModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_stratumsModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_withdrawsModel.php +33 -0
- package/pto/yaamp/web/yaamp/models/db_workersModel.php +33 -0
- package/pto/yaamp/web/yaamp/modules/api/ApiController.php +301 -0
- package/pto/yaamp/web/yaamp/modules/coin/CoinController.php +54 -0
- package/pto/yaamp/web/yaamp/modules/coin/_form.php +75 -0
- package/pto/yaamp/web/yaamp/modules/coin/index.php +134 -0
- package/pto/yaamp/web/yaamp/modules/common/CommonController.php +55 -0
- package/pto/yaamp/web/yaamp/modules/common/maintenance.php +25 -0
- package/pto/yaamp/web/yaamp/modules/common/yaamp.php +23 -0
- package/pto/yaamp/web/yaamp/modules/explorer/ExplorerController.php +56 -0
- package/pto/yaamp/web/yaamp/modules/explorer/block.php +122 -0
- package/pto/yaamp/web/yaamp/modules/explorer/coin.php +63 -0
- package/pto/yaamp/web/yaamp/modules/explorer/index.php +67 -0
- package/pto/yaamp/web/yaamp/modules/explorer/tx.php +73 -0
- package/pto/yaamp/web/yaamp/modules/explorer/util.php +146 -0
- package/pto/yaamp/web/yaamp/modules/market/MarketController.php +86 -0
- package/pto/yaamp/web/yaamp/modules/market/update.php +23 -0
- package/pto/yaamp/web/yaamp/modules/nicehash/NicehashController.php +55 -0
- package/pto/yaamp/web/yaamp/modules/nicehash/index.php +37 -0
- package/pto/yaamp/web/yaamp/modules/nicehash/index_results.php +78 -0
- package/pto/yaamp/web/yaamp/modules/renting/RentingController.php +469 -0
- package/pto/yaamp/web/yaamp/modules/renting/admin.php +148 -0
- package/pto/yaamp/web/yaamp/modules/renting/all_orders_results.php +95 -0
- package/pto/yaamp/web/yaamp/modules/renting/balance_results.php +115 -0
- package/pto/yaamp/web/yaamp/modules/renting/create.php +52 -0
- package/pto/yaamp/web/yaamp/modules/renting/graph_job_results.php +74 -0
- package/pto/yaamp/web/yaamp/modules/renting/graph_price_results.php +54 -0
- package/pto/yaamp/web/yaamp/modules/renting/index.php +318 -0
- package/pto/yaamp/web/yaamp/modules/renting/login.php +239 -0
- package/pto/yaamp/web/yaamp/modules/renting/orders_results.php +130 -0
- package/pto/yaamp/web/yaamp/modules/renting/settings.php +156 -0
- package/pto/yaamp/web/yaamp/modules/renting/status_results.php +103 -0
- package/pto/yaamp/web/yaamp/modules/renting/tx.php +74 -0
- package/pto/yaamp/web/yaamp/modules/site/SiteController.php +772 -0
- package/pto/yaamp/web/yaamp/modules/site/about.php +59 -0
- package/pto/yaamp/web/yaamp/modules/site/admin.php +90 -0
- package/pto/yaamp/web/yaamp/modules/site/admin_results.php +171 -0
- package/pto/yaamp/web/yaamp/modules/site/api.php +136 -0
- package/pto/yaamp/web/yaamp/modules/site/backup.php +33 -0
- package/pto/yaamp/web/yaamp/modules/site/block.php +46 -0
- package/pto/yaamp/web/yaamp/modules/site/block_results.php +85 -0
- package/pto/yaamp/web/yaamp/modules/site/coin.php +145 -0
- package/pto/yaamp/web/yaamp/modules/site/coin_form.php +229 -0
- package/pto/yaamp/web/yaamp/modules/site/coin_results.php +242 -0
- package/pto/yaamp/web/yaamp/modules/site/common.php +231 -0
- package/pto/yaamp/web/yaamp/modules/site/common_results.php +576 -0
- package/pto/yaamp/web/yaamp/modules/site/connections.php +57 -0
- package/pto/yaamp/web/yaamp/modules/site/connections_results.php +48 -0
- package/pto/yaamp/web/yaamp/modules/site/diff.php +36 -0
- package/pto/yaamp/web/yaamp/modules/site/earning.php +50 -0
- package/pto/yaamp/web/yaamp/modules/site/earning_results.php +74 -0
- package/pto/yaamp/web/yaamp/modules/site/emptymarkets.php +34 -0
- package/pto/yaamp/web/yaamp/modules/site/eval.php +22 -0
- package/pto/yaamp/web/yaamp/modules/site/exchange.php +50 -0
- package/pto/yaamp/web/yaamp/modules/site/exchange_results.php +183 -0
- package/pto/yaamp/web/yaamp/modules/site/index.php +154 -0
- package/pto/yaamp/web/yaamp/modules/site/memcached.php +56 -0
- package/pto/yaamp/web/yaamp/modules/site/miners.php +88 -0
- package/pto/yaamp/web/yaamp/modules/site/mining.php +235 -0
- package/pto/yaamp/web/yaamp/modules/site/monsters.php +129 -0
- package/pto/yaamp/web/yaamp/modules/site/multialgo.php +84 -0
- package/pto/yaamp/web/yaamp/modules/site/payments.php +50 -0
- package/pto/yaamp/web/yaamp/modules/site/payments_results.php +56 -0
- package/pto/yaamp/web/yaamp/modules/site/results/current_results.php +158 -0
- package/pto/yaamp/web/yaamp/modules/site/results/found_results.php +94 -0
- package/pto/yaamp/web/yaamp/modules/site/results/graph_assets_results.php +58 -0
- package/pto/yaamp/web/yaamp/modules/site/results/graph_earnings_results.php +47 -0
- package/pto/yaamp/web/yaamp/modules/site/results/graph_hashrate_results.php +68 -0
- package/pto/yaamp/web/yaamp/modules/site/results/graph_negative_results.php +36 -0
- package/pto/yaamp/web/yaamp/modules/site/results/graph_price_results.php +68 -0
- package/pto/yaamp/web/yaamp/modules/site/results/graph_profit_results.php +25 -0
- package/pto/yaamp/web/yaamp/modules/site/results/graph_user_results.php +81 -0
- package/pto/yaamp/web/yaamp/modules/site/results/history_results.php +156 -0
- package/pto/yaamp/web/yaamp/modules/site/results/miners_results.php +126 -0
- package/pto/yaamp/web/yaamp/modules/site/results/mining_results.php +216 -0
- package/pto/yaamp/web/yaamp/modules/site/results/user_earning_results.php +92 -0
- package/pto/yaamp/web/yaamp/modules/site/results/wallet_graphs_results.php +33 -0
- package/pto/yaamp/web/yaamp/modules/site/results/wallet_miners_results.php +117 -0
- package/pto/yaamp/web/yaamp/modules/site/results/wallet_results.php +263 -0
- package/pto/yaamp/web/yaamp/modules/site/terms.php +392 -0
- package/pto/yaamp/web/yaamp/modules/site/tx.php +64 -0
- package/pto/yaamp/web/yaamp/modules/site/user.php +80 -0
- package/pto/yaamp/web/yaamp/modules/site/user_results.php +136 -0
- package/pto/yaamp/web/yaamp/modules/site/version.php +50 -0
- package/pto/yaamp/web/yaamp/modules/site/version_results.php +48 -0
- package/pto/yaamp/web/yaamp/modules/site/wallet.php +390 -0
- package/pto/yaamp/web/yaamp/modules/site/worker.php +50 -0
- package/pto/yaamp/web/yaamp/modules/site/worker_results.php +55 -0
- package/pto/yaamp/web/yaamp/modules/stats/StatsController.php +65 -0
- package/pto/yaamp/web/yaamp/modules/stats/graph_results_1.php +20 -0
- package/pto/yaamp/web/yaamp/modules/stats/graph_results_2.php +19 -0
- package/pto/yaamp/web/yaamp/modules/stats/graph_results_3.php +20 -0
- package/pto/yaamp/web/yaamp/modules/stats/graph_results_4.php +34 -0
- package/pto/yaamp/web/yaamp/modules/stats/graph_results_5.php +33 -0
- package/pto/yaamp/web/yaamp/modules/stats/graph_results_6.php +40 -0
- package/pto/yaamp/web/yaamp/modules/stats/graph_results_7.php +34 -0
- package/pto/yaamp/web/yaamp/modules/stats/graph_results_8.php +33 -0
- package/pto/yaamp/web/yaamp/modules/stats/graph_results_9.php +44 -0
- package/pto/yaamp/web/yaamp/modules/stats/index.php +502 -0
- package/pto/yaamp/web/yaamp/modules/thread/CronjobController.php +196 -0
- package/pto/yaamp/web/yaamp/modules/trading/TradingController.php +59 -0
- package/pto/yaamp/web/yaamp/modules/trading/index.php +270 -0
- package/pto/yaamp/web/yaamp/modules/trading/mining_results.php +245 -0
- package/pto/yaamp/web/yaamp/ui/app.php +8 -0
- package/pto/yaamp/web/yaamp/ui/css/editor.css +34 -0
- package/pto/yaamp/web/yaamp/ui/css/indicator.gif +0 -0
- package/pto/yaamp/web/yaamp/ui/css/jquery-ui-fixes.css +26 -0
- package/pto/yaamp/web/yaamp/ui/css/list.css +78 -0
- package/pto/yaamp/web/yaamp/ui/css/main.css +225 -0
- package/pto/yaamp/web/yaamp/ui/css/news.css +82 -0
- package/pto/yaamp/web/yaamp/ui/css/objectmenu.css +27 -0
- package/pto/yaamp/web/yaamp/ui/css/poll.css +194 -0
- package/pto/yaamp/web/yaamp/ui/css/table.css +124 -0
- package/pto/yaamp/web/yaamp/ui/css/tags.css +97 -0
- package/pto/yaamp/web/yaamp/ui/css/uni-form-generic.css +25 -0
- package/pto/yaamp/web/yaamp/ui/css/uni-form.css +94 -0
- package/pto/yaamp/web/yaamp/ui/js/auto_refresh.js +33 -0
- package/pto/yaamp/web/yaamp/ui/js/cookies.js +45 -0
- package/pto/yaamp/web/yaamp/ui/js/datetime.js +126 -0
- package/pto/yaamp/web/yaamp/ui/js/jquery.bgiframe.js +44 -0
- package/pto/yaamp/web/yaamp/ui/js/jquery.dialogextend.js +589 -0
- package/pto/yaamp/web/yaamp/ui/js/jquery.tablesorter.js +1031 -0
- package/pto/yaamp/web/yaamp/ui/js/jquery.yii.js +45 -0
- package/pto/yaamp/web/yaamp/ui/js/swfobject.js +780 -0
- package/pto/yaamp/web/yaamp/ui/js/texteditor.js +54 -0
- package/pto/yaamp/web/yaamp/ui/js/uni-form.jquery.js +38 -0
- package/pto/yaamp/web/yaamp/ui/js/util.js +108 -0
- package/pto/yaamp/web/yaamp/ui/lib/lib.php +4 -0
- package/pto/yaamp/web/yaamp/ui/lib/libview.php +59 -0
- package/pto/yaamp/web/yaamp/ui/lib/pageheader.php +26 -0
- package/pto/yaamp/web/yaamp/ui/main.php +131 -0
- package/pto/yaamp/web/yaamp/ui/misc.php +41 -0
- package/pto/yaamp/yaamp.sql +3098 -0
|
@@ -0,0 +1,1359 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
/**
|
|
3
|
+
* CActiveRecord class file.
|
|
4
|
+
*
|
|
5
|
+
* @author Qiang Xue <qiang.xue@gmail.com>
|
|
6
|
+
* @link http://www.yiiframework.com/
|
|
7
|
+
* @copyright Copyright © 2008-2009 Yii Software LLC
|
|
8
|
+
* @license http://www.yiiframework.com/license/
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* CActiveFinder implements eager loading and lazy loading of related active records.
|
|
13
|
+
*
|
|
14
|
+
* When used in eager loading, this class provides the same set of find methods as
|
|
15
|
+
* {@link CActiveRecord}.
|
|
16
|
+
*
|
|
17
|
+
* @author Qiang Xue <qiang.xue@gmail.com>
|
|
18
|
+
* @version $Id: CActiveFinder.php 1296 2009-08-06 21:44:44Z qiang.xue $
|
|
19
|
+
* @package system.db.ar
|
|
20
|
+
* @since 1.0
|
|
21
|
+
*/
|
|
22
|
+
class CActiveFinder extends CComponent
|
|
23
|
+
{
|
|
24
|
+
/**
|
|
25
|
+
* @var boolean join all tables all at once. Defaults to false.
|
|
26
|
+
* This property is internally used.
|
|
27
|
+
* @since 1.0.2
|
|
28
|
+
*/
|
|
29
|
+
public $joinAll=false;
|
|
30
|
+
/**
|
|
31
|
+
* @var boolean whether the base model has limit or offset.
|
|
32
|
+
* This property is internally used.
|
|
33
|
+
* @since 1.0.2
|
|
34
|
+
*/
|
|
35
|
+
public $baseLimited;
|
|
36
|
+
|
|
37
|
+
private $_joinCount=0;
|
|
38
|
+
private $_joinTree;
|
|
39
|
+
private $_builder;
|
|
40
|
+
private $_criteria; // the criteria generated via named scope
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Constructor.
|
|
44
|
+
* A join tree is built up based on the declared relationships between active record classes.
|
|
45
|
+
* @param CActiveRecord the model that initiates the active finding process
|
|
46
|
+
* @param mixed the relation names to be actively looked for
|
|
47
|
+
* @param CDbCriteria the criteria associated with the named scopes (since version 1.0.5)
|
|
48
|
+
*/
|
|
49
|
+
public function __construct($model,$with,$criteria=null)
|
|
50
|
+
{
|
|
51
|
+
$this->_criteria=$criteria;
|
|
52
|
+
$this->_builder=$model->getCommandBuilder();
|
|
53
|
+
$this->_joinTree=new CJoinElement($this,$model);
|
|
54
|
+
$this->buildJoinTree($this->_joinTree,$with);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Uses the most aggressive join approach.
|
|
59
|
+
* By default, several join statements may be generated in order to avoid
|
|
60
|
+
* fetching duplicated data. By calling this method, all tables will be joined
|
|
61
|
+
* together all at once.
|
|
62
|
+
* @param boolean whether we should enforce join even when a limit option is placed on the primary table query.
|
|
63
|
+
* Defaults to true. If false, we would still use two queries when there is a HAS_MANY/MANY_MANY relation and
|
|
64
|
+
* the primary table has a LIMIT option. This parameter is available since version 1.0.3.
|
|
65
|
+
* @return CActiveFinder the finder object
|
|
66
|
+
* @since 1.0.2
|
|
67
|
+
*/
|
|
68
|
+
public function together($ignoreLimit=true)
|
|
69
|
+
{
|
|
70
|
+
$this->joinAll=true;
|
|
71
|
+
if($ignoreLimit)
|
|
72
|
+
$this->baseLimited=false;
|
|
73
|
+
return $this;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
private function query($criteria,$all=false)
|
|
77
|
+
{
|
|
78
|
+
if($this->_criteria!==null)
|
|
79
|
+
{
|
|
80
|
+
$this->_criteria->mergeWith($criteria);
|
|
81
|
+
$criteria=$this->_criteria;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
$this->_joinTree->find($criteria);
|
|
85
|
+
$this->_joinTree->afterFind();
|
|
86
|
+
|
|
87
|
+
if($all)
|
|
88
|
+
return array_values($this->_joinTree->records);
|
|
89
|
+
else if(count($this->_joinTree->records))
|
|
90
|
+
return reset($this->_joinTree->records);
|
|
91
|
+
else
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* This is the relational version of {@link CActiveRecord::find()}.
|
|
97
|
+
*/
|
|
98
|
+
public function find($condition='',$params=array())
|
|
99
|
+
{
|
|
100
|
+
Yii::trace(get_class($this->_joinTree->model).'.find() eagerly','system.db.ar.CActiveRecord');
|
|
101
|
+
$criteria=$this->_builder->createCriteria($condition,$params);
|
|
102
|
+
return $this->query($criteria);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* This is the relational version of {@link CActiveRecord::findAll()}.
|
|
107
|
+
*/
|
|
108
|
+
public function findAll($condition='',$params=array())
|
|
109
|
+
{
|
|
110
|
+
Yii::trace(get_class($this->_joinTree->model).'.findAll() eagerly','system.db.ar.CActiveRecord');
|
|
111
|
+
$criteria=$this->_builder->createCriteria($condition,$params);
|
|
112
|
+
return $this->query($criteria,true);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* This is the relational version of {@link CActiveRecord::findByPk()}.
|
|
117
|
+
*/
|
|
118
|
+
public function findByPk($pk,$condition='',$params=array())
|
|
119
|
+
{
|
|
120
|
+
Yii::trace(get_class($this->_joinTree->model).'.findByPk() eagerly','system.db.ar.CActiveRecord');
|
|
121
|
+
$criteria=$this->_builder->createPkCriteria($this->_joinTree->model->getTableSchema(),$pk,$condition,$params);
|
|
122
|
+
return $this->query($criteria);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* This is the relational version of {@link CActiveRecord::findAllByPk()}.
|
|
127
|
+
*/
|
|
128
|
+
public function findAllByPk($pk,$condition='',$params=array())
|
|
129
|
+
{
|
|
130
|
+
Yii::trace(get_class($this->_joinTree->model).'.findAllByPk() eagerly','system.db.ar.CActiveRecord');
|
|
131
|
+
$criteria=$this->_builder->createPkCriteria($this->_joinTree->model->getTableSchema(),$pk,$condition,$params);
|
|
132
|
+
return $this->query($criteria,true);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* This is the relational version of {@link CActiveRecord::findByAttributes()}.
|
|
137
|
+
*/
|
|
138
|
+
public function findByAttributes($attributes,$condition='',$params=array())
|
|
139
|
+
{
|
|
140
|
+
Yii::trace(get_class($this->_joinTree->model).'.findByAttributes() eagerly','system.db.ar.CActiveRecord');
|
|
141
|
+
$criteria=$this->_builder->createColumnCriteria($this->_joinTree->model->getTableSchema(),$attributes,$condition,$params);
|
|
142
|
+
return $this->query($criteria);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* This is the relational version of {@link CActiveRecord::findAllByAttributes()}.
|
|
147
|
+
*/
|
|
148
|
+
public function findAllByAttributes($attributes,$condition='',$params=array())
|
|
149
|
+
{
|
|
150
|
+
Yii::trace(get_class($this->_joinTree->model).'.findAllByAttributes() eagerly','system.db.ar.CActiveRecord');
|
|
151
|
+
$criteria=$this->_builder->createColumnCriteria($this->_joinTree->model->getTableSchema(),$attributes,$condition,$params);
|
|
152
|
+
return $this->query($criteria,true);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* This is the relational version of {@link CActiveRecord::findBySql()}.
|
|
157
|
+
*/
|
|
158
|
+
public function findBySql($sql,$params=array())
|
|
159
|
+
{
|
|
160
|
+
Yii::trace(get_class($this->_joinTree->model).'.findBySql() eagerly','system.db.ar.CActiveRecord');
|
|
161
|
+
if(($row=$this->_builder->createSqlCommand($sql,$params)->queryRow())!==false)
|
|
162
|
+
{
|
|
163
|
+
$baseRecord=$this->_joinTree->model->populateRecord($row,false);
|
|
164
|
+
$this->_joinTree->findWithBase($baseRecord);
|
|
165
|
+
$this->_joinTree->afterFind();
|
|
166
|
+
return $baseRecord;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* This is the relational version of {@link CActiveRecord::findAllBySql()}.
|
|
172
|
+
*/
|
|
173
|
+
public function findAllBySql($sql,$params=array())
|
|
174
|
+
{
|
|
175
|
+
Yii::trace(get_class($this->_joinTree->model).'.findAllBySql() eagerly','system.db.ar.CActiveRecord');
|
|
176
|
+
if(($rows=$this->_builder->createSqlCommand($sql,$params)->queryAll())!==array())
|
|
177
|
+
{
|
|
178
|
+
$baseRecords=$this->_joinTree->model->populateRecords($rows,false);
|
|
179
|
+
$this->_joinTree->findWithBase($baseRecords);
|
|
180
|
+
$this->_joinTree->afterFind();
|
|
181
|
+
return $baseRecords;
|
|
182
|
+
}
|
|
183
|
+
else
|
|
184
|
+
return array();
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* This is the relational version of {@link CActiveRecord::count()}.
|
|
189
|
+
* @since 1.0.3
|
|
190
|
+
*/
|
|
191
|
+
public function count($condition='',$params=array())
|
|
192
|
+
{
|
|
193
|
+
Yii::trace(get_class($this->_joinTree->model).'.count() eagerly','system.db.ar.CActiveRecord');
|
|
194
|
+
$criteria=$this->_builder->createCriteria($condition,$params);
|
|
195
|
+
if($this->_criteria!==null)
|
|
196
|
+
{
|
|
197
|
+
$this->_criteria->mergeWith($criteria);
|
|
198
|
+
$criteria=$this->_criteria;
|
|
199
|
+
}
|
|
200
|
+
return $this->_joinTree->count($criteria);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Finds the related objects for the specified active record.
|
|
205
|
+
* This method is internally invoked by {@link CActiveRecord} to support lazy loading.
|
|
206
|
+
* @param CActiveRecord the base record whose related objects are to be loaded
|
|
207
|
+
*/
|
|
208
|
+
public function lazyFind($baseRecord)
|
|
209
|
+
{
|
|
210
|
+
$this->_joinTree->lazyFind($baseRecord);
|
|
211
|
+
if(!empty($this->_joinTree->children))
|
|
212
|
+
{
|
|
213
|
+
$child=reset($this->_joinTree->children);
|
|
214
|
+
$child->afterFind();
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Builds up the join tree representing the relationships involved in this query.
|
|
220
|
+
* @param CJoinElement the parent tree node
|
|
221
|
+
* @param mixed the names of the related objects relative to the parent tree node
|
|
222
|
+
* @param array additional query options to be merged with the relation
|
|
223
|
+
*/
|
|
224
|
+
private function buildJoinTree($parent,$with,$options=null)
|
|
225
|
+
{
|
|
226
|
+
if($parent instanceof CStatElement)
|
|
227
|
+
throw new CDbException(Yii::t('yii','The STAT relation "{name}" cannot have child relations.',
|
|
228
|
+
array('{name}'=>$parent->relation->name)));
|
|
229
|
+
|
|
230
|
+
if(is_string($with))
|
|
231
|
+
{
|
|
232
|
+
if(($pos=strrpos($with,'.'))!==false)
|
|
233
|
+
{
|
|
234
|
+
$parent=$this->buildJoinTree($parent,substr($with,0,$pos));
|
|
235
|
+
$with=substr($with,$pos+1);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// named scope
|
|
239
|
+
if(($pos=strpos($with,':'))!==false)
|
|
240
|
+
{
|
|
241
|
+
$scopes=explode(':',substr($with,$pos+1));
|
|
242
|
+
$with=substr($with,0,$pos);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
if(isset($parent->children[$with]))
|
|
246
|
+
return $parent->children[$with];
|
|
247
|
+
|
|
248
|
+
if(($relation=$parent->model->getActiveRelation($with))===null)
|
|
249
|
+
throw new CDbException(Yii::t('yii','Relation "{name}" is not defined in active record class "{class}".',
|
|
250
|
+
array('{class}'=>get_class($parent->model), '{name}'=>$with)));
|
|
251
|
+
|
|
252
|
+
$relation=clone $relation;
|
|
253
|
+
$model=CActiveRecord::model($relation->className);
|
|
254
|
+
if(($scope=$model->defaultScope())!==array())
|
|
255
|
+
$relation->mergeWith($scope);
|
|
256
|
+
if(isset($scopes) && !empty($scopes))
|
|
257
|
+
{
|
|
258
|
+
$scs=$model->scopes();
|
|
259
|
+
foreach($scopes as $scope)
|
|
260
|
+
{
|
|
261
|
+
if(isset($scs[$scope]))
|
|
262
|
+
$relation->mergeWith($scs[$scope]);
|
|
263
|
+
else
|
|
264
|
+
throw new CDbException(Yii::t('yii','Active record class "{class}" does not have a scope named "{scope}".',
|
|
265
|
+
array('{class}'=>get_class($model), '{scope}'=>$scope)));
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
// dynamic options
|
|
270
|
+
if($options!==null)
|
|
271
|
+
$relation->mergeWith($options);
|
|
272
|
+
|
|
273
|
+
if($relation instanceof CStatRelation)
|
|
274
|
+
return new CStatElement($this,$relation,$parent);
|
|
275
|
+
else
|
|
276
|
+
{
|
|
277
|
+
$element=$parent->children[$with]=new CJoinElement($this,$relation,$parent,++$this->_joinCount);
|
|
278
|
+
if(!empty($relation->with))
|
|
279
|
+
$this->buildJoinTree($element,$relation->with);
|
|
280
|
+
return $element;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
// $with is an array, keys are relation name, values are relation spec
|
|
285
|
+
foreach($with as $key=>$value)
|
|
286
|
+
{
|
|
287
|
+
if(is_string($value)) // the value is a relation name
|
|
288
|
+
$this->buildJoinTree($parent,$value);
|
|
289
|
+
else if(is_string($key) && is_array($value))
|
|
290
|
+
$element=$this->buildJoinTree($parent,$key,$value);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* CJoinElement represents a tree node in the join tree created by {@link CActiveFinder}.
|
|
298
|
+
*
|
|
299
|
+
* @author Qiang Xue <qiang.xue@gmail.com>
|
|
300
|
+
* @version $Id: CActiveFinder.php 1296 2009-08-06 21:44:44Z qiang.xue $
|
|
301
|
+
* @package system.db.ar
|
|
302
|
+
* @since 1.0
|
|
303
|
+
*/
|
|
304
|
+
class CJoinElement
|
|
305
|
+
{
|
|
306
|
+
/**
|
|
307
|
+
* @var integer the unique ID of this tree node
|
|
308
|
+
*/
|
|
309
|
+
public $id;
|
|
310
|
+
/**
|
|
311
|
+
* @var CActiveRelation the relation represented by this tree node
|
|
312
|
+
*/
|
|
313
|
+
public $relation;
|
|
314
|
+
/**
|
|
315
|
+
* @var CActiveRecord the model associated with this tree node
|
|
316
|
+
*/
|
|
317
|
+
public $model;
|
|
318
|
+
/**
|
|
319
|
+
* @var array list of active records found by the queries. They are indexed by primary key values.
|
|
320
|
+
*/
|
|
321
|
+
public $records=array();
|
|
322
|
+
/**
|
|
323
|
+
* @var array list of child join elements
|
|
324
|
+
*/
|
|
325
|
+
public $children=array();
|
|
326
|
+
/**
|
|
327
|
+
* @var array list of stat elements
|
|
328
|
+
* @since 1.0.4
|
|
329
|
+
*/
|
|
330
|
+
public $stats=array();
|
|
331
|
+
/**
|
|
332
|
+
* @var string table alias for this join element
|
|
333
|
+
*/
|
|
334
|
+
public $tableAlias;
|
|
335
|
+
|
|
336
|
+
private $_finder;
|
|
337
|
+
private $_builder;
|
|
338
|
+
private $_parent;
|
|
339
|
+
private $_pkAlias; // string or name=>alias
|
|
340
|
+
private $_columnAliases=array(); // name=>alias
|
|
341
|
+
private $_joined=false;
|
|
342
|
+
private $_table;
|
|
343
|
+
private $_related=array(); // PK, relation name, related PK => true
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Constructor.
|
|
347
|
+
* @param CActiveFinder the finder
|
|
348
|
+
* @param mixed the relation (if the second parameter is not null)
|
|
349
|
+
* or the model (if the second parameter is null) associated with this tree node.
|
|
350
|
+
* @param CJoinElement the parent tree node
|
|
351
|
+
* @param integer the ID of this tree node that is unique among all the tree nodes
|
|
352
|
+
*/
|
|
353
|
+
public function __construct($finder,$relation,$parent=null,$id=0)
|
|
354
|
+
{
|
|
355
|
+
$this->_finder=$finder;
|
|
356
|
+
$this->id=$id;
|
|
357
|
+
if($parent!==null)
|
|
358
|
+
{
|
|
359
|
+
$this->relation=$relation;
|
|
360
|
+
$this->_parent=$parent;
|
|
361
|
+
$this->_builder=$parent->_builder;
|
|
362
|
+
$this->tableAlias=$relation->alias===null?'t'.$id:$relation->alias;
|
|
363
|
+
$this->model=CActiveRecord::model($relation->className);
|
|
364
|
+
$this->_table=$this->model->getTableSchema();
|
|
365
|
+
}
|
|
366
|
+
else // root element, the first parameter is the model.
|
|
367
|
+
{
|
|
368
|
+
$this->model=$relation;
|
|
369
|
+
$this->_builder=$relation->getCommandBuilder();
|
|
370
|
+
$this->_table=$relation->getTableSchema();
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
// set up column aliases, such as t1_c2
|
|
374
|
+
$table=$this->_table;
|
|
375
|
+
if($this->model->getDbConnection()->getDriverName()==='oci') // Issue 482
|
|
376
|
+
$prefix='T'.$id.'_C';
|
|
377
|
+
else
|
|
378
|
+
$prefix='t'.$id.'_c';
|
|
379
|
+
foreach($table->getColumnNames() as $key=>$name)
|
|
380
|
+
{
|
|
381
|
+
$alias=$prefix.$key;
|
|
382
|
+
$this->_columnAliases[$name]=$alias;
|
|
383
|
+
if($table->primaryKey===$name)
|
|
384
|
+
$this->_pkAlias=$alias;
|
|
385
|
+
else if(is_array($table->primaryKey) && in_array($name,$table->primaryKey))
|
|
386
|
+
$this->_pkAlias[$name]=$alias;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Performs the recursive finding with the criteria.
|
|
392
|
+
* @param CDbCriteria the query criteria
|
|
393
|
+
*/
|
|
394
|
+
public function find($criteria=null)
|
|
395
|
+
{
|
|
396
|
+
if($this->_parent===null) // root element
|
|
397
|
+
{
|
|
398
|
+
$query=new CJoinQuery($this,$criteria);
|
|
399
|
+
if($this->_finder->baseLimited===null)
|
|
400
|
+
$this->_finder->baseLimited=($criteria->offset>=0 || $criteria->limit>=0);
|
|
401
|
+
$this->buildQuery($query);
|
|
402
|
+
$this->runQuery($query);
|
|
403
|
+
}
|
|
404
|
+
else if(!$this->_joined && !empty($this->_parent->records)) // not joined before
|
|
405
|
+
{
|
|
406
|
+
$query=new CJoinQuery($this->_parent);
|
|
407
|
+
$this->_joined=true;
|
|
408
|
+
$query->join($this);
|
|
409
|
+
$this->buildQuery($query);
|
|
410
|
+
$this->_parent->runQuery($query);
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
foreach($this->children as $child) // find recursively
|
|
414
|
+
$child->find();
|
|
415
|
+
|
|
416
|
+
foreach($this->stats as $stat)
|
|
417
|
+
$stat->query();
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
/**
|
|
421
|
+
* Performs lazy find with the specified base record.
|
|
422
|
+
* @param CActiveRecord the active record whose related object is to be fetched.
|
|
423
|
+
*/
|
|
424
|
+
public function lazyFind($baseRecord)
|
|
425
|
+
{
|
|
426
|
+
if(is_string($this->_table->primaryKey))
|
|
427
|
+
$this->records[$baseRecord->{$this->_table->primaryKey}]=$baseRecord;
|
|
428
|
+
else
|
|
429
|
+
{
|
|
430
|
+
$pk=array();
|
|
431
|
+
foreach($this->_table->primaryKey as $name)
|
|
432
|
+
$pk[$name]=$baseRecord->$name;
|
|
433
|
+
$this->records[serialize($pk)]=$baseRecord;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
foreach($this->stats as $stat)
|
|
437
|
+
$stat->query();
|
|
438
|
+
|
|
439
|
+
if(empty($this->children))
|
|
440
|
+
return;
|
|
441
|
+
|
|
442
|
+
$child=reset($this->children);
|
|
443
|
+
$query=new CJoinQuery($this);
|
|
444
|
+
$this->_joined=true;
|
|
445
|
+
$child->_joined=true;
|
|
446
|
+
$query->join($child);
|
|
447
|
+
if($child->relation instanceof CHasManyRelation)
|
|
448
|
+
{
|
|
449
|
+
$query->limit=$child->relation->limit;
|
|
450
|
+
$query->offset=$child->relation->offset;
|
|
451
|
+
if($this->_finder->baseLimited===null)
|
|
452
|
+
$this->_finder->baseLimited=($query->offset>=0 || $query->limit>=0);
|
|
453
|
+
$query->groups[]=str_replace($child->relation->aliasToken.'.',$child->tableAlias.'.',$child->relation->group);
|
|
454
|
+
$query->havings[]=str_replace($child->relation->aliasToken.'.',$child->tableAlias.'.',$child->relation->having);
|
|
455
|
+
}
|
|
456
|
+
$child->buildQuery($query);
|
|
457
|
+
$this->runQuery($query);
|
|
458
|
+
foreach($child->children as $c)
|
|
459
|
+
$c->find();
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
/**
|
|
463
|
+
* Performs the eager loading with the base records ready.
|
|
464
|
+
* @param mixed the available base record(s).
|
|
465
|
+
*/
|
|
466
|
+
public function findWithBase($baseRecords)
|
|
467
|
+
{
|
|
468
|
+
if(!is_array($baseRecords))
|
|
469
|
+
$baseRecords=array($baseRecords);
|
|
470
|
+
if(is_string($this->_table->primaryKey))
|
|
471
|
+
{
|
|
472
|
+
foreach($baseRecords as $baseRecord)
|
|
473
|
+
$this->records[$baseRecord->{$this->_table->primaryKey}]=$baseRecord;
|
|
474
|
+
}
|
|
475
|
+
else
|
|
476
|
+
{
|
|
477
|
+
foreach($baseRecords as $baseRecord)
|
|
478
|
+
{
|
|
479
|
+
$pk=array();
|
|
480
|
+
foreach($this->_table->primaryKey as $name)
|
|
481
|
+
$pk[$name]=$baseRecord->$name;
|
|
482
|
+
$this->records[serialize($pk)]=$baseRecord;
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
$query=new CJoinQuery($this);
|
|
487
|
+
$this->buildQuery($query);
|
|
488
|
+
if(count($query->joins)>1)
|
|
489
|
+
$this->runQuery($query);
|
|
490
|
+
foreach($this->children as $child)
|
|
491
|
+
$child->find();
|
|
492
|
+
|
|
493
|
+
foreach($this->stats as $stat)
|
|
494
|
+
$stat->query();
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
/**
|
|
498
|
+
* Count the number of primary records returned by the join statement.
|
|
499
|
+
* @param CDbCriteria the query criteria
|
|
500
|
+
* @return integer number of primary records.
|
|
501
|
+
* @since 1.0.3
|
|
502
|
+
*/
|
|
503
|
+
public function count($criteria=null)
|
|
504
|
+
{
|
|
505
|
+
$query=new CJoinQuery($this,$criteria);
|
|
506
|
+
// ensure only one big join statement is used
|
|
507
|
+
$this->_finder->baseLimited=false;
|
|
508
|
+
$this->_finder->joinAll=true;
|
|
509
|
+
$this->buildQuery($query);
|
|
510
|
+
|
|
511
|
+
$select=is_array($criteria->select) ? implode(',',$criteria->select) : $criteria->select;
|
|
512
|
+
if($select!=='*' && !strncasecmp($select,'count',5))
|
|
513
|
+
$query->selects=array($select);
|
|
514
|
+
else if(is_string($this->_table->primaryKey))
|
|
515
|
+
{
|
|
516
|
+
$prefix=$this->getColumnPrefix();
|
|
517
|
+
$schema=$this->_builder->getSchema();
|
|
518
|
+
$column=$prefix.$schema->quoteColumnName($this->_table->primaryKey);
|
|
519
|
+
$query->selects=array("COUNT(DISTINCT $column)");
|
|
520
|
+
}
|
|
521
|
+
else
|
|
522
|
+
$query->selects=array("COUNT(*)");
|
|
523
|
+
|
|
524
|
+
$query->orders=$query->groups=$query->havings=array();
|
|
525
|
+
$command=$query->createCommand($this->_builder);
|
|
526
|
+
return $command->queryScalar();
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
/**
|
|
530
|
+
* Calls {@link CActiveRecord::afterFind} of all the records.
|
|
531
|
+
* @since 1.0.3
|
|
532
|
+
*/
|
|
533
|
+
public function afterFind()
|
|
534
|
+
{
|
|
535
|
+
foreach($this->records as $record)
|
|
536
|
+
$record->afterFindInternal();
|
|
537
|
+
foreach($this->children as $child)
|
|
538
|
+
$child->afterFind();
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
/**
|
|
542
|
+
* Builds the join query with all descendant HAS_ONE and BELONGS_TO nodes.
|
|
543
|
+
* @param CJoinQuery the query being built up
|
|
544
|
+
*/
|
|
545
|
+
public function buildQuery($query)
|
|
546
|
+
{
|
|
547
|
+
foreach($this->children as $child)
|
|
548
|
+
{
|
|
549
|
+
if($child->relation instanceof CHasOneRelation || $child->relation instanceof CBelongsToRelation
|
|
550
|
+
|| $child->relation->together || ($this->_finder->joinAll && !$this->_finder->baseLimited))
|
|
551
|
+
{
|
|
552
|
+
$child->_joined=true;
|
|
553
|
+
$query->join($child);
|
|
554
|
+
$child->buildQuery($query);
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* Executes the join query and populates the query results.
|
|
561
|
+
* @param CJoinQuery the query to be executed.
|
|
562
|
+
*/
|
|
563
|
+
public function runQuery($query)
|
|
564
|
+
{
|
|
565
|
+
$command=$query->createCommand($this->_builder);
|
|
566
|
+
foreach($command->queryAll() as $row)
|
|
567
|
+
$this->populateRecord($query,$row);
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
/**
|
|
571
|
+
* Populates the active records with the query data.
|
|
572
|
+
* @param CJoinQuery the query executed
|
|
573
|
+
* @param array a row of data
|
|
574
|
+
* @return CActiveRecord the populated record
|
|
575
|
+
*/
|
|
576
|
+
private function populateRecord($query,$row)
|
|
577
|
+
{
|
|
578
|
+
// determine the primary key value
|
|
579
|
+
if(is_string($this->_pkAlias)) // single key
|
|
580
|
+
{
|
|
581
|
+
if(isset($row[$this->_pkAlias]))
|
|
582
|
+
$pk=$row[$this->_pkAlias];
|
|
583
|
+
else // no matching related objects
|
|
584
|
+
return null;
|
|
585
|
+
}
|
|
586
|
+
else // is_array, composite key
|
|
587
|
+
{
|
|
588
|
+
$pk=array();
|
|
589
|
+
foreach($this->_pkAlias as $name=>$alias)
|
|
590
|
+
{
|
|
591
|
+
if(isset($row[$alias]))
|
|
592
|
+
$pk[$name]=$row[$alias];
|
|
593
|
+
else // no matching related objects
|
|
594
|
+
return null;
|
|
595
|
+
}
|
|
596
|
+
$pk=serialize($pk);
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
// retrieve or populate the record according to the primary key value
|
|
600
|
+
if(isset($this->records[$pk]))
|
|
601
|
+
$record=$this->records[$pk];
|
|
602
|
+
else
|
|
603
|
+
{
|
|
604
|
+
$attributes=array();
|
|
605
|
+
$aliases=array_flip($this->_columnAliases);
|
|
606
|
+
foreach($row as $alias=>$value)
|
|
607
|
+
{
|
|
608
|
+
if(isset($aliases[$alias]))
|
|
609
|
+
$attributes[$aliases[$alias]]=$value;
|
|
610
|
+
}
|
|
611
|
+
$record=$this->model->populateRecord($attributes,false);
|
|
612
|
+
foreach($this->children as $child)
|
|
613
|
+
$record->addRelatedRecord($child->relation->name,null,$child->relation instanceof CHasManyRelation);
|
|
614
|
+
$this->records[$pk]=$record;
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
// populate child records recursively
|
|
618
|
+
foreach($this->children as $child)
|
|
619
|
+
{
|
|
620
|
+
if(!isset($query->elements[$child->id]))
|
|
621
|
+
continue;
|
|
622
|
+
$childRecord=$child->populateRecord($query,$row);
|
|
623
|
+
if($child->relation instanceof CHasOneRelation || $child->relation instanceof CBelongsToRelation)
|
|
624
|
+
$record->addRelatedRecord($child->relation->name,$childRecord,false);
|
|
625
|
+
else // has_many and many_many
|
|
626
|
+
{
|
|
627
|
+
// need to double check to avoid adding duplicated related objects
|
|
628
|
+
if($childRecord instanceof CActiveRecord)
|
|
629
|
+
$fpk=serialize($childRecord->getPrimaryKey());
|
|
630
|
+
else
|
|
631
|
+
$fpk=0;
|
|
632
|
+
if(!isset($this->_related[$pk][$child->relation->name][$fpk]))
|
|
633
|
+
{
|
|
634
|
+
if($childRecord instanceof CActiveRecord && $child->relation->index!==null)
|
|
635
|
+
$index=$childRecord->{$child->relation->index};
|
|
636
|
+
else
|
|
637
|
+
$index=true;
|
|
638
|
+
$record->addRelatedRecord($child->relation->name,$childRecord,$index);
|
|
639
|
+
$this->_related[$pk][$child->relation->name][$fpk]=true;
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
return $record;
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
/**
|
|
648
|
+
* @return string the table name and the table alias (if any). This can be used directly in SQL query without escaping.
|
|
649
|
+
*/
|
|
650
|
+
public function getTableNameWithAlias()
|
|
651
|
+
{
|
|
652
|
+
if($this->tableAlias!==null)
|
|
653
|
+
return $this->_table->rawName . ' ' . $this->tableAlias;
|
|
654
|
+
else
|
|
655
|
+
return $this->_table->rawName;
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
/**
|
|
659
|
+
* Generates the list of columns to be selected.
|
|
660
|
+
* Columns will be properly aliased and primary keys will be added to selection if they are not specified.
|
|
661
|
+
* @param mixed columns to be selected. Defaults to '*', indicating all columns.
|
|
662
|
+
* @return string the column selection
|
|
663
|
+
*/
|
|
664
|
+
public function getColumnSelect($select='*')
|
|
665
|
+
{
|
|
666
|
+
$schema=$this->_builder->getSchema();
|
|
667
|
+
$prefix=$this->getColumnPrefix();
|
|
668
|
+
$columns=array();
|
|
669
|
+
if($select==='*')
|
|
670
|
+
{
|
|
671
|
+
foreach($this->_table->getColumnNames() as $name)
|
|
672
|
+
$columns[]=$prefix.$schema->quoteColumnName($name).' AS '.$schema->quoteColumnName($this->_columnAliases[$name]);
|
|
673
|
+
}
|
|
674
|
+
else
|
|
675
|
+
{
|
|
676
|
+
if(is_string($select))
|
|
677
|
+
$select=explode(',',$select);
|
|
678
|
+
$selected=array();
|
|
679
|
+
foreach($select as $name)
|
|
680
|
+
{
|
|
681
|
+
$name=trim($name);
|
|
682
|
+
$matches=array();
|
|
683
|
+
if(($pos=strrpos($name,'.'))!==false)
|
|
684
|
+
$key=substr($name,$pos+1);
|
|
685
|
+
else
|
|
686
|
+
$key=$name;
|
|
687
|
+
if(isset($this->_columnAliases[$key])) // simple column names
|
|
688
|
+
{
|
|
689
|
+
$columns[]=$prefix.$schema->quoteColumnName($key).' AS '.$schema->quoteColumnName($this->_columnAliases[$key]);
|
|
690
|
+
$selected[$this->_columnAliases[$key]]=1;
|
|
691
|
+
}
|
|
692
|
+
else if(preg_match('/^(.*?)\s+AS\s+(\w+)$/i',$name,$matches)) // if the column is already aliased
|
|
693
|
+
{
|
|
694
|
+
$alias=$matches[2];
|
|
695
|
+
if(!isset($this->_columnAliases[$alias]) || $this->_columnAliases[$alias]!==$alias)
|
|
696
|
+
{
|
|
697
|
+
$this->_columnAliases[$alias]=$alias;
|
|
698
|
+
$columns[]=$name;
|
|
699
|
+
$selected[$alias]=1;
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
else
|
|
703
|
+
throw new CDbException(Yii::t('yii','Active record "{class}" is trying to select an invalid column "{column}". Note, the column must exist in the table or be an expression with alias.',
|
|
704
|
+
array('{class}'=>get_class($this->model), '{column}'=>$name)));
|
|
705
|
+
}
|
|
706
|
+
// add primary key selection if they are not selected
|
|
707
|
+
if(is_string($this->_pkAlias) && !isset($selected[$this->_pkAlias]))
|
|
708
|
+
$columns[]=$prefix.$schema->quoteColumnName($this->_table->primaryKey).' AS '.$schema->quoteColumnName($this->_pkAlias);
|
|
709
|
+
else if(is_array($this->_pkAlias))
|
|
710
|
+
{
|
|
711
|
+
foreach($this->_table->primaryKey as $name)
|
|
712
|
+
if(!isset($selected[$name]))
|
|
713
|
+
$columns[]=$prefix.$schema->quoteColumnName($name).' AS '.$schema->quoteColumnName($this->_pkAlias[$name]);
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
$select=implode(', ',$columns);
|
|
718
|
+
if($this->relation!==null)
|
|
719
|
+
return str_replace($this->relation->aliasToken.'.', $prefix, $select);
|
|
720
|
+
else
|
|
721
|
+
return $select;
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
/**
|
|
725
|
+
* @return string the primary key selection
|
|
726
|
+
*/
|
|
727
|
+
public function getPrimaryKeySelect()
|
|
728
|
+
{
|
|
729
|
+
$schema=$this->_builder->getSchema();
|
|
730
|
+
$prefix=$this->getColumnPrefix();
|
|
731
|
+
$columns=array();
|
|
732
|
+
if(is_string($this->_pkAlias))
|
|
733
|
+
$columns[]=$prefix.$schema->quoteColumnName($this->_table->primaryKey).' AS '.$schema->quoteColumnName($this->_pkAlias);
|
|
734
|
+
else if(is_array($this->_pkAlias))
|
|
735
|
+
{
|
|
736
|
+
foreach($this->_pkAlias as $name=>$alias)
|
|
737
|
+
$columns[]=$prefix.$schema->quoteColumnName($name).' AS '.$schema->quoteColumnName($alias);
|
|
738
|
+
}
|
|
739
|
+
return implode(', ',$columns);
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
/**
|
|
743
|
+
* @return string the condition that specifies only the rows with the selected primary key values.
|
|
744
|
+
*/
|
|
745
|
+
public function getPrimaryKeyRange()
|
|
746
|
+
{
|
|
747
|
+
if(empty($this->records))
|
|
748
|
+
return '';
|
|
749
|
+
$values=array_keys($this->records);
|
|
750
|
+
if(is_array($this->_table->primaryKey))
|
|
751
|
+
{
|
|
752
|
+
foreach($values as &$value)
|
|
753
|
+
$value=unserialize($value);
|
|
754
|
+
}
|
|
755
|
+
return $this->_builder->createInCondition($this->_table,$this->_table->primaryKey,$values,$this->getColumnPrefix());
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
/**
|
|
759
|
+
* @return string the WHERE clause. Column references are properly disambiguated.
|
|
760
|
+
*/
|
|
761
|
+
public function getCondition()
|
|
762
|
+
{
|
|
763
|
+
if($this->relation->condition!=='' && $this->tableAlias!==null)
|
|
764
|
+
return str_replace($this->relation->aliasToken.'.', $this->tableAlias.'.', $this->relation->condition);
|
|
765
|
+
else
|
|
766
|
+
return $this->relation->condition;
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
/**
|
|
770
|
+
* @return string the ORDER BY clause. Column references are properly disambiguated.
|
|
771
|
+
*/
|
|
772
|
+
public function getOrder()
|
|
773
|
+
{
|
|
774
|
+
if($this->relation->order!=='' && $this->tableAlias!==null)
|
|
775
|
+
return str_replace($this->relation->aliasToken.'.',$this->tableAlias.'.',$this->relation->order);
|
|
776
|
+
else
|
|
777
|
+
return $this->relation->order;
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
/**
|
|
781
|
+
* @return string the GROUP BY clause. Column references are properly disambiguated.
|
|
782
|
+
* @since 1.0.4
|
|
783
|
+
*/
|
|
784
|
+
public function getGroupBy()
|
|
785
|
+
{
|
|
786
|
+
if($this->relation->group!=='' && $this->tableAlias!==null)
|
|
787
|
+
return str_replace($this->relation->aliasToken.'.', $this->tableAlias.'.', $this->relation->group);
|
|
788
|
+
else
|
|
789
|
+
return $this->relation->group;
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
/**
|
|
793
|
+
* @return string the HAVING clause. Column references are properly disambiguated.
|
|
794
|
+
* @since 1.0.4
|
|
795
|
+
*/
|
|
796
|
+
public function getHaving()
|
|
797
|
+
{
|
|
798
|
+
if($this->relation->having!=='' && $this->tableAlias!==null)
|
|
799
|
+
return str_replace($this->relation->aliasToken.'.', $this->tableAlias.'.', $this->relation->having);
|
|
800
|
+
else
|
|
801
|
+
return $this->relation->having;
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
/**
|
|
805
|
+
* @return string the column prefix for column reference disambiguation
|
|
806
|
+
*/
|
|
807
|
+
public function getColumnPrefix()
|
|
808
|
+
{
|
|
809
|
+
if($this->tableAlias!==null)
|
|
810
|
+
return $this->tableAlias.'.';
|
|
811
|
+
else
|
|
812
|
+
return $this->_table->rawName.'.';
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
/**
|
|
816
|
+
* @return string the join statement (this node joins with its parent)
|
|
817
|
+
*/
|
|
818
|
+
public function getJoinCondition()
|
|
819
|
+
{
|
|
820
|
+
$parent=$this->_parent;
|
|
821
|
+
$relation=$this->relation;
|
|
822
|
+
if($this->relation instanceof CManyManyRelation)
|
|
823
|
+
{
|
|
824
|
+
if(!preg_match('/^\s*(.*?)\((.*)\)\s*$/',$this->relation->foreignKey,$matches))
|
|
825
|
+
throw new CDbException(Yii::t('yii','The relation "{relation}" in active record class "{class}" is specified with an invalid foreign key. The format of the foreign key must be "joinTable(fk1,fk2,...)".',
|
|
826
|
+
array('{class}'=>get_class($parent->model),'{relation}'=>$this->relation->name)));
|
|
827
|
+
|
|
828
|
+
$schema=$this->_builder->getSchema();
|
|
829
|
+
if(($joinTable=$schema->getTable($matches[1]))===null)
|
|
830
|
+
throw new CDbException(Yii::t('yii','The relation "{relation}" in active record class "{class}" is not specified correctly: the join table "{joinTable}" given in the foreign key cannot be found in the database.',
|
|
831
|
+
array('{class}'=>get_class($parent->model), '{relation}'=>$this->relation->name, '{joinTable}'=>$matches[1])));
|
|
832
|
+
$fks=preg_split('/[\s,]+/',$matches[2],-1,PREG_SPLIT_NO_EMPTY);
|
|
833
|
+
|
|
834
|
+
return $this->joinManyMany($joinTable,$fks,$parent);
|
|
835
|
+
}
|
|
836
|
+
else
|
|
837
|
+
{
|
|
838
|
+
$fks=preg_split('/[\s,]+/',$relation->foreignKey,-1,PREG_SPLIT_NO_EMPTY);
|
|
839
|
+
if($this->relation instanceof CBelongsToRelation)
|
|
840
|
+
{
|
|
841
|
+
$pke=$this;
|
|
842
|
+
$fke=$parent;
|
|
843
|
+
}
|
|
844
|
+
else
|
|
845
|
+
{
|
|
846
|
+
$pke=$parent;
|
|
847
|
+
$fke=$this;
|
|
848
|
+
}
|
|
849
|
+
return $this->joinOneMany($fke,$fks,$pke,$parent);
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
|
|
853
|
+
/**
|
|
854
|
+
* Generates the join statement for one-many relationship.
|
|
855
|
+
* This works for HAS_ONE, HAS_MANY and BELONGS_TO.
|
|
856
|
+
* @param CJoinElement the join element containing foreign keys
|
|
857
|
+
* @param array the foreign keys
|
|
858
|
+
* @param CJoinElement the join element containg primary keys
|
|
859
|
+
* @param CJoinElement the parent join element
|
|
860
|
+
* @return string the join statement
|
|
861
|
+
* @throws CDbException if a foreign key is invalid
|
|
862
|
+
*/
|
|
863
|
+
private function joinOneMany($fke,$fks,$pke,$parent)
|
|
864
|
+
{
|
|
865
|
+
$schema=$this->_builder->getSchema();
|
|
866
|
+
$joins=array();
|
|
867
|
+
foreach($fks as $i=>$fk)
|
|
868
|
+
{
|
|
869
|
+
if(!isset($fke->_table->columns[$fk]))
|
|
870
|
+
throw new CDbException(Yii::t('yii','The relation "{relation}" in active record class "{class}" is specified with an invalid foreign key "{key}". There is no such column in the table "{table}".',
|
|
871
|
+
array('{class}'=>get_class($parent->model), '{relation}'=>$this->relation->name, '{key}'=>$fk, '{table}'=>$fke->_table->name)));
|
|
872
|
+
|
|
873
|
+
if(isset($fke->_table->foreignKeys[$fk]))
|
|
874
|
+
$pk=$fke->_table->foreignKeys[$fk][1];
|
|
875
|
+
else // FK constraints undefined
|
|
876
|
+
{
|
|
877
|
+
if(is_array($pke->_table->primaryKey)) // composite PK
|
|
878
|
+
$pk=$pke->_table->primaryKey[$i];
|
|
879
|
+
else
|
|
880
|
+
$pk=$pke->_table->primaryKey;
|
|
881
|
+
}
|
|
882
|
+
$joins[]=$fke->getColumnPrefix().$schema->quoteColumnName($fk) . '=' . $pke->getColumnPrefix().$schema->quoteColumnName($pk);
|
|
883
|
+
}
|
|
884
|
+
if(!empty($this->relation->on))
|
|
885
|
+
$joins[]=str_replace($this->relation->aliasToken.'.', $this->tableAlias.'.', $this->relation->on);
|
|
886
|
+
return $this->relation->joinType . ' ' . $this->getTableNameWithAlias() . ' ON (' . implode(') AND (',$joins).')';
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
/**
|
|
890
|
+
* Generates the join statement for many-many relationship.
|
|
891
|
+
* @param CDbTableSchema the join table
|
|
892
|
+
* @param array the foreign keys
|
|
893
|
+
* @param CJoinElement the parent join element
|
|
894
|
+
* @return string the join statement
|
|
895
|
+
* @throws CDbException if a foreign key is invalid
|
|
896
|
+
*/
|
|
897
|
+
private function joinManyMany($joinTable,$fks,$parent)
|
|
898
|
+
{
|
|
899
|
+
$schema=$this->_builder->getSchema();
|
|
900
|
+
$joinAlias=$this->relation->name.'_'.$this->tableAlias;
|
|
901
|
+
$parentCondition=array();
|
|
902
|
+
$childCondition=array();
|
|
903
|
+
foreach($fks as $i=>$fk)
|
|
904
|
+
{
|
|
905
|
+
if(!isset($joinTable->columns[$fk]))
|
|
906
|
+
throw new CDbException(Yii::t('yii','The relation "{relation}" in active record class "{class}" is specified with an invalid foreign key "{key}". There is no such column in the table "{table}".',
|
|
907
|
+
array('{class}'=>get_class($parent->model), '{relation}'=>$this->relation->name, '{key}'=>$fk, '{table}'=>$joinTable->name)));
|
|
908
|
+
|
|
909
|
+
if(isset($joinTable->foreignKeys[$fk]))
|
|
910
|
+
{
|
|
911
|
+
list($tableName,$pk)=$joinTable->foreignKeys[$fk];
|
|
912
|
+
if(!isset($parentCondition[$pk]) && $schema->compareTableNames($parent->_table->rawName,$tableName))
|
|
913
|
+
$parentCondition[$pk]=$parent->getColumnPrefix().$schema->quoteColumnName($pk).'='.$joinAlias.'.'.$schema->quoteColumnName($fk);
|
|
914
|
+
else if(!isset($childCondition[$pk]) && $schema->compareTableNames($this->_table->rawName,$tableName))
|
|
915
|
+
$childCondition[$pk]=$this->getColumnPrefix().$schema->quoteColumnName($pk).'='.$joinAlias.'.'.$schema->quoteColumnName($fk);
|
|
916
|
+
else
|
|
917
|
+
throw new CDbException(Yii::t('yii','The relation "{relation}" in active record class "{class}" is specified with an invalid foreign key "{key}". The foreign key does not point to either joining table.',
|
|
918
|
+
array('{class}'=>get_class($parent->model), '{relation}'=>$this->relation->name, '{key}'=>$fk)));
|
|
919
|
+
}
|
|
920
|
+
else // FK constraints not defined
|
|
921
|
+
{
|
|
922
|
+
if($i<count($parent->_table->primaryKey))
|
|
923
|
+
{
|
|
924
|
+
$pk=is_array($parent->_table->primaryKey) ? $parent->_table->primaryKey[$i] : $parent->_table->primaryKey;
|
|
925
|
+
$parentCondition[$pk]=$parent->getColumnPrefix().$schema->quoteColumnName($pk).'='.$joinAlias.'.'.$schema->quoteColumnName($fk);
|
|
926
|
+
}
|
|
927
|
+
else
|
|
928
|
+
{
|
|
929
|
+
$j=$i-count($parent->_table->primaryKey);
|
|
930
|
+
$pk=is_array($this->_table->primaryKey) ? $this->_table->primaryKey[$j] : $this->_table->primaryKey;
|
|
931
|
+
$childCondition[$pk]=$this->getColumnPrefix().$schema->quoteColumnName($pk).'='.$joinAlias.'.'.$schema->quoteColumnName($fk);
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
if($parentCondition!==array() && $childCondition!==array())
|
|
936
|
+
{
|
|
937
|
+
$join=$this->relation->joinType.' '.$joinTable->rawName.' '.$joinAlias;
|
|
938
|
+
$join.=' ON ('.implode(') AND (',$parentCondition).')';
|
|
939
|
+
$join.=' '.$this->relation->joinType.' '.$this->getTableNameWithAlias();
|
|
940
|
+
$join.=' ON ('.implode(') AND (',$childCondition).')';
|
|
941
|
+
if(!empty($this->relation->on))
|
|
942
|
+
$join.=' AND ('.str_replace($this->relation->aliasToken.'.', $this->tableAlias.'.', $this->relation->on).')';
|
|
943
|
+
return $join;
|
|
944
|
+
}
|
|
945
|
+
else
|
|
946
|
+
throw new CDbException(Yii::t('yii','The relation "{relation}" in active record class "{class}" is specified with an incomplete foreign key. The foreign key must consist of columns referencing both joining tables.',
|
|
947
|
+
array('{class}'=>get_class($parent->model), '{relation}'=>$this->relation->name)));
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
|
|
952
|
+
/**
|
|
953
|
+
* CJoinQuery represents a JOIN SQL statement.
|
|
954
|
+
*
|
|
955
|
+
* @author Qiang Xue <qiang.xue@gmail.com>
|
|
956
|
+
* @version $Id: CActiveFinder.php 1296 2009-08-06 21:44:44Z qiang.xue $
|
|
957
|
+
* @package system.db.ar
|
|
958
|
+
* @since 1.0
|
|
959
|
+
*/
|
|
960
|
+
class CJoinQuery
|
|
961
|
+
{
|
|
962
|
+
/**
|
|
963
|
+
* @var array list of column selections
|
|
964
|
+
*/
|
|
965
|
+
public $selects=array();
|
|
966
|
+
/**
|
|
967
|
+
* @var array list of join statement
|
|
968
|
+
*/
|
|
969
|
+
public $joins=array();
|
|
970
|
+
/**
|
|
971
|
+
* @var array list of WHERE clauses
|
|
972
|
+
*/
|
|
973
|
+
public $conditions=array();
|
|
974
|
+
/**
|
|
975
|
+
* @var array list of ORDER BY clauses
|
|
976
|
+
*/
|
|
977
|
+
public $orders=array();
|
|
978
|
+
/**
|
|
979
|
+
* @var array list of GROUP BY clauses
|
|
980
|
+
*/
|
|
981
|
+
public $groups=array();
|
|
982
|
+
/**
|
|
983
|
+
* @var array list of HAVING clauses
|
|
984
|
+
*/
|
|
985
|
+
public $havings=array();
|
|
986
|
+
/**
|
|
987
|
+
* @var integer row limit
|
|
988
|
+
*/
|
|
989
|
+
public $limit=-1;
|
|
990
|
+
/**
|
|
991
|
+
* @var integer row offset
|
|
992
|
+
*/
|
|
993
|
+
public $offset=-1;
|
|
994
|
+
/**
|
|
995
|
+
* @var array list of query parameters
|
|
996
|
+
*/
|
|
997
|
+
public $params=array();
|
|
998
|
+
/**
|
|
999
|
+
* @var array list of join element IDs (id=>true)
|
|
1000
|
+
*/
|
|
1001
|
+
public $elements=array();
|
|
1002
|
+
|
|
1003
|
+
/**
|
|
1004
|
+
* Constructor.
|
|
1005
|
+
* @param CJoinElement The root join tree.
|
|
1006
|
+
* @param CDbCriteria the query criteria
|
|
1007
|
+
*/
|
|
1008
|
+
public function __construct($joinElement,$criteria=null)
|
|
1009
|
+
{
|
|
1010
|
+
if($criteria!==null)
|
|
1011
|
+
{
|
|
1012
|
+
$this->selects[]=$joinElement->getColumnSelect($criteria->select);
|
|
1013
|
+
$this->joins[]=$joinElement->getTableNameWithAlias();
|
|
1014
|
+
$this->joins[]=$criteria->join;
|
|
1015
|
+
$this->conditions[]=$criteria->condition;
|
|
1016
|
+
$this->orders[]=$criteria->order;
|
|
1017
|
+
$this->groups[]=$criteria->group;
|
|
1018
|
+
$this->havings[]=$criteria->having;
|
|
1019
|
+
$this->limit=$criteria->limit;
|
|
1020
|
+
$this->offset=$criteria->offset;
|
|
1021
|
+
$this->params=$criteria->params;
|
|
1022
|
+
}
|
|
1023
|
+
else
|
|
1024
|
+
{
|
|
1025
|
+
$this->selects[]=$joinElement->getPrimaryKeySelect();
|
|
1026
|
+
$this->joins[]=$joinElement->getTableNameWithAlias();
|
|
1027
|
+
$this->conditions[]=$joinElement->getPrimaryKeyRange();
|
|
1028
|
+
}
|
|
1029
|
+
$this->elements[$joinElement->id]=true;
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
/**
|
|
1033
|
+
* Joins with another join element
|
|
1034
|
+
* @param CJoinElement the element to be joined
|
|
1035
|
+
*/
|
|
1036
|
+
public function join($element)
|
|
1037
|
+
{
|
|
1038
|
+
$this->selects[]=$element->getColumnSelect($element->relation->select);
|
|
1039
|
+
$this->conditions[]=$element->getCondition();
|
|
1040
|
+
$this->orders[]=$element->getOrder();
|
|
1041
|
+
$this->joins[]=$element->getJoinCondition();
|
|
1042
|
+
$this->groups[]=$element->getGroupBy();
|
|
1043
|
+
$this->havings[]=$element->getHaving();
|
|
1044
|
+
|
|
1045
|
+
if(is_array($element->relation->params))
|
|
1046
|
+
{
|
|
1047
|
+
if(is_array($this->params))
|
|
1048
|
+
$this->params=array_merge($this->params,$element->relation->params);
|
|
1049
|
+
else
|
|
1050
|
+
$this->params=$element->relation->params;
|
|
1051
|
+
}
|
|
1052
|
+
$this->elements[$element->id]=true;
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1055
|
+
/**
|
|
1056
|
+
* Creates the SQL statement.
|
|
1057
|
+
* @param CDbCommandBuilder the command builder
|
|
1058
|
+
* @return string the SQL statement
|
|
1059
|
+
*/
|
|
1060
|
+
public function createCommand($builder)
|
|
1061
|
+
{
|
|
1062
|
+
$sql='SELECT ' . implode(', ',$this->selects);
|
|
1063
|
+
$sql.=' FROM ' . implode(' ',$this->joins);
|
|
1064
|
+
|
|
1065
|
+
$conditions=array();
|
|
1066
|
+
foreach($this->conditions as $condition)
|
|
1067
|
+
if($condition!=='')
|
|
1068
|
+
$conditions[]=$condition;
|
|
1069
|
+
if($conditions!==array())
|
|
1070
|
+
$sql.=' WHERE (' . implode(') AND (',$conditions).')';
|
|
1071
|
+
|
|
1072
|
+
$groups=array();
|
|
1073
|
+
foreach($this->groups as $group)
|
|
1074
|
+
if($group!=='')
|
|
1075
|
+
$groups[]=$group;
|
|
1076
|
+
if($groups!==array())
|
|
1077
|
+
$sql.=' GROUP BY ' . implode(', ',$groups);
|
|
1078
|
+
|
|
1079
|
+
$havings=array();
|
|
1080
|
+
foreach($this->havings as $having)
|
|
1081
|
+
if($having!=='')
|
|
1082
|
+
$havings[]=$having;
|
|
1083
|
+
if($havings!==array())
|
|
1084
|
+
$sql.=' HAVING (' . implode(') AND (',$havings).')';
|
|
1085
|
+
|
|
1086
|
+
$orders=array();
|
|
1087
|
+
foreach($this->orders as $order)
|
|
1088
|
+
if($order!=='')
|
|
1089
|
+
$orders[]=$order;
|
|
1090
|
+
if($orders!==array())
|
|
1091
|
+
$sql.=' ORDER BY ' . implode(', ',$orders);
|
|
1092
|
+
|
|
1093
|
+
$sql=$builder->applyLimit($sql,$this->limit,$this->offset);
|
|
1094
|
+
$command=$builder->getDbConnection()->createCommand($sql);
|
|
1095
|
+
$builder->bindValues($command,$this->params);
|
|
1096
|
+
return $command;
|
|
1097
|
+
}
|
|
1098
|
+
}
|
|
1099
|
+
|
|
1100
|
+
|
|
1101
|
+
/**
|
|
1102
|
+
* CStatElement represents STAT join element for {@link CActiveFinder}.
|
|
1103
|
+
*
|
|
1104
|
+
* @author Qiang Xue <qiang.xue@gmail.com>
|
|
1105
|
+
* @version $Id: CActiveFinder.php 1296 2009-08-06 21:44:44Z qiang.xue $
|
|
1106
|
+
* @package system.db.ar
|
|
1107
|
+
* @since 1.0.4
|
|
1108
|
+
*/
|
|
1109
|
+
class CStatElement
|
|
1110
|
+
{
|
|
1111
|
+
/**
|
|
1112
|
+
* @var CActiveRelation the relation represented by this tree node
|
|
1113
|
+
*/
|
|
1114
|
+
public $relation;
|
|
1115
|
+
|
|
1116
|
+
private $_finder;
|
|
1117
|
+
private $_parent;
|
|
1118
|
+
|
|
1119
|
+
/**
|
|
1120
|
+
* Constructor.
|
|
1121
|
+
* @param CActiveFinder the finder
|
|
1122
|
+
* @param CStatRelation the STAT relation
|
|
1123
|
+
* @param CJoinElement the join element owning this STAT element
|
|
1124
|
+
*/
|
|
1125
|
+
public function __construct($finder,$relation,$parent)
|
|
1126
|
+
{
|
|
1127
|
+
$this->_finder=$finder;
|
|
1128
|
+
$this->_parent=$parent;
|
|
1129
|
+
$this->relation=$relation;
|
|
1130
|
+
$parent->stats[]=$this;
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
/**
|
|
1134
|
+
* Performs the STAT query.
|
|
1135
|
+
*/
|
|
1136
|
+
public function query()
|
|
1137
|
+
{
|
|
1138
|
+
if(preg_match('/^\s*(.*?)\((.*)\)\s*$/',$this->relation->foreignKey,$matches))
|
|
1139
|
+
$this->queryManyMany($matches[1],$matches[2]);
|
|
1140
|
+
else
|
|
1141
|
+
$this->queryOneMany();
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
private function queryOneMany()
|
|
1145
|
+
{
|
|
1146
|
+
$relation=$this->relation;
|
|
1147
|
+
$model=CActiveRecord::model($relation->className);
|
|
1148
|
+
$builder=$model->getCommandBuilder();
|
|
1149
|
+
$schema=$builder->getSchema();
|
|
1150
|
+
$table=$model->getTableSchema();
|
|
1151
|
+
$pkTable=$this->_parent->model->getTableSchema();
|
|
1152
|
+
|
|
1153
|
+
$fks=preg_split('/[\s,]+/',$relation->foreignKey,-1,PREG_SPLIT_NO_EMPTY);
|
|
1154
|
+
if(count($fks)!==count($pkTable->primaryKey))
|
|
1155
|
+
throw new CDbException(Yii::t('yii','The relation "{relation}" in active record class "{class}" is specified with an invalid foreign key. The columns in the key must match the primary keys of the table "{table}".',
|
|
1156
|
+
array('{class}'=>get_class($parent->model), '{relation}'=>$relation->name, '{table}'=>$pkTable->name)));
|
|
1157
|
+
|
|
1158
|
+
// set up mapping between fk and pk columns
|
|
1159
|
+
$map=array(); // pk=>fk
|
|
1160
|
+
foreach($fks as $i=>$fk)
|
|
1161
|
+
{
|
|
1162
|
+
if(!isset($table->columns[$fk]))
|
|
1163
|
+
throw new CDbException(Yii::t('yii','The relation "{relation}" in active record class "{class}" is specified with an invalid foreign key "{key}". There is no such column in the table "{table}".',
|
|
1164
|
+
array('{class}'=>get_class($parent->model), '{relation}'=>$relation->name, '{key}'=>$fk, '{table}'=>$table->name)));
|
|
1165
|
+
|
|
1166
|
+
if(isset($table->foreignKeys[$fk]))
|
|
1167
|
+
{
|
|
1168
|
+
list($tableName,$pk)=$table->foreignKeys[$fk];
|
|
1169
|
+
if($schema->compareTableNames($pkTable->rawName,$tableName))
|
|
1170
|
+
$map[$pk]=$fk;
|
|
1171
|
+
else
|
|
1172
|
+
throw new CDbException(Yii::t('yii','The relation "{relation}" in active record class "{class}" is specified with a foreign key "{key}" that does not point to the parent table "{table}".',
|
|
1173
|
+
array('{class}'=>get_class($parent->model), '{relation}'=>$relation->name, '{key}'=>$fk, '{table}'=>$pkTable->name)));
|
|
1174
|
+
}
|
|
1175
|
+
else // FK constraints undefined
|
|
1176
|
+
{
|
|
1177
|
+
if(is_array($table->primaryKey)) // composite PK
|
|
1178
|
+
$map[$table->primaryKey[$i]]=$fk;
|
|
1179
|
+
}
|
|
1180
|
+
}
|
|
1181
|
+
|
|
1182
|
+
$records=$this->_parent->records;
|
|
1183
|
+
|
|
1184
|
+
$where=empty($relation->condition)?'' : ' WHERE ('.$relation->condition.')';
|
|
1185
|
+
$group=empty($relation->group)?'' : ', '.$relation->group;
|
|
1186
|
+
$having=empty($relation->having)?'' : ' AND ('.$relation->having.')';
|
|
1187
|
+
$order=empty($relation->order)?'' : ' ORDER BY '.$relation->order;
|
|
1188
|
+
|
|
1189
|
+
$c=$schema->quoteColumnName('c');
|
|
1190
|
+
$s=$schema->quoteColumnName('s');
|
|
1191
|
+
|
|
1192
|
+
// generate and perform query
|
|
1193
|
+
if(count($fks)===1) // single column FK
|
|
1194
|
+
{
|
|
1195
|
+
$col=$table->columns[$fks[0]]->rawName;
|
|
1196
|
+
$sql="SELECT $col AS $c, {$relation->select} AS $s FROM {$table->rawName}"
|
|
1197
|
+
.$where
|
|
1198
|
+
." GROUP BY $col".$group
|
|
1199
|
+
." HAVING ".$builder->createInCondition($table,$fks[0],array_keys($records))
|
|
1200
|
+
.$having.$order;
|
|
1201
|
+
$command=$builder->getDbConnection()->createCommand($sql);
|
|
1202
|
+
if(is_array($relation->params))
|
|
1203
|
+
$builder->bindValues($command,$relation->params);
|
|
1204
|
+
$stats=array();
|
|
1205
|
+
foreach($command->queryAll() as $row)
|
|
1206
|
+
$stats[$row['c']]=$row['s'];
|
|
1207
|
+
}
|
|
1208
|
+
else // composite FK
|
|
1209
|
+
{
|
|
1210
|
+
$keys=array_keys($records);
|
|
1211
|
+
foreach($keys as &$key)
|
|
1212
|
+
{
|
|
1213
|
+
$key2=unserialize($key);
|
|
1214
|
+
$key=array();
|
|
1215
|
+
foreach($pkTable->primaryKey as $pk)
|
|
1216
|
+
$key[$map[$pk]]=$key2[$pk];
|
|
1217
|
+
}
|
|
1218
|
+
$cols=array();
|
|
1219
|
+
foreach($pkTable->primaryKey as $n=>$pk)
|
|
1220
|
+
{
|
|
1221
|
+
$name=$table->columns[$map[$pk]]->rawName;
|
|
1222
|
+
$cols[$name]=$name.' AS '.$schema->quoteColumnName('c'.$n);
|
|
1223
|
+
}
|
|
1224
|
+
$sql='SELECT '.implode(', ',$cols).", {$relation->select} AS $s FROM {$table->rawName}"
|
|
1225
|
+
.$where
|
|
1226
|
+
.' GROUP BY '.implode(', ',array_keys($cols)).$group
|
|
1227
|
+
.' HAVING '.$builder->createInCondition($table,$fks,$keys)
|
|
1228
|
+
.$having.$order;
|
|
1229
|
+
$command=$builder->getDbConnection()->createCommand($sql);
|
|
1230
|
+
if(is_array($relation->params))
|
|
1231
|
+
$builder->bindValues($command,$relation->params);
|
|
1232
|
+
$stats=array();
|
|
1233
|
+
foreach($command->queryAll() as $row)
|
|
1234
|
+
{
|
|
1235
|
+
$key=array();
|
|
1236
|
+
foreach($pkTable->primaryKey as $n=>$pk)
|
|
1237
|
+
$key[$pk]=$row['c'.$n];
|
|
1238
|
+
$stats[serialize($key)]=$row['s'];
|
|
1239
|
+
}
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1242
|
+
// populate the results into existing records
|
|
1243
|
+
foreach($records as $pk=>$record)
|
|
1244
|
+
$record->addRelatedRecord($relation->name,isset($stats[$pk])?$stats[$pk]:$relation->defaultValue,false);
|
|
1245
|
+
}
|
|
1246
|
+
|
|
1247
|
+
private function queryManyMany($joinTableName,$keys)
|
|
1248
|
+
{
|
|
1249
|
+
$relation=$this->relation;
|
|
1250
|
+
$model=CActiveRecord::model($relation->className);
|
|
1251
|
+
$table=$model->getTableSchema();
|
|
1252
|
+
$builder=$model->getCommandBuilder();
|
|
1253
|
+
$schema=$builder->getSchema();
|
|
1254
|
+
$pkTable=$this->_parent->model->getTableSchema();
|
|
1255
|
+
|
|
1256
|
+
if(($joinTable=$builder->getSchema()->getTable($joinTableName))===null)
|
|
1257
|
+
throw new CDbException(Yii::t('yii','The relation "{relation}" in active record class "{class}" is not specified correctly. The join table "{joinTable}" given in the foreign key cannot be found in the database.',
|
|
1258
|
+
array('{class}'=>get_class($this->_parent->model), '{relation}'=>$relation->name, '{joinTable}'=>$joinTableName)));
|
|
1259
|
+
|
|
1260
|
+
$fks=preg_split('/[\s,]+/',$keys,-1,PREG_SPLIT_NO_EMPTY);
|
|
1261
|
+
if(count($fks)!==count($table->primaryKey)+count($pkTable->primaryKey))
|
|
1262
|
+
throw new CDbException(Yii::t('yii','The relation "{relation}" in active record class "{class}" is specified with an incomplete foreign key. The foreign key must consist of columns referencing both joining tables.',
|
|
1263
|
+
array('{class}'=>get_class($this->_parent->model), '{relation}'=>$relation->name)));
|
|
1264
|
+
|
|
1265
|
+
$joinCondition=array();
|
|
1266
|
+
$map=array();
|
|
1267
|
+
foreach($fks as $i=>$fk)
|
|
1268
|
+
{
|
|
1269
|
+
if(!isset($joinTable->columns[$fk]))
|
|
1270
|
+
throw new CDbException(Yii::t('yii','The relation "{relation}" in active record class "{class}" is specified with an invalid foreign key "{key}". There is no such column in the table "{table}".',
|
|
1271
|
+
array('{class}'=>get_class($this->_parent->model), '{relation}'=>$relation->name, '{key}'=>$fk, '{table}'=>$joinTable->name)));
|
|
1272
|
+
|
|
1273
|
+
if(isset($joinTable->foreignKeys[$fk]))
|
|
1274
|
+
{
|
|
1275
|
+
list($tableName,$pk)=$joinTable->foreignKeys[$fk];
|
|
1276
|
+
if(!isset($joinCondition[$pk]) && $schema->compareTableNames($table->rawName,$tableName))
|
|
1277
|
+
$joinCondition[$pk]=$table->rawName.'.'.$schema->quoteColumnName($pk).'='.$joinTable->rawName.'.'.$schema->quoteColumnName($fk);
|
|
1278
|
+
else if(!isset($map[$pk]) && $schema->compareTableNames($pkTable->rawName,$tableName))
|
|
1279
|
+
$map[$pk]=$fk;
|
|
1280
|
+
else
|
|
1281
|
+
throw new CDbException(Yii::t('yii','The relation "{relation}" in active record class "{class}" is specified with an invalid foreign key "{key}". The foreign key does not point to either joining table.',
|
|
1282
|
+
array('{class}'=>get_class($this->_parent->model), '{relation}'=>$relation->name, '{key}'=>$fk)));
|
|
1283
|
+
}
|
|
1284
|
+
else // FK constraints not defined
|
|
1285
|
+
{
|
|
1286
|
+
if($i<count($pkTable->primaryKey))
|
|
1287
|
+
{
|
|
1288
|
+
$pk=is_array($pkTable->primaryKey) ? $pkTable->primaryKey[$i] : $pkTable->primaryKey;
|
|
1289
|
+
$map[$pk]=$fk;
|
|
1290
|
+
}
|
|
1291
|
+
else
|
|
1292
|
+
{
|
|
1293
|
+
$j=$i-count($pkTable->primaryKey);
|
|
1294
|
+
$pk=is_array($table->primaryKey) ? $table->primaryKey[$j] : $table->primaryKey;
|
|
1295
|
+
$joinCondition[$pk]=$table->rawName.'.'.$schema->quoteColumnName($pk).'='.$joinTable->rawName.'.'.$schema->quoteColumnName($fk);
|
|
1296
|
+
}
|
|
1297
|
+
}
|
|
1298
|
+
}
|
|
1299
|
+
|
|
1300
|
+
if($joinCondition===array() || $map===array())
|
|
1301
|
+
throw new CDbException(Yii::t('yii','The relation "{relation}" in active record class "{class}" is specified with an incomplete foreign key. The foreign key must consist of columns referencing both joining tables.',
|
|
1302
|
+
array('{class}'=>get_class($this->_parent->model), '{relation}'=>$relation->name)));
|
|
1303
|
+
|
|
1304
|
+
$records=$this->_parent->records;
|
|
1305
|
+
|
|
1306
|
+
$cols=array();
|
|
1307
|
+
foreach(is_string($pkTable->primaryKey)?array($pkTable->primaryKey):$pkTable->primaryKey as $n=>$pk)
|
|
1308
|
+
{
|
|
1309
|
+
$name=$joinTable->rawName.'.'.$schema->quoteColumnName($map[$pk]);
|
|
1310
|
+
$cols[$name]=$name.' AS '.$schema->quoteColumnName('c'.$n);
|
|
1311
|
+
}
|
|
1312
|
+
|
|
1313
|
+
$keys=array_keys($records);
|
|
1314
|
+
if(is_array($pkTable->primaryKey))
|
|
1315
|
+
{
|
|
1316
|
+
foreach($keys as &$key)
|
|
1317
|
+
{
|
|
1318
|
+
$key2=unserialize($key);
|
|
1319
|
+
$key=array();
|
|
1320
|
+
foreach($pkTable->primaryKey as $pk)
|
|
1321
|
+
$key[$map[$pk]]=$key2[$pk];
|
|
1322
|
+
}
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
$where=empty($relation->condition)?'' : ' WHERE ('.$relation->condition.')';
|
|
1326
|
+
$group=empty($relation->group)?'' : ', '.$relation->group;
|
|
1327
|
+
$having=empty($relation->having)?'' : ' AND ('.$relation->having.')';
|
|
1328
|
+
$order=empty($relation->order)?'' : ' ORDER BY '.$relation->order;
|
|
1329
|
+
|
|
1330
|
+
$sql='SELECT '.$this->relation->select.' AS '.$schema->quoteColumnName('s').', '.implode(', ',$cols)
|
|
1331
|
+
.' FROM '.$table->rawName.' INNER JOIN '.$joinTable->rawName
|
|
1332
|
+
.' ON ('.implode(') AND (',$joinCondition).')'
|
|
1333
|
+
.$where
|
|
1334
|
+
.' GROUP BY '.implode(', ',array_keys($cols)).$group
|
|
1335
|
+
.' HAVING ('.$builder->createInCondition($joinTable,$map,$keys).')'
|
|
1336
|
+
.$having.$order;
|
|
1337
|
+
|
|
1338
|
+
$command=$builder->getDbConnection()->createCommand($sql);
|
|
1339
|
+
if(is_array($relation->params))
|
|
1340
|
+
$builder->bindValues($command,$relation->params);
|
|
1341
|
+
|
|
1342
|
+
$stats=array();
|
|
1343
|
+
foreach($command->queryAll() as $row)
|
|
1344
|
+
{
|
|
1345
|
+
if(is_array($pkTable->primaryKey))
|
|
1346
|
+
{
|
|
1347
|
+
$key=array();
|
|
1348
|
+
foreach($pkTable->primaryKey as $n=>$k)
|
|
1349
|
+
$key[$k]=$row['c'.$n];
|
|
1350
|
+
$stats[serialize($key)]=$row['s'];
|
|
1351
|
+
}
|
|
1352
|
+
else
|
|
1353
|
+
$stats[$row['c0']]=$row['s'];
|
|
1354
|
+
}
|
|
1355
|
+
|
|
1356
|
+
foreach($records as $pk=>$record)
|
|
1357
|
+
$record->addRelatedRecord($relation->name,isset($stats[$pk])?$stats[$pk]:$this->relation->defaultValue,false);
|
|
1358
|
+
}
|
|
1359
|
+
}
|