powerdlz23 1.1.7 → 1.1.9

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.
Files changed (1035) hide show
  1. package/package.json +1 -1
  2. package/pto/TikTok-Downloader-Bot/Dockerfile +6 -0
  3. package/pto/TikTok-Downloader-Bot/LICENSE +21 -0
  4. package/pto/TikTok-Downloader-Bot/Procfile +1 -0
  5. package/pto/TikTok-Downloader-Bot/README.md +59 -0
  6. package/pto/TikTok-Downloader-Bot/app.json +40 -0
  7. package/pto/TikTok-Downloader-Bot/docker-compose.yml +11 -0
  8. package/pto/TikTok-Downloader-Bot/main.py +131 -0
  9. package/pto/TikTok-Downloader-Bot/progress_bar.py +63 -0
  10. package/pto/TikTok-Downloader-Bot/requirements.txt +6 -0
  11. package/pto/TikTok-Downloader-Bot/runtime.txt +1 -0
  12. package/pto/yaamp/README.md +70 -0
  13. package/pto/yaamp/blocknotify/blocknotify.cpp +90 -0
  14. package/pto/yaamp/config/blake.conf +16 -0
  15. package/pto/yaamp/config/fresh.conf +16 -0
  16. package/pto/yaamp/config/groestl.conf +16 -0
  17. package/pto/yaamp/config/keccak.conf +16 -0
  18. package/pto/yaamp/config/lyra2.conf +16 -0
  19. package/pto/yaamp/config/neo.conf +16 -0
  20. package/pto/yaamp/config/nist5.conf +16 -0
  21. package/pto/yaamp/config/quark.conf +16 -0
  22. package/pto/yaamp/config/qubit.conf +16 -0
  23. package/pto/yaamp/config/run.sh +12 -0
  24. package/pto/yaamp/config/scrypt.conf +16 -0
  25. package/pto/yaamp/config/scryptn.conf +16 -0
  26. package/pto/yaamp/config/sha.conf +17 -0
  27. package/pto/yaamp/config/skein.conf +16 -0
  28. package/pto/yaamp/config/x11.conf +16 -0
  29. package/pto/yaamp/config/x13.conf +16 -0
  30. package/pto/yaamp/config/x14.conf +16 -0
  31. package/pto/yaamp/config/x15.conf +16 -0
  32. package/pto/yaamp/rc.local +30 -0
  33. package/pto/yaamp/stratum/algos/Lyra2.c +208 -0
  34. package/pto/yaamp/stratum/algos/Lyra2.h +50 -0
  35. package/pto/yaamp/stratum/algos/Lyra2RE.c +70 -0
  36. package/pto/yaamp/stratum/algos/Lyra2RE.h +16 -0
  37. package/pto/yaamp/stratum/algos/Sponge.c +745 -0
  38. package/pto/yaamp/stratum/algos/Sponge.h +115 -0
  39. package/pto/yaamp/stratum/algos/blake.c +16 -0
  40. package/pto/yaamp/stratum/algos/blake.h +16 -0
  41. package/pto/yaamp/stratum/algos/fresh.c +44 -0
  42. package/pto/yaamp/stratum/algos/fresh.h +16 -0
  43. package/pto/yaamp/stratum/algos/groestl.c +41 -0
  44. package/pto/yaamp/stratum/algos/groestl.h +18 -0
  45. package/pto/yaamp/stratum/algos/jha.c +135 -0
  46. package/pto/yaamp/stratum/algos/jha.h +16 -0
  47. package/pto/yaamp/stratum/algos/keccak.c +32 -0
  48. package/pto/yaamp/stratum/algos/keccak.h +16 -0
  49. package/pto/yaamp/stratum/algos/makefile +32 -0
  50. package/pto/yaamp/stratum/algos/neoscrypt.c +962 -0
  51. package/pto/yaamp/stratum/algos/neoscrypt.h +33 -0
  52. package/pto/yaamp/stratum/algos/nist5.c +47 -0
  53. package/pto/yaamp/stratum/algos/nist5.h +16 -0
  54. package/pto/yaamp/stratum/algos/quark.c +210 -0
  55. package/pto/yaamp/stratum/algos/quark.h +16 -0
  56. package/pto/yaamp/stratum/algos/qubit.c +44 -0
  57. package/pto/yaamp/stratum/algos/qubit.h +17 -0
  58. package/pto/yaamp/stratum/algos/scrypt.c +681 -0
  59. package/pto/yaamp/stratum/algos/scryptn.c +257 -0
  60. package/pto/yaamp/stratum/algos/scryptn.h +16 -0
  61. package/pto/yaamp/stratum/algos/sha256.c +287 -0
  62. package/pto/yaamp/stratum/algos/sha256.h +440 -0
  63. package/pto/yaamp/stratum/algos/skein.c +27 -0
  64. package/pto/yaamp/stratum/algos/skein.h +16 -0
  65. package/pto/yaamp/stratum/algos/whirlpoolx.c +44 -0
  66. package/pto/yaamp/stratum/algos/whirlpoolx.h +16 -0
  67. package/pto/yaamp/stratum/algos/x11.c +85 -0
  68. package/pto/yaamp/stratum/algos/x11.h +16 -0
  69. package/pto/yaamp/stratum/algos/x13.c +98 -0
  70. package/pto/yaamp/stratum/algos/x13.h +16 -0
  71. package/pto/yaamp/stratum/algos/x14.c +102 -0
  72. package/pto/yaamp/stratum/algos/x14.h +16 -0
  73. package/pto/yaamp/stratum/algos/x15.c +106 -0
  74. package/pto/yaamp/stratum/algos/x15.h +16 -0
  75. package/pto/yaamp/stratum/algos/zr5.c +104 -0
  76. package/pto/yaamp/stratum/algos/zr5.h +17 -0
  77. package/pto/yaamp/stratum/base58.cpp +99 -0
  78. package/pto/yaamp/stratum/client.cpp +432 -0
  79. package/pto/yaamp/stratum/client.h +142 -0
  80. package/pto/yaamp/stratum/client_core.cpp +312 -0
  81. package/pto/yaamp/stratum/client_difficulty.cpp +105 -0
  82. package/pto/yaamp/stratum/client_submit.cpp +304 -0
  83. package/pto/yaamp/stratum/coinbase.cpp +139 -0
  84. package/pto/yaamp/stratum/coind.cpp +188 -0
  85. package/pto/yaamp/stratum/coind.h +97 -0
  86. package/pto/yaamp/stratum/coind_aux.cpp +107 -0
  87. package/pto/yaamp/stratum/coind_submit.cpp +113 -0
  88. package/pto/yaamp/stratum/coind_template.cpp +309 -0
  89. package/pto/yaamp/stratum/db.cpp +418 -0
  90. package/pto/yaamp/stratum/db.h +32 -0
  91. package/pto/yaamp/stratum/iniparser/AUTHORS +6 -0
  92. package/pto/yaamp/stratum/iniparser/INSTALL +15 -0
  93. package/pto/yaamp/stratum/iniparser/LICENSE +21 -0
  94. package/pto/yaamp/stratum/iniparser/Makefile +72 -0
  95. package/pto/yaamp/stratum/iniparser/README +12 -0
  96. package/pto/yaamp/stratum/iniparser/doc/Makefile +16 -0
  97. package/pto/yaamp/stratum/iniparser/doc/iniparser.dox +81 -0
  98. package/pto/yaamp/stratum/iniparser/doc/iniparser.main +207 -0
  99. package/pto/yaamp/stratum/iniparser/html/doxygen.css +545 -0
  100. package/pto/yaamp/stratum/iniparser/html/doxygen.png +0 -0
  101. package/pto/yaamp/stratum/iniparser/html/globals_func.html +64 -0
  102. package/pto/yaamp/stratum/iniparser/html/index.html +101 -0
  103. package/pto/yaamp/stratum/iniparser/html/iniparser_8h.html +583 -0
  104. package/pto/yaamp/stratum/iniparser/html/iniparser_8main.html +19 -0
  105. package/pto/yaamp/stratum/iniparser/html/tab_b.gif +0 -0
  106. package/pto/yaamp/stratum/iniparser/html/tab_l.gif +0 -0
  107. package/pto/yaamp/stratum/iniparser/html/tab_r.gif +0 -0
  108. package/pto/yaamp/stratum/iniparser/html/tabs.css +105 -0
  109. package/pto/yaamp/stratum/iniparser/src/dictionary.c +402 -0
  110. package/pto/yaamp/stratum/iniparser/src/dictionary.h +185 -0
  111. package/pto/yaamp/stratum/iniparser/src/iniparser.c +904 -0
  112. package/pto/yaamp/stratum/iniparser/src/iniparser.h +315 -0
  113. package/pto/yaamp/stratum/iniparser/test/Makefile +27 -0
  114. package/pto/yaamp/stratum/iniparser/test/iniexample.c +100 -0
  115. package/pto/yaamp/stratum/iniparser/test/parse.c +24 -0
  116. package/pto/yaamp/stratum/iniparser/test/twisted-errors.ini +9 -0
  117. package/pto/yaamp/stratum/iniparser/test/twisted-genhuge.py +12 -0
  118. package/pto/yaamp/stratum/iniparser/test/twisted-ofkey.ini +66 -0
  119. package/pto/yaamp/stratum/iniparser/test/twisted-ofval.ini +56 -0
  120. package/pto/yaamp/stratum/iniparser/test/twisted.ini +131 -0
  121. package/pto/yaamp/stratum/job.cpp +324 -0
  122. package/pto/yaamp/stratum/job.h +120 -0
  123. package/pto/yaamp/stratum/job_core.cpp +132 -0
  124. package/pto/yaamp/stratum/job_send.cpp +162 -0
  125. package/pto/yaamp/stratum/json.cpp +980 -0
  126. package/pto/yaamp/stratum/json.h +271 -0
  127. package/pto/yaamp/stratum/list.cpp +165 -0
  128. package/pto/yaamp/stratum/makefile +53 -0
  129. package/pto/yaamp/stratum/merkle.cpp +86 -0
  130. package/pto/yaamp/stratum/object.cpp +73 -0
  131. package/pto/yaamp/stratum/object.h +25 -0
  132. package/pto/yaamp/stratum/remote.cpp +301 -0
  133. package/pto/yaamp/stratum/remote.h +96 -0
  134. package/pto/yaamp/stratum/remote_template.cpp +138 -0
  135. package/pto/yaamp/stratum/rpc.cpp +270 -0
  136. package/pto/yaamp/stratum/rpc.h +32 -0
  137. package/pto/yaamp/stratum/sha3/aes_helper.c +392 -0
  138. package/pto/yaamp/stratum/sha3/hamsi_helper.c +39648 -0
  139. package/pto/yaamp/stratum/sha3/libhash.a +0 -0
  140. package/pto/yaamp/stratum/sha3/makefile +34 -0
  141. package/pto/yaamp/stratum/sha3/md_helper.c +347 -0
  142. package/pto/yaamp/stratum/sha3/sph_blake.c +1127 -0
  143. package/pto/yaamp/stratum/sha3/sph_blake.h +327 -0
  144. package/pto/yaamp/stratum/sha3/sph_bmw.c +965 -0
  145. package/pto/yaamp/stratum/sha3/sph_bmw.h +328 -0
  146. package/pto/yaamp/stratum/sha3/sph_cubehash.c +723 -0
  147. package/pto/yaamp/stratum/sha3/sph_cubehash.h +292 -0
  148. package/pto/yaamp/stratum/sha3/sph_echo.c +1031 -0
  149. package/pto/yaamp/stratum/sha3/sph_echo.h +320 -0
  150. package/pto/yaamp/stratum/sha3/sph_fugue.c +1208 -0
  151. package/pto/yaamp/stratum/sha3/sph_fugue.h +81 -0
  152. package/pto/yaamp/stratum/sha3/sph_groestl.c +3119 -0
  153. package/pto/yaamp/stratum/sha3/sph_groestl.h +329 -0
  154. package/pto/yaamp/stratum/sha3/sph_hamsi.c +867 -0
  155. package/pto/yaamp/stratum/sha3/sph_hamsi.h +322 -0
  156. package/pto/yaamp/stratum/sha3/sph_hefty1.c +378 -0
  157. package/pto/yaamp/stratum/sha3/sph_hefty1.h +66 -0
  158. package/pto/yaamp/stratum/sha3/sph_jh.c +1116 -0
  159. package/pto/yaamp/stratum/sha3/sph_jh.h +298 -0
  160. package/pto/yaamp/stratum/sha3/sph_keccak.c +1824 -0
  161. package/pto/yaamp/stratum/sha3/sph_keccak.h +293 -0
  162. package/pto/yaamp/stratum/sha3/sph_luffa.c +1426 -0
  163. package/pto/yaamp/stratum/sha3/sph_luffa.h +296 -0
  164. package/pto/yaamp/stratum/sha3/sph_shabal.c +806 -0
  165. package/pto/yaamp/stratum/sha3/sph_shabal.h +344 -0
  166. package/pto/yaamp/stratum/sha3/sph_shavite.c +1764 -0
  167. package/pto/yaamp/stratum/sha3/sph_shavite.h +314 -0
  168. package/pto/yaamp/stratum/sha3/sph_simd.c +1799 -0
  169. package/pto/yaamp/stratum/sha3/sph_simd.h +309 -0
  170. package/pto/yaamp/stratum/sha3/sph_skein.c +1254 -0
  171. package/pto/yaamp/stratum/sha3/sph_skein.h +298 -0
  172. package/pto/yaamp/stratum/sha3/sph_types.h +1976 -0
  173. package/pto/yaamp/stratum/sha3/sph_whirlpool.c +3480 -0
  174. package/pto/yaamp/stratum/sha3/sph_whirlpool.h +209 -0
  175. package/pto/yaamp/stratum/share.cpp +279 -0
  176. package/pto/yaamp/stratum/share.h +106 -0
  177. package/pto/yaamp/stratum/socket.cpp +159 -0
  178. package/pto/yaamp/stratum/socket.h +28 -0
  179. package/pto/yaamp/stratum/stratum.cpp +321 -0
  180. package/pto/yaamp/stratum/stratum.h +141 -0
  181. package/pto/yaamp/stratum/user.cpp +104 -0
  182. package/pto/yaamp/stratum/util.cpp +666 -0
  183. package/pto/yaamp/stratum/util.h +127 -0
  184. package/pto/yaamp/web/.project +22 -0
  185. package/pto/yaamp/web/blocks.sh +10 -0
  186. package/pto/yaamp/web/extensions/jqplot/MIT-LICENSE.txt +21 -0
  187. package/pto/yaamp/web/extensions/jqplot/README.txt +77 -0
  188. package/pto/yaamp/web/extensions/jqplot/changes.txt +458 -0
  189. package/pto/yaamp/web/extensions/jqplot/copyright.txt +56 -0
  190. package/pto/yaamp/web/extensions/jqplot/excanvas.js +1438 -0
  191. package/pto/yaamp/web/extensions/jqplot/excanvas.min.js +3 -0
  192. package/pto/yaamp/web/extensions/jqplot/gpl-2.0.txt +280 -0
  193. package/pto/yaamp/web/extensions/jqplot/jqPlotCssStyling.txt +53 -0
  194. package/pto/yaamp/web/extensions/jqplot/jqPlotOptions.txt +391 -0
  195. package/pto/yaamp/web/extensions/jqplot/jquery.jqplot.css +259 -0
  196. package/pto/yaamp/web/extensions/jqplot/jquery.jqplot.js +11411 -0
  197. package/pto/yaamp/web/extensions/jqplot/jquery.jqplot.min.css +1 -0
  198. package/pto/yaamp/web/extensions/jqplot/jquery.jqplot.min.js +3 -0
  199. package/pto/yaamp/web/extensions/jqplot/optionsTutorial.txt +243 -0
  200. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.BezierCurveRenderer.js +314 -0
  201. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.BezierCurveRenderer.min.js +3 -0
  202. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.barRenderer.js +801 -0
  203. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.barRenderer.min.js +3 -0
  204. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.blockRenderer.js +235 -0
  205. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.blockRenderer.min.js +3 -0
  206. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.bubbleRenderer.js +759 -0
  207. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.bubbleRenderer.min.js +3 -0
  208. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.canvasAxisLabelRenderer.js +203 -0
  209. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js +3 -0
  210. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.canvasAxisTickRenderer.js +253 -0
  211. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js +3 -0
  212. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.canvasOverlay.js +1021 -0
  213. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.canvasOverlay.min.js +3 -0
  214. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.canvasTextRenderer.js +449 -0
  215. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.canvasTextRenderer.min.js +3 -0
  216. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.categoryAxisRenderer.js +679 -0
  217. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.categoryAxisRenderer.min.js +3 -0
  218. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.ciParser.js +116 -0
  219. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.ciParser.min.js +3 -0
  220. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.cursor.js +1108 -0
  221. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.cursor.min.js +3 -0
  222. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.dateAxisRenderer.js +741 -0
  223. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.dateAxisRenderer.min.js +3 -0
  224. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.donutRenderer.js +805 -0
  225. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.donutRenderer.min.js +3 -0
  226. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.dragable.js +225 -0
  227. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.dragable.min.js +3 -0
  228. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.enhancedLegendRenderer.js +305 -0
  229. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js +3 -0
  230. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.funnelRenderer.js +943 -0
  231. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.funnelRenderer.min.js +3 -0
  232. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.highlighter.js +465 -0
  233. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.highlighter.min.js +3 -0
  234. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.json2.js +475 -0
  235. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.json2.min.js +3 -0
  236. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.logAxisRenderer.js +534 -0
  237. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.logAxisRenderer.min.js +3 -0
  238. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.mekkoAxisRenderer.js +611 -0
  239. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js +3 -0
  240. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.mekkoRenderer.js +437 -0
  241. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.mekkoRenderer.min.js +3 -0
  242. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.meterGaugeRenderer.js +1029 -0
  243. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.meterGaugeRenderer.min.js +3 -0
  244. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.mobile.js +45 -0
  245. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.mobile.min.js +3 -0
  246. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.ohlcRenderer.js +373 -0
  247. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.ohlcRenderer.min.js +3 -0
  248. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pieRenderer.js +904 -0
  249. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pieRenderer.min.js +3 -0
  250. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pointLabels.js +377 -0
  251. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pointLabels.min.js +3 -0
  252. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pyramidAxisRenderer.js +728 -0
  253. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pyramidAxisRenderer.min.js +3 -0
  254. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pyramidGridRenderer.js +429 -0
  255. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pyramidGridRenderer.min.js +3 -0
  256. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pyramidRenderer.js +514 -0
  257. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.pyramidRenderer.min.js +3 -0
  258. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.trendline.js +223 -0
  259. package/pto/yaamp/web/extensions/jqplot/plugins/jqplot.trendline.min.js +3 -0
  260. package/pto/yaamp/web/extensions/jqplot/usage.txt +126 -0
  261. package/pto/yaamp/web/extensions/jquery/js/jquery-1.10.2.min.js +6 -0
  262. package/pto/yaamp/web/extensions/jquery/js/jquery-1.8.3-dev.js +9472 -0
  263. package/pto/yaamp/web/extensions/jquery/js/jquery-ui-1.10.3.custom.min.js +7 -0
  264. package/pto/yaamp/web/extensions/jquery/js/jquery-ui-1.9.1.custom.min.js +6 -0
  265. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/animated-overlay.gif +0 -0
  266. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  267. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  268. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  269. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  270. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  271. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  272. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  273. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  274. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  275. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  276. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
  277. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
  278. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
  279. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
  280. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery-ui.css +1178 -0
  281. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.accordion.css +38 -0
  282. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.all.css +12 -0
  283. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.autocomplete.css +16 -0
  284. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.base.css +25 -0
  285. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.button.css +114 -0
  286. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.core.css +93 -0
  287. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.datepicker.css +178 -0
  288. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.dialog.css +69 -0
  289. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.menu.css +79 -0
  290. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.progressbar.css +28 -0
  291. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.resizable.css +78 -0
  292. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.selectable.css +15 -0
  293. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.slider.css +73 -0
  294. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.spinner.css +65 -0
  295. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.tabs.css +52 -0
  296. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.theme.css +406 -0
  297. package/pto/yaamp/web/extensions/jquery/themes/ui-lightness/jquery.ui.tooltip.css +19 -0
  298. package/pto/yaamp/web/favicon.ico +0 -0
  299. package/pto/yaamp/web/framework-1.0.8/.htaccess +1 -0
  300. package/pto/yaamp/web/framework-1.0.8/YiiBase.php +684 -0
  301. package/pto/yaamp/web/framework-1.0.8/base/CApplication.php +718 -0
  302. package/pto/yaamp/web/framework-1.0.8/base/CApplicationComponent.php +56 -0
  303. package/pto/yaamp/web/framework-1.0.8/base/CBehavior.php +87 -0
  304. package/pto/yaamp/web/framework-1.0.8/base/CComponent.php +599 -0
  305. package/pto/yaamp/web/framework-1.0.8/base/CErrorEvent.php +54 -0
  306. package/pto/yaamp/web/framework-1.0.8/base/CErrorHandler.php +336 -0
  307. package/pto/yaamp/web/framework-1.0.8/base/CException.php +22 -0
  308. package/pto/yaamp/web/framework-1.0.8/base/CExceptionEvent.php +36 -0
  309. package/pto/yaamp/web/framework-1.0.8/base/CHttpException.php +40 -0
  310. package/pto/yaamp/web/framework-1.0.8/base/CModel.php +634 -0
  311. package/pto/yaamp/web/framework-1.0.8/base/CModelBehavior.php +54 -0
  312. package/pto/yaamp/web/framework-1.0.8/base/CModelEvent.php +32 -0
  313. package/pto/yaamp/web/framework-1.0.8/base/CModule.php +465 -0
  314. package/pto/yaamp/web/framework-1.0.8/base/CSecurityManager.php +245 -0
  315. package/pto/yaamp/web/framework-1.0.8/base/CStatePersister.php +102 -0
  316. package/pto/yaamp/web/framework-1.0.8/base/interfaces.php +534 -0
  317. package/pto/yaamp/web/framework-1.0.8/caching/CApcCache.php +108 -0
  318. package/pto/yaamp/web/framework-1.0.8/caching/CCache.php +312 -0
  319. package/pto/yaamp/web/framework-1.0.8/caching/CDbCache.php +250 -0
  320. package/pto/yaamp/web/framework-1.0.8/caching/CDummyCache.php +145 -0
  321. package/pto/yaamp/web/framework-1.0.8/caching/CEAcceleratorCache.php +104 -0
  322. package/pto/yaamp/web/framework-1.0.8/caching/CFileCache.php +217 -0
  323. package/pto/yaamp/web/framework-1.0.8/caching/CMemCache.php +272 -0
  324. package/pto/yaamp/web/framework-1.0.8/caching/CXCache.php +97 -0
  325. package/pto/yaamp/web/framework-1.0.8/caching/CZendDataCache.php +98 -0
  326. package/pto/yaamp/web/framework-1.0.8/caching/dependencies/CCacheDependency.php +62 -0
  327. package/pto/yaamp/web/framework-1.0.8/caching/dependencies/CChainedCacheDependency.php +68 -0
  328. package/pto/yaamp/web/framework-1.0.8/caching/dependencies/CDbCacheDependency.php +87 -0
  329. package/pto/yaamp/web/framework-1.0.8/caching/dependencies/CDirectoryCacheDependency.php +134 -0
  330. package/pto/yaamp/web/framework-1.0.8/caching/dependencies/CExpressionDependency.php +49 -0
  331. package/pto/yaamp/web/framework-1.0.8/caching/dependencies/CFileCacheDependency.php +53 -0
  332. package/pto/yaamp/web/framework-1.0.8/caching/dependencies/CGlobalStateCacheDependency.php +54 -0
  333. package/pto/yaamp/web/framework-1.0.8/collections/CAttributeCollection.php +187 -0
  334. package/pto/yaamp/web/framework-1.0.8/collections/CConfiguration.php +121 -0
  335. package/pto/yaamp/web/framework-1.0.8/collections/CList.php +341 -0
  336. package/pto/yaamp/web/framework-1.0.8/collections/CListIterator.php +94 -0
  337. package/pto/yaamp/web/framework-1.0.8/collections/CMap.php +319 -0
  338. package/pto/yaamp/web/framework-1.0.8/collections/CMapIterator.php +93 -0
  339. package/pto/yaamp/web/framework-1.0.8/collections/CQueue.php +168 -0
  340. package/pto/yaamp/web/framework-1.0.8/collections/CQueueIterator.php +94 -0
  341. package/pto/yaamp/web/framework-1.0.8/collections/CStack.php +169 -0
  342. package/pto/yaamp/web/framework-1.0.8/collections/CStackIterator.php +94 -0
  343. package/pto/yaamp/web/framework-1.0.8/collections/CTypedList.php +52 -0
  344. package/pto/yaamp/web/framework-1.0.8/db/CDbCommand.php +326 -0
  345. package/pto/yaamp/web/framework-1.0.8/db/CDbConnection.php +645 -0
  346. package/pto/yaamp/web/framework-1.0.8/db/CDbDataReader.php +221 -0
  347. package/pto/yaamp/web/framework-1.0.8/db/CDbException.php +21 -0
  348. package/pto/yaamp/web/framework-1.0.8/db/CDbTransaction.php +108 -0
  349. package/pto/yaamp/web/framework-1.0.8/db/ar/CActiveFinder.php +1359 -0
  350. package/pto/yaamp/web/framework-1.0.8/db/ar/CActiveRecord.php +2212 -0
  351. package/pto/yaamp/web/framework-1.0.8/db/ar/CActiveRecordBehavior.php +96 -0
  352. package/pto/yaamp/web/framework-1.0.8/db/schema/CDbColumnSchema.php +143 -0
  353. package/pto/yaamp/web/framework-1.0.8/db/schema/CDbCommandBuilder.php +664 -0
  354. package/pto/yaamp/web/framework-1.0.8/db/schema/CDbCriteria.php +166 -0
  355. package/pto/yaamp/web/framework-1.0.8/db/schema/CDbExpression.php +49 -0
  356. package/pto/yaamp/web/framework-1.0.8/db/schema/CDbSchema.php +203 -0
  357. package/pto/yaamp/web/framework-1.0.8/db/schema/CDbTableSchema.php +76 -0
  358. package/pto/yaamp/web/framework-1.0.8/db/schema/mssql/CMssqlColumnSchema.php +55 -0
  359. package/pto/yaamp/web/framework-1.0.8/db/schema/mssql/CMssqlCommandBuilder.php +304 -0
  360. package/pto/yaamp/web/framework-1.0.8/db/schema/mssql/CMssqlPdoAdapter.php +74 -0
  361. package/pto/yaamp/web/framework-1.0.8/db/schema/mssql/CMssqlSchema.php +310 -0
  362. package/pto/yaamp/web/framework-1.0.8/db/schema/mssql/CMssqlTableSchema.php +33 -0
  363. package/pto/yaamp/web/framework-1.0.8/db/schema/mysql/CMysqlColumnSchema.php +46 -0
  364. package/pto/yaamp/web/framework-1.0.8/db/schema/mysql/CMysqlSchema.php +201 -0
  365. package/pto/yaamp/web/framework-1.0.8/db/schema/mysql/CMysqlTableSchema.php +26 -0
  366. package/pto/yaamp/web/framework-1.0.8/db/schema/oci/COciColumnSchema.php +54 -0
  367. package/pto/yaamp/web/framework-1.0.8/db/schema/oci/COciCommandBuilder.php +122 -0
  368. package/pto/yaamp/web/framework-1.0.8/db/schema/oci/COciSchema.php +276 -0
  369. package/pto/yaamp/web/framework-1.0.8/db/schema/oci/COciTableSchema.php +26 -0
  370. package/pto/yaamp/web/framework-1.0.8/db/schema/pgsql/CPgsqlColumnSchema.php +56 -0
  371. package/pto/yaamp/web/framework-1.0.8/db/schema/pgsql/CPgsqlSchema.php +282 -0
  372. package/pto/yaamp/web/framework-1.0.8/db/schema/pgsql/CPgsqlTableSchema.php +25 -0
  373. package/pto/yaamp/web/framework-1.0.8/db/schema/sqlite/CSqliteColumnSchema.php +33 -0
  374. package/pto/yaamp/web/framework-1.0.8/db/schema/sqlite/CSqliteCommandBuilder.php +41 -0
  375. package/pto/yaamp/web/framework-1.0.8/db/schema/sqlite/CSqliteSchema.php +129 -0
  376. package/pto/yaamp/web/framework-1.0.8/i18n/CChoiceFormat.php +77 -0
  377. package/pto/yaamp/web/framework-1.0.8/i18n/CDateFormatter.php +507 -0
  378. package/pto/yaamp/web/framework-1.0.8/i18n/CDbMessageSource.php +114 -0
  379. package/pto/yaamp/web/framework-1.0.8/i18n/CGettextMessageSource.php +111 -0
  380. package/pto/yaamp/web/framework-1.0.8/i18n/CLocale.php +243 -0
  381. package/pto/yaamp/web/framework-1.0.8/i18n/CMessageSource.php +157 -0
  382. package/pto/yaamp/web/framework-1.0.8/i18n/CNumberFormatter.php +280 -0
  383. package/pto/yaamp/web/framework-1.0.8/i18n/CPhpMessageSource.php +96 -0
  384. package/pto/yaamp/web/framework-1.0.8/i18n/gettext/CGettextFile.php +36 -0
  385. package/pto/yaamp/web/framework-1.0.8/i18n/gettext/CGettextMoFile.php +269 -0
  386. package/pto/yaamp/web/framework-1.0.8/i18n/gettext/CGettextPoFile.php +89 -0
  387. package/pto/yaamp/web/framework-1.0.8/logging/CDbLogRoute.php +168 -0
  388. package/pto/yaamp/web/framework-1.0.8/logging/CEmailLogRoute.php +122 -0
  389. package/pto/yaamp/web/framework-1.0.8/logging/CFileLogRoute.php +162 -0
  390. package/pto/yaamp/web/framework-1.0.8/logging/CLogFilter.php +103 -0
  391. package/pto/yaamp/web/framework-1.0.8/logging/CLogRoute.php +107 -0
  392. package/pto/yaamp/web/framework-1.0.8/logging/CLogRouter.php +107 -0
  393. package/pto/yaamp/web/framework-1.0.8/logging/CLogger.php +237 -0
  394. package/pto/yaamp/web/framework-1.0.8/logging/CProfileLogRoute.php +201 -0
  395. package/pto/yaamp/web/framework-1.0.8/logging/CWebLogRoute.php +57 -0
  396. package/pto/yaamp/web/framework-1.0.8/messages/bg/yii.php +213 -0
  397. package/pto/yaamp/web/framework-1.0.8/messages/config.php +19 -0
  398. package/pto/yaamp/web/framework-1.0.8/messages/de/yii.php +221 -0
  399. package/pto/yaamp/web/framework-1.0.8/messages/el/yii.php +222 -0
  400. package/pto/yaamp/web/framework-1.0.8/messages/es/yii.php +231 -0
  401. package/pto/yaamp/web/framework-1.0.8/messages/fr/yii.php +210 -0
  402. package/pto/yaamp/web/framework-1.0.8/messages/he/yii.php +206 -0
  403. package/pto/yaamp/web/framework-1.0.8/messages/hu/yii.php +213 -0
  404. package/pto/yaamp/web/framework-1.0.8/messages/id/yii.php +213 -0
  405. package/pto/yaamp/web/framework-1.0.8/messages/it/yii.php +208 -0
  406. package/pto/yaamp/web/framework-1.0.8/messages/ja/yii.php +230 -0
  407. package/pto/yaamp/web/framework-1.0.8/messages/nl/yii.php +206 -0
  408. package/pto/yaamp/web/framework-1.0.8/messages/no/yii.php +222 -0
  409. package/pto/yaamp/web/framework-1.0.8/messages/pl/yii.php +213 -0
  410. package/pto/yaamp/web/framework-1.0.8/messages/pt/yii.php +213 -0
  411. package/pto/yaamp/web/framework-1.0.8/messages/ro/yii.php +213 -0
  412. package/pto/yaamp/web/framework-1.0.8/messages/ru/yii.php +214 -0
  413. package/pto/yaamp/web/framework-1.0.8/messages/sr_sr/yii.php +205 -0
  414. package/pto/yaamp/web/framework-1.0.8/messages/sr_yu/yii.php +205 -0
  415. package/pto/yaamp/web/framework-1.0.8/messages/sv/yii.php +226 -0
  416. package/pto/yaamp/web/framework-1.0.8/messages/uk/yii.php +213 -0
  417. package/pto/yaamp/web/framework-1.0.8/messages/vi/yii.php +213 -0
  418. package/pto/yaamp/web/framework-1.0.8/messages/zh_cn/yii.php +213 -0
  419. package/pto/yaamp/web/framework-1.0.8/messages/zh_tw/yii.php +207 -0
  420. package/pto/yaamp/web/framework-1.0.8/utils/CDateTimeParser.php +230 -0
  421. package/pto/yaamp/web/framework-1.0.8/utils/CFileHelper.php +228 -0
  422. package/pto/yaamp/web/framework-1.0.8/utils/CMarkdownParser.php +179 -0
  423. package/pto/yaamp/web/framework-1.0.8/utils/CPropertyValue.php +158 -0
  424. package/pto/yaamp/web/framework-1.0.8/utils/CTimestamp.php +715 -0
  425. package/pto/yaamp/web/framework-1.0.8/utils/CVarDumper.php +142 -0
  426. package/pto/yaamp/web/framework-1.0.8/utils/mimeTypes.php +178 -0
  427. package/pto/yaamp/web/framework-1.0.8/validators/CCaptchaValidator.php +72 -0
  428. package/pto/yaamp/web/framework-1.0.8/validators/CCompareValidator.php +151 -0
  429. package/pto/yaamp/web/framework-1.0.8/validators/CDefaultValueValidator.php +51 -0
  430. package/pto/yaamp/web/framework-1.0.8/validators/CEmailValidator.php +80 -0
  431. package/pto/yaamp/web/framework-1.0.8/validators/CExistValidator.php +88 -0
  432. package/pto/yaamp/web/framework-1.0.8/validators/CFileValidator.php +159 -0
  433. package/pto/yaamp/web/framework-1.0.8/validators/CFilterValidator.php +49 -0
  434. package/pto/yaamp/web/framework-1.0.8/validators/CInlineValidator.php +41 -0
  435. package/pto/yaamp/web/framework-1.0.8/validators/CNumberValidator.php +86 -0
  436. package/pto/yaamp/web/framework-1.0.8/validators/CRangeValidator.php +53 -0
  437. package/pto/yaamp/web/framework-1.0.8/validators/CRegularExpressionValidator.php +51 -0
  438. package/pto/yaamp/web/framework-1.0.8/validators/CRequiredValidator.php +36 -0
  439. package/pto/yaamp/web/framework-1.0.8/validators/CStringValidator.php +78 -0
  440. package/pto/yaamp/web/framework-1.0.8/validators/CTypeValidator.php +99 -0
  441. package/pto/yaamp/web/framework-1.0.8/validators/CUniqueValidator.php +106 -0
  442. package/pto/yaamp/web/framework-1.0.8/validators/CUrlValidator.php +49 -0
  443. package/pto/yaamp/web/framework-1.0.8/validators/CValidator.php +194 -0
  444. package/pto/yaamp/web/framework-1.0.8/vendors/README.html +89 -0
  445. package/pto/yaamp/web/framework-1.0.8/vendors/adodb/LICENSE.txt +182 -0
  446. package/pto/yaamp/web/framework-1.0.8/vendors/cldr/LICENSE.txt +33 -0
  447. package/pto/yaamp/web/framework-1.0.8/vendors/gettext/LICENSE.txt +22 -0
  448. package/pto/yaamp/web/framework-1.0.8/vendors/json/LICENSE.txt +22 -0
  449. package/pto/yaamp/web/framework-1.0.8/vendors/markdown/LICENSE.txt +36 -0
  450. package/pto/yaamp/web/framework-1.0.8/vendors/markdown/markdown.php +2623 -0
  451. package/pto/yaamp/web/framework-1.0.8/views/de/error.php +38 -0
  452. package/pto/yaamp/web/framework-1.0.8/views/de/error400.php +34 -0
  453. package/pto/yaamp/web/framework-1.0.8/views/de/error403.php +33 -0
  454. package/pto/yaamp/web/framework-1.0.8/views/de/error404.php +34 -0
  455. package/pto/yaamp/web/framework-1.0.8/views/de/error500.php +35 -0
  456. package/pto/yaamp/web/framework-1.0.8/views/de/error503.php +31 -0
  457. package/pto/yaamp/web/framework-1.0.8/views/de/exception.php +74 -0
  458. package/pto/yaamp/web/framework-1.0.8/views/de/log-firebug.php +23 -0
  459. package/pto/yaamp/web/framework-1.0.8/views/de/log.php +32 -0
  460. package/pto/yaamp/web/framework-1.0.8/views/de/profile-callstack-firebug.php +19 -0
  461. package/pto/yaamp/web/framework-1.0.8/views/de/profile-callstack.php +30 -0
  462. package/pto/yaamp/web/framework-1.0.8/views/de/profile-summary-firebug.php +23 -0
  463. package/pto/yaamp/web/framework-1.0.8/views/de/profile-summary.php +41 -0
  464. package/pto/yaamp/web/framework-1.0.8/views/error.php +37 -0
  465. package/pto/yaamp/web/framework-1.0.8/views/error400.php +33 -0
  466. package/pto/yaamp/web/framework-1.0.8/views/error403.php +32 -0
  467. package/pto/yaamp/web/framework-1.0.8/views/error404.php +33 -0
  468. package/pto/yaamp/web/framework-1.0.8/views/error500.php +35 -0
  469. package/pto/yaamp/web/framework-1.0.8/views/error503.php +31 -0
  470. package/pto/yaamp/web/framework-1.0.8/views/es/error.php +37 -0
  471. package/pto/yaamp/web/framework-1.0.8/views/es/error400.php +33 -0
  472. package/pto/yaamp/web/framework-1.0.8/views/es/error403.php +32 -0
  473. package/pto/yaamp/web/framework-1.0.8/views/es/error404.php +33 -0
  474. package/pto/yaamp/web/framework-1.0.8/views/es/error500.php +35 -0
  475. package/pto/yaamp/web/framework-1.0.8/views/es/error503.php +31 -0
  476. package/pto/yaamp/web/framework-1.0.8/views/es/exception.php +74 -0
  477. package/pto/yaamp/web/framework-1.0.8/views/es/log-firebug.php +23 -0
  478. package/pto/yaamp/web/framework-1.0.8/views/es/log.php +32 -0
  479. package/pto/yaamp/web/framework-1.0.8/views/es/profile-callstack-firebug.php +19 -0
  480. package/pto/yaamp/web/framework-1.0.8/views/es/profile-callstack.php +30 -0
  481. package/pto/yaamp/web/framework-1.0.8/views/es/profile-summary-firebug.php +22 -0
  482. package/pto/yaamp/web/framework-1.0.8/views/es/profile-summary.php +41 -0
  483. package/pto/yaamp/web/framework-1.0.8/views/exception.php +74 -0
  484. package/pto/yaamp/web/framework-1.0.8/views/fr/error.php +37 -0
  485. package/pto/yaamp/web/framework-1.0.8/views/fr/error400.php +33 -0
  486. package/pto/yaamp/web/framework-1.0.8/views/fr/error403.php +32 -0
  487. package/pto/yaamp/web/framework-1.0.8/views/fr/error404.php +34 -0
  488. package/pto/yaamp/web/framework-1.0.8/views/fr/error500.php +35 -0
  489. package/pto/yaamp/web/framework-1.0.8/views/fr/error503.php +31 -0
  490. package/pto/yaamp/web/framework-1.0.8/views/fr/exception.php +74 -0
  491. package/pto/yaamp/web/framework-1.0.8/views/fr/log-firebug.php +23 -0
  492. package/pto/yaamp/web/framework-1.0.8/views/fr/log.php +32 -0
  493. package/pto/yaamp/web/framework-1.0.8/views/fr/profile-callstack-firebug.php +19 -0
  494. package/pto/yaamp/web/framework-1.0.8/views/fr/profile-callstack.php +30 -0
  495. package/pto/yaamp/web/framework-1.0.8/views/fr/profile-summary-firebug.php +22 -0
  496. package/pto/yaamp/web/framework-1.0.8/views/fr/profile-summary.php +41 -0
  497. package/pto/yaamp/web/framework-1.0.8/views/he/error.php +38 -0
  498. package/pto/yaamp/web/framework-1.0.8/views/he/error400.php +34 -0
  499. package/pto/yaamp/web/framework-1.0.8/views/he/error403.php +33 -0
  500. package/pto/yaamp/web/framework-1.0.8/views/he/error404.php +34 -0
  501. package/pto/yaamp/web/framework-1.0.8/views/he/error500.php +36 -0
  502. package/pto/yaamp/web/framework-1.0.8/views/he/error503.php +32 -0
  503. package/pto/yaamp/web/framework-1.0.8/views/he/exception.php +75 -0
  504. package/pto/yaamp/web/framework-1.0.8/views/he/log-firebug.php +23 -0
  505. package/pto/yaamp/web/framework-1.0.8/views/he/log.php +32 -0
  506. package/pto/yaamp/web/framework-1.0.8/views/he/profile-callstack-firebug.php +19 -0
  507. package/pto/yaamp/web/framework-1.0.8/views/he/profile-callstack.php +30 -0
  508. package/pto/yaamp/web/framework-1.0.8/views/he/profile-summary-firebug.php +22 -0
  509. package/pto/yaamp/web/framework-1.0.8/views/he/profile-summary.php +41 -0
  510. package/pto/yaamp/web/framework-1.0.8/views/id/error.php +37 -0
  511. package/pto/yaamp/web/framework-1.0.8/views/id/error400.php +33 -0
  512. package/pto/yaamp/web/framework-1.0.8/views/id/error403.php +32 -0
  513. package/pto/yaamp/web/framework-1.0.8/views/id/error404.php +33 -0
  514. package/pto/yaamp/web/framework-1.0.8/views/id/error500.php +35 -0
  515. package/pto/yaamp/web/framework-1.0.8/views/id/error503.php +31 -0
  516. package/pto/yaamp/web/framework-1.0.8/views/id/exception.php +74 -0
  517. package/pto/yaamp/web/framework-1.0.8/views/id/log-firebug.php +23 -0
  518. package/pto/yaamp/web/framework-1.0.8/views/id/log.php +32 -0
  519. package/pto/yaamp/web/framework-1.0.8/views/id/profile-callstack-firebug.php +19 -0
  520. package/pto/yaamp/web/framework-1.0.8/views/id/profile-callstack.php +30 -0
  521. package/pto/yaamp/web/framework-1.0.8/views/id/profile-summary-firebug.php +22 -0
  522. package/pto/yaamp/web/framework-1.0.8/views/id/profile-summary.php +41 -0
  523. package/pto/yaamp/web/framework-1.0.8/views/ja/error.php +37 -0
  524. package/pto/yaamp/web/framework-1.0.8/views/ja/error400.php +33 -0
  525. package/pto/yaamp/web/framework-1.0.8/views/ja/error403.php +32 -0
  526. package/pto/yaamp/web/framework-1.0.8/views/ja/error404.php +33 -0
  527. package/pto/yaamp/web/framework-1.0.8/views/ja/error500.php +35 -0
  528. package/pto/yaamp/web/framework-1.0.8/views/ja/error503.php +31 -0
  529. package/pto/yaamp/web/framework-1.0.8/views/ja/exception.php +74 -0
  530. package/pto/yaamp/web/framework-1.0.8/views/ja/log-firebug.php +23 -0
  531. package/pto/yaamp/web/framework-1.0.8/views/ja/log.php +32 -0
  532. package/pto/yaamp/web/framework-1.0.8/views/ja/profile-callstack-firebug.php +19 -0
  533. package/pto/yaamp/web/framework-1.0.8/views/ja/profile-callstack.php +30 -0
  534. package/pto/yaamp/web/framework-1.0.8/views/ja/profile-summary-firebug.php +22 -0
  535. package/pto/yaamp/web/framework-1.0.8/views/ja/profile-summary.php +41 -0
  536. package/pto/yaamp/web/framework-1.0.8/views/log-firebug.php +23 -0
  537. package/pto/yaamp/web/framework-1.0.8/views/log.php +32 -0
  538. package/pto/yaamp/web/framework-1.0.8/views/nl/error.php +25 -0
  539. package/pto/yaamp/web/framework-1.0.8/views/nl/error400.php +24 -0
  540. package/pto/yaamp/web/framework-1.0.8/views/nl/error403.php +24 -0
  541. package/pto/yaamp/web/framework-1.0.8/views/nl/error404.php +24 -0
  542. package/pto/yaamp/web/framework-1.0.8/views/nl/error500.php +24 -0
  543. package/pto/yaamp/web/framework-1.0.8/views/nl/error503.php +24 -0
  544. package/pto/yaamp/web/framework-1.0.8/views/nl/exception.php +62 -0
  545. package/pto/yaamp/web/framework-1.0.8/views/nl/log-firebug.php +22 -0
  546. package/pto/yaamp/web/framework-1.0.8/views/nl/log.php +29 -0
  547. package/pto/yaamp/web/framework-1.0.8/views/nl/profile-callstack-firebug.php +17 -0
  548. package/pto/yaamp/web/framework-1.0.8/views/nl/profile-callstack.php +29 -0
  549. package/pto/yaamp/web/framework-1.0.8/views/nl/profile-summary-firebug.php +20 -0
  550. package/pto/yaamp/web/framework-1.0.8/views/nl/profile-summary.php +41 -0
  551. package/pto/yaamp/web/framework-1.0.8/views/no/error.php +37 -0
  552. package/pto/yaamp/web/framework-1.0.8/views/no/error400.php +33 -0
  553. package/pto/yaamp/web/framework-1.0.8/views/no/error403.php +32 -0
  554. package/pto/yaamp/web/framework-1.0.8/views/no/error404.php +33 -0
  555. package/pto/yaamp/web/framework-1.0.8/views/no/error500.php +35 -0
  556. package/pto/yaamp/web/framework-1.0.8/views/no/error503.php +31 -0
  557. package/pto/yaamp/web/framework-1.0.8/views/no/exception.php +74 -0
  558. package/pto/yaamp/web/framework-1.0.8/views/no/log-firebug.php +23 -0
  559. package/pto/yaamp/web/framework-1.0.8/views/no/log.php +32 -0
  560. package/pto/yaamp/web/framework-1.0.8/views/no/profile-callstack-firebug.php +19 -0
  561. package/pto/yaamp/web/framework-1.0.8/views/no/profile-callstack.php +30 -0
  562. package/pto/yaamp/web/framework-1.0.8/views/no/profile-summary-firebug.php +22 -0
  563. package/pto/yaamp/web/framework-1.0.8/views/no/profile-summary.php +41 -0
  564. package/pto/yaamp/web/framework-1.0.8/views/profile-callstack-firebug.php +19 -0
  565. package/pto/yaamp/web/framework-1.0.8/views/profile-callstack.php +30 -0
  566. package/pto/yaamp/web/framework-1.0.8/views/profile-summary-firebug.php +22 -0
  567. package/pto/yaamp/web/framework-1.0.8/views/profile-summary.php +41 -0
  568. package/pto/yaamp/web/framework-1.0.8/views/pt/error.php +37 -0
  569. package/pto/yaamp/web/framework-1.0.8/views/pt/error400.php +33 -0
  570. package/pto/yaamp/web/framework-1.0.8/views/pt/error403.php +32 -0
  571. package/pto/yaamp/web/framework-1.0.8/views/pt/error404.php +33 -0
  572. package/pto/yaamp/web/framework-1.0.8/views/pt/error500.php +35 -0
  573. package/pto/yaamp/web/framework-1.0.8/views/pt/error503.php +31 -0
  574. package/pto/yaamp/web/framework-1.0.8/views/pt/exception.php +74 -0
  575. package/pto/yaamp/web/framework-1.0.8/views/pt/log-firebug.php +23 -0
  576. package/pto/yaamp/web/framework-1.0.8/views/pt/log.php +32 -0
  577. package/pto/yaamp/web/framework-1.0.8/views/pt/profile-callstack-firebug.php +19 -0
  578. package/pto/yaamp/web/framework-1.0.8/views/pt/profile-callstack.php +30 -0
  579. package/pto/yaamp/web/framework-1.0.8/views/pt/profile-summary-firebug.php +22 -0
  580. package/pto/yaamp/web/framework-1.0.8/views/pt/profile-summary.php +41 -0
  581. package/pto/yaamp/web/framework-1.0.8/views/ro/error.php +37 -0
  582. package/pto/yaamp/web/framework-1.0.8/views/ro/error400.php +33 -0
  583. package/pto/yaamp/web/framework-1.0.8/views/ro/error403.php +32 -0
  584. package/pto/yaamp/web/framework-1.0.8/views/ro/error404.php +33 -0
  585. package/pto/yaamp/web/framework-1.0.8/views/ro/error500.php +35 -0
  586. package/pto/yaamp/web/framework-1.0.8/views/ro/error503.php +31 -0
  587. package/pto/yaamp/web/framework-1.0.8/views/ro/exception.php +74 -0
  588. package/pto/yaamp/web/framework-1.0.8/views/ro/log-firebug.php +23 -0
  589. package/pto/yaamp/web/framework-1.0.8/views/ro/log.php +32 -0
  590. package/pto/yaamp/web/framework-1.0.8/views/ro/profile-callstack-firebug.php +19 -0
  591. package/pto/yaamp/web/framework-1.0.8/views/ro/profile-callstack.php +30 -0
  592. package/pto/yaamp/web/framework-1.0.8/views/ro/profile-summary-firebug.php +22 -0
  593. package/pto/yaamp/web/framework-1.0.8/views/ro/profile-summary.php +41 -0
  594. package/pto/yaamp/web/framework-1.0.8/views/ru/error.php +37 -0
  595. package/pto/yaamp/web/framework-1.0.8/views/ru/error400.php +33 -0
  596. package/pto/yaamp/web/framework-1.0.8/views/ru/error403.php +32 -0
  597. package/pto/yaamp/web/framework-1.0.8/views/ru/error404.php +33 -0
  598. package/pto/yaamp/web/framework-1.0.8/views/ru/error500.php +35 -0
  599. package/pto/yaamp/web/framework-1.0.8/views/ru/error503.php +31 -0
  600. package/pto/yaamp/web/framework-1.0.8/views/ru/exception.php +74 -0
  601. package/pto/yaamp/web/framework-1.0.8/views/ru/log-firebug.php +23 -0
  602. package/pto/yaamp/web/framework-1.0.8/views/ru/log.php +32 -0
  603. package/pto/yaamp/web/framework-1.0.8/views/ru/profile-callstack-firebug.php +19 -0
  604. package/pto/yaamp/web/framework-1.0.8/views/ru/profile-callstack.php +30 -0
  605. package/pto/yaamp/web/framework-1.0.8/views/ru/profile-summary-firebug.php +22 -0
  606. package/pto/yaamp/web/framework-1.0.8/views/ru/profile-summary.php +41 -0
  607. package/pto/yaamp/web/framework-1.0.8/views/sv/error.php +37 -0
  608. package/pto/yaamp/web/framework-1.0.8/views/sv/error400.php +33 -0
  609. package/pto/yaamp/web/framework-1.0.8/views/sv/error403.php +33 -0
  610. package/pto/yaamp/web/framework-1.0.8/views/sv/error404.php +33 -0
  611. package/pto/yaamp/web/framework-1.0.8/views/sv/error500.php +35 -0
  612. package/pto/yaamp/web/framework-1.0.8/views/sv/error503.php +31 -0
  613. package/pto/yaamp/web/framework-1.0.8/views/sv/exception.php +74 -0
  614. package/pto/yaamp/web/framework-1.0.8/views/sv/log-firebug.php +23 -0
  615. package/pto/yaamp/web/framework-1.0.8/views/sv/log.php +32 -0
  616. package/pto/yaamp/web/framework-1.0.8/views/sv/profile-callstack-firebug.php +19 -0
  617. package/pto/yaamp/web/framework-1.0.8/views/sv/profile-callstack.php +30 -0
  618. package/pto/yaamp/web/framework-1.0.8/views/sv/profile-summary-firebug.php +22 -0
  619. package/pto/yaamp/web/framework-1.0.8/views/sv/profile-summary.php +41 -0
  620. package/pto/yaamp/web/framework-1.0.8/views/zh_cn/error.php +37 -0
  621. package/pto/yaamp/web/framework-1.0.8/views/zh_cn/error400.php +33 -0
  622. package/pto/yaamp/web/framework-1.0.8/views/zh_cn/error403.php +32 -0
  623. package/pto/yaamp/web/framework-1.0.8/views/zh_cn/error404.php +33 -0
  624. package/pto/yaamp/web/framework-1.0.8/views/zh_cn/error500.php +35 -0
  625. package/pto/yaamp/web/framework-1.0.8/views/zh_cn/error503.php +31 -0
  626. package/pto/yaamp/web/framework-1.0.8/views/zh_cn/exception.php +74 -0
  627. package/pto/yaamp/web/framework-1.0.8/views/zh_cn/log-firebug.php +23 -0
  628. package/pto/yaamp/web/framework-1.0.8/views/zh_cn/log.php +32 -0
  629. package/pto/yaamp/web/framework-1.0.8/views/zh_cn/profile-callstack-firebug.php +19 -0
  630. package/pto/yaamp/web/framework-1.0.8/views/zh_cn/profile-callstack.php +28 -0
  631. package/pto/yaamp/web/framework-1.0.8/views/zh_cn/profile-summary-firebug.php +22 -0
  632. package/pto/yaamp/web/framework-1.0.8/views/zh_cn/profile-summary.php +41 -0
  633. package/pto/yaamp/web/framework-1.0.8/views/zh_tw/error.php +37 -0
  634. package/pto/yaamp/web/framework-1.0.8/views/zh_tw/error400.php +33 -0
  635. package/pto/yaamp/web/framework-1.0.8/views/zh_tw/error403.php +32 -0
  636. package/pto/yaamp/web/framework-1.0.8/views/zh_tw/error404.php +33 -0
  637. package/pto/yaamp/web/framework-1.0.8/views/zh_tw/error500.php +35 -0
  638. package/pto/yaamp/web/framework-1.0.8/views/zh_tw/error503.php +31 -0
  639. package/pto/yaamp/web/framework-1.0.8/views/zh_tw/exception.php +74 -0
  640. package/pto/yaamp/web/framework-1.0.8/views/zh_tw/log-firebug.php +23 -0
  641. package/pto/yaamp/web/framework-1.0.8/views/zh_tw/log.php +32 -0
  642. package/pto/yaamp/web/framework-1.0.8/views/zh_tw/profile-callstack-firebug.php +19 -0
  643. package/pto/yaamp/web/framework-1.0.8/views/zh_tw/profile-callstack.php +30 -0
  644. package/pto/yaamp/web/framework-1.0.8/views/zh_tw/profile-summary-firebug.php +22 -0
  645. package/pto/yaamp/web/framework-1.0.8/views/zh_tw/profile-summary.php +41 -0
  646. package/pto/yaamp/web/framework-1.0.8/web/CAssetManager.php +227 -0
  647. package/pto/yaamp/web/framework-1.0.8/web/CBaseController.php +283 -0
  648. package/pto/yaamp/web/framework-1.0.8/web/CCacheHttpSession.php +111 -0
  649. package/pto/yaamp/web/framework-1.0.8/web/CClientScript.php +562 -0
  650. package/pto/yaamp/web/framework-1.0.8/web/CController.php +1072 -0
  651. package/pto/yaamp/web/framework-1.0.8/web/CDbHttpSession.php +203 -0
  652. package/pto/yaamp/web/framework-1.0.8/web/CExtController.php +53 -0
  653. package/pto/yaamp/web/framework-1.0.8/web/CFormModel.php +113 -0
  654. package/pto/yaamp/web/framework-1.0.8/web/CHttpCookie.php +63 -0
  655. package/pto/yaamp/web/framework-1.0.8/web/CHttpRequest.php +763 -0
  656. package/pto/yaamp/web/framework-1.0.8/web/CHttpSession.php +522 -0
  657. package/pto/yaamp/web/framework-1.0.8/web/CHttpSessionIterator.php +92 -0
  658. package/pto/yaamp/web/framework-1.0.8/web/COutputEvent.php +38 -0
  659. package/pto/yaamp/web/framework-1.0.8/web/CPagination.php +161 -0
  660. package/pto/yaamp/web/framework-1.0.8/web/CSort.php +292 -0
  661. package/pto/yaamp/web/framework-1.0.8/web/CTheme.php +124 -0
  662. package/pto/yaamp/web/framework-1.0.8/web/CThemeManager.php +127 -0
  663. package/pto/yaamp/web/framework-1.0.8/web/CUploadedFile.php +210 -0
  664. package/pto/yaamp/web/framework-1.0.8/web/CUrlManager.php +613 -0
  665. package/pto/yaamp/web/framework-1.0.8/web/CWebApplication.php +608 -0
  666. package/pto/yaamp/web/framework-1.0.8/web/CWebModule.php +187 -0
  667. package/pto/yaamp/web/framework-1.0.8/web/actions/CAction.php +58 -0
  668. package/pto/yaamp/web/framework-1.0.8/web/actions/CInlineAction.php +34 -0
  669. package/pto/yaamp/web/framework-1.0.8/web/actions/CViewAction.php +165 -0
  670. package/pto/yaamp/web/framework-1.0.8/web/auth/CAccessControlFilter.php +295 -0
  671. package/pto/yaamp/web/framework-1.0.8/web/auth/CAuthAssignment.php +102 -0
  672. package/pto/yaamp/web/framework-1.0.8/web/auth/CAuthItem.php +269 -0
  673. package/pto/yaamp/web/framework-1.0.8/web/auth/CAuthManager.php +157 -0
  674. package/pto/yaamp/web/framework-1.0.8/web/auth/CBaseUserIdentity.php +116 -0
  675. package/pto/yaamp/web/framework-1.0.8/web/auth/CDbAuthManager.php +584 -0
  676. package/pto/yaamp/web/framework-1.0.8/web/auth/CPhpAuthManager.php +535 -0
  677. package/pto/yaamp/web/framework-1.0.8/web/auth/CUserIdentity.php +79 -0
  678. package/pto/yaamp/web/framework-1.0.8/web/auth/CWebUser.php +583 -0
  679. package/pto/yaamp/web/framework-1.0.8/web/auth/schema.sql +42 -0
  680. package/pto/yaamp/web/framework-1.0.8/web/filters/CFilter.php +64 -0
  681. package/pto/yaamp/web/framework-1.0.8/web/filters/CFilterChain.php +131 -0
  682. package/pto/yaamp/web/framework-1.0.8/web/filters/CInlineFilter.php +61 -0
  683. package/pto/yaamp/web/framework-1.0.8/web/helpers/CGoogleApi.php +72 -0
  684. package/pto/yaamp/web/framework-1.0.8/web/helpers/CHtml.php +1801 -0
  685. package/pto/yaamp/web/framework-1.0.8/web/helpers/CJSON.php +698 -0
  686. package/pto/yaamp/web/framework-1.0.8/web/helpers/CJavaScript.php +128 -0
  687. package/pto/yaamp/web/framework-1.0.8/web/renderers/CPradoViewRenderer.php +245 -0
  688. package/pto/yaamp/web/framework-1.0.8/web/renderers/CViewRenderer.php +93 -0
  689. package/pto/yaamp/web/framework-1.0.8/web/services/CWebService.php +271 -0
  690. package/pto/yaamp/web/framework-1.0.8/web/services/CWebServiceAction.php +130 -0
  691. package/pto/yaamp/web/framework-1.0.8/web/services/CWsdlGenerator.php +373 -0
  692. package/pto/yaamp/web/framework-1.0.8/web/widgets/CAutoComplete.php +285 -0
  693. package/pto/yaamp/web/framework-1.0.8/web/widgets/CClipWidget.php +55 -0
  694. package/pto/yaamp/web/framework-1.0.8/web/widgets/CContentDecorator.php +83 -0
  695. package/pto/yaamp/web/framework-1.0.8/web/widgets/CFilterWidget.php +74 -0
  696. package/pto/yaamp/web/framework-1.0.8/web/widgets/CFlexWidget.php +116 -0
  697. package/pto/yaamp/web/framework-1.0.8/web/widgets/CHtmlPurifier.php +64 -0
  698. package/pto/yaamp/web/framework-1.0.8/web/widgets/CInputWidget.php +80 -0
  699. package/pto/yaamp/web/framework-1.0.8/web/widgets/CMarkdown.php +119 -0
  700. package/pto/yaamp/web/framework-1.0.8/web/widgets/CMaskedTextField.php +106 -0
  701. package/pto/yaamp/web/framework-1.0.8/web/widgets/CMultiFileUpload.php +115 -0
  702. package/pto/yaamp/web/framework-1.0.8/web/widgets/COutputCache.php +336 -0
  703. package/pto/yaamp/web/framework-1.0.8/web/widgets/COutputProcessor.php +77 -0
  704. package/pto/yaamp/web/framework-1.0.8/web/widgets/CStarRating.php +207 -0
  705. package/pto/yaamp/web/framework-1.0.8/web/widgets/CTabView.php +201 -0
  706. package/pto/yaamp/web/framework-1.0.8/web/widgets/CTextHighlighter.php +127 -0
  707. package/pto/yaamp/web/framework-1.0.8/web/widgets/CTreeView.php +232 -0
  708. package/pto/yaamp/web/framework-1.0.8/web/widgets/CWidget.php +202 -0
  709. package/pto/yaamp/web/framework-1.0.8/web/widgets/captcha/CCaptcha.php +132 -0
  710. package/pto/yaamp/web/framework-1.0.8/web/widgets/captcha/CCaptchaAction.php +233 -0
  711. package/pto/yaamp/web/framework-1.0.8/web/widgets/captcha/Duality.ttf +0 -0
  712. package/pto/yaamp/web/framework-1.0.8/web/widgets/pagers/CBasePager.php +129 -0
  713. package/pto/yaamp/web/framework-1.0.8/web/widgets/pagers/CLinkPager.php +194 -0
  714. package/pto/yaamp/web/framework-1.0.8/web/widgets/pagers/CListPager.php +85 -0
  715. package/pto/yaamp/web/framework-1.0.8/web/widgets/pagers/pager.css +68 -0
  716. package/pto/yaamp/web/framework-1.0.8/web/widgets/views/flexWidget.php +98 -0
  717. package/pto/yaamp/web/framework-1.0.8/yii.php +29 -0
  718. package/pto/yaamp/web/images/41.png +0 -0
  719. package/pto/yaamp/web/images/amc.jpg +0 -0
  720. package/pto/yaamp/web/images/base/action_refresh_blue.gif +0 -0
  721. package/pto/yaamp/web/images/base/action_save.gif +0 -0
  722. package/pto/yaamp/web/images/base/delete.png +0 -0
  723. package/pto/yaamp/web/images/base/dot.png +0 -0
  724. package/pto/yaamp/web/images/base/download.png +0 -0
  725. package/pto/yaamp/web/images/base/edit.png +0 -0
  726. package/pto/yaamp/web/images/base/enroll.png +0 -0
  727. package/pto/yaamp/web/images/base/favorite.png +0 -0
  728. package/pto/yaamp/web/images/base/folder_new.png +0 -0
  729. package/pto/yaamp/web/images/base/new.png +0 -0
  730. package/pto/yaamp/web/images/base/newcomment.png +0 -0
  731. package/pto/yaamp/web/images/base/newfile.png +0 -0
  732. package/pto/yaamp/web/images/base/newfolder.png +0 -0
  733. package/pto/yaamp/web/images/base/newuser.png +0 -0
  734. package/pto/yaamp/web/images/base/pause.png +0 -0
  735. package/pto/yaamp/web/images/base/play.png +0 -0
  736. package/pto/yaamp/web/images/base/tools.png +0 -0
  737. package/pto/yaamp/web/images/base/top.png +0 -0
  738. package/pto/yaamp/web/images/base/top_header.png +0 -0
  739. package/pto/yaamp/web/images/base/top_header_selected.png +0 -0
  740. package/pto/yaamp/web/images/base/video_play.png +0 -0
  741. package/pto/yaamp/web/images/beta_corner_banner.png +0 -0
  742. package/pto/yaamp/web/images/beta_corner_banner2.png +0 -0
  743. package/pto/yaamp/web/images/btc.png +0 -0
  744. package/pto/yaamp/web/images/coin-154.png +0 -0
  745. package/pto/yaamp/web/images/coin-22.png +0 -0
  746. package/pto/yaamp/web/images/coin-251.png +0 -0
  747. package/pto/yaamp/web/images/coin-30.png +0 -0
  748. package/pto/yaamp/web/images/coin-316.png +0 -0
  749. package/pto/yaamp/web/images/coin-33.png +0 -0
  750. package/pto/yaamp/web/images/coin-6.png +0 -0
  751. package/pto/yaamp/web/images/coin-834.png +0 -0
  752. package/pto/yaamp/web/images/gears.png +0 -0
  753. package/pto/yaamp/web/images/minus2-78.png +0 -0
  754. package/pto/yaamp/web/images/next.png +0 -0
  755. package/pto/yaamp/web/images/pause.png +0 -0
  756. package/pto/yaamp/web/images/play.png +0 -0
  757. package/pto/yaamp/web/images/plus2-78.png +0 -0
  758. package/pto/yaamp/web/images/sign-in-with-twitter-gray.png +0 -0
  759. package/pto/yaamp/web/images/sign-in-with-twitter-link.png +0 -0
  760. package/pto/yaamp/web/images/start.png +0 -0
  761. package/pto/yaamp/web/images/t_mini-a.png +0 -0
  762. package/pto/yaamp/web/images/tweet.jpg +0 -0
  763. package/pto/yaamp/web/images/twitter.jpg +0 -0
  764. package/pto/yaamp/web/images/ui/16x16_2leftarrow.png +0 -0
  765. package/pto/yaamp/web/images/ui/16x16_2rightarrow.png +0 -0
  766. package/pto/yaamp/web/images/ui/16x16_bottom.png +0 -0
  767. package/pto/yaamp/web/images/ui/16x16_chat.png +0 -0
  768. package/pto/yaamp/web/images/ui/16x16_delete.png +0 -0
  769. package/pto/yaamp/web/images/ui/16x16_edit.png +0 -0
  770. package/pto/yaamp/web/images/ui/16x16_email.png +0 -0
  771. package/pto/yaamp/web/images/ui/16x16_fileclose.png +0 -0
  772. package/pto/yaamp/web/images/ui/16x16_kcontrol.png +0 -0
  773. package/pto/yaamp/web/images/ui/16x16_kuser.png +0 -0
  774. package/pto/yaamp/web/images/ui/16x16_ledgreen.png +0 -0
  775. package/pto/yaamp/web/images/ui/16x16_link.png +0 -0
  776. package/pto/yaamp/web/images/ui/16x16_misc.png +0 -0
  777. package/pto/yaamp/web/images/ui/16x16_package_edutainment.png +0 -0
  778. package/pto/yaamp/web/images/ui/16x16_window_list.png +0 -0
  779. package/pto/yaamp/web/images/ui/22x22_bottom.png +0 -0
  780. package/pto/yaamp/web/images/ui/24x24_link.png +0 -0
  781. package/pto/yaamp/web/images/ui/32x32_link.png +0 -0
  782. package/pto/yaamp/web/images/ui/48x48_link.png +0 -0
  783. package/pto/yaamp/web/images/ui/arrow-down.gif +0 -0
  784. package/pto/yaamp/web/images/ui/arrow-right.gif +0 -0
  785. package/pto/yaamp/web/images/ui/asc.gif +0 -0
  786. package/pto/yaamp/web/images/ui/away.gif +0 -0
  787. package/pto/yaamp/web/images/ui/bg.gif +0 -0
  788. package/pto/yaamp/web/images/ui/control_play_blue.png +0 -0
  789. package/pto/yaamp/web/images/ui/desc.gif +0 -0
  790. package/pto/yaamp/web/images/ui/down_arrow.png +0 -0
  791. package/pto/yaamp/web/images/ui/empty.png +0 -0
  792. package/pto/yaamp/web/images/ui/expand_down.png +0 -0
  793. package/pto/yaamp/web/images/ui/expand_up.png +0 -0
  794. package/pto/yaamp/web/images/ui/green-check.png +0 -0
  795. package/pto/yaamp/web/images/ui/icon-check.gif +0 -0
  796. package/pto/yaamp/web/images/ui/install-flash.jpg +0 -0
  797. package/pto/yaamp/web/images/ui/linkout.png +0 -0
  798. package/pto/yaamp/web/images/ui/loading.gif +0 -0
  799. package/pto/yaamp/web/images/ui/loading_white.gif +0 -0
  800. package/pto/yaamp/web/images/ui/menudot.png +0 -0
  801. package/pto/yaamp/web/images/ui/menuo_bg.gif +0 -0
  802. package/pto/yaamp/web/images/ui/offline.gif +0 -0
  803. package/pto/yaamp/web/images/ui/online.gif +0 -0
  804. package/pto/yaamp/web/images/ui/shade.gif +0 -0
  805. package/pto/yaamp/web/images/ui/shadeactive.gif +0 -0
  806. package/pto/yaamp/web/images/ui/showactivity.png +0 -0
  807. package/pto/yaamp/web/images/ui/showcourse.png +0 -0
  808. package/pto/yaamp/web/images/ui/showdetail.png +0 -0
  809. package/pto/yaamp/web/images/ui/showfile.png +0 -0
  810. package/pto/yaamp/web/images/ui/showfolder.png +0 -0
  811. package/pto/yaamp/web/images/ui/showgraph.png +0 -0
  812. package/pto/yaamp/web/images/ui/showlink.png +0 -0
  813. package/pto/yaamp/web/images/ui/showmedium.png +0 -0
  814. package/pto/yaamp/web/images/ui/showsmall.png +0 -0
  815. package/pto/yaamp/web/images/ui/tintblue.gif +0 -0
  816. package/pto/yaamp/web/images/ui/tintbluedark.gif +0 -0
  817. package/pto/yaamp/web/images/vn_embed.png +0 -0
  818. package/pto/yaamp/web/index.php +30 -0
  819. package/pto/yaamp/web/loop2.sh +9 -0
  820. package/pto/yaamp/web/main.sh +9 -0
  821. package/pto/yaamp/web/robots.txt +2 -0
  822. package/pto/yaamp/web/run.php +25 -0
  823. package/pto/yaamp/web/serverconfig.php +26 -0
  824. package/pto/yaamp/web/yaamp/components/CUFHtml.php +136 -0
  825. package/pto/yaamp/web/yaamp/components/UniForm.php +25 -0
  826. package/pto/yaamp/web/yaamp/components/UserIdentity.php +25 -0
  827. package/pto/yaamp/web/yaamp/config.php +68 -0
  828. package/pto/yaamp/web/yaamp/core/backend/backend.php +17 -0
  829. package/pto/yaamp/web/yaamp/core/backend/blocks.php +243 -0
  830. package/pto/yaamp/web/yaamp/core/backend/clear.php +47 -0
  831. package/pto/yaamp/web/yaamp/core/backend/coins.php +245 -0
  832. package/pto/yaamp/web/yaamp/core/backend/markets.php +505 -0
  833. package/pto/yaamp/web/yaamp/core/backend/payment.php +153 -0
  834. package/pto/yaamp/web/yaamp/core/backend/rawcoins.php +144 -0
  835. package/pto/yaamp/web/yaamp/core/backend/renting.php +271 -0
  836. package/pto/yaamp/web/yaamp/core/backend/sell.php +126 -0
  837. package/pto/yaamp/web/yaamp/core/backend/services.php +210 -0
  838. package/pto/yaamp/web/yaamp/core/backend/stats.php +347 -0
  839. package/pto/yaamp/web/yaamp/core/backend/system.php +253 -0
  840. package/pto/yaamp/web/yaamp/core/backend/users.php +95 -0
  841. package/pto/yaamp/web/yaamp/core/common/Shortcuts.php +77 -0
  842. package/pto/yaamp/web/yaamp/core/common/common.php +10 -0
  843. package/pto/yaamp/web/yaamp/core/common/libUtil.php +305 -0
  844. package/pto/yaamp/web/yaamp/core/common/libdbo.php +91 -0
  845. package/pto/yaamp/web/yaamp/core/common/system.php +135 -0
  846. package/pto/yaamp/web/yaamp/core/common/util.php +317 -0
  847. package/pto/yaamp/web/yaamp/core/common/utilConversion.php +296 -0
  848. package/pto/yaamp/web/yaamp/core/core.php +11 -0
  849. package/pto/yaamp/web/yaamp/core/exchange/bittrex.php +28 -0
  850. package/pto/yaamp/web/yaamp/core/exchange/bleutrade.php +28 -0
  851. package/pto/yaamp/web/yaamp/core/exchange/ccexapi.php +106 -0
  852. package/pto/yaamp/web/yaamp/core/exchange/cryptsy.php +63 -0
  853. package/pto/yaamp/web/yaamp/core/exchange/exchange.php +12 -0
  854. package/pto/yaamp/web/yaamp/core/exchange/jubi.php +20 -0
  855. package/pto/yaamp/web/yaamp/core/exchange/poloniex.php +242 -0
  856. package/pto/yaamp/web/yaamp/core/exchange/yobit.php +77 -0
  857. package/pto/yaamp/web/yaamp/core/exchange2/CExchange.php +198 -0
  858. package/pto/yaamp/web/yaamp/core/exchange2/CExchangeCoin.php +84 -0
  859. package/pto/yaamp/web/yaamp/core/exchange2/exchange.php +7 -0
  860. package/pto/yaamp/web/yaamp/core/functions/curloauth.php +50 -0
  861. package/pto/yaamp/web/yaamp/core/functions/easybitcoin.php +220 -0
  862. package/pto/yaamp/web/yaamp/core/functions/functions.php +11 -0
  863. package/pto/yaamp/web/yaamp/core/functions/memcache.php +85 -0
  864. package/pto/yaamp/web/yaamp/core/functions/url.php +79 -0
  865. package/pto/yaamp/web/yaamp/core/functions/yaamp.php +365 -0
  866. package/pto/yaamp/web/yaamp/core/trading/bittrex_trading.php +221 -0
  867. package/pto/yaamp/web/yaamp/core/trading/bleutrade_trading.php +218 -0
  868. package/pto/yaamp/web/yaamp/core/trading/c-cex_trading.php +192 -0
  869. package/pto/yaamp/web/yaamp/core/trading/cryptsy_trading.php +231 -0
  870. package/pto/yaamp/web/yaamp/core/trading/poloniex_trading.php +179 -0
  871. package/pto/yaamp/web/yaamp/core/trading/trading.php +11 -0
  872. package/pto/yaamp/web/yaamp/core/trading/yobit_trading.php +205 -0
  873. package/pto/yaamp/web/yaamp/include.php +11 -0
  874. package/pto/yaamp/web/yaamp/models/db_accountsModel.php +33 -0
  875. package/pto/yaamp/web/yaamp/models/db_algosModel.php +33 -0
  876. package/pto/yaamp/web/yaamp/models/db_balancesModel.php +33 -0
  877. package/pto/yaamp/web/yaamp/models/db_balanceuserModel.php +33 -0
  878. package/pto/yaamp/web/yaamp/models/db_blocksModel.php +33 -0
  879. package/pto/yaamp/web/yaamp/models/db_coinsModel.php +46 -0
  880. package/pto/yaamp/web/yaamp/models/db_connectionsModel.php +35 -0
  881. package/pto/yaamp/web/yaamp/models/db_earningsModel.php +33 -0
  882. package/pto/yaamp/web/yaamp/models/db_exchangeModel.php +33 -0
  883. package/pto/yaamp/web/yaamp/models/db_hashrateModel.php +33 -0
  884. package/pto/yaamp/web/yaamp/models/db_hashrenterModel.php +33 -0
  885. package/pto/yaamp/web/yaamp/models/db_hashstatsModel.php +33 -0
  886. package/pto/yaamp/web/yaamp/models/db_hashuserModel.php +33 -0
  887. package/pto/yaamp/web/yaamp/models/db_jobsModel.php +33 -0
  888. package/pto/yaamp/web/yaamp/models/db_jobsubmitsModel.php +33 -0
  889. package/pto/yaamp/web/yaamp/models/db_marketsModel.php +33 -0
  890. package/pto/yaamp/web/yaamp/models/db_miningModel.php +33 -0
  891. package/pto/yaamp/web/yaamp/models/db_nicehashModel.php +33 -0
  892. package/pto/yaamp/web/yaamp/models/db_ordersModel.php +33 -0
  893. package/pto/yaamp/web/yaamp/models/db_payoutsModel.php +33 -0
  894. package/pto/yaamp/web/yaamp/models/db_rawcoinsModel.php +36 -0
  895. package/pto/yaamp/web/yaamp/models/db_rentersModel.php +33 -0
  896. package/pto/yaamp/web/yaamp/models/db_rentertxsModel.php +33 -0
  897. package/pto/yaamp/web/yaamp/models/db_serversModel.php +33 -0
  898. package/pto/yaamp/web/yaamp/models/db_servicesModel.php +33 -0
  899. package/pto/yaamp/web/yaamp/models/db_sharesModel.php +33 -0
  900. package/pto/yaamp/web/yaamp/models/db_shares_vipModel.php +33 -0
  901. package/pto/yaamp/web/yaamp/models/db_statsModel.php +33 -0
  902. package/pto/yaamp/web/yaamp/models/db_stratumsModel.php +33 -0
  903. package/pto/yaamp/web/yaamp/models/db_withdrawsModel.php +33 -0
  904. package/pto/yaamp/web/yaamp/models/db_workersModel.php +33 -0
  905. package/pto/yaamp/web/yaamp/modules/api/ApiController.php +301 -0
  906. package/pto/yaamp/web/yaamp/modules/coin/CoinController.php +54 -0
  907. package/pto/yaamp/web/yaamp/modules/coin/_form.php +75 -0
  908. package/pto/yaamp/web/yaamp/modules/coin/index.php +134 -0
  909. package/pto/yaamp/web/yaamp/modules/common/CommonController.php +55 -0
  910. package/pto/yaamp/web/yaamp/modules/common/maintenance.php +25 -0
  911. package/pto/yaamp/web/yaamp/modules/common/yaamp.php +23 -0
  912. package/pto/yaamp/web/yaamp/modules/explorer/ExplorerController.php +56 -0
  913. package/pto/yaamp/web/yaamp/modules/explorer/block.php +122 -0
  914. package/pto/yaamp/web/yaamp/modules/explorer/coin.php +63 -0
  915. package/pto/yaamp/web/yaamp/modules/explorer/index.php +67 -0
  916. package/pto/yaamp/web/yaamp/modules/explorer/tx.php +73 -0
  917. package/pto/yaamp/web/yaamp/modules/explorer/util.php +146 -0
  918. package/pto/yaamp/web/yaamp/modules/market/MarketController.php +86 -0
  919. package/pto/yaamp/web/yaamp/modules/market/update.php +23 -0
  920. package/pto/yaamp/web/yaamp/modules/nicehash/NicehashController.php +55 -0
  921. package/pto/yaamp/web/yaamp/modules/nicehash/index.php +37 -0
  922. package/pto/yaamp/web/yaamp/modules/nicehash/index_results.php +78 -0
  923. package/pto/yaamp/web/yaamp/modules/renting/RentingController.php +469 -0
  924. package/pto/yaamp/web/yaamp/modules/renting/admin.php +148 -0
  925. package/pto/yaamp/web/yaamp/modules/renting/all_orders_results.php +95 -0
  926. package/pto/yaamp/web/yaamp/modules/renting/balance_results.php +115 -0
  927. package/pto/yaamp/web/yaamp/modules/renting/create.php +52 -0
  928. package/pto/yaamp/web/yaamp/modules/renting/graph_job_results.php +74 -0
  929. package/pto/yaamp/web/yaamp/modules/renting/graph_price_results.php +54 -0
  930. package/pto/yaamp/web/yaamp/modules/renting/index.php +318 -0
  931. package/pto/yaamp/web/yaamp/modules/renting/login.php +239 -0
  932. package/pto/yaamp/web/yaamp/modules/renting/orders_results.php +130 -0
  933. package/pto/yaamp/web/yaamp/modules/renting/settings.php +156 -0
  934. package/pto/yaamp/web/yaamp/modules/renting/status_results.php +103 -0
  935. package/pto/yaamp/web/yaamp/modules/renting/tx.php +74 -0
  936. package/pto/yaamp/web/yaamp/modules/site/SiteController.php +772 -0
  937. package/pto/yaamp/web/yaamp/modules/site/about.php +59 -0
  938. package/pto/yaamp/web/yaamp/modules/site/admin.php +90 -0
  939. package/pto/yaamp/web/yaamp/modules/site/admin_results.php +171 -0
  940. package/pto/yaamp/web/yaamp/modules/site/api.php +136 -0
  941. package/pto/yaamp/web/yaamp/modules/site/backup.php +33 -0
  942. package/pto/yaamp/web/yaamp/modules/site/block.php +46 -0
  943. package/pto/yaamp/web/yaamp/modules/site/block_results.php +85 -0
  944. package/pto/yaamp/web/yaamp/modules/site/coin.php +145 -0
  945. package/pto/yaamp/web/yaamp/modules/site/coin_form.php +229 -0
  946. package/pto/yaamp/web/yaamp/modules/site/coin_results.php +242 -0
  947. package/pto/yaamp/web/yaamp/modules/site/common.php +231 -0
  948. package/pto/yaamp/web/yaamp/modules/site/common_results.php +576 -0
  949. package/pto/yaamp/web/yaamp/modules/site/connections.php +57 -0
  950. package/pto/yaamp/web/yaamp/modules/site/connections_results.php +48 -0
  951. package/pto/yaamp/web/yaamp/modules/site/diff.php +36 -0
  952. package/pto/yaamp/web/yaamp/modules/site/earning.php +50 -0
  953. package/pto/yaamp/web/yaamp/modules/site/earning_results.php +74 -0
  954. package/pto/yaamp/web/yaamp/modules/site/emptymarkets.php +34 -0
  955. package/pto/yaamp/web/yaamp/modules/site/eval.php +22 -0
  956. package/pto/yaamp/web/yaamp/modules/site/exchange.php +50 -0
  957. package/pto/yaamp/web/yaamp/modules/site/exchange_results.php +183 -0
  958. package/pto/yaamp/web/yaamp/modules/site/index.php +154 -0
  959. package/pto/yaamp/web/yaamp/modules/site/memcached.php +56 -0
  960. package/pto/yaamp/web/yaamp/modules/site/miners.php +88 -0
  961. package/pto/yaamp/web/yaamp/modules/site/mining.php +235 -0
  962. package/pto/yaamp/web/yaamp/modules/site/monsters.php +129 -0
  963. package/pto/yaamp/web/yaamp/modules/site/multialgo.php +84 -0
  964. package/pto/yaamp/web/yaamp/modules/site/payments.php +50 -0
  965. package/pto/yaamp/web/yaamp/modules/site/payments_results.php +56 -0
  966. package/pto/yaamp/web/yaamp/modules/site/results/current_results.php +158 -0
  967. package/pto/yaamp/web/yaamp/modules/site/results/found_results.php +94 -0
  968. package/pto/yaamp/web/yaamp/modules/site/results/graph_assets_results.php +58 -0
  969. package/pto/yaamp/web/yaamp/modules/site/results/graph_earnings_results.php +47 -0
  970. package/pto/yaamp/web/yaamp/modules/site/results/graph_hashrate_results.php +68 -0
  971. package/pto/yaamp/web/yaamp/modules/site/results/graph_negative_results.php +36 -0
  972. package/pto/yaamp/web/yaamp/modules/site/results/graph_price_results.php +68 -0
  973. package/pto/yaamp/web/yaamp/modules/site/results/graph_profit_results.php +25 -0
  974. package/pto/yaamp/web/yaamp/modules/site/results/graph_user_results.php +81 -0
  975. package/pto/yaamp/web/yaamp/modules/site/results/history_results.php +156 -0
  976. package/pto/yaamp/web/yaamp/modules/site/results/miners_results.php +126 -0
  977. package/pto/yaamp/web/yaamp/modules/site/results/mining_results.php +216 -0
  978. package/pto/yaamp/web/yaamp/modules/site/results/user_earning_results.php +92 -0
  979. package/pto/yaamp/web/yaamp/modules/site/results/wallet_graphs_results.php +33 -0
  980. package/pto/yaamp/web/yaamp/modules/site/results/wallet_miners_results.php +117 -0
  981. package/pto/yaamp/web/yaamp/modules/site/results/wallet_results.php +263 -0
  982. package/pto/yaamp/web/yaamp/modules/site/terms.php +392 -0
  983. package/pto/yaamp/web/yaamp/modules/site/tx.php +64 -0
  984. package/pto/yaamp/web/yaamp/modules/site/user.php +80 -0
  985. package/pto/yaamp/web/yaamp/modules/site/user_results.php +136 -0
  986. package/pto/yaamp/web/yaamp/modules/site/version.php +50 -0
  987. package/pto/yaamp/web/yaamp/modules/site/version_results.php +48 -0
  988. package/pto/yaamp/web/yaamp/modules/site/wallet.php +390 -0
  989. package/pto/yaamp/web/yaamp/modules/site/worker.php +50 -0
  990. package/pto/yaamp/web/yaamp/modules/site/worker_results.php +55 -0
  991. package/pto/yaamp/web/yaamp/modules/stats/StatsController.php +65 -0
  992. package/pto/yaamp/web/yaamp/modules/stats/graph_results_1.php +20 -0
  993. package/pto/yaamp/web/yaamp/modules/stats/graph_results_2.php +19 -0
  994. package/pto/yaamp/web/yaamp/modules/stats/graph_results_3.php +20 -0
  995. package/pto/yaamp/web/yaamp/modules/stats/graph_results_4.php +34 -0
  996. package/pto/yaamp/web/yaamp/modules/stats/graph_results_5.php +33 -0
  997. package/pto/yaamp/web/yaamp/modules/stats/graph_results_6.php +40 -0
  998. package/pto/yaamp/web/yaamp/modules/stats/graph_results_7.php +34 -0
  999. package/pto/yaamp/web/yaamp/modules/stats/graph_results_8.php +33 -0
  1000. package/pto/yaamp/web/yaamp/modules/stats/graph_results_9.php +44 -0
  1001. package/pto/yaamp/web/yaamp/modules/stats/index.php +502 -0
  1002. package/pto/yaamp/web/yaamp/modules/thread/CronjobController.php +196 -0
  1003. package/pto/yaamp/web/yaamp/modules/trading/TradingController.php +59 -0
  1004. package/pto/yaamp/web/yaamp/modules/trading/index.php +270 -0
  1005. package/pto/yaamp/web/yaamp/modules/trading/mining_results.php +245 -0
  1006. package/pto/yaamp/web/yaamp/ui/app.php +8 -0
  1007. package/pto/yaamp/web/yaamp/ui/css/editor.css +34 -0
  1008. package/pto/yaamp/web/yaamp/ui/css/indicator.gif +0 -0
  1009. package/pto/yaamp/web/yaamp/ui/css/jquery-ui-fixes.css +26 -0
  1010. package/pto/yaamp/web/yaamp/ui/css/list.css +78 -0
  1011. package/pto/yaamp/web/yaamp/ui/css/main.css +225 -0
  1012. package/pto/yaamp/web/yaamp/ui/css/news.css +82 -0
  1013. package/pto/yaamp/web/yaamp/ui/css/objectmenu.css +27 -0
  1014. package/pto/yaamp/web/yaamp/ui/css/poll.css +194 -0
  1015. package/pto/yaamp/web/yaamp/ui/css/table.css +124 -0
  1016. package/pto/yaamp/web/yaamp/ui/css/tags.css +97 -0
  1017. package/pto/yaamp/web/yaamp/ui/css/uni-form-generic.css +25 -0
  1018. package/pto/yaamp/web/yaamp/ui/css/uni-form.css +94 -0
  1019. package/pto/yaamp/web/yaamp/ui/js/auto_refresh.js +33 -0
  1020. package/pto/yaamp/web/yaamp/ui/js/cookies.js +45 -0
  1021. package/pto/yaamp/web/yaamp/ui/js/datetime.js +126 -0
  1022. package/pto/yaamp/web/yaamp/ui/js/jquery.bgiframe.js +44 -0
  1023. package/pto/yaamp/web/yaamp/ui/js/jquery.dialogextend.js +589 -0
  1024. package/pto/yaamp/web/yaamp/ui/js/jquery.tablesorter.js +1031 -0
  1025. package/pto/yaamp/web/yaamp/ui/js/jquery.yii.js +45 -0
  1026. package/pto/yaamp/web/yaamp/ui/js/swfobject.js +780 -0
  1027. package/pto/yaamp/web/yaamp/ui/js/texteditor.js +54 -0
  1028. package/pto/yaamp/web/yaamp/ui/js/uni-form.jquery.js +38 -0
  1029. package/pto/yaamp/web/yaamp/ui/js/util.js +108 -0
  1030. package/pto/yaamp/web/yaamp/ui/lib/lib.php +4 -0
  1031. package/pto/yaamp/web/yaamp/ui/lib/libview.php +59 -0
  1032. package/pto/yaamp/web/yaamp/ui/lib/pageheader.php +26 -0
  1033. package/pto/yaamp/web/yaamp/ui/main.php +131 -0
  1034. package/pto/yaamp/web/yaamp/ui/misc.php +41 -0
  1035. 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 &copy; 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
+ }