Upgrade to Version 4.0.1-alpha4 Was Successful! Let us know if anything is not working as expected.
';
+
Upgrade to Version 4.0.1-alpha5 Was Successful! Let us know if anything is not working as expected.
';
// Add/Update component in the action logs extensions table.
$this->setActionLogsExtensions();
@@ -3583,6 +3639,22 @@ class Com_ComponentbuilderInstallerScript implements InstallerScriptInterface
'COM_COMPONENTBUILDER'
);
+ // Add/Update Repository in the action logs config table.
+ $this->setActionLogConfig(
+ // typeTitle
+ 'REPOSITORY',
+ // typeAlias
+ 'com_componentbuilder.repository',
+ // idHolder
+ 'id',
+ // titleHolder
+ 'system_name',
+ // tableName
+ '#__componentbuilder_repository',
+ // textPrefix
+ 'COM_COMPONENTBUILDER'
+ );
+
// Add/Update Help_document in the action logs config table.
$this->setActionLogConfig(
// typeTitle
diff --git a/README.md b/README.md
index f1fe2587c..8e9f5e40d 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@ The Component Builder for [Joomla](https://extensions.joomla.org/extension/compo
Whether you're a seasoned [Joomla](https://extensions.joomla.org/extension/component-builder/) developer, or have just started, Component Builder will save you lots of time and money. A real must have!
-You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (4.0.1-alpha4) with **ALL** its features and **ALL** concepts totally open-source and free!
+You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (4.0.1-alpha5) with **ALL** its features and **ALL** concepts totally open-source and free!
> Watch Quick Build of a Hello World component in [JCB on Youtube](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45)
@@ -144,14 +144,14 @@ TODO
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
+ *Name*: [Component Builder](https://git.vdm.dev/joomla/Component-Builder)
+ *First Build*: 30th April, 2015
-+ *Last Build*: 7th June, 2024
-+ *Version*: 4.0.1-alpha4
++ *Last Build*: 20th June, 2024
++ *Version*: 4.0.1-alpha5
+ *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
-+ *Line count*: **749939**
-+ *Field count*: **2100**
-+ *File count*: **5298**
-+ *Folder count*: **528**
++ *Line count*: **758355**
++ *Field count*: **2104**
++ *File count*: **5355**
++ *Folder count*: **532**
> This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](https://www.joomlacomponentbuilder.com).
> Developed by [Llewellyn van der Merwe](mailto:joomla@vdm.io)
diff --git a/admin/README.txt b/admin/README.txt
index f1fe2587c..8e9f5e40d 100644
--- a/admin/README.txt
+++ b/admin/README.txt
@@ -9,7 +9,7 @@ The Component Builder for [Joomla](https://extensions.joomla.org/extension/compo
Whether you're a seasoned [Joomla](https://extensions.joomla.org/extension/component-builder/) developer, or have just started, Component Builder will save you lots of time and money. A real must have!
-You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (4.0.1-alpha4) with **ALL** its features and **ALL** concepts totally open-source and free!
+You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (4.0.1-alpha5) with **ALL** its features and **ALL** concepts totally open-source and free!
> Watch Quick Build of a Hello World component in [JCB on Youtube](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45)
@@ -144,14 +144,14 @@ TODO
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
+ *Name*: [Component Builder](https://git.vdm.dev/joomla/Component-Builder)
+ *First Build*: 30th April, 2015
-+ *Last Build*: 7th June, 2024
-+ *Version*: 4.0.1-alpha4
++ *Last Build*: 20th June, 2024
++ *Version*: 4.0.1-alpha5
+ *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
-+ *Line count*: **749939**
-+ *Field count*: **2100**
-+ *File count*: **5298**
-+ *Folder count*: **528**
++ *Line count*: **758355**
++ *Field count*: **2104**
++ *File count*: **5355**
++ *Folder count*: **532**
> This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](https://www.joomlacomponentbuilder.com).
> Developed by [Llewellyn van der Merwe](mailto:joomla@vdm.io)
diff --git a/admin/access.xml b/admin/access.xml
index 9557fb999..3391674c7 100644
--- a/admin/access.xml
+++ b/admin/access.xml
@@ -483,6 +483,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -766,6 +778,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/admin/assets/css/repositories.css b/admin/assets/css/repositories.css
new file mode 100644
index 000000000..2731fc5aa
--- /dev/null
+++ b/admin/assets/css/repositories.css
@@ -0,0 +1,13 @@
+/**
+ * @package Joomla.Component.Builder
+ *
+ * @created 30th April, 2015
+ * @author Llewellyn van der Merwe
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+/* CSS Document */
+
+
diff --git a/admin/assets/css/repository.css b/admin/assets/css/repository.css
new file mode 100644
index 000000000..2731fc5aa
--- /dev/null
+++ b/admin/assets/css/repository.css
@@ -0,0 +1,13 @@
+/**
+ * @package Joomla.Component.Builder
+ *
+ * @created 30th April, 2015
+ * @author Llewellyn van der Merwe
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+/* CSS Document */
+
+
diff --git a/admin/assets/images/icons/repositories.png b/admin/assets/images/icons/repositories.png
new file mode 100644
index 0000000000000000000000000000000000000000..32d7a05590e4b488e1fbf2628fbdfd605f211714
GIT binary patch
literal 20768
zcma%@Ra+cN)2?xMcXtR9ba3|&7)Wp(EVu@DCpd!-3Be(_ySoe;f;$ZEuHSkO_W8cr
z{y=qg)!k23jHZSXHU;vO^`!kx|z@
z%kKnL?NpSWcOb8>3smm@FYoVsB>o=%zvD$BaAfKU^QF`OWh!V(>LP{Tuab$_#U;vo
zsLisC9KbAX+lhGjEcNF6GCbvAd{zIH*G-$qq+u`ier)=@l1W(|w5_0%meb$&SO?!{
zBl-9-sz0_RBy4NyM(l|HwV`_|;rcP|cIf?a#dO=ySz`A*@R3s7AI7)&Lfidn)pfV9
zf<-ys3AC3(x_DFX-r>K8bMCktaxOdK2}t_a<|kZ#c1B%l{XM{FvZBo|_r5*L@!Yq=
z*tuHj`j(adPmj>h;%b2VJ%3Hs(t=<0b?dT$7z}dUb-wc76g%(Grj_t*cwMf3UB)%#
z6ZZ9bJL!HJ2Lr1BI={>D0IrvL
zUR4%Qd4dk^Q_uZe0#1UX;RxDoB}wpCtM9Y!t9ddLeSD?XCtQ18*Qy>4G1p(kyoMb&
zom#LR;#wLLR`Tv66BC}{XyazcJ9ieyJLyF_PfJA_&mMSn;tafq3YsH-&|5e74ry!*
z;RWt(Jn;l>ES#1c!K*?u$pfTZpI?T3UUnUA74=Ddofn&a4}VLWV0EF-{#of}Atlg!94Idw}RNEtgk{~W$d
z2xb8z`N*u_>g%czRSk{4x_>?&dwu=G_vH6NvpKV}v0eR!+YNQ=c%@UjluP_o4nN<<
z$goHj%xh<*kJDfdz71xU(Ud1pvHlJrwF`)Hdl2cTSdZJ=2W5Ibkzt+R7_jS?Wnj-R
z6R?ef!3S6_BW2URN_cf5erxRGp-IzJS^#l+_!hU
z*gb~aKk^Po3Bh^&Gks4rebDW?8`6Cr-w5z)=j*}7dN>n)Gc89iIe+8UV1W%}>z1RB
z12w;h#;mL`c8UUt(n4+f#9c**n2H{<*?(t`wrZ+w%~NYB$d9tm80o3~Zr8kmCrUvJ
z2rf@?vsfVzg6NFhP@ofHGcN9YZ?~*tVPbD*mCvm}#?!2s*}283{4znUpb6Gc!j~sd
z9?q5{s0sOzA5Oo@^D#8mq96>zDY6~p#5F$FC5F|H{p6yt0==xe{PSx#5j`D=+IuSk
z)%0=Rru(Ag?R4YexchMedsFK9uhi94=j{+>P~ht6_%ZTC-e(Z4gpvJme4DO`_gT*l
zYg+%Ot(gK=s`LmQ0#Y$Pj$JthwPGB`m{}S*j@tU>&eU{yl^7iYSqQj=x?;SKrO#(Y
zga&8P#qJyoA)7;F{*?LbQ30(ZiWK7rg|kk;Jn`!%t6
zo@d3xkEXHa`w>sD$MQ?r$G62>1ro;lnmnCw0NeEu!)#IE?PeB*Twuu3-H^dYSS3)k
z7`I=`QeZWF=eMSzT&hc#0~jn)#hG!fXu@B_)`^>f(I00-u&;T%>B82)ry1fT`-eDf
zppJ=ZNAGJ>r-joZ8Y5viYe{?&lP~Q(V6aJ7p4e-vMyTlr$a<9~v0(;4^RF^bA4B@gs8Of1-!h9&~~6wK_VNnuh)XrR-N#LqDGche8(=FC<<4ri=?hR
z5kIJ1Koxx|MVsLV&~dssq_w_T^;p8F0oGU1Zkv-8ax^Os$uTO*P^dB?UmPu$x9S
z2MD5{(YI$bs#d%!uhEx!J=8|@6r4k)a+*TQ4Wri5`-eE*2DE2{$&O_OR8!$_R(>}K
zqjw?KWD>6;@jm?iDqe$^ytPEu(?99lcL?MbwN=pg)v6vB+o3_>kKcww8DP@}^av>@;
zW!3=XoSW01?1YUow*K7>+Tg_W#SV9eVu3+C%L2I#yCQ11G-Ire3*T%897Ts+FlO8Mc^rIVh6=;y_4
z*y70boo!S(n_Q&8Q@Yi!u9xfb&P0poiw%FTKOI}67znFP4CKw^-Cw3Vp-pGz^INFI
zuziYkIXZ5A;II-zGj)3=9_ZgYKtAc?woFEIxukGmULT3clT??YE!~w-S$~?_-!|=_
z>4p%qD|l7F8@|4Cz0h&-a3&uA^>8hz5YmhpbsOE9M==zo*h1Y?)_3sQ^DOTrRRM2%
zdYZ(XvgYLKroAg=lznLwDhgRfg{^tJh~&|bpSu(-z*AEVYFiFljh}^vsSJ%y#aH64Y*>lRXzRNr5$}p=B(P%3CiBpurjV@m6>_uk8
zZUj1nm6X{Z|87%dklPVzQv1?Qt-~q)K_$cs%dl=lav3pO^YJ)atoViP4Rb2tLQf0l
zR6fREao@k(89Q~`oH1@0oe@(ZWP4E2OCRu}&D8|+p?uR7V5a#irZX2%M;fJBw+%e>
zE2&^Msz8&341b1d(U26Kht+X(0-VJ5Whu>(o)^e4VAn&i!AG^Ay=LApUDH4u;=Kr%
zllRR-9EbngTu`uDrIhs9s$+a5#a@aCH|B9094{6VdL@nluAJ?ph+{m2!0pf$s1ptb
zcM7N1U0DD4!i}MXOuZFAYvLQYfYK9EOC?yB5Tymp$3Q;V);o7tyO`Af7itSSModOn
zo;Ffu3(%1#SozMdN7NcDA{3I#hXSE5ilb`*s34apM4n+M>$O;o&M%yQHgb-yi!Vh=
zK_N*(Y^G#o{NvILsPtMWGQ;V_hGyh0i&;aPbfGZ*?nmLEjL-frfS;?m-luz{BHS_E
zm(5*$e`tdeOdsaQlQ~b)_~Ja-&2pm>p;QZf%b2jrS}w6Dt38i0FwljFcW5m^gC|{^
zp$Lh=^3yICSECuKxw~fAwoB@!P#7!Ob5qC0?ejFv=Ik)=gGGurS)Zz2;nJoP|D7GU
z$mRZ^PwL&~jnTyS7A7?vm4*D%Y3HzV32kE4*X-Q-W*xzfCTxZhbQAMe*!TSAD|zRf
zlH4l7GA@r*`({w3O_j&CO45SmcSkQ>$-^x3T?ECspRcz~oH?v&vFRv{6iztj2MRlk&N-OQ
zv1fHO`yhZdgSb8HJ3S>*GEr(hg&G6w`B{O||iMqe5HG#btO_1ynX5Ct=74VpP5(p*?yPV{+>v6+8m
z&j9j-hhZ5RM;CJUtnx`H&Oc~fF&j9S9vD?TuEJ4%Na4a(4VCwI#5FsK9fe8ba+sW`Lg33;*~1X*$)j5p{5ai2sjMKB3C6?`IFGz^Mob;eL-fXSanvh=Q!^|Pz}ZeE;G2D_Zm
z=(P3}M7TG6LUs
z8vLF89iM^DHwkg4@Ekt!Enc-&U*YZ)8S2$4j&ZKRRz__DZk5pG5BcAKYS#cF9#O
z$bDPjxD63Q`coF|&E7uNhW4AwD6}}F<>W*Zj`5n`&_M(;c;)B5;l=()5eVb3VlUKT
zi6%lj0FtO9sBn!Vw5sPeRN=lvp*Gq;bLO>Zwn0&zq_&GG
z{9n*ggrd2dst(-qSob+=Nzo4f>7;j}!&E-dDL%foXW^
zLCKW-uwek(x9*(6=k|l$wbcEKS4vUVf1Kdy&>+~$lO=$yBKQ#hSpAbT3HO49-7_?8
z2d{J#T&R^(rR!1Swdy`F4(4q(+w|XDyKJr39E{6)@RX19?1UGM+8Og%!T+15F=<=L
zkH;p%u(nFmYV@59>LxN^Q94FVnA5&QWu(s2}QyRrq-X;Oe!mtdHlO4l2IuZ6ndhz~pez
z(@hv2uv%ebPS)nl7mgAXw^Ak)*=KA1F*Fsw{7mu~cz}0d)bw(sy7}G{hE>#qsZ?4S
zaW#zMW4zc*O`PLVo9u3$sYET7nzw8hO#AKk*|Youm}#ty+riLE9aKJv7ge{PrE6J^
ztqP1p?wwOA4S;iFkK4lHUlw9v&1(=^wC}D)TP1+G7kKW}e8lciR%w|ZN|6Q8F+nRs
z0nD62;a2*i3|NUDYjPsctiz+)jO+%yNPz?f*wva!i0%${xQ5q61A1YoS)3%EaB_CCNA@WrVNf
z(cN2WGI?MSa)m}e?~|aIh0V2Y<9LeY6>(EWG-vV;B5}jDo
zL&DeNtk_?mHglGN86u
z#y;2a7{W~|d0(chuWDW$4`Enpuk(u%oSWQ8U3(TYec>2xOiKCB^cQ{o&&-V%x#K(3
z9n1!BOt1TPD$VQ5RVaMJjYR?MofIqU`u`@naP8a$6wrvV6O8e)Wk$nbZo7JZp?sk_
zZXu*U`s?rDNZlQAmgVsB5tIiC0|Y9X*h@=8y2{*{PZ;2J1|o#EkxUn7*sJiE#{{Az
zMIp$a*maclOGT#{zYUy^=6Q~uR4NhwDqdB?^!($&&z+%q9L5BFzv+G#+P_#HpGwv7
zd2LL*zI6`F2)d}RhJX5bvVKS)n`jl2>%7ecnEOB^drR>C!zVno(m1n6F4z=7P1WI6
zc2+!j3Yw}WSHGRX7Ne$tRqw|G&fc<@G1B*->#0f-*O3v9v!Ov?ixpzn339l!N(mMC
z-3T3)dY`IU5A?_2N8F6zG7X*0MH;z%Ys3O#hgUVzxgcP49bLrn(e5PZGkN^$=A-1I
zF)3(N%x3%9M4_^8l6)FUBQ^B?Di)NbYx+cHD0Pi$@<{eG!T<0$@v#pk8DA)EXpp#S
zZcGq2B<4j*LxtOb6JRt_UO2C*;y$c_{oBq=79j=UtxKo|QaKr!rcn(FHITO2#^GJn
zQ?qWVPmhb8UTgJe`2=rI%hWff^?Ruv7k)YN+t0>>+KDTskTQ4C(}VuzN4Z~*R4aSv
zPVo@uS}k(F`0RGdsswL_R=PhspUCW}W19tSzEQjOq%TSi~`GAvmTki~L)8$j~=U)f+5G2Q=}p5RB)uEZqD>39U+|cv>d~
zrI-$$Wi%YLh9E?O@Gp^RreA16g<>ex9j9=*l{Ls^7>;X9oidh2ZaMz_X5`oKMnG!!
z%f_o{GtX*Wm68kSgO*S=f_>z$;jZy877xk8?xjr<5)ImYDwPHy%V!QOFDG2&JTX
zW0)E1qeV&XTZ5!hifiXR6j2`Icm>V5doGklL6`!Xf}aEFZgyJbha7$;FMiz*oRMPo8t%eNQdO_qcWsDwbr*52>*HN|Nl3+`^sfE9
ziyRbYD3YxdYyS0sfJ;NgZr^JNYTz$v?uN%u14;(+Y9JbfIRh5grs&Ys$=9CZ+|?z_
zP`u2s5|QNrREgpxW9t;pMT6+PAY-RXOR$F;H0q#n4t|MTM1j;mthPcJe$tfo{GwUA2Wo>;@Na)-h8E6xwzrx2(#AQGt@
zJo3go2GY|3i(sVAYGK
zc-*2oGOR<6Q$B-?G^6cpwXZl0mf}}^xH+KTco@pzDrcfL@*U}~@5$b*dgT%i7Qtni
z^ZmCyE+0wTBFR3+FTOi_Bf{VIl9e*`=yl9f7~PBhDa@f^QS*-<<7PkEk>N(0
z`NymQ>j!2HBYS0FdJz&0-CR+7j}e*-FH$O!ND6@@7U7_EDQ{wKyx5JRTpwd*NMg?&
zI&qR=$(a~0*#~cAYZJns3~`DIE?CUoQR`0?7!E?o@)1ck%=4^k@yg&%v}ZBr%ctY&
z%VzZ@B^}nBH6`4i@A{i?Ui>I~-(uj_Ad|@Cr0Xy3@071A@1&sW7M6KbSU^dkZ7dmL
zdPM`@2$@j$k>U)J%DLyc3c|JNY+n(%hS@a-x$9mF3-s@(z2fBAG0dr!v0j6?%3Hu&
zLx?9j1~0>a)}e8G0bscYG#ofsI&sk>Q6-@<H&8#}UF7$tyUy
zF4ZDY<$?L_=}W8sm-Y&^Ugoy6c1n93c7KikI8WrS_ZQd$=A;jA_{tX_{GII(jIO#a
zFWbj&6mZ*6Cl?y+Tv4ypvJn17+RnlLS4TVQ3N`Z$6yP>e1#^Llx0_psaDtk(u#E?Z
zwJiu&U)BX+SnU?eGRAqK?I&HAL1nJQavtQU=_-tJvDsqb)L>2ZukTD|6G;lsq=pjSySe8a-ct)X{mO(PmS
zNF*g(GOf=(CiP3~Y-AE{?}$W8^1%S#Rub`47Ckf{$3DNQH=Ey)3?N4h>Wfo#49nRe
zFcwUGw9nB_mp?|#{UJ7i2QFfQW+aqOx2FQ}v|(%dZnmWD07Lg_JdlWN)|t0{LMFB<
z2c#J~`DqikU$*#Xsw{zT6gaJssSUtx>?H*znD(-dB(U2k6irjA$AFjrm_o9On%}D=
zKw4XLhwW#P_uN4ZAGgR!@J+fxqS}!#^uSTD
znhVh$rp(s<6c9la!ATb3ZR?QAtUgM-b?RF{
z>vZU2=1YLZp)9Q%56?6IH^0EYG@^e
z7E9_>Vk9^P2nK66x1=M0?r!&pyhEczpEOmIp5^16NwhV5X$v7E`t+aDQstnse7`M6
zKu3tE5ZbQW6Y-t`;qE)L$rwkn&q6j_viPvg-v-9%178@#+pbs5_kgIaNCd)o3HIhI
zHs8K}&7`rI3AezCT5;Re8J5_k407gcF-Ob5@eT*`L7X%S7?7rt?s}HpHEPIlopkTq
zOSs5sW!cBp&Dr_DGC)PQ`Ikw^EsJ9B$(nw8L;!(~qx6EU^_NM$5AsBxvKHi!b<%st
z+Q?-O$fG<{6owObW{gC8{|GrisWIqF3+2xTd=3@A+g4>p5`1f>D`-=w?pfJbm9YwGnQ>LY53u$yNQgO|Gv|_k5pzZ$MhU5R{P$qf$LhKKwhSQ
zN#iU1mk3s&P#R*3{TVPn@wMP~b)wd;#_~=@vvn9yArVe*72(_3E)@Odfekm^m5VbO
zSJ;QC#$^HR<73aJrtNEu6yW%PS*dWWGq%Mc=SgU5Pe64GXjv5wZ6oeYfTxxoOa>fEig)UDGi_T1m5AIFjID=j$1v$
zYrKn{L%h%Kq}NcR1Pg5nkcED^DNn#b4ZF{Wr`Y+p!%|2m;sXY1(C`&JxI-f#STTcy
zta;XmOns>u-`X8LBLlG8MB&lcl@0{l-8ATJ{*|RGmcXMmj~n?Aa#6~e`&~WwtfP|M
z{1)#yoaskJx9B0%AW$Z;`zIqS+RD|8es
zU)r>U%_*q(TfJ0Ad*bGhu}~XyM&kbKZOPU2|7ijGe}b>S!rQD+G@{BqoWC5=S~;Hv
zQvKmenmLryo5jFs6gzeu91-Dsyl`FcGzU=W;i9@hcZ)QyLJJQhRoQDRq7IZf#$PLo
z)yE>hZl&pJVCN9@36!Kq$#V9$>ZP;F+R2T7^bG#@mDSfdL5IQzQyUulj*(*UwDmC>
zX5A2zkw;e31>8OO`C&dAZxgeYNT3qYzv$1u9&c;{Ys4NNKL@9eqK0360rE!X)7PdD
zrLq9I`3RVqr^WvS`w-YD4
zA4W9YgWj+|EnNd$x=a9K(7bfL!d6X>l@x8)!ywPw!0}TE_U5GU#{9Sm?SJXI9i_aVLt}&~jbt-GU6y4WNjEBe{olQLTFPeev!4-U3iF1t~lsQ(Ot9&+B2E
z|NPy{BJcu{vgcpdU893zw`swPeh1IPkVaplbWu<_S>upIqt$NMuck;UVT
z9Q}>)ESJk{I}!z-GRHniv~|k!t0t!kjsDB)_OO?5`_)UrL60xY(DV(%^y&ItaIez&
z8hVP2{M*1gmT6`=Gz`k?=6fnQ)ct5vv)0@g{WQlpIiG*u_MgIoQtB1&
zBKO>%wK^sTriP>ZHDcT)b359)K9Kb6Z-24
znsmOL^;+MboJ)?YNyHo5&H6@!jUD`VDB~$2%JhY@#dUuQE4cSlS!_D(cs-an
zf63k0*~t)ls|7!LGy~-SC~^KJ>m}cvAPZ9n&!CaqYJS@{h28#p=k2~x>mCvPgHN#a
zjO>O{wIcvgI~9gqKZBWWa_8)t6Fu2BkNCRlKl>c
zzMapnF9n1vgTl|S`Buf&DN`V7f6#_@t|LDFUJQu39&Lf3DiGV(fcvceY}OPrAIwwf
zbz@kvD{Do1^(1ea*8*DD0Xt0dBlF(=C9UZgU{Q=`?g4t)2
zXY-XNtoz(PDYtm3Xn3}~&U;7-cXKmx`oK>DaQKh9$wbG_;rYq42J3nAhE7Hbv~02l
zJBJUx$45>MAl0#^A#?qnt=_PS^=&5Fg#qBU{l6`5bogOk5tkSo`vs8sjm%F9>ADmZ
zKCnUl0A`Yk98eJ)INnyn#mT{EtixQK+H*2rJN%`;3{(XhS;WR*fCj>6
z`0^hGQcPO(F}ph>$4$SSyGA2LlS`r~gzqMZuEHgD-F`RHFS-YOW4bi^GE1RTo0Upj
z(X{8*Y9!Z_XuN?-gO70a&ED?j))nHzhBE$T&BT#)@*euH(o;yUkHhQHeSIKKvqsLnDhMNH3i^fm
zP(~J9ZU^NUKb@3y99l61xhkkB*BIqBUBKz*&jYwslNa{@m{ua$q5iEW#2?1WBi8cM
z#CWp&iPftxGqhPV;G84nM(Ypdk?%`LO-3k?VwJPwnL
zHN&bC8_hkffShYUcx*^$^XLi1+W3vgXL(5%b~iyP?42vG?<01bVPwIw2k^!M84Uvq
zTA-WEr$$^d8cdtD8mjVU$3&8I1#|qtFBjYbNXNgiSFsb+;(E(JAZ1jF4G$g?)YUD+
z{sM5&ZF~Vler3in}t;*`ExyY@%TIAT*&oeqmh
z`kmaB6?UEQxo?Pjxay}l9#d%#;qpO7<)_W5zV6M&
[cascading] The is the way in which JCB [task:get] a power during the [events] so that it can use the power in your component, and store in [layer:database]
These terminologies and ideas are what you need to remember whenever you read any of the comments and other information about super-powers in JCB.
JCB uses powers as the foundation of all it builds. You can build things with JCB without knowing how to use or work with powers. But JCB cannot build anything without powers. That means JCB needs to load powers from the [layer:core] and usually will do this whenever an [event] is triggered based on the [algorithm:cascading].
All these events can possibly move powers into your [layer:database]. These [events] have the [method:auto] behaviour, and therefore we make use of the [algorithm:cascading] that allows for overriding any power in any way you like. Beware that divergence from the core powers may have side effects and therefore should only be done with knowledge and full understanding on your part.
Let's Explain the [algorithm:cascading] During [events] we must [auto] load powers, and so there is a search path for each event.
The [event:compile] when building your component, here is the [algorithm:cascading]:
[layer:database]
[layer:local IF switch:activate AND switch:approved]
[layer:own IF switch:token AND switch:activate AND switch:super AND switch:approved]
[layer:core]
This means, that if JCB gets a [power:guid] in the [layer:database] it stops the search and uses that found power. But if not, it will continue until it finds the power, or it will show an error that the power could not be found. Once it finds the power, it will make sure that the power is in [layer:database], and if [layer:local] is active, it will update those as well as determined by the approved path selection of each power.
The [event:sync] when the sync button is clicked, here is the [algorithm:cascading]:
[layer:own IF switch:token AND switch:activate AND switch:super AND switch:approved]
[layer:local IF switch:activate AND switch:approved]
[layer:core]
This means, that if JCB gets a [power:guid] in any of the targeted [layer:own] it stops the search for that power at the first instance it finds that power. Then JCB will update your [layer:database] with the found power, irrespective of modify or creation date. The [power:guid] is used as the key, and should JCB therefore have a power in any of your [layer:own] it will override the [layer:core] and [layer:local] version of any power, and update the [layer:database].
The [event:reset] when the reset button is clicked, will update [layer:database] with [layer:core] version of the selected powers if found in [layer:core], irrespective of modify or creation date.
The [event:init] when the init button is clicked, will initialise [layer:database] with all [layers] powers not found in [layer:database]. Should you have the same power in multiple of the layers, here is the [algorithm:cascading]:
[layer:own IF switch:token AND switch:activate AND switch:super AND switch:approved]
[layer:local IF switch:activate]
[layer:core IF_NOT layer:database]
This means, that if JCB gets a [power:guid] in any of the targeted [layer:own] it will not use any of the other [layers] versions. JCB will add this first found power to your [layer:database] unless it's already in [layer:database], in which case it will be ignored. Use [event:sync] or [event:reset] should you like to update [layer:database] existing powers.
Add the paths to those repositories you would like to target with this instance of JCB.
You only need to add the path, so if your repository is located here: https://git.vdm.dev/Llewellyn/workshop. Then the path will be: Llewellyn/workshop
We will use these paths in all [events] based on the [algorithm:cascading]
We have moved this whole area to the new Repositories area in JCB.
Check it out right under the Servers menu, the Repositories menu can be found.
"
COM_COMPONENTBUILDER_CONFIG_NOTE_SUPER_POWERS_REPOSITORIES_LABEL="Super Powers Repositories [layer:local:own]"
COM_COMPONENTBUILDER_CONFIG_OFF="Off"
COM_COMPONENTBUILDER_CONFIG_ON="On"
COM_COMPONENTBUILDER_CONFIG_ONLY_BOOLEAN="Only Boolean"
COM_COMPONENTBUILDER_CONFIG_ONLY_EXTRA="Only Extra"
COM_COMPONENTBUILDER_CONFIG_ORIGINAL_VDM="Original (VDM)"
-COM_COMPONENTBUILDER_CONFIG_OWNER_HINT="[owner]"
-COM_COMPONENTBUILDER_CONFIG_OWNER_LABEL="Owner"
COM_COMPONENTBUILDER_CONFIG_PACKAGE_NAME_PLAEHOLDERS_DESCRIPTION="[YEAR][MONTH][DAY][HOUR][MINUTE]"
COM_COMPONENTBUILDER_CONFIG_PACKAGE_NAME_PLAEHOLDERS_LABEL="Package Name Placeholders"
COM_COMPONENTBUILDER_CONFIG_PERCENTAGELANGUAGEADD_DESCRIPTION="Select percentage any language should be translated before the system should add the language to the component during compilation."
@@ -3644,8 +3626,6 @@ COM_COMPONENTBUILDER_CONFIG_REPLYNAME_HINT="Reply Name Here"
COM_COMPONENTBUILDER_CONFIG_REPLYNAME_LABEL="Reply to Name"
COM_COMPONENTBUILDER_CONFIG_REPOSITORY_DESCRIPTION="Should the component be moved to your local repository folder?"
COM_COMPONENTBUILDER_CONFIG_REPOSITORY_LABEL="Add to Repository Folder"
-COM_COMPONENTBUILDER_CONFIG_REPO_HINT="[repo]"
-COM_COMPONENTBUILDER_CONFIG_REPO_LABEL="Repo"
COM_COMPONENTBUILDER_CONFIG_RETURN_OPTIONS_BUILD_DESCRIPTION="Should the system return the build info/messages, or simply 1 for success and 0 for failure."
COM_COMPONENTBUILDER_CONFIG_RETURN_OPTIONS_BUILD_LABEL="Return Options for Build"
COM_COMPONENTBUILDER_CONFIG_SENDMAIL="Sendmail"
@@ -3681,13 +3661,6 @@ COM_COMPONENTBUILDER_CONFIG_STRING_MANIPULATION="String Manipulation"
COM_COMPONENTBUILDER_CONFIG_SUBFORM_LAYOUTS_DESCRIPTION="Select the sub-form layouts you would like to use."
COM_COMPONENTBUILDER_CONFIG_SUBFORM_LAYOUTS_LABEL="Sub-form Layouts"
COM_COMPONENTBUILDER_CONFIG_SUPER_POWER="Super Power"
-COM_COMPONENTBUILDER_CONFIG_SUPER_POWERS_CORE_HINT="joomla/super-powers"
-COM_COMPONENTBUILDER_CONFIG_SUPER_POWERS_CORE_LABEL="Super Powers Core"
-COM_COMPONENTBUILDER_CONFIG_SUPER_POWERS_CORE_ORGANISATION_DESCRIPTION="Set the organisation on your Gitea system where all the JCB core super powers repositories can be found."
-COM_COMPONENTBUILDER_CONFIG_SUPER_POWERS_CORE_ORGANISATION_HINT="joomla"
-COM_COMPONENTBUILDER_CONFIG_SUPER_POWERS_CORE_ORGANISATION_LABEL="Gitea Core Organisation"
-COM_COMPONENTBUILDER_CONFIG_SUPER_POWERS_CORE_ORGANISATION_NOTE_DESCRIPTION="
The organisation on your Gitea system where all the core super powers repositories can be found. Example: https://your.gitea.system.com/[core-org]/super-powers
https://git.vdm.dev/joomla/minify (not usually required)
https://git.vdm.dev/joomla/psr (not usually required)
https://git.vdm.dev/joomla/jcb-compiler (not usually required)
https://git.vdm.dev/joomla/jcb-packager (not usually required)
https://git.vdm.dev/joomla/search (not usually required)
You should mirror theses repositories to your Gitea system. Depending on your extension setup JCB may need these repositories to effectively build your extension.
"
-COM_COMPONENTBUILDER_CONFIG_SUPER_POWERS_CORE_ORGANISATION_NOTE_LABEL="Gitea Core Organisation"
COM_COMPONENTBUILDER_CONFIG_SUPER_POWERS_DOCUMENTATION_DESCRIPTION="Switch to show or hide the documentation of super powers."
COM_COMPONENTBUILDER_CONFIG_SUPER_POWERS_DOCUMENTATION_LABEL="Documentation"
COM_COMPONENTBUILDER_CONFIG_SUPER_POWERS_REPOSITORIES_DESCRIPTION="Do you have your own repositories on https://git.vdm.dev/ with super powers?"
@@ -4296,6 +4269,7 @@ COM_COMPONENTBUILDER_DASHBOARD_LIBRARIES="Libraries
"
COM_COMPONENTBUILDER_DASHBOARD_LIST_OF_RECORDS="Dashboard (list of records)"
COM_COMPONENTBUILDER_DASHBOARD_PLACEHOLDERS="Placeholders
"
@@ -4887,7 +4861,6 @@ COM_COMPONENTBUILDER_FIELDTYPE_UNIQUE_KEY="UNIQUE KEY"
COM_COMPONENTBUILDER_FIELDTYPE_VARCHAR="VARCHAR"
COM_COMPONENTBUILDER_FIELDTYPE_VERSION_DESC="A count of the number of times this Fieldtype has been revised."
COM_COMPONENTBUILDER_FIELDTYPE_VERSION_LABEL="Version"
-COM_COMPONENTBUILDER_FIELDTYPE_WHMCSKEY_ENCRYPTION="WHMCS-key Encryption"
COM_COMPONENTBUILDER_FIELDTYPE_YES="Yes"
COM_COMPONENTBUILDER_FIELDTYPE_ZERO="0"
COM_COMPONENTBUILDER_FIELD_ADD_CSS_VIEWS_LABEL="Add CSS (views)"
@@ -4991,8 +4964,6 @@ COM_COMPONENTBUILDER_FIELD_NOTE_NO_DATABASE_SETTINGS_NEEDED_DESCRIPTION="This fi
COM_COMPONENTBUILDER_FIELD_NOTE_NO_DATABASE_SETTINGS_NEEDED_LABEL="No Database Require"
COM_COMPONENTBUILDER_FIELD_NOTE_SELECT_FIELD_TYPE_DESCRIPTION="Please select a field type that you would like to build."
COM_COMPONENTBUILDER_FIELD_NOTE_SELECT_FIELD_TYPE_LABEL="Building a field"
-COM_COMPONENTBUILDER_FIELD_NOTE_WHMCS_ENCRYPTION_DESCRIPTION="
When using the WHMCS encryption you need to get a WHMCS key from: https://www.vdm.io, or your own WHMCS install.
Please note that you will need to enable the add-on in the Joomla Component area (Add WHMCS)->Yes.
You can get more info about the WHMCS licensing add-on at the following links.
"
-COM_COMPONENTBUILDER_FIELD_NOTE_WHMCS_ENCRYPTION_LABEL="The WHMCS Encryption"
COM_COMPONENTBUILDER_FIELD_NOT_NULL="NOT NULL"
COM_COMPONENTBUILDER_FIELD_NOT_REQUIRED="Not Required"
COM_COMPONENTBUILDER_FIELD_NULL="NULL"
@@ -5033,7 +5004,6 @@ COM_COMPONENTBUILDER_FIELD_UNIQUE_KEY="UNIQUE KEY"
COM_COMPONENTBUILDER_FIELD_VARCHAR="VARCHAR"
COM_COMPONENTBUILDER_FIELD_VERSION_DESC="A count of the number of times this Field has been revised."
COM_COMPONENTBUILDER_FIELD_VERSION_LABEL="Version"
-COM_COMPONENTBUILDER_FIELD_WHMCSKEY_ENCRYPTION="WHMCS-key Encryption"
COM_COMPONENTBUILDER_FIELD_XML="Xml"
COM_COMPONENTBUILDER_FIELD_YES="Yes"
COM_COMPONENTBUILDER_FIELD_ZERO="0"
@@ -5048,6 +5018,8 @@ COM_COMPONENTBUILDER_FILTER_ADD_TYPE_ASCENDING="Add Type ascending"
COM_COMPONENTBUILDER_FILTER_ADD_TYPE_DESCENDING="Add Type descending"
COM_COMPONENTBUILDER_FILTER_ADMIN_VIEWS_ASCENDING="Admin Views ascending"
COM_COMPONENTBUILDER_FILTER_ADMIN_VIEWS_DESCENDING="Admin Views descending"
+COM_COMPONENTBUILDER_FILTER_BASE_URL_ASCENDING="Base URL ascending"
+COM_COMPONENTBUILDER_FILTER_BASE_URL_DESCENDING="Base URL descending"
COM_COMPONENTBUILDER_FILTER_COMMENT_TYPE_USED_IN_PLACEHOLDER_ASCENDING="Comment Type (used in placeholder) ascending"
COM_COMPONENTBUILDER_FILTER_COMMENT_TYPE_USED_IN_PLACEHOLDER_DESCENDING="Comment Type (used in placeholder) descending"
COM_COMPONENTBUILDER_FILTER_COMPANY_NAME_ASCENDING="Company Name ascending"
@@ -5106,6 +5078,8 @@ COM_COMPONENTBUILDER_FILTER_NAME_SINGLE_RECORDNAMING_CONVENTIONS_ASCENDING="Name
COM_COMPONENTBUILDER_FILTER_NAME_SINGLE_RECORDNAMING_CONVENTIONS_DESCENDING="Name (single record)Naming Conventions descending"
COM_COMPONENTBUILDER_FILTER_NULL_SWITCH_ASCENDING="Null Switch ascending"
COM_COMPONENTBUILDER_FILTER_NULL_SWITCH_DESCENDING="Null Switch descending"
+COM_COMPONENTBUILDER_FILTER_ORGANISATION_ASCENDING="Organisation ascending"
+COM_COMPONENTBUILDER_FILTER_ORGANISATION_DESCENDING="Organisation descending"
COM_COMPONENTBUILDER_FILTER_PROTOCOL_ASCENDING="Protocol ascending"
COM_COMPONENTBUILDER_FILTER_PROTOCOL_DESCENDING="Protocol descending"
COM_COMPONENTBUILDER_FILTER_PUBLISHED="Status"
@@ -5153,12 +5127,15 @@ COM_COMPONENTBUILDER_FILTER_PUBLISHED_LIBRARIES_CONFIG="Status options for libra
COM_COMPONENTBUILDER_FILTER_PUBLISHED_LIBRARIES_FILES_FOLDERS_URLS="Status options for libraries files folders urls"
COM_COMPONENTBUILDER_FILTER_PUBLISHED_PLACEHOLDERS="Status options for placeholders"
COM_COMPONENTBUILDER_FILTER_PUBLISHED_POWERS="Status options for powers"
+COM_COMPONENTBUILDER_FILTER_PUBLISHED_REPOSITORIES="Status options for repositories"
COM_COMPONENTBUILDER_FILTER_PUBLISHED_SERVERS="Status options for servers"
COM_COMPONENTBUILDER_FILTER_PUBLISHED_SITE_VIEWS="Status options for site views"
COM_COMPONENTBUILDER_FILTER_PUBLISHED_SNIPPETS="Status options for snippets"
COM_COMPONENTBUILDER_FILTER_PUBLISHED_SNIPPET_TYPES="Status options for snippet types"
COM_COMPONENTBUILDER_FILTER_PUBLISHED_TEMPLATES="Status options for templates"
COM_COMPONENTBUILDER_FILTER_PUBLISHED_VALIDATION_RULES="Status options for validation rules"
+COM_COMPONENTBUILDER_FILTER_REPOSITORY_ASCENDING="Repository ascending"
+COM_COMPONENTBUILDER_FILTER_REPOSITORY_DESCENDING="Repository descending"
COM_COMPONENTBUILDER_FILTER_SEARCH="Searchjoomla components"
COM_COMPONENTBUILDER_FILTER_SEARCH_ADMINS_CUSTOM_TABS="Search the admin custom tabs items. Prefix with ID: to search for an item by ID."
COM_COMPONENTBUILDER_FILTER_SEARCH_ADMINS_FIELDS="Search the admin fields items. Prefix with ID: to search for an item by ID."
@@ -5204,6 +5181,7 @@ COM_COMPONENTBUILDER_FILTER_SEARCH_LIBRARIES_CONFIG="Search the library config i
COM_COMPONENTBUILDER_FILTER_SEARCH_LIBRARIES_FILES_FOLDERS_URLS="Search the library files folders urls items. Prefix with ID: to search for an item by ID."
COM_COMPONENTBUILDER_FILTER_SEARCH_PLACEHOLDERS="Search the placeholder items. Prefix with ID: to search for an item by ID."
COM_COMPONENTBUILDER_FILTER_SEARCH_POWERS="Search the power items. Prefix with ID: to search for an item by ID."
+COM_COMPONENTBUILDER_FILTER_SEARCH_REPOSITORIES="Search the repository items. Prefix with ID: to search for an item by ID."
COM_COMPONENTBUILDER_FILTER_SEARCH_SERVERS="Search the server items. Prefix with ID: to search for an item by ID."
COM_COMPONENTBUILDER_FILTER_SEARCH_SITE_VIEWS="Search the site view items. Prefix with ID: to search for an item by ID."
COM_COMPONENTBUILDER_FILTER_SEARCH_SNIPPETS="Search the snippet items. Prefix with ID: to search for an item by ID."
@@ -5217,6 +5195,7 @@ COM_COMPONENTBUILDER_FILTER_SELECT_ADD_PHP_CUSTOM_VIEW_SCRIPT="Select Add PHP (c
COM_COMPONENTBUILDER_FILTER_SELECT_ADD_TYPE="Select Add Type"
COM_COMPONENTBUILDER_FILTER_SELECT_ADMIN_VIEWS="Select Admin Views"
COM_COMPONENTBUILDER_FILTER_SELECT_AUTHOR="Select Author"
+COM_COMPONENTBUILDER_FILTER_SELECT_BASE_URL="Select Base URL"
COM_COMPONENTBUILDER_FILTER_SELECT_COMMENT_TYPE_USED_IN_PLACEHOLDER="Select Comment Type (used in placeholder)"
COM_COMPONENTBUILDER_FILTER_SELECT_COMPANY_NAME="Select Company Name"
COM_COMPONENTBUILDER_FILTER_SELECT_COMPONENT="Select Component"
@@ -5237,7 +5216,9 @@ COM_COMPONENTBUILDER_FILTER_SELECT_MAIN_SOURCE="Select Main Source"
COM_COMPONENTBUILDER_FILTER_SELECT_MODELLING_METHOD="Select Modelling Method"
COM_COMPONENTBUILDER_FILTER_SELECT_NAME="Select Name"
COM_COMPONENTBUILDER_FILTER_SELECT_NULL_SWITCH="Select Null Switch"
+COM_COMPONENTBUILDER_FILTER_SELECT_ORGANISATION="Select Organisation"
COM_COMPONENTBUILDER_FILTER_SELECT_PROTOCOL="Select Protocol"
+COM_COMPONENTBUILDER_FILTER_SELECT_REPOSITORY="Select Repository"
COM_COMPONENTBUILDER_FILTER_SELECT_ROUTER_MODECONSTRUCTOR_AFTER_PARENT="Select Router Mode[constructor_after_parent]"
COM_COMPONENTBUILDER_FILTER_SELECT_ROUTER_MODECONSTRUCTOR_BEFORE_PARENT="Select Router Mode[constructor_before_parent]"
COM_COMPONENTBUILDER_FILTER_SELECT_ROUTER_MODEMETHODS="Select Router Mode[methods]"
@@ -5245,6 +5226,7 @@ COM_COMPONENTBUILDER_FILTER_SELECT_SITE_VIEWS="Select Site Views"
COM_COMPONENTBUILDER_FILTER_SELECT_SUPER_POWER="Select Super Power"
COM_COMPONENTBUILDER_FILTER_SELECT_TARGET="Select Target"
COM_COMPONENTBUILDER_FILTER_SELECT_TARGET_AREA="Select Target Area"
+COM_COMPONENTBUILDER_FILTER_SELECT_TARGET_CONTENT="Select Target Content"
COM_COMPONENTBUILDER_FILTER_SELECT_TARGET_FOLDER="Select Target Folder"
COM_COMPONENTBUILDER_FILTER_SELECT_TYPE="Select Type"
COM_COMPONENTBUILDER_FILTER_SELECT_TYPE_BEHAVIOR="Select Type Behavior"
@@ -5261,6 +5243,8 @@ COM_COMPONENTBUILDER_FILTER_SOURCE_STRING_DESCENDING="Source String descending"
COM_COMPONENTBUILDER_FILTER_SYSTEM_NAME_ASCENDING="System Name ascending"
COM_COMPONENTBUILDER_FILTER_SYSTEM_NAME_DESCENDING="System Name descending"
COM_COMPONENTBUILDER_FILTER_TARGET_ASCENDING="Target ascending"
+COM_COMPONENTBUILDER_FILTER_TARGET_CONTENT_ASCENDING="Target Content ascending"
+COM_COMPONENTBUILDER_FILTER_TARGET_CONTENT_DESCENDING="Target Content descending"
COM_COMPONENTBUILDER_FILTER_TARGET_DESCENDING="Target descending"
COM_COMPONENTBUILDER_FILTER_TARGET_FOLDER_ASCENDING="Target Folder ascending"
COM_COMPONENTBUILDER_FILTER_TARGET_FOLDER_DESCENDING="Target Folder descending"
@@ -5628,8 +5612,6 @@ COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_GIT_FOLDER_PATH_LABEL="Git Folder Path
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_JAVASCRIPT_LABEL="Add Javascript"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_JCB_POWERS_PATH_DESCRIPTION="Would you like to override the global jcb powers path for this component?"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_JCB_POWERS_PATH_LABEL="JCB Powers Path"
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_LICENSE_DESCRIPTION="Add the option to use the whmcs license add-on in the component."
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_LICENSE_LABEL="Add WHMCS (license add-on)"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_MENU_PREFIX_DESCRIPTION="Would you like to add a prefix to the Joomla menu name of this component"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_MENU_PREFIX_LABEL="Add Menu Prefix"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_NAMESPACE_PREFIX_DESCRIPTION="Override the namespace prefix, or use the global value found under the component builder global option under the compiler tab."
@@ -5714,7 +5696,6 @@ COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CSS_ADMIN_LABEL="CSS (admin)"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CSS_SITE_DESCRIPTION="Add CSS for the entire front-end of your component. Do not add the style tags."
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CSS_SITE_LABEL="CSS (site)"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CUSTOM_ADMIN_VIEWS="Custom Admin Views"
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CUSTOM_USED_IN_CUSTOM_CODE="Custom (used in custom code)"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_DASHBOARD_DESCRIPTION="Select a custom admin view that is already linked to this component as a dynamic dashboard."
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_DASHBOARD_LABEL="Dynamic Dashboard (admin or custom admin view)"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_DASHBOARD_TYPE_DESCRIPTION="Select the type of dashboard you would like to use."
@@ -5778,9 +5759,6 @@ COM_COMPONENTBUILDER_JOOMLA_COMPONENT_LIBS_HELPERS="Libs & Helpers"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_LICENSE_DESCRIPTION="Add License Here"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_LICENSE_HINT="Add License Here"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_LICENSE_LABEL="License"
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_LICENSE_TYPE_DESCRIPTION="How should the license be implemented."
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_LICENSE_TYPE_LABEL="Implementation"
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_LOCK_DOWN_USE_USED_TO_VERIFY_OWNERSHIP="Lock Down Use (used to verify ownership)"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_MENU_PREFIX_DESCRIPTION="Add the prefix you would like to use. Make sure that it is HTML Character Entities since it is being used in XML."
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_MENU_PREFIX_HINT="»"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_MENU_PREFIX_LABEL="Prefix Check out these lists: Char-ref or Emoji"
@@ -5853,8 +5831,6 @@ COM_COMPONENTBUILDER_JOOMLA_COMPONENT_NOTE_UPDATE_SERVER_NOTE_ZIP_LABEL="The ZIP
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_NOTE_VERSION_OPTIONS_1_DESCRIPTION="Use the modified date, and version number of the view/fields instead of the global version in related files."
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_NOTE_VERSION_OPTIONS_2_DESCRIPTION="Use only the first two numbers from your global version. This is useful if you are using git. Since all document will not then be updated, with version change, with each compilation when only a minor update is made."
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_NOTE_VERSION_OPTIONS_3_DESCRIPTION="Use only the first numbers from your global version. This is useful if you are using git. Since all document will not then be updated, with version change, with each compilation when major or minor updates are made."
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_NOTE_WHMCS_LISENCING_NOTE_DESCRIPTION="You can use WHMCS licensing addon in your component Helpful Links https://www.whmcs.com/software-licensing/ http://docs.whmcs.com/Licensing_Addon Support JCB and use our affiliate link (https://www.whmcs.com/members/aff.php?aff=37513) to sign-up with WHMCS."
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_NOTE_WHMCS_LISENCING_NOTE_LABEL="Licensing addon module for WHMCS"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_NOT_REQUIRED="Not Required"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_NUMBER_LABEL="Number"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ORDERING_LABEL="Ordering"
@@ -5923,7 +5899,6 @@ COM_COMPONENTBUILDER_JOOMLA_COMPONENT_TOIGNORE_LABEL="Repository Folders or File
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_TO_IGNORE_NOTE_DESCRIPTION="During compilation JCB deletes all files and folders from the repository folder, and then adds the newly created files and folders back into the repository folder. Yet there may be files or folders you may not want deleted, like the .git folder, since JCB does not dynamically create that folder and so it will not be placed back, but simply delete it, unless you add it in this text field below, so that it will be ignored, and therefore not deleted in the first place. You can add multiple folders and files, separated by commas. Like: .git, .hg"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_TO_IGNORE_NOTE_LABEL="Repository Folders or Files to Ignore"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_TRANSLATION_TOOL_LABEL="Translation Tool"
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_UPDATES_NOT_READY="Updates (NOT READY!)"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_UPDATE_SERVER_DESCRIPTION="Select your update server for this component."
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_UPDATE_SERVER_LABEL="Update Server"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_UPDATE_SERVER_TARGET_DESCRIPTION="Select the type of way you would like the update server to be set."
@@ -5946,19 +5921,6 @@ COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WEBSITE_DESCRIPTION="Enter website address
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WEBSITE_HINT="http://www.example.com"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WEBSITE_LABEL="Author Website"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WEBSITE_MESSAGE="Error! Please add website here."
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WHMCS_BUY_LINK_DESCRIPTION="Enter link where your WHMCS License key can be bought."
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WHMCS_BUY_LINK_HINT="http://www.example.com/buy-whmcs-key"
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WHMCS_BUY_LINK_LABEL="Buy Link (to get WHMCS License Key)"
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WHMCS_BUY_LINK_MESSAGE="Error! Please add link here."
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WHMCS_ENCRYPTION_ONLY_TO_LOCK_DATAFIELDS="WHMCS encryption (only to lock data/fields)"
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WHMCS_KEY_DESCRIPTION="Add your WHMCS Secret Key here that is needed for this license"
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WHMCS_KEY_HINT="Secret Key"
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WHMCS_KEY_LABEL="WHMCS Secret Key (encrypted field)"
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WHMCS_KEY_MESSAGE="Error! Please add some secret key here."
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WHMCS_URL_DESCRIPTION="Enter whmcs address"
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WHMCS_URL_HINT="http://www.yoursite.com/whmcs"
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WHMCS_URL_LABEL="URL to your WHMCS install"
-COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WHMCS_URL_MESSAGE="Error! Please add website here."
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_YES="Yes"
COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ZIP="ZIP"
COM_COMPONENTBUILDER_JOOMLA_FIELDS="Joomla fields"
@@ -7639,6 +7601,7 @@ COM_COMPONENTBUILDER_NOT_SAVED="Not saved!"
COM_COMPONENTBUILDER_NOT_SET="not set"
COM_COMPONENTBUILDER_NOT_TRANSLATED_IN="Not translated in"
COM_COMPONENTBUILDER_NO_ACCESS_GRANTED="No Access Granted!"
+COM_COMPONENTBUILDER_NO_ACTIVE_REPOSITORIES_FOUND="No Active Repositories Found"
COM_COMPONENTBUILDER_NO_ADMIN_VIEWS_FOUND="No Admin Views Found"
COM_COMPONENTBUILDER_NO_COMPONENTS_FOUND="No Components Found"
COM_COMPONENTBUILDER_NO_COMPONENTS_WERE_SELECTED_PLEASE_MAKE_A_SELECTION_AND_TRY_AGAIN="No components were selected, please make a selection and try again!"
@@ -7927,7 +7890,7 @@ COM_COMPONENTBUILDER_POWER_NAME_LABEL="Name"
COM_COMPONENTBUILDER_POWER_NAME_MESSAGE="Error! Please add name here."
COM_COMPONENTBUILDER_POWER_NEW="A New Power"
COM_COMPONENTBUILDER_POWER_NO="No"
-COM_COMPONENTBUILDER_POWER_NOTE_APPROVED_PATHS_DESCRIPTION="
Select the sub paths inside the local path where you would like to add this power. The default is the core JCB path which is joomla/super-powers (this can be changed in the global options)
To set the local path, and to add more sub paths, open the JCB global options, and look for the super power tab, there you will find all the instructions needed.
Super Power repository at https://git.vdm.dev/%s can be used to override any power! But has not yet been set in your account at https://git.vdm.dev/%s This is and optional feature."
COM_COMPONENTBUILDER_PSUPER_POWERB_REPOSITORY_AT_BSSB_GAVE_THE_FOLLOWING_ERRORBR_SP="
Super Power repository at %s/%s gave the following error! %s
"
COM_COMPONENTBUILDER_PUBLIC_ACCESS="Public Access"
@@ -7992,6 +7956,121 @@ COM_COMPONENTBUILDER_REPLACE="Replace"
COM_COMPONENTBUILDER_REPLACED_WITH="replaced with"
COM_COMPONENTBUILDER_REPLACE_PROCESS_COMPLETE="replace process complete"
COM_COMPONENTBUILDER_REPORT_AN_ISSUE_BSB="Report an issue: %s"
+COM_COMPONENTBUILDER_REPOSITORIES="Repositories"
+COM_COMPONENTBUILDER_REPOSITORIES_ACCESS="Repositories Access"
+COM_COMPONENTBUILDER_REPOSITORIES_ACCESS_DESC="Allows the users in this group to access access repositories"
+COM_COMPONENTBUILDER_REPOSITORIES_BATCH_OPTIONS="Batch process the selected Repositories"
+COM_COMPONENTBUILDER_REPOSITORIES_BATCH_TIP="All changes will be applied to all selected Repositories"
+COM_COMPONENTBUILDER_REPOSITORIES_BATCH_USE="Repositories Batch Use"
+COM_COMPONENTBUILDER_REPOSITORIES_BATCH_USE_DESC="Allows the users in this group to use batch copy/update method of batch repositories"
+COM_COMPONENTBUILDER_REPOSITORIES_CREATE="Repositories Create"
+COM_COMPONENTBUILDER_REPOSITORIES_CREATE_DESC="Allows the users in this group to create create repositories"
+COM_COMPONENTBUILDER_REPOSITORIES_DASHBOARD_LIST="Repositories Dashboard List"
+COM_COMPONENTBUILDER_REPOSITORIES_DASHBOARD_LIST_DESC="Allows the users in this group to dashboard list of repository"
+COM_COMPONENTBUILDER_REPOSITORIES_DELETE="Repositories Delete"
+COM_COMPONENTBUILDER_REPOSITORIES_DELETE_DESC="Allows the users in this group to delete delete repositories"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT="Repositories Edit"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_CREATED_BY="Repositories Edit Created By"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_CREATED_BY_DESC="Allows the users in this group to update the created by of the edit created by repositories"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_CREATED_DATE="Repositories Edit Created Date"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_CREATED_DATE_DESC="Allows the users in this group to update the created date of the edit created repositories"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_DESC="Allows the users in this group to edit the repository"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_OWN="Repositories Edit Own"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_OWN_DESC="Allows the users in this group to edit edit own repositories created by them"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_STATE="Repositories Edit State"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_STATE_DESC="Allows the users in this group to update the state of the repository"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_VERSION="Repositories Edit Version"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_VERSION_DESC="Allows the users in this group to edit versions of version repositories"
+COM_COMPONENTBUILDER_REPOSITORIES_EMPTYSTATE_BUTTON_ADD="Add your first repository"
+COM_COMPONENTBUILDER_REPOSITORIES_EMPTYSTATE_CONTENT="Repositories"
+COM_COMPONENTBUILDER_REPOSITORIES_EMPTYSTATE_TITLE="No repositories have been created yet."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_ARCHIVED="%s Repositories archived."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_ARCHIVED_1="%s Repository archived."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_CHECKED_IN_0="No Repository successfully checked in."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_CHECKED_IN_1="%d Repository successfully checked in."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_CHECKED_IN_MORE="%d Repositories successfully checked in."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_DELETED="%s Repositories deleted."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_DELETED_1="%s Repository deleted."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_FAILED_PUBLISHING="%s Repositories failed publishing."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_FAILED_PUBLISHING_1="%s Repository failed publishing."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_FEATURED="%s Repositories featured."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_FEATURED_1="%s Repository featured."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_PUBLISHED="%s Repositories published."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_PUBLISHED_1="%s Repository published."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_TRASHED="%s Repositories trashed."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_TRASHED_1="%s Repository trashed."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_UNFEATURED="%s Repositories unfeatured."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_UNFEATURED_1="%s Repository unfeatured."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_UNPUBLISHED="%s Repositories unpublished."
+COM_COMPONENTBUILDER_REPOSITORIES_N_ITEMS_UNPUBLISHED_1="%s Repository unpublished."
+COM_COMPONENTBUILDER_REPOSITORIES_SUBMENU="Repositories Submenu"
+COM_COMPONENTBUILDER_REPOSITORIES_SUBMENU_DESC="Allows the users in this group to submenu of repository"
+COM_COMPONENTBUILDER_REPOSITORY="Repository"
+COM_COMPONENTBUILDER_REPOSITORY_ACCESS_REPO_DESCRIPTION="Set the access options to this repository"
+COM_COMPONENTBUILDER_REPOSITORY_ACCESS_REPO_LABEL="Access"
+COM_COMPONENTBUILDER_REPOSITORY_BASE_DESCRIPTION="Enter Base URL"
+COM_COMPONENTBUILDER_REPOSITORY_BASE_HINT="https://git.vdm.dev"
+COM_COMPONENTBUILDER_REPOSITORY_BASE_LABEL="Base URL"
+COM_COMPONENTBUILDER_REPOSITORY_BASE_MESSAGE="Error! Please add website here."
+COM_COMPONENTBUILDER_REPOSITORY_CREATED_BY_DESC="The user that created this Repository."
+COM_COMPONENTBUILDER_REPOSITORY_CREATED_BY_LABEL="Created By"
+COM_COMPONENTBUILDER_REPOSITORY_CREATED_DATE_DESC="The date this Repository was created."
+COM_COMPONENTBUILDER_REPOSITORY_CREATED_DATE_LABEL="Created Date"
+COM_COMPONENTBUILDER_REPOSITORY_DETAILS="Details"
+COM_COMPONENTBUILDER_REPOSITORY_EDIT="Editing the Repository"
+COM_COMPONENTBUILDER_REPOSITORY_ERROR_UNIQUE_ALIAS="Another Repository has the same alias."
+COM_COMPONENTBUILDER_REPOSITORY_ERROR_UNIQUE_ALIAS_TRASHED="A trashed Repository has the same alias ."
+COM_COMPONENTBUILDER_REPOSITORY_GITEA="Gitea"
+COM_COMPONENTBUILDER_REPOSITORY_GLOBAL="Global"
+COM_COMPONENTBUILDER_REPOSITORY_GUID_DESCRIPTION="Globally Unique Identifier"
+COM_COMPONENTBUILDER_REPOSITORY_GUID_HINT="Auto Generated"
+COM_COMPONENTBUILDER_REPOSITORY_GUID_LABEL="GUID"
+COM_COMPONENTBUILDER_REPOSITORY_ID="Id"
+COM_COMPONENTBUILDER_REPOSITORY_JOOMLA_POWER="Joomla Power"
+COM_COMPONENTBUILDER_REPOSITORY_MODIFIED_BY_DESC="The last user that modified this Repository."
+COM_COMPONENTBUILDER_REPOSITORY_MODIFIED_BY_LABEL="Modified By"
+COM_COMPONENTBUILDER_REPOSITORY_MODIFIED_DATE_DESC="The date this Repository was modified."
+COM_COMPONENTBUILDER_REPOSITORY_MODIFIED_DATE_LABEL="Modified Date"
+COM_COMPONENTBUILDER_REPOSITORY_NEW="A New Repository"
+COM_COMPONENTBUILDER_REPOSITORY_ORDERING_LABEL="Ordering"
+COM_COMPONENTBUILDER_REPOSITORY_ORGANISATION_DESCRIPTION="Enter the name of the owner of this repository."
+COM_COMPONENTBUILDER_REPOSITORY_ORGANISATION_HINT="[org]"
+COM_COMPONENTBUILDER_REPOSITORY_ORGANISATION_LABEL="Organisation"
+COM_COMPONENTBUILDER_REPOSITORY_ORGANISATION_MESSAGE="Error! Please add organisation here."
+COM_COMPONENTBUILDER_REPOSITORY_OVERRIDE="Override"
+COM_COMPONENTBUILDER_REPOSITORY_PERMISSION="Permissions"
+COM_COMPONENTBUILDER_REPOSITORY_PUBLISHING="Publishing"
+COM_COMPONENTBUILDER_REPOSITORY_READ_BRANCH_DESCRIPTION="The read branch to use in the API calls."
+COM_COMPONENTBUILDER_REPOSITORY_READ_BRANCH_HINT="[master]"
+COM_COMPONENTBUILDER_REPOSITORY_READ_BRANCH_LABEL="Read Branch"
+COM_COMPONENTBUILDER_REPOSITORY_READ_BRANCH_MESSAGE="Error! Please add read branch here."
+COM_COMPONENTBUILDER_REPOSITORY_REPOSITORY_HINT="[repo]"
+COM_COMPONENTBUILDER_REPOSITORY_REPOSITORY_LABEL="Repository"
+COM_COMPONENTBUILDER_REPOSITORY_SAVE_WARNING="Alias already existed so a number was added at the end. You can re-edit the Repository to customise the alias."
+COM_COMPONENTBUILDER_REPOSITORY_SELECT_AN_OPTION="Select an option"
+COM_COMPONENTBUILDER_REPOSITORY_STATUS="Status"
+COM_COMPONENTBUILDER_REPOSITORY_SUPER_POWER="Super Power"
+COM_COMPONENTBUILDER_REPOSITORY_SYSTEM_NAME_DESCRIPTION="Used only in the system."
+COM_COMPONENTBUILDER_REPOSITORY_SYSTEM_NAME_HINT="The System Name Here"
+COM_COMPONENTBUILDER_REPOSITORY_SYSTEM_NAME_LABEL="System Name"
+COM_COMPONENTBUILDER_REPOSITORY_SYSTEM_NAME_MESSAGE="Error! Please add some text here."
+COM_COMPONENTBUILDER_REPOSITORY_TARGET_DESCRIPTION="The target content this repository holds."
+COM_COMPONENTBUILDER_REPOSITORY_TARGET_LABEL="Target Content"
+COM_COMPONENTBUILDER_REPOSITORY_TOKEN_DESCRIPTION="This token is used to access the api."
+COM_COMPONENTBUILDER_REPOSITORY_TOKEN_HINT="Access Tokens"
+COM_COMPONENTBUILDER_REPOSITORY_TOKEN_LABEL="Access Token"
+COM_COMPONENTBUILDER_REPOSITORY_TYPE_DESCRIPTION="The type of git system is this repository hosted on."
+COM_COMPONENTBUILDER_REPOSITORY_TYPE_LABEL="Type"
+COM_COMPONENTBUILDER_REPOSITORY_USERNAME_DESCRIPTION="The username to use in the API calls."
+COM_COMPONENTBUILDER_REPOSITORY_USERNAME_HINT="Username"
+COM_COMPONENTBUILDER_REPOSITORY_USERNAME_LABEL="Username"
+COM_COMPONENTBUILDER_REPOSITORY_USERNAME_MESSAGE="Error! Please add username here."
+COM_COMPONENTBUILDER_REPOSITORY_VERSION_DESC="A count of the number of times this Repository has been revised."
+COM_COMPONENTBUILDER_REPOSITORY_VERSION_LABEL="Version"
+COM_COMPONENTBUILDER_REPOSITORY_WRITE_BRANCH_DESCRIPTION="The write branch to use in the API calls. This can be the same as the read branch."
+COM_COMPONENTBUILDER_REPOSITORY_WRITE_BRANCH_HINT="[dev]"
+COM_COMPONENTBUILDER_REPOSITORY_WRITE_BRANCH_LABEL="Write Branch"
+COM_COMPONENTBUILDER_REPOSITORY_WRITE_BRANCH_MESSAGE="Error! Please add write branch here."
COM_COMPONENTBUILDER_REQUIRED_FIELDS_MISSING_IN_THE_BMYSQL_TABLES_SOURCE_MAPB_SELECTIONBR_S="Required fields missing in the MySQL -> Tables -> Source Map selection: %s"
COM_COMPONENTBUILDER_REQUIRES_THE_VALUE_ENTERED_BE_ONE_OF_THE_OPTIONS_IN_AN_ELEMENT_OF_TYPEQUOTLISTQUOT_THAT_IS_THAT_THE_ELEMENT_IS_A_SELECT_LIST="Requires the value entered be one of the options in an element of type="list": that is, that the element is a select list."
COM_COMPONENTBUILDER_REQUIRES_THE_VALUE_TO_BE_A_TELEPHONE_NUMBER_COMPLYING_WITH_THE_STANDARDS_OF_NANPA_ITUT_TRECEONE_HUNDRED_AND_SIXTY_FOUR_OR_IETF_RFCFOUR_THOUSAND_NINE_HUNDRED_AND_THIRTY_THREE="Requires the value to be a Telephone number complying with the standards of nanpa, ITU-T T-REC-E.164 or ietf rfc4933."
@@ -8836,6 +8915,7 @@ COM_COMPONENTBUILDER_SUBMENU_LAYOUTS="Layouts"
COM_COMPONENTBUILDER_SUBMENU_LIBRARIES="Libraries"
COM_COMPONENTBUILDER_SUBMENU_PLACEHOLDERS="Placeholders"
COM_COMPONENTBUILDER_SUBMENU_POWERS="Powers"
+COM_COMPONENTBUILDER_SUBMENU_REPOSITORIES="Repositories"
COM_COMPONENTBUILDER_SUBMENU_SEARCH="Search"
COM_COMPONENTBUILDER_SUBMENU_SERVERS="Servers"
COM_COMPONENTBUILDER_SUBMENU_SITE_VIEWS="Site Views"
@@ -9149,6 +9229,7 @@ COM_COMPONENTBUILDER_TYPE_NAME="Type - Name"
COM_COMPONENTBUILDER_TYPE_OR_SELECT_SOME_OPTIONS="Type or select some options"
COM_COMPONENTBUILDER_TYPE_PLACEHOLDER="Placeholder"
COM_COMPONENTBUILDER_TYPE_POWER="Power"
+COM_COMPONENTBUILDER_TYPE_REPOSITORY="Repository"
COM_COMPONENTBUILDER_TYPE_SERVER="Server"
COM_COMPONENTBUILDER_TYPE_SITE_VIEW="Site View"
COM_COMPONENTBUILDER_TYPE_SNIPPET="Snippet"
diff --git a/admin/language/en-GB/en-GB.com_componentbuilder.sys.ini b/admin/language/en-GB/en-GB.com_componentbuilder.sys.ini
index f7b9f4fe6..d60a51e1d 100644
--- a/admin/language/en-GB/en-GB.com_componentbuilder.sys.ini
+++ b/admin/language/en-GB/en-GB.com_componentbuilder.sys.ini
@@ -936,6 +936,7 @@ COM_COMPONENTBUILDER_MENU_LAYOUTS="Layouts"
COM_COMPONENTBUILDER_MENU_LIBRARIES="Libraries"
COM_COMPONENTBUILDER_MENU_PLACEHOLDERS="Placeholders"
COM_COMPONENTBUILDER_MENU_POWERS="Powers"
+COM_COMPONENTBUILDER_MENU_REPOSITORIES="Repositories"
COM_COMPONENTBUILDER_MENU_SEARCH="Search"
COM_COMPONENTBUILDER_MENU_SERVERS="Servers"
COM_COMPONENTBUILDER_MENU_SITE_VIEWS="Site Views"
@@ -992,6 +993,30 @@ COM_COMPONENTBUILDER_POWER_RESET_BUTTON_ACCESS="Power Reset Button Access"
COM_COMPONENTBUILDER_POWER_RESET_BUTTON_ACCESS_DESC="Allows the users in this group to access the reset button."
COM_COMPONENTBUILDER_POWER_RUN_EXPANSION_BUTTON_ACCESS="Power Run Expansion Button Access"
COM_COMPONENTBUILDER_POWER_RUN_EXPANSION_BUTTON_ACCESS_DESC="Allows the users in this group to access the run expansion button."
+COM_COMPONENTBUILDER_REPOSITORIES_ACCESS="Repositories Access"
+COM_COMPONENTBUILDER_REPOSITORIES_ACCESS_DESC="Allows the users in this group to access access repositories"
+COM_COMPONENTBUILDER_REPOSITORIES_BATCH_USE="Repositories Batch Use"
+COM_COMPONENTBUILDER_REPOSITORIES_BATCH_USE_DESC="Allows the users in this group to use batch copy/update method of batch repositories"
+COM_COMPONENTBUILDER_REPOSITORIES_CREATE="Repositories Create"
+COM_COMPONENTBUILDER_REPOSITORIES_CREATE_DESC="Allows the users in this group to create create repositories"
+COM_COMPONENTBUILDER_REPOSITORIES_DASHBOARD_LIST="Repositories Dashboard List"
+COM_COMPONENTBUILDER_REPOSITORIES_DASHBOARD_LIST_DESC="Allows the users in this group to dashboard list of repository"
+COM_COMPONENTBUILDER_REPOSITORIES_DELETE="Repositories Delete"
+COM_COMPONENTBUILDER_REPOSITORIES_DELETE_DESC="Allows the users in this group to delete delete repositories"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT="Repositories Edit"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_CREATED_BY="Repositories Edit Created By"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_CREATED_BY_DESC="Allows the users in this group to update the created by of the edit created by repositories"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_CREATED_DATE="Repositories Edit Created Date"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_CREATED_DATE_DESC="Allows the users in this group to update the created date of the edit created repositories"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_DESC="Allows the users in this group to edit the repository"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_OWN="Repositories Edit Own"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_OWN_DESC="Allows the users in this group to edit edit own repositories created by them"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_STATE="Repositories Edit State"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_STATE_DESC="Allows the users in this group to update the state of the repository"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_VERSION="Repositories Edit Version"
+COM_COMPONENTBUILDER_REPOSITORIES_EDIT_VERSION_DESC="Allows the users in this group to edit versions of version repositories"
+COM_COMPONENTBUILDER_REPOSITORIES_SUBMENU="Repositories Submenu"
+COM_COMPONENTBUILDER_REPOSITORIES_SUBMENU_DESC="Allows the users in this group to submenu of repository"
COM_COMPONENTBUILDER_SEARCH_ACCESS="Search Access"
COM_COMPONENTBUILDER_SEARCH_ACCESS_DESC="Allows the users in this group to access search."
COM_COMPONENTBUILDER_SEARCH_COMPILER_BUTTON_ACCESS="Search Compiler Button Access"
diff --git a/admin/layouts/field/database_right.php b/admin/layouts/field/database_right.php
index 83cad5930..6a1c770ab 100644
--- a/admin/layouts/field/database_right.php
+++ b/admin/layouts/field/database_right.php
@@ -31,7 +31,6 @@ $fields = $displayData->get($fields_tab_layout) ?: array(
'store',
'medium_encryption_note',
'basic_encryption_note',
- 'note_whmcs_encryption',
'note_expert_field_save_mode',
'initiator_on_save_model',
'initiator_on_get_model',
diff --git a/admin/layouts/joomla_component/details_right.php b/admin/layouts/joomla_component/details_right.php
index 8c3b5140d..3489691b7 100644
--- a/admin/layouts/joomla_component/details_right.php
+++ b/admin/layouts/joomla_component/details_right.php
@@ -30,12 +30,6 @@ $fields = $displayData->get($fields_tab_layout) ?: array(
'author',
'email',
'website',
- 'add_license',
- 'license_type',
- 'note_whmcs_lisencing_note',
- 'whmcs_key',
- 'whmcs_url',
- 'whmcs_buy_link',
'license',
'bom',
'image',
diff --git a/admin/layouts/repository/details_above.php b/admin/layouts/repository/details_above.php
new file mode 100644
index 000000000..59921a880
--- /dev/null
+++ b/admin/layouts/repository/details_above.php
@@ -0,0 +1,54 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+// No direct access to this file
+defined('_JEXEC') or die;
+
+// get the form
+$form = $displayData->getForm();
+
+// get the layout fields override method name (from layout path/ID)
+$layout_path_array = explode('.', $this->getLayoutId());
+// Since we cannot pass the layout and tab names as parameters to the model method
+// this name combination of tab and layout in the method name is the only work around
+// seeing that JCB uses those two values (tab_name & layout_name) as the layout file name.
+// example of layout name: details_left.php
+// example of method name: getFields_details_left()
+$fields_tab_layout = 'fields_' . $layout_path_array[1];
+
+// get the fields
+$fields = $displayData->get($fields_tab_layout) ?: [
+ 'system_name',
+ 'target',
+ 'access_repo'
+];
+
+// Ensure $fields is treated as an array and count its size.
+$size = count((array) $fields);
+
+// Use a ternary operator to determine the class.
+// If there are 1 to 4 fields, set the class to divide the 12-grid column equally among the fields.
+// For more than 4 fields, default to four columns (3-grid each) for medium and larger screens.
+$css_class = ($size > 0 && $size <= 4) ? 'col-12 col-md-' . round(12 / $size) : 'col-12 col-md-3';
+
+$hiddenFields = $displayData->get('hidden_fields') ?: [];
+
+?>
+
+
+
\ No newline at end of file
diff --git a/admin/tmpl/repositories/default_foot.php b/admin/tmpl/repositories/default_foot.php
new file mode 100644
index 000000000..57816d9c2
--- /dev/null
+++ b/admin/tmpl/repositories/default_foot.php
@@ -0,0 +1,18 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+// No direct access to this file
+defined('_JEXEC') or die;
+
+?>
+
+
pagination->getListFooter(); ?>
+
\ No newline at end of file
diff --git a/admin/tmpl/repositories/default_head.php b/admin/tmpl/repositories/default_head.php
new file mode 100644
index 000000000..936cd7670
--- /dev/null
+++ b/admin/tmpl/repositories/default_head.php
@@ -0,0 +1,65 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+use Joomla\CMS\Language\Text;
+use Joomla\CMS\HTML\HTMLHelper as Html;
+
+// No direct access to this file
+defined('_JEXEC') or die;
+
+?>
+
\ No newline at end of file
diff --git a/admin/tmpl/repositories/default_toolbar.php b/admin/tmpl/repositories/default_toolbar.php
new file mode 100644
index 000000000..7ae6f5a0c
--- /dev/null
+++ b/admin/tmpl/repositories/default_toolbar.php
@@ -0,0 +1,48 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+use Joomla\CMS\Language\Text;
+use Joomla\CMS\HTML\HTMLHelper as Html;
+
+// No direct access to this file
+defined('_JEXEC') or die;
+
+?>
+
+
+
+
+
+
+
+
+
+
+
+ pagination->getLimitBox(); ?>
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/admin/tmpl/repositories/emptystate.php b/admin/tmpl/repositories/emptystate.php
new file mode 100644
index 000000000..22a85c34e
--- /dev/null
+++ b/admin/tmpl/repositories/emptystate.php
@@ -0,0 +1,28 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+use Joomla\CMS\Layout\LayoutHelper;
+
+// No direct access to this file
+defined('_JEXEC') or die;
+
+$displayData = [
+ 'textPrefix' => 'COM_COMPONENTBUILDER_REPOSITORIES',
+ 'formURL' => 'index.php?option=com_componentbuilder&view=repositories',
+ 'icon' => 'icon-share',
+];
+
+if ($this->user->authorise('repository.create', 'com_componentbuilder'))
+{
+ $displayData['createURL'] = 'index.php?option=com_componentbuilder&task=repository.add';
+}
+
+echo LayoutHelper::render('joomla.content.emptystate', $displayData);
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Database/index.html b/admin/tmpl/repositories/index.html
similarity index 100%
rename from libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Database/index.html
rename to admin/tmpl/repositories/index.html
diff --git a/admin/tmpl/repository/default.php b/admin/tmpl/repository/default.php
new file mode 100644
index 000000000..9df8c9127
--- /dev/null
+++ b/admin/tmpl/repository/default.php
@@ -0,0 +1,106 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+use Joomla\CMS\Factory;
+use Joomla\CMS\Language\Text;
+use Joomla\CMS\HTML\HTMLHelper as Html;
+use Joomla\CMS\Layout\LayoutHelper;
+use Joomla\CMS\Router\Route;
+use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
+
+/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */
+$wa = $this->getDocument()->getWebAssetManager();
+$wa->useScript('keepalive')->useScript('form.validate');
+Html::_('bootstrap.tooltip');
+
+// No direct access to this file
+defined('_JEXEC') or die;
+
+?>
+
+
+
+
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Model/index.html b/admin/tmpl/repository/index.html
similarity index 100%
rename from libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Model/index.html
rename to admin/tmpl/repository/index.html
diff --git a/componentbuilder.xml b/componentbuilder.xml
index b4baa3124..438138302 100644
--- a/componentbuilder.xml
+++ b/componentbuilder.xml
@@ -1,15 +1,15 @@
COM_COMPONENTBUILDER
- 7th June, 2024
+ 20th June, 2024Llewellyn van der Merwejoomla@vdm.iohttps://dev.vdm.ioCopyright (C) 2015 Vast Development Method. All rights reserved.GNU General Public License version 2 or later; see LICENSE.txt
- 4.0.1-alpha4
+ 4.0.1-alpha5Component Builder (v.4.0.1-alpha4)
+
Component Builder (v.4.0.1-alpha5)
The Component Builder for [Joomla](https://extensions.joomla.org/extension/component-builder/) is highly advanced tool that is truly able to build extremely complex components in a fraction of the time.
@@ -84,6 +84,7 @@ Whether you're a seasoned [Joomla](https://extensions.joomla.org/extension/compo
+
diff --git a/componentbuilder_update_server.xml b/componentbuilder_update_server.xml
index 23a5d7312..ae2f78392 100644
--- a/componentbuilder_update_server.xml
+++ b/componentbuilder_update_server.xml
@@ -44,7 +44,7 @@
4.0.1-alphahttps://dev.vdm.io
- https://git.vdm.dev/api/v1/repos/joomla/pkg-component-builder/archive/v4.0.1-alpha3.zip
+ https://git.vdm.dev/api/v1/repos/joomla/pkg-component-builder/archive/v4.0.1-alpha5.zipalpha
@@ -59,10 +59,10 @@
pkg_component_builderpackagesite
- 4.0.1-alpha4
+ 4.0.1-alpha5https://dev.vdm.io
- https://git.vdm.dev/api/v1/repos/joomla/pkg-component-builder/archive/v4.0.1-alpha4.zip
+ https://git.vdm.dev/api/v1/repos/joomla/pkg-component-builder/archive/v4.0.1-alpha5.zipalpha
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Abstraction/Grep.php b/libraries/vendor_jcb/VDM.Joomla/src/Abstraction/Grep.php
index e51e873eb..f4c306f41 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Abstraction/Grep.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Abstraction/Grep.php
@@ -189,16 +189,22 @@ abstract class Grep implements GrepInterface
{
foreach ($this->paths as $n => &$path)
{
- if (isset($path->owner) && strlen($path->owner) > 1 &&
- isset($path->repo) && strlen($path->repo) > 1)
+ if (isset($path->organisation) && strlen($path->organisation) > 1 &&
+ isset($path->repository) && strlen($path->repository) > 1)
{
// build the path
- $path->path = trim($path->owner) . '/' . trim($path->repo);
+ $path->path = trim($path->organisation) . '/' . trim($path->repository);
// update the branch
- if ($path->branch === 'default' || empty($path->branch))
+ if ($path->read_branch === 'default' || empty($path->read_branch))
{
- $path->branch = null;
+ $path->read_branch = null;
+ }
+
+ // only update the write branch if set
+ if (isset($path->write_branch) && ($path->write_branch === 'default' || empty($path->write_branch)))
+ {
+ $path->write_branch = null;
}
// set local path
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Abstraction/Model.php b/libraries/vendor_jcb/VDM.Joomla/src/Abstraction/Model.php
index 9321eef87..f74eba0f3 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Abstraction/Model.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Abstraction/Model.php
@@ -15,6 +15,7 @@ namespace VDM\Joomla\Abstraction;
use VDM\Joomla\Utilities\StringHelper;
use VDM\Joomla\Utilities\ArrayHelper;
use VDM\Joomla\Interfaces\Tableinterface as Table;
+use VDM\Joomla\Interfaces\ModelInterface;
/**
@@ -22,7 +23,7 @@ use VDM\Joomla\Interfaces\Tableinterface as Table;
*
* @since 3.2.0
*/
-abstract class Model
+abstract class Model implements ModelInterface
{
/**
* Last ID
@@ -40,16 +41,57 @@ abstract class Model
*/
protected Table $table;
+ /**
+ * Table Name
+ *
+ * @var string
+ * @since 3.2.0
+ */
+ protected string $tableName;
+
+ /**
+ * The switch to control the behaviour of empty values
+ *
+ * @var bool
+ * @since 3.2.2
+ */
+ protected bool $allowEmpty = true;
+
/**
* Constructor
*
- * @param Table $table The search table object.
+ * @param Table $table The search table object.
+ * @param string|null $tableName The table
+ * @param bool|null $allowEmpty The switch to control the behaviour of empty values (default true)
*
* @since 3.2.0
*/
- public function __construct(Table $table)
+ public function __construct(Table $table, ?string $tableName = null, bool $allowEmpty = null)
{
$this->table = $table;
+ if ($tableName !== null)
+ {
+ $this->setTable($tableName);
+ }
+ if ($allowEmpty !== null)
+ {
+ $this->setAllowEmpty($allowEmpty);
+ }
+ }
+
+ /**
+ * Set the current active table
+ *
+ * @param string $table The table that should be active
+ *
+ * @return self
+ * @since 3.2.2
+ */
+ public function table(string $table): self
+ {
+ $this->setTable($table);
+
+ return $this;
}
/**
@@ -309,6 +351,54 @@ abstract class Model
return null;
}
+ /**
+ * Set the current active table
+ *
+ * @param string $tableName The table name
+ *
+ * @return void
+ * @since 3.2.2
+ */
+ public function setTable(string $tableName): void
+ {
+ $this->tableName = $tableName;
+ }
+
+ /**
+ * Set the switch to control the behaviour of empty values
+ *
+ * @param bool $allowEmpty The switch
+ *
+ * @return void
+ * @since 3.2.2
+ */
+ public function setAllowEmpty(bool $allowEmpty): void
+ {
+ $this->allowEmpty = $allowEmpty;
+ }
+
+ /**
+ * Get the current active table
+ *
+ * @return string
+ * @since 3.2.0
+ */
+ protected function getTable(): string
+ {
+ return $this->tableName;
+ }
+
+ /**
+ * Get the switch to control the behaviour of empty values
+ *
+ * @return bool
+ * @since 3.2.2
+ */
+ protected function getAllowEmpty(): bool
+ {
+ return $this->allowEmpty;
+ }
+
/**
* Get the current active table's fields (including defaults)
*
@@ -345,14 +435,6 @@ abstract class Model
* @return bool
* @since 3.2.0
*/
- abstract protected function validateAfter(&$value, ?string $field = null, ?string $table = null): bool;
-
- /**
- * Get the current active table
- *
- * @return string
- * @since 3.2.0
- */
- abstract protected function getTable(): string;
+ abstract protected function validateAfter(&$value, ?string $field = null, ?string $table = null): bool;
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Config.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Config.php
index ad8a18fce..09f6b8907 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Config.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Config.php
@@ -13,9 +13,11 @@ namespace VDM\Joomla\Componentbuilder\Compiler;
use Joomla\Registry\Registry as JoomlaRegistry;
-use Joomla\CMS\Factory as JoomlaFactory;
+use Joomla\CMS\Factory as JoomlaFactory;
+use Joomla\Input\Input;
use VDM\Joomla\Utilities\GetHelper;
use VDM\Joomla\Utilities\StringHelper;
+use VDM\Joomla\Componentbuilder\Utilities\RepoHelper;
use VDM\Joomla\Componentbuilder\Abstraction\BaseConfig;
@@ -43,9 +45,9 @@ class Config extends BaseConfig
/**
* Constructor
*
- * @param Input|null $input Input
- * @param Registry|null $params The component parameters
- * @param Registry|null $config The Joomla configuration
+ * @param Input|null $input Input
+ * @param JoomlaRegistry|null $params The component parameters
+ * @param JoomlaRegistry|null $config The Joomla configuration
*
* @throws \Exception
* @since 3.2.0
@@ -65,7 +67,7 @@ class Config extends BaseConfig
*/
protected function getGiteausername(): ?string
{
- return $this->custom_gitea_username ?? $this->params->get('gitea_username');
+ return $this->params->get('gitea_username');
}
/**
@@ -76,66 +78,7 @@ class Config extends BaseConfig
*/
protected function getGiteatoken(): ?string
{
- return $this->custom_gitea_token ?? $this->params->get('gitea_token');
- }
-
- /**
- * get Add Custom Gitea URL
- *
- * @return int the add switch
- * @since 3.2.0
- */
- protected function getAddcustomgiteaurl(): int
- {
- return $this->params->get('add_custom_gitea_url', 1);
- }
-
- /**
- * get Custom Gitea URL
- *
- * @return string the custom gitea url
- * @since 3.2.0
- */
- protected function getCustomgiteaurl(): ?string
- {
- if ($this->add_custom_gitea_url == 2)
- {
- return $this->params->get('custom_gitea_url');
- }
-
- return null;
- }
-
- /**
- * get Custom Gitea Username
- *
- * @return string the custom access token
- * @since 3.2.0
- */
- protected function getCustomgiteausername(): ?string
- {
- if ($this->add_custom_gitea_url == 2)
- {
- return $this->params->get('custom_gitea_username');
- }
-
- return null;
- }
-
- /**
- * get Custom Gitea Access Token
- *
- * @return string the custom access token
- * @since 3.2.0
- */
- protected function getCustomgiteatoken(): ?string
- {
- if ($this->add_custom_gitea_url == 2)
- {
- return $this->params->get('custom_gitea_token');
- }
-
- return null;
+ return $this->params->get('gitea_token');
}
/**
@@ -149,11 +92,6 @@ class Config extends BaseConfig
// the VDM default organisation is [joomla]
$organisation = 'joomla';
- if ($this->add_custom_gitea_url == 2)
- {
- return $this->params->get('super_powers_core_organisation', $organisation);
- }
-
return $organisation;
}
@@ -168,45 +106,66 @@ class Config extends BaseConfig
// some defaults repos we need by JCB
$repos = [];
- // only add custom init with custom gitea
- $paths = null;
- if ($this->add_custom_gitea_url == 2)
- {
- $paths = $this->params->get('super_powers_core_repos');
- }
-
// get the users own power repo (can overwrite all)
- if (!empty($this->gitea_username))
+ if ($this->gitea_username !== null)
{
- $repos[$this->gitea_username . '.super-powers'] = (object) ['owner' => $this->gitea_username, 'repo' => 'super-powers', 'branch' => 'master'];
+ $repos[$this->gitea_username . '.super-powers'] = (object) [
+ 'organisation' => $this->gitea_username,
+ 'repository' => 'super-powers',
+ 'read_branch' => 'master'
+ ];
}
- if (!empty($paths) && is_array($paths))
- {
- foreach ($paths as $path)
- {
- $owner = $path->owner ?? null;
- $repo = $path->repo ?? null;
- if ($owner !== null && $repo !== null)
- {
- // we make sure to get only the objects
- $repos = ["{$owner}.{$repo}" => $path] + $repos;
- }
- }
- }
- else
- {
- $repos[$this->super_powers_core_organisation . '.super-powers'] = (object) ['owner' => $this->super_powers_core_organisation, 'repo' => 'super-powers', 'branch' => 'master'];
- $repos[$this->super_powers_core_organisation . '.jcb-compiler'] = (object) ['owner' => $this->super_powers_core_organisation, 'repo' => 'jcb-compiler', 'branch' => 'master'];
- $repos[$this->super_powers_core_organisation . '.jcb-packager'] = (object) ['owner' => $this->super_powers_core_organisation, 'repo' => 'jcb-packager', 'branch' => 'master'];
- $repos[$this->super_powers_core_organisation . '.phpseclib'] = (object) ['owner' => $this->super_powers_core_organisation, 'repo' => 'phpseclib', 'branch' => 'master'];
- $repos[$this->super_powers_core_organisation . '.search'] = (object) ['owner' => $this->super_powers_core_organisation, 'repo' => 'search', 'branch' => 'master'];
- $repos[$this->super_powers_core_organisation . '.gitea'] = (object) ['owner' => $this->super_powers_core_organisation, 'repo' => 'gitea', 'branch' => 'master'];
- $repos[$this->super_powers_core_organisation . '.openai'] = (object) ['owner' => $this->super_powers_core_organisation, 'repo' => 'openai', 'branch' => 'master'];
- $repos[$this->super_powers_core_organisation . '.minify'] = (object) ['owner' => $this->super_powers_core_organisation, 'repo' => 'minify', 'branch' => 'master'];
- $repos[$this->super_powers_core_organisation . '.psr'] = (object) ['owner' => $this->super_powers_core_organisation, 'repo' => 'psr', 'branch' => 'master'];
- $repos[$this->super_powers_core_organisation . '.fof'] = (object) ['owner' => $this->super_powers_core_organisation, 'repo' => 'fof', 'branch' => 'master'];
- }
+ $repos[$this->super_powers_core_organisation . '.super-powers'] = (object) [
+ 'organisation' => $this->super_powers_core_organisation,
+ 'repository' => 'super-powers',
+ 'read_branch' => 'master'
+ ];
+ $repos[$this->super_powers_core_organisation . '.jcb-compiler'] = (object) [
+ 'organisation' => $this->super_powers_core_organisation,
+ 'repository' => 'jcb-compiler',
+ 'read_branch' => 'master'
+ ];
+ $repos[$this->super_powers_core_organisation . '.jcb-packager'] = (object) [
+ 'organisation' => $this->super_powers_core_organisation,
+ 'repository' => 'jcb-packager',
+ 'read_branch' => 'master'
+ ];
+ $repos[$this->super_powers_core_organisation . '.phpseclib'] = (object) [
+ 'organisation' => $this->super_powers_core_organisation,
+ 'repository' => 'phpseclib',
+ 'read_branch' => 'master'
+ ];
+ $repos[$this->super_powers_core_organisation . '.search'] = (object) [
+ 'organisation' => $this->super_powers_core_organisation,
+ 'repository' => 'search',
+ 'read_branch' => 'master'
+ ];
+ $repos[$this->super_powers_core_organisation . '.gitea'] = (object) [
+ 'organisation' => $this->super_powers_core_organisation,
+ 'repository' => 'gitea',
+ 'read_branch' => 'master'
+ ];
+ $repos[$this->super_powers_core_organisation . '.openai'] = (object) [
+ 'organisation' => $this->super_powers_core_organisation,
+ 'repository' => 'openai',
+ 'read_branch' => 'master'
+ ];
+ $repos[$this->super_powers_core_organisation . '.minify'] = (object) [
+ 'organisation' => $this->super_powers_core_organisation,
+ 'repository' => 'minify',
+ 'read_branch' => 'master'
+ ];
+ $repos[$this->super_powers_core_organisation . '.psr'] = (object) [
+ 'organisation' => $this->super_powers_core_organisation,
+ 'repository' => 'psr',
+ 'read_branch' => 'master'
+ ];
+ $repos[$this->super_powers_core_organisation . '.fof'] = (object) [
+ 'organisation' => $this->super_powers_core_organisation,
+ 'repository' => 'fof',
+ 'read_branch' => 'master'
+ ];
return $repos;
}
@@ -830,19 +789,14 @@ class Config extends BaseConfig
// some defaults repos we need by JCB
$approved = $this->super_powers_core_repos;
- if (!$this->add_own_powers)
- {
- return array_values($approved);
- }
+ $paths = RepoHelper::get(1); // super powers = 1
- $paths = $this->params->get('approved_paths');
-
- if (!empty($paths))
+ if ($paths !== null)
{
foreach ($paths as $path)
{
- $owner = $path->owner ?? null;
- $repo = $path->repo ?? null;
+ $owner = $path->organisation ?? null;
+ $repo = $path->repository ?? null;
if ($owner !== null && $repo !== null)
{
// we make sure to get only the objects
@@ -879,11 +833,19 @@ class Config extends BaseConfig
// some defaults repos we need by JCB
$repos = [];
// get the users own power repo (can overwrite all)
- if (!empty($this->gitea_username))
+ if ($this->gitea_username !== null)
{
- $repos[$this->gitea_username . '.joomla-powers'] = (object) ['owner' => $this->gitea_username, 'repo' => 'joomla-powers', 'branch' => 'master'];
+ $repos[$this->gitea_username . '.joomla-powers'] = (object) [
+ 'organisation' => $this->gitea_username,
+ 'repository' => 'joomla-powers',
+ 'read_branch' => 'master'
+ ];
}
- $repos[$this->joomla_powers_core_organisation . '.joomla-powers'] = (object) ['owner' => $this->joomla_powers_core_organisation, 'repo' => 'joomla-powers', 'branch' => 'master'];
+ $repos[$this->joomla_powers_core_organisation . '.joomla-powers'] = (object) [
+ 'organisation' => $this->joomla_powers_core_organisation,
+ 'repository' => 'joomla-powers',
+ 'read_branch' => 'master'
+ ];
return $repos;
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Factory.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Factory.php
index 9e7435507..a01ff5670 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Factory.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Factory.php
@@ -15,7 +15,9 @@ namespace VDM\Joomla\Componentbuilder\Compiler;
use Joomla\DI\Container;
use VDM\Joomla\Componentbuilder\Service\Crypt;
use VDM\Joomla\Componentbuilder\Service\Server;
-use VDM\Joomla\Componentbuilder\Service\Database;
+use VDM\Joomla\Service\Database;
+use VDM\Joomla\Service\Model as BaseModel;
+use VDM\Joomla\Service\Data;
use VDM\Joomla\Componentbuilder\Compiler\Service\Model;
use VDM\Joomla\Componentbuilder\Compiler\Service\Compiler;
use VDM\Joomla\Componentbuilder\Compiler\Service\Event;
@@ -149,6 +151,8 @@ abstract class Factory implements FactoryInterface
->registerServiceProvider(new Crypt())
->registerServiceProvider(new Server())
->registerServiceProvider(new Database())
+ ->registerServiceProvider(new BaseModel())
+ ->registerServiceProvider(new Data())
->registerServiceProvider(new Model())
->registerServiceProvider(new Compiler())
->registerServiceProvider(new Event())
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Power.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Power.php
index 55f811e7d..dbb88e0dd 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Power.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Power.php
@@ -21,7 +21,6 @@ use VDM\Joomla\Utilities\JsonHelper;
use VDM\Joomla\Utilities\GuidHelper;
use VDM\Joomla\Utilities\String\ClassfunctionHelper;
use VDM\Joomla\Utilities\String\NamespaceHelper;
-use VDM\Joomla\Componentbuilder\Compiler\Factory as Compiler;
use VDM\Joomla\Componentbuilder\Compiler\Config;
use VDM\Joomla\Componentbuilder\Compiler\Placeholder;
use VDM\Joomla\Componentbuilder\Compiler\Customcode;
@@ -102,43 +101,43 @@ class Power implements PowerInterface
protected array $retry = [];
/**
- * Compiler Config
+ * The Config Class.
*
- * @var Config
+ * @var Config
* @since 3.2.0
- **/
+ */
protected Config $config;
/**
- * Compiler Placeholder
+ * The Placeholder Class.
*
- * @var Placeholder
+ * @var Placeholder
* @since 3.2.0
- **/
+ */
protected Placeholder $placeholder;
/**
- * Compiler Customcode
+ * The Customcode Class.
*
- * @var Customcode
+ * @var Customcode
* @since 3.2.0
- **/
+ */
protected Customcode $customcode;
/**
- * Compiler Customcode in Gui
+ * The Gui Class.
*
- * @var Gui
+ * @var Gui
* @since 3.2.0
- **/
+ */
protected Gui $gui;
/**
- * The JCB Superpower class
+ * The Super Class.
*
- * @var Superpower
+ * @var Superpower
* @since 3.2.0
- **/
+ */
protected Superpower $superpower;
/**
@@ -158,23 +157,22 @@ class Power implements PowerInterface
/**
* Constructor.
*
- * @param Config|null $config The compiler config object.
- * @param Placeholder|null $placeholder The compiler placeholder object.
- * @param Customcode|null $customcode The compiler customcode object.
- * @param Gui|null $gui The compiler customcode gui object.
- * @param Superpower|null $superpower The JCB superpower object.
+ * @param Config $config The Config Class.
+ * @param Placeholder $placeholder The Placeholder Class.
+ * @param Customcode $customcode The Customcode Class.
+ * @param Gui $gui The Gui Class.
+ * @param Superpower $superpower The Super Class.
*
- * @throws \Exception
* @since 3.2.0
*/
- public function __construct(?Config $config = null, ?Placeholder $placeholder = null,
- ?Customcode $customcode = null, ?Gui $gui = null, ?Superpower $superpower = null)
+ public function __construct(Config $config, Placeholder $placeholder,
+ Customcode $customcode, Gui $gui, Superpower $superpower)
{
- $this->config = $config ?: Compiler::_('Config');
- $this->placeholder = $placeholder ?: Compiler::_('Placeholder');
- $this->customcode = $customcode ?: Compiler::_('Customcode');
- $this->gui = $gui ?: Compiler::_('Customcode.Gui');
- $this->superpower = $superpower ?: Compiler::_('Superpower');
+ $this->config = $config;
+ $this->placeholder = $placeholder;
+ $this->customcode = $customcode;
+ $this->gui = $gui;
+ $this->superpower = $superpower;
$this->db = Factory::getDbo();
$this->app = Factory::getApplication();
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Service/JoomlaPower.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Service/JoomlaPower.php
index 42aa0a117..6bb99d469 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Service/JoomlaPower.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Service/JoomlaPower.php
@@ -19,9 +19,6 @@ use VDM\Joomla\Componentbuilder\JoomlaPower\Grep;
use VDM\Joomla\Componentbuilder\JoomlaPower\Super as Superpower;
use VDM\Joomla\Componentbuilder\Compiler\JoomlaPower\Extractor;
use VDM\Joomla\Componentbuilder\Compiler\JoomlaPower\Injector;
-use VDM\Joomla\Componentbuilder\JoomlaPower\Model\Upsert;
-use VDM\Joomla\Componentbuilder\JoomlaPower\Database\Insert;
-use VDM\Joomla\Componentbuilder\JoomlaPower\Database\Update;
/**
@@ -55,15 +52,6 @@ class JoomlaPower implements ServiceProviderInterface
$container->alias(Injector::class, 'Joomla.Power.Injector')
->share('Joomla.Power.Injector', [$this, 'getInjector'], true);
-
- $container->alias(Upsert::class, 'Joomla.Power.Model.Upsert')
- ->share('Joomla.Power.Model.Upsert', [$this, 'getModelUpsert'], true);
-
- $container->alias(Insert::class, 'Joomla.Power.Insert')
- ->share('Joomla.Power.Insert', [$this, 'getInsert'], true);
-
- $container->alias(Update::class, 'Joomla.Power.Update')
- ->share('Joomla.Power.Update', [$this, 'getUpdate'], true);
}
/**
@@ -97,8 +85,7 @@ class JoomlaPower implements ServiceProviderInterface
{
return new Superpower(
$container->get('Joomla.Power.Grep'),
- $container->get('Joomla.Power.Insert'),
- $container->get('Joomla.Power.Update')
+ $container->get('Data.Item')
);
}
@@ -149,53 +136,6 @@ class JoomlaPower implements ServiceProviderInterface
$container->get('Power.Parser'),
$container->get('Placeholder')
);
- }
-
- /**
- * Get the Power Model Upsert
- *
- * @param Container $container The DI container.
- *
- * @return Upsert
- * @since 3.2.0
- */
- public function getModelUpsert(Container $container): Upsert
- {
- return new Upsert(
- $container->get('Table')
- );
- }
-
- /**
- * Get the Power Insert
- *
- * @param Container $container The DI container.
- *
- * @return Insert
- * @since 3.2.0
- */
- public function getInsert(Container $container): Insert
- {
- return new Insert(
- $container->get('Joomla.Power.Model.Upsert'),
- $container->get('Insert')
- );
- }
-
- /**
- * Get the Power Update
- *
- * @param Container $container The DI container.
- *
- * @return Update
- * @since 3.2.0
- */
- public function getUpdate(Container $container): Update
- {
- return new Update(
- $container->get('Joomla.Power.Model.Upsert'),
- $container->get('Update')
- );
}
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Service/Power.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Service/Power.php
index 43997f63e..958e6c27b 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Service/Power.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Compiler/Service/Power.php
@@ -15,10 +15,10 @@ namespace VDM\Joomla\Componentbuilder\Compiler\Service;
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;
use VDM\Joomla\Componentbuilder\Compiler\Power as Powers;
-use VDM\Joomla\Componentbuilder\Power\Grep;
use VDM\Joomla\Componentbuilder\Power\Super as Superpower;
-use VDM\Joomla\Componentbuilder\Compiler\Power\Infusion;
+use VDM\Joomla\Componentbuilder\Power\Grep;
use VDM\Joomla\Componentbuilder\Compiler\Power\Autoloader;
+use VDM\Joomla\Componentbuilder\Compiler\Power\Infusion;
use VDM\Joomla\Componentbuilder\Compiler\Power\Structure;
use VDM\Joomla\Componentbuilder\Compiler\Power\Parser;
use VDM\Joomla\Componentbuilder\Compiler\Power\Plantuml;
@@ -26,9 +26,6 @@ use VDM\Joomla\Componentbuilder\Compiler\Power\Repo\Readme as RepoReadme;
use VDM\Joomla\Componentbuilder\Compiler\Power\Repos\Readme as ReposReadme;
use VDM\Joomla\Componentbuilder\Compiler\Power\Extractor;
use VDM\Joomla\Componentbuilder\Compiler\Power\Injector;
-use VDM\Joomla\Componentbuilder\Power\Model\Upsert;
-use VDM\Joomla\Componentbuilder\Power\Database\Insert;
-use VDM\Joomla\Componentbuilder\Power\Database\Update;
/**
@@ -83,19 +80,10 @@ class Power implements ServiceProviderInterface
$container->alias(Injector::class, 'Power.Injector')
->share('Power.Injector', [$this, 'getInjector'], true);
-
- $container->alias(Upsert::class, 'Power.Model.Upsert')
- ->share('Power.Model.Upsert', [$this, 'getModelUpsert'], true);
-
- $container->alias(Insert::class, 'Power.Insert')
- ->share('Power.Insert', [$this, 'getInsert'], true);
-
- $container->alias(Update::class, 'Power.Update')
- ->share('Power.Update', [$this, 'getUpdate'], true);
}
/**
- * Get the Powers
+ * Get The Power Class.
*
* @param Container $container The DI container.
*
@@ -108,12 +96,13 @@ class Power implements ServiceProviderInterface
$container->get('Config'),
$container->get('Placeholder'),
$container->get('Customcode'),
- $container->get('Customcode.Gui')
+ $container->get('Customcode.Gui'),
+ $container->get('Superpower')
);
}
/**
- * Get the Superpower
+ * Get The Super Class.
*
* @param Container $container The DI container.
*
@@ -124,13 +113,12 @@ class Power implements ServiceProviderInterface
{
return new Superpower(
$container->get('Power.Grep'),
- $container->get('Power.Insert'),
- $container->get('Power.Update')
+ $container->get('Data.Item')
);
}
/**
- * Get the Grep
+ * Get The Grep Class.
*
* @param Container $container The DI container.
*
@@ -147,7 +135,7 @@ class Power implements ServiceProviderInterface
}
/**
- * Get the Compiler Autoloader
+ * Get The Autoloader Class.
*
* @param Container $container The DI container.
*
@@ -164,7 +152,7 @@ class Power implements ServiceProviderInterface
}
/**
- * Get the Compiler Power Infusion
+ * Get The Infusion Class.
*
* @param Container $container The DI container.
*
@@ -187,7 +175,7 @@ class Power implements ServiceProviderInterface
}
/**
- * Get the Compiler Power Structure Builder
+ * Get The Structure Class.
*
* @param Container $container The DI container.
*
@@ -210,11 +198,11 @@ class Power implements ServiceProviderInterface
}
/**
- * Get the Compiler Power Parser
+ * Get The Parser Class.
*
* @param Container $container The DI container.
*
- * @return Structure
+ * @return Parser
* @since 3.2.0
*/
public function getParser(Container $container): Parser
@@ -223,7 +211,7 @@ class Power implements ServiceProviderInterface
}
/**
- * Get the Compiler Power Plantuml Builder
+ * Get The Plantuml Class.
*
* @param Container $container The DI container.
*
@@ -236,7 +224,7 @@ class Power implements ServiceProviderInterface
}
/**
- * Get the Compiler Power Repo Readme Builder
+ * Get The Readme Class.
*
* @param Container $container The DI container.
*
@@ -252,7 +240,7 @@ class Power implements ServiceProviderInterface
}
/**
- * Get the Compiler Power Repos Readme Builder
+ * Get The Readme Class.
*
* @param Container $container The DI container.
*
@@ -268,7 +256,7 @@ class Power implements ServiceProviderInterface
}
/**
- * Get the Compiler Power Extractor
+ * Get The Extractor Class.
*
* @param Container $container The DI container.
*
@@ -281,7 +269,7 @@ class Power implements ServiceProviderInterface
}
/**
- * Get the Compiler Power Injector
+ * Get The Injector Class.
*
* @param Container $container The DI container.
*
@@ -296,53 +284,6 @@ class Power implements ServiceProviderInterface
$container->get('Power.Parser'),
$container->get('Placeholder')
);
- }
-
- /**
- * Get the Power Model Upsert
- *
- * @param Container $container The DI container.
- *
- * @return Upsert
- * @since 3.2.0
- */
- public function getModelUpsert(Container $container): Upsert
- {
- return new Upsert(
- $container->get('Table')
- );
- }
-
- /**
- * Get the Power Insert
- *
- * @param Container $container The DI container.
- *
- * @return Insert
- * @since 3.2.0
- */
- public function getInsert(Container $container): Insert
- {
- return new Insert(
- $container->get('Power.Model.Upsert'),
- $container->get('Insert')
- );
- }
-
- /**
- * Get the Power Update
- *
- * @param Container $container The DI container.
- *
- * @return Update
- * @since 3.2.0
- */
- public function getUpdate(Container $container): Update
- {
- return new Update(
- $container->get('Power.Model.Upsert'),
- $container->get('Update')
- );
}
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Interfaces/SuperInterface.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Interfaces/SuperInterface.php
deleted file mode 100644
index 21b6a39c5..000000000
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Interfaces/SuperInterface.php
+++ /dev/null
@@ -1,52 +0,0 @@
-
- * @git Joomla Component Builder
- * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
- * @license GNU General Public License version 2 or later; see LICENSE.txt
- */
-
-namespace VDM\Joomla\Componentbuilder\Interfaces;
-
-
-/**
- * Superpower of JCB
- *
- * @since 3.2.0
- */
-interface SuperInterface
-{
- /**
- * Init all power not found in database
- *
- * @return bool
- * @since 3.2.0
- */
- public function init(): bool;
-
- /**
- * Reset the powers
- *
- * @param array $powers The global unique ids of the powers
- *
- * @return bool
- * @since 3.2.0
- */
- public function reset(array $powers): bool;
-
- /**
- * Load a superpower
- *
- * @param string $guid The global unique id of the power
- * @param array $order The search order
- * @param string|null $action The action to load power
- *
- * @return bool
- * @since 3.2.0
- */
- public function load(string $guid, array $order = ['remote', 'local'], ?string $action = null): bool;
-}
-
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Config.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Config.php
index 84dd2bdd4..8aabf5757 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Config.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Config.php
@@ -65,7 +65,7 @@ class Config extends BaseConfig
*/
protected function getGiteausername(): ?string
{
- return $this->custom_gitea_username ?? $this->params->get('gitea_username');
+ return $this->params->get('gitea_username');
}
/**
@@ -76,66 +76,7 @@ class Config extends BaseConfig
*/
protected function getGiteatoken(): ?string
{
- return $this->custom_gitea_token ?? $this->params->get('gitea_token');
- }
-
- /**
- * get Add Custom Gitea URL
- *
- * @return int the add switch
- * @since 3.2.0
- */
- protected function getAddcustomgiteaurl(): int
- {
- return $this->params->get('add_custom_gitea_url', 1);
- }
-
- /**
- * get Custom Gitea URL
- *
- * @return string the custom gitea url
- * @since 3.2.0
- */
- protected function getCustomgiteaurl(): ?string
- {
- if ($this->add_custom_gitea_url == 2)
- {
- return $this->params->get('custom_gitea_url');
- }
-
- return null;
- }
-
- /**
- * get Custom Gitea Username
- *
- * @return string the custom access token
- * @since 3.2.0
- */
- protected function getCustomgiteausername(): ?string
- {
- if ($this->add_custom_gitea_url == 2)
- {
- return $this->params->get('custom_gitea_username');
- }
-
- return null;
- }
-
- /**
- * get Custom Gitea Access Token
- *
- * @return string the custom access token
- * @since 3.2.0
- */
- protected function getCustomgiteatoken(): ?string
- {
- if ($this->add_custom_gitea_url == 2)
- {
- return $this->params->get('custom_gitea_token');
- }
-
- return null;
+ return $this->params->get('gitea_token');
}
/**
@@ -165,9 +106,9 @@ class Config extends BaseConfig
// get the users own power repo (can overwrite all)
if (!empty($this->gitea_username))
{
- $repos[$this->gitea_username . '.joomla-powers'] = (object) ['owner' => $this->gitea_username, 'repo' => 'joomla-powers', 'branch' => 'master'];
+ $repos[$this->gitea_username . '.joomla-powers'] = (object) ['organisation' => $this->gitea_username, 'repository' => 'joomla-powers', 'read_branch' => 'master'];
}
- $repos[$this->joomla_powers_core_organisation . '.joomla-powers'] = (object) ['owner' => $this->joomla_powers_core_organisation, 'repo' => 'joomla-powers', 'branch' => 'master'];
+ $repos[$this->joomla_powers_core_organisation . '.joomla-powers'] = (object) ['organisation' => $this->joomla_powers_core_organisation, 'repository' => 'joomla-powers', 'read_branch' => 'master'];
return $repos;
}
@@ -183,7 +124,7 @@ class Config extends BaseConfig
// some defaults repos we need by JCB
if (!empty($this->gitea_username))
{
- return (object) ['owner' => $this->gitea_username, 'repo' => 'joomla-powers', 'branch' => 'master'];
+ return (object) ['organisation' => $this->gitea_username, 'repository' => 'joomla-powers', 'read_branch' => 'master'];
}
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Database/Insert.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Database/Insert.php
deleted file mode 100644
index 87270fc34..000000000
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Database/Insert.php
+++ /dev/null
@@ -1,34 +0,0 @@
-
- * @git Joomla Component Builder
- * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
- * @license GNU General Public License version 2 or later; see LICENSE.txt
- */
-
-namespace VDM\Joomla\Componentbuilder\JoomlaPower\Database;
-
-
-use VDM\Joomla\Componentbuilder\Interfaces\Database\InsertInterface;
-use VDM\Joomla\Componentbuilder\Power\Database\Insert as ExtendingInsert;
-
-
-/**
- * Joomla Power Database Insert
- *
- * @since 3.2.1
- */
-final class Insert extends ExtendingInsert implements InsertInterface
-{
- /**
- * Table Name
- *
- * @var string
- * @since 3.2.1
- */
- protected string $table = 'power';
-}
-
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Database/Load.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Database/Load.php
deleted file mode 100644
index c7cac78bc..000000000
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Database/Load.php
+++ /dev/null
@@ -1,34 +0,0 @@
-
- * @git Joomla Component Builder
- * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
- * @license GNU General Public License version 2 or later; see LICENSE.txt
- */
-
-namespace VDM\Joomla\Componentbuilder\JoomlaPower\Database;
-
-
-use VDM\Joomla\Componentbuilder\Power\Database\LoadInterface;
-use VDM\Joomla\Componentbuilder\Power\Database\Load as ExtendingLoad;
-
-
-/**
- * Power Database Load
- *
- * @since 2.0.1
- */
-final class Load extends ExtendingLoad implements LoadInterface
-{
- /**
- * Table Name
- *
- * @var string
- * @since 3.2.1
- */
- protected string $table = 'joomla_power';
-}
-
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Database/Update.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Database/Update.php
deleted file mode 100644
index 65dd0f3a3..000000000
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Database/Update.php
+++ /dev/null
@@ -1,34 +0,0 @@
-
- * @git Joomla Component Builder
- * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
- * @license GNU General Public License version 2 or later; see LICENSE.txt
- */
-
-namespace VDM\Joomla\Componentbuilder\JoomlaPower\Database;
-
-
-use VDM\Joomla\Componentbuilder\Interfaces\Database\UpdateInterface;
-use VDM\Joomla\Componentbuilder\Power\Database\Update as ExtendingUpdate;
-
-
-/**
- * Joomla Power Database Update
- *
- * @since 3.2.0
- */
-final class Update extends ExtendingUpdate implements UpdateInterface
-{
- /**
- * Table Name
- *
- * @var string
- * @since 3.2.1
- */
- protected string $table = 'joomla_power';
-}
-
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Factory.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Factory.php
index e598c4826..6215236c9 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Factory.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Factory.php
@@ -14,8 +14,9 @@ namespace VDM\Joomla\Componentbuilder\JoomlaPower;
use Joomla\DI\Container;
use VDM\Joomla\Componentbuilder\JoomlaPower\Service\JoomlaPower as Power;
-use VDM\Joomla\Componentbuilder\Service\Database;
-use VDM\Joomla\Componentbuilder\JoomlaPower\Service\Database as PowerDatabase;
+use VDM\Joomla\Service\Database;
+use VDM\Joomla\Service\Model;
+use VDM\Joomla\Service\Data;
use VDM\Joomla\Componentbuilder\Service\Gitea;
use VDM\Joomla\Componentbuilder\Power\Service\Gitea as GiteaPower;
use VDM\Joomla\Gitea\Service\Utilities as GiteaUtilities;
@@ -77,7 +78,8 @@ abstract class Factory implements FactoryInterface
return (new Container())
->registerServiceProvider(new Power())
->registerServiceProvider(new Database())
- ->registerServiceProvider(new PowerDatabase())
+ ->registerServiceProvider(new Model())
+ ->registerServiceProvider(new Data())
->registerServiceProvider(new Gitea())
->registerServiceProvider(new GiteaPower())
->registerServiceProvider(new GiteaUtilities());
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Grep.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Grep.php
index 8c4f5b254..2803490a5 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Grep.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Grep.php
@@ -56,7 +56,9 @@ final class Grep extends ExtendingGrep implements GrepInterface
try
{
- $path->index = $this->contents->get($path->owner, $path->repo, 'joomla-powers.json', $path->branch);
+ $this->contents->load_($path->base ?? null, $path->token ?? null);
+ $path->index = $this->contents->get($path->organisation, $path->repository, 'joomla-powers.json', $path->read_branch);
+ $this->contents->reset_();
}
catch (\Exception $e)
{
@@ -108,46 +110,43 @@ final class Grep extends ExtendingGrep implements GrepInterface
*/
protected function getRemote(object $path, string $guid): ?object
{
+ $power = null;
if (empty($path->index->{$guid}->settings))
{
- return null;
+ return $power;
}
// get the settings
- if (($power = $this->loadRemoteFile($path->owner, $path->repo, $path->index->{$guid}->settings, $path->branch)) !== null &&
+ $this->contents->load_($path->base ?? null, $path->token ?? null);
+ if (($power = $this->loadRemoteFile($path->organisation, $path->repository, $path->index->{$guid}->settings, $path->read_branch)) !== null &&
isset($power->guid))
{
// set the git details in params
$power->params = (object) [
- 'git' => [
- 'owner' => $path->owner,
- 'repo' => $path->repo,
- 'branch' => $path->branch
- ]
+ 'source' => ['guid' => $path->guid ?? null]
];
-
- return $power;
}
+ $this->contents->reset_();
- return null;
+ return $power;
}
/**
* Load the remote file
*
- * @param string $owner The repository owner
- * @param string $repo The repository name
- * @param string $path The repository path to file
- * @param string|null $branch The repository branch name
+ * @param string $organisation The repository organisation
+ * @param string $repository The repository name
+ * @param string $path The repository path to file
+ * @param string|null $branch The repository branch name
*
* @return mixed
* @since 3.2.0
*/
- protected function loadRemoteFile(string $owner, string $repo, string $path, ?string $branch)
+ protected function loadRemoteFile(string $organisation, string $repository, string $path, ?string $branch)
{
try
{
- $data = $this->contents->get($owner, $repo, $path, $branch);
+ $data = $this->contents->get($organisation, $repository, $path, $branch);
}
catch (\Exception $e)
{
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Model/Load.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Model/Load.php
deleted file mode 100644
index 345418dab..000000000
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Model/Load.php
+++ /dev/null
@@ -1,37 +0,0 @@
-
- * @git Joomla Component Builder
- * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
- * @license GNU General Public License version 2 or later; see LICENSE.txt
- */
-
-namespace VDM\Joomla\Componentbuilder\JoomlaPower\Model;
-
-
-use VDM\Joomla\Interfaces\ModelInterface;
-use VDM\Joomla\Componentbuilder\Power\Model\Load as ExtendingLoad;
-
-
-/**
- * Joomla Power Model Load
- *
- * @since 3.2.0
- */
-final class Load extends ExtendingLoad implements ModelInterface
-{
- /**
- * Get the current active table
- *
- * @return string
- * @since 3.2.0
- */
- protected function getTable(): string
- {
- return 'joomla_power';
- }
-}
-
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Model/Upsert.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Model/Upsert.php
deleted file mode 100644
index e22bb3f5a..000000000
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Model/Upsert.php
+++ /dev/null
@@ -1,38 +0,0 @@
-
- * @git Joomla Component Builder
- * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
- * @license GNU General Public License version 2 or later; see LICENSE.txt
- */
-
-namespace VDM\Joomla\Componentbuilder\JoomlaPower\Model;
-
-
-use VDM\Joomla\Interfaces\ModelInterface;
-use VDM\Joomla\Componentbuilder\Power\Model\Upsert as ExtendingUpsert;
-
-
-/**
- * Joomla Power Model Update or Insert
- *
- * @since 3.2.0
- */
-final class Upsert extends ExtendingUpsert implements ModelInterface
-{
- /**
- * Get the current active table
- *
- * @return string
- * @since 3.2.0
- */
- protected function getTable(): string
- {
- return 'joomla_power';
- }
-
-}
-
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Service/Database.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Service/Database.php
deleted file mode 100644
index 06524adc2..000000000
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Service/Database.php
+++ /dev/null
@@ -1,135 +0,0 @@
-
- * @git Joomla Component Builder
- * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
- * @license GNU General Public License version 2 or later; see LICENSE.txt
- */
-
-namespace VDM\Joomla\Componentbuilder\JoomlaPower\Service;
-
-
-use Joomla\DI\Container;
-use Joomla\DI\ServiceProviderInterface;
-use VDM\Joomla\Componentbuilder\JoomlaPower\Model\Load as ModelLoad;
-use VDM\Joomla\Componentbuilder\JoomlaPower\Model\Upsert as ModelUpsert;
-use VDM\Joomla\Componentbuilder\JoomlaPower\Database\Load as LoadDatabase;
-use VDM\Joomla\Componentbuilder\JoomlaPower\Database\Insert as InsertDatabase;
-use VDM\Joomla\Componentbuilder\JoomlaPower\Database\Update as UpdateDatabase;
-
-
-/**
- * Database Service Provider
- *
- * @since 3.2.0
- */
-class Database implements ServiceProviderInterface
-{
- /**
- * Registers the service provider with a DI container.
- *
- * @param Container $container The DI container.
- *
- * @return void
- * @since 3.2.0
- */
- public function register(Container $container)
- {
- $container->alias(ModelLoad::class, 'Joomla.Power.Model.Load')
- ->share('Joomla.Power.Model.Load', [$this, 'getModelLoad'], true);
-
- $container->alias(ModelUpsert::class, 'Joomla.Power.Model.Upsert')
- ->share('Joomla.Power.Model.Upsert', [$this, 'getModelUpsert'], true);
-
- $container->alias(LoadDatabase::class, 'Joomla.Power.Database.Load')
- ->share('Joomla.Power.Database.Load', [$this, 'getLoadDatabase'], true);
-
- $container->alias(InsertDatabase::class, 'Joomla.Power.Database.Insert')
- ->share('Joomla.Power.Database.Insert', [$this, 'getInsertDatabase'], true);
-
- $container->alias(UpdateDatabase::class, 'Joomla.Power.Database.Update')
- ->share('Joomla.Power.Database.Update', [$this, 'getUpdateDatabase'], true);
- }
-
- /**
- * Get the Power Model Load
- *
- * @param Container $container The DI container.
- *
- * @return ModelLoad
- * @since 3.2.0
- */
- public function getModelLoad(Container $container): ModelLoad
- {
- return new ModelLoad(
- $container->get('Table')
- );
- }
-
- /**
- * Get the Power Model Update or Insert
- *
- * @param Container $container The DI container.
- *
- * @return ModelUpsert
- * @since 3.2.0
- */
- public function getModelUpsert(Container $container): ModelUpsert
- {
- return new ModelUpsert(
- $container->get('Table')
- );
- }
-
- /**
- * Get the Load Database
- *
- * @param Container $container The DI container.
- *
- * @return LoadDatabase
- * @since 3.2.0
- */
- public function getLoadDatabase(Container $container): LoadDatabase
- {
- return new LoadDatabase(
- $container->get('Joomla.Power.Model.Load'),
- $container->get('Load')
- );
- }
-
- /**
- * Get the Insert Database
- *
- * @param Container $container The DI container.
- *
- * @return InsertDatabase
- * @since 3.2.0
- */
- public function getInsertDatabase(Container $container): InsertDatabase
- {
- return new InsertDatabase(
- $container->get('Joomla.Power.Model.Upsert'),
- $container->get('Insert')
- );
- }
-
- /**
- * Get the Update Database
- *
- * @param Container $container The DI container.
- *
- * @return UpdateDatabase
- * @since 3.2.0
- */
- public function getUpdateDatabase(Container $container): UpdateDatabase
- {
- return new UpdateDatabase(
- $container->get('Joomla.Power.Model.Upsert'),
- $container->get('Update')
- );
- }
-}
-
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Service/JoomlaPower.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Service/JoomlaPower.php
index 941fb5789..9e7a2f8fc 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Service/JoomlaPower.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Service/JoomlaPower.php
@@ -108,8 +108,7 @@ class JoomlaPower implements ServiceProviderInterface
{
return new Superpower(
$container->get('Joomla.Power.Grep'),
- $container->get('Joomla.Power.Database.Insert'),
- $container->get('Joomla.Power.Database.Update')
+ $container->get('Data.Item')
);
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Super.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Super.php
index 1a5684884..5ea95f281 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Super.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Super.php
@@ -12,8 +12,8 @@
namespace VDM\Joomla\Componentbuilder\JoomlaPower;
-use VDM\Joomla\Componentbuilder\Interfaces\SuperInterface;
-use VDM\Joomla\Componentbuilder\Power\Super as ExtendingSuper;
+use VDM\Joomla\Interfaces\Data\RemoteInterface;
+use VDM\Joomla\Data\Remote;
/**
@@ -21,7 +21,7 @@ use VDM\Joomla\Componentbuilder\Power\Super as ExtendingSuper;
*
* @since 3.2.0
*/
-final class Super extends ExtendingSuper implements SuperInterface
+final class Super extends Remote implements RemoteInterface
{
/**
* Table Name
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Config.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Config.php
index b5167fdb0..633215b60 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Config.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Config.php
@@ -13,9 +13,11 @@ namespace VDM\Joomla\Componentbuilder\Power;
use Joomla\Registry\Registry as JoomlaRegistry;
-use Joomla\CMS\Factory as JoomlaFactory;
+use Joomla\CMS\Factory as JoomlaFactory;
+use Joomla\Input\Input;
use VDM\Joomla\Utilities\GetHelper;
use VDM\Joomla\Utilities\StringHelper;
+use VDM\Joomla\Componentbuilder\Utilities\RepoHelper;
use VDM\Joomla\Componentbuilder\Abstraction\BaseConfig;
@@ -43,9 +45,9 @@ class Config extends BaseConfig
/**
* Constructor
*
- * @param Input|null $input Input
- * @param Registry|null $params The component parameters
- * @param Registry|null $config The Joomla configuration
+ * @param Input|null $input Input
+ * @param JoomlaRegistry|null $params The component parameters
+ * @param JoomlaRegistry|null $config The Joomla configuration
*
* @throws \Exception
* @since 3.2.0
@@ -65,7 +67,7 @@ class Config extends BaseConfig
*/
protected function getGiteausername(): ?string
{
- return $this->custom_gitea_username ?? $this->params->get('gitea_username');
+ return $this->params->get('gitea_username');
}
/**
@@ -76,66 +78,7 @@ class Config extends BaseConfig
*/
protected function getGiteatoken(): ?string
{
- return $this->custom_gitea_token ?? $this->params->get('gitea_token');
- }
-
- /**
- * get Add Custom Gitea URL
- *
- * @return int the add switch
- * @since 3.2.0
- */
- protected function getAddcustomgiteaurl(): int
- {
- return $this->params->get('add_custom_gitea_url', 1);
- }
-
- /**
- * get Custom Gitea URL
- *
- * @return string the custom gitea url
- * @since 3.2.0
- */
- protected function getCustomgiteaurl(): ?string
- {
- if ($this->add_custom_gitea_url == 2)
- {
- return $this->params->get('custom_gitea_url');
- }
-
- return null;
- }
-
- /**
- * get Custom Gitea Username
- *
- * @return string the custom access token
- * @since 3.2.0
- */
- protected function getCustomgiteausername(): ?string
- {
- if ($this->add_custom_gitea_url == 2)
- {
- return $this->params->get('custom_gitea_username');
- }
-
- return null;
- }
-
- /**
- * get Custom Gitea Access Token
- *
- * @return string the custom access token
- * @since 3.2.0
- */
- protected function getCustomgiteatoken(): ?string
- {
- if ($this->add_custom_gitea_url == 2)
- {
- return $this->params->get('custom_gitea_token');
- }
-
- return null;
+ return $this->params->get('gitea_token');
}
/**
@@ -149,11 +92,6 @@ class Config extends BaseConfig
// the VDM default organisation is [joomla]
$organisation = 'joomla';
- if ($this->add_custom_gitea_url == 2)
- {
- return $this->params->get('super_powers_core_organisation', $organisation);
- }
-
return $organisation;
}
@@ -168,38 +106,31 @@ class Config extends BaseConfig
// some defaults repos we need by JCB
$repos = [];
- // only add custom init with custom gitea
- $paths = null;
- if ($this->add_custom_gitea_url == 2)
- {
- $paths = $this->params->get('super_powers_init_repos');
- }
-
// get the users own power repo (can overwrite all)
- if (!empty($this->gitea_username))
+ if ($this->gitea_username !== null)
{
- $repos[$this->gitea_username . '.super-powers'] = (object) ['owner' => $this->gitea_username, 'repo' => 'super-powers', 'branch' => 'master'];
+ $repos[$this->gitea_username . '.super-powers'] = (object) [
+ 'organisation' => $this->gitea_username,
+ 'repository' => 'super-powers',
+ 'read_branch' => 'master'
+ ];
}
- if (!empty($paths) && is_array($paths))
- {
- foreach ($paths as $path)
- {
- $owner = $path->owner ?? null;
- $repo = $path->repo ?? null;
- if ($owner !== null && $repo !== null)
- {
- // we make sure to get only the objects
- $repos = ["{$owner}.{$repo}" => $path] + $repos;
- }
- }
- }
- else
- {
- $repos[$this->super_powers_core_organisation . '.super-powers'] = (object) ['owner' => $this->super_powers_core_organisation, 'repo' => 'super-powers', 'branch' => 'master'];
- $repos[$this->super_powers_core_organisation . '.gitea'] = (object) ['owner' => $this->super_powers_core_organisation, 'repo' => 'gitea', 'branch' => 'master'];
- $repos[$this->super_powers_core_organisation . '.openai'] = (object) ['owner' => $this->super_powers_core_organisation, 'repo' => 'openai', 'branch' => 'master'];
- }
+ $repos[$this->super_powers_core_organisation . '.super-powers'] = (object) [
+ 'organisation' => $this->super_powers_core_organisation,
+ 'repository' => 'super-powers',
+ 'read_branch' => 'master'
+ ];
+ $repos[$this->super_powers_core_organisation . '.gitea'] = (object) [
+ 'organisation' => $this->super_powers_core_organisation,
+ 'repository' => 'gitea',
+ 'read_branch' => 'master'
+ ];
+ $repos[$this->super_powers_core_organisation . '.openai'] = (object) [
+ 'organisation' => $this->super_powers_core_organisation,
+ 'repository' => 'openai',
+ 'read_branch' => 'master'
+ ];
return $repos;
}
@@ -212,9 +143,13 @@ class Config extends BaseConfig
*/
protected function getSuperpowerspushrepo(): ?object
{
- if (!empty($this->gitea_username))
+ if ($this->gitea_username !== null)
{
- return (object) ['owner' => $this->gitea_username, 'repo' => 'super-powers', 'branch' => 'master'];
+ return (object) [
+ 'organisation' => $this->gitea_username,
+ 'repository' => 'super-powers',
+ 'read_branch' => 'master'
+ ];
}
return null;
@@ -288,19 +223,14 @@ class Config extends BaseConfig
// some defaults repos we need by JCB
$approved = $this->super_powers_init_repos;
- if (!$this->add_own_powers)
- {
- return array_values($approved);
- }
+ $paths = RepoHelper::get(1); // super powers = 1
- $paths = $this->params->get('approved_paths');
-
- if (!empty($paths))
+ if ($paths !== null)
{
foreach ($paths as $path)
{
- $owner = $path->owner ?? null;
- $repo = $path->repo ?? null;
+ $owner = $path->organisation ?? null;
+ $repo = $path->repository ?? null;
if ($owner !== null && $repo !== null)
{
// we make sure to get only the objects
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Factory.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Factory.php
index c3ef0491c..3803bf75d 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Factory.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Factory.php
@@ -14,8 +14,9 @@ namespace VDM\Joomla\Componentbuilder\Power;
use Joomla\DI\Container;
use VDM\Joomla\Componentbuilder\Power\Service\Power;
-use VDM\Joomla\Componentbuilder\Service\Database;
-use VDM\Joomla\Componentbuilder\Power\Service\Database as PowerDatabase;
+use VDM\Joomla\Service\Database;
+use VDM\Joomla\Service\Model;
+use VDM\Joomla\Service\Data;
use VDM\Joomla\Componentbuilder\Power\Service\Generator;
use VDM\Joomla\Componentbuilder\Service\Gitea;
use VDM\Joomla\Componentbuilder\Power\Service\Gitea as GiteaPower;
@@ -78,7 +79,8 @@ abstract class Factory implements FactoryInterface
return (new Container())
->registerServiceProvider(new Power())
->registerServiceProvider(new Database())
- ->registerServiceProvider(new PowerDatabase())
+ ->registerServiceProvider(new Model())
+ ->registerServiceProvider(new Data())
->registerServiceProvider(new Generator())
->registerServiceProvider(new Gitea())
->registerServiceProvider(new GiteaPower())
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Generator/Search.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Generator/Search.php
index 25cb6c8e2..ea38aec7b 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Generator/Search.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Generator/Search.php
@@ -12,7 +12,7 @@
namespace VDM\Joomla\Componentbuilder\Power\Generator;
-use VDM\Joomla\Componentbuilder\Power\Database\Load as Database;
+use VDM\Joomla\Data\Action\Load as Database;
use VDM\Joomla\Componentbuilder\Compiler\Power\Parser;
use VDM\Joomla\Componentbuilder\Power\Generator\Bucket;
use VDM\Joomla\Utilities\String\ClassfunctionHelper;
@@ -77,7 +77,7 @@ final class Search
{
if (($power = $this->bucket->get("power.{$guid}")) === null)
{
- if (($power = $this->database->item(['guid' => $guid])) === null)
+ if (($power = $this->database->table('power')->item(['guid' => $guid])) === null)
{
return null;
}
@@ -255,7 +255,7 @@ final class Search
{
if (($service_providers = $this->bucket->get("service_providers.{$guid}")) === null)
{
- if (($powers = $this->database->items([
+ if (($powers = $this->database->table('power')->items([
'use_selection' => [
'operator' => 'LIKE',
'value' => "'%{$guid}%'",
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Grep.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Grep.php
index 590fce1d6..bbcb7733a 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Grep.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Grep.php
@@ -48,14 +48,28 @@ final class Grep extends ExtendingGrep implements GrepInterface
try
{
- $path->index = $this->contents->get($path->owner, $path->repo, 'super-powers.json', $path->branch);
+ $this->contents->load_($path->base ?? null, $path->token ?? null);
+ $path->index = $this->contents->get($path->organisation, $path->repository, 'super-powers.json', $path->read_branch);
+ $this->contents->reset_();
}
catch (\Exception $e)
{
- $this->app->enqueueMessage(
- Text::sprintf('COM_COMPONENTBUILDER_PSUPER_POWERB_REPOSITORY_AT_BSSB_GAVE_THE_FOLLOWING_ERRORBR_SP', $this->contents->api(), $path->path, $e->getMessage()),
- 'Error'
- );
+ if ('super-powers' === $path->repository && 'joomla' !== $path->organisation && (empty($path->base) || $path->base === 'https://git.vdm.dev'))
+ {
+ // give heads-up about the overriding feature
+ $this->app->enqueueMessage(
+ Text::sprintf('COM_COMPONENTBUILDER_PSUPER_POWERB_REPOSITORY_AT_BHTTPSGITVDMDEVSB_CAN_BE_USED_TO_OVERRIDE_ANY_POWERBR_BUT_HAS_NOT_YET_BEEN_SET_IN_YOUR_ACCOUNT_AT_HTTPSGITVDMDEVSBR_SMALLTHIS_IS_AND_OPTIONAL_FEATURESMALL', $path->path, $path->organisation),
+ 'Message'
+ );
+ }
+ else
+ {
+ // give error
+ $this->app->enqueueMessage(
+ Text::sprintf('COM_COMPONENTBUILDER_PSUPER_POWERB_REPOSITORY_AT_BSSB_GAVE_THE_FOLLOWING_ERRORBR_SP', $this->contents->api(), $path->path, $e->getMessage()),
+ 'Error'
+ );
+ }
$path->index = null;
}
@@ -161,50 +175,48 @@ final class Grep extends ExtendingGrep implements GrepInterface
*/
protected function getRemote(object $path, string $guid): ?object
{
+ $power = null;
if (empty($path->index->{$guid}->settings) || empty($path->index->{$guid}->code))
{
- return null;
+ return $power;
}
// get the settings
- if (($power = $this->loadRemoteFile($path->owner, $path->repo, $path->index->{$guid}->settings, $path->branch)) !== null &&
+ $this->contents->load_($path->base ?? null, $path->token ?? null);
+ if (($power = $this->loadRemoteFile($path->organisation, $path->repository, $path->index->{$guid}->settings, $path->read_branch)) !== null &&
isset($power->guid))
{
// get the code
- if (($code = $this->loadRemoteFile($path->owner, $path->repo, $path->index->{$guid}->power, $path->branch)) !== null)
+ if (($code = $this->loadRemoteFile($path->organisation, $path->repository, $path->index->{$guid}->power, $path->read_branch)) !== null)
{
// set the git details in params
$power->params = (object) [
- 'git' => [
- 'owner' => $path->owner,
- 'repo' => $path->repo,
- 'branch' => $path->branch
- ]
+ 'source' => ['guid' => $path->guid ?? null]
];
$power->main_class_code = $code;
- return $power;
}
}
+ $this->contents->reset_();
- return null;
+ return $power;
}
/**
* Load the remote file
*
- * @param string $owner The repository owner
- * @param string $repo The repository name
- * @param string $path The repository path to file
- * @param string|null $branch The repository branch name
+ * @param string $organisation The repository organisation
+ * @param string $repository The repository name
+ * @param string $path The repository path to file
+ * @param string|null $branch The repository branch name
*
* @return mixed
* @since 3.2.0
*/
- protected function loadRemoteFile(string $owner, string $repo, string $path, ?string $branch)
+ protected function loadRemoteFile(string $organisation, string $repository, string $path, ?string $branch)
{
try
{
- $data = $this->contents->get($owner, $repo, $path, $branch);
+ $data = $this->contents->get($organisation, $repository, $path, $branch);
}
catch (\Exception $e)
{
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Service/Database.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Service/Database.php
deleted file mode 100644
index 4b1a238a4..000000000
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Service/Database.php
+++ /dev/null
@@ -1,135 +0,0 @@
-
- * @git Joomla Component Builder
- * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
- * @license GNU General Public License version 2 or later; see LICENSE.txt
- */
-
-namespace VDM\Joomla\Componentbuilder\Power\Service;
-
-
-use Joomla\DI\Container;
-use Joomla\DI\ServiceProviderInterface;
-use VDM\Joomla\Componentbuilder\Power\Model\Load as ModelLoad;
-use VDM\Joomla\Componentbuilder\Power\Model\Upsert as ModelUpsert;
-use VDM\Joomla\Componentbuilder\Power\Database\Load as LoadDatabase;
-use VDM\Joomla\Componentbuilder\Power\Database\Insert as InsertDatabase;
-use VDM\Joomla\Componentbuilder\Power\Database\Update as UpdateDatabase;
-
-
-/**
- * Database Service Provider
- *
- * @since 3.2.0
- */
-class Database implements ServiceProviderInterface
-{
- /**
- * Registers the service provider with a DI container.
- *
- * @param Container $container The DI container.
- *
- * @return void
- * @since 3.2.0
- */
- public function register(Container $container)
- {
- $container->alias(ModelLoad::class, 'Power.Model.Load')
- ->share('Power.Model.Load', [$this, 'getModelLoad'], true);
-
- $container->alias(ModelUpsert::class, 'Power.Model.Upsert')
- ->share('Power.Model.Upsert', [$this, 'getModelUpsert'], true);
-
- $container->alias(LoadDatabase::class, 'Power.Database.Load')
- ->share('Power.Database.Load', [$this, 'getLoadDatabase'], true);
-
- $container->alias(InsertDatabase::class, 'Power.Database.Insert')
- ->share('Power.Database.Insert', [$this, 'getInsertDatabase'], true);
-
- $container->alias(UpdateDatabase::class, 'Power.Database.Update')
- ->share('Power.Database.Update', [$this, 'getUpdateDatabase'], true);
- }
-
- /**
- * Get the Power Model Load
- *
- * @param Container $container The DI container.
- *
- * @return ModelLoad
- * @since 3.2.0
- */
- public function getModelLoad(Container $container): ModelLoad
- {
- return new ModelLoad(
- $container->get('Table')
- );
- }
-
- /**
- * Get the Power Model Update or Insert
- *
- * @param Container $container The DI container.
- *
- * @return ModelUpsert
- * @since 3.2.0
- */
- public function getModelUpsert(Container $container): ModelUpsert
- {
- return new ModelUpsert(
- $container->get('Table')
- );
- }
-
- /**
- * Get the Load Database
- *
- * @param Container $container The DI container.
- *
- * @return LoadDatabase
- * @since 3.2.0
- */
- public function getLoadDatabase(Container $container): LoadDatabase
- {
- return new LoadDatabase(
- $container->get('Power.Model.Load'),
- $container->get('Load')
- );
- }
-
- /**
- * Get the Insert Database
- *
- * @param Container $container The DI container.
- *
- * @return InsertDatabase
- * @since 3.2.0
- */
- public function getInsertDatabase(Container $container): InsertDatabase
- {
- return new InsertDatabase(
- $container->get('Power.Model.Upsert'),
- $container->get('Insert')
- );
- }
-
- /**
- * Get the Update Database
- *
- * @param Container $container The DI container.
- *
- * @return UpdateDatabase
- * @since 3.2.0
- */
- public function getUpdateDatabase(Container $container): UpdateDatabase
- {
- return new UpdateDatabase(
- $container->get('Power.Model.Upsert'),
- $container->get('Update')
- );
- }
-}
-
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Service/Generator.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Service/Generator.php
index 23a82cd1e..2d56299cd 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Service/Generator.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Service/Generator.php
@@ -121,7 +121,7 @@ class Generator implements ServiceProviderInterface
public function getSearch(Container $container): Search
{
return new Search(
- $container->get('Power.Database.Load'),
+ $container->get('Data.Load'),
$container->get('Power.Parser'),
$container->get('Power.Generator.Bucket')
);
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Service/Power.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Service/Power.php
index e62c3a350..f96540067 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Service/Power.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Service/Power.php
@@ -109,8 +109,7 @@ class Power implements ServiceProviderInterface
{
return new Superpower(
$container->get('Power.Grep'),
- $container->get('Power.Database.Insert'),
- $container->get('Power.Database.Update')
+ $container->get('Data.Item')
);
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Super.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Super.php
index 97b62ad40..eef7f0e1f 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Super.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Super.php
@@ -12,11 +12,8 @@
namespace VDM\Joomla\Componentbuilder\Power;
-use VDM\Joomla\Interfaces\GrepInterface as Grep;
-use VDM\Joomla\Componentbuilder\Interfaces\Database\InsertInterface as Insert;
-use VDM\Joomla\Componentbuilder\Interfaces\Database\UpdateInterface as Update;
-use VDM\Joomla\Utilities\GuidHelper;
-use VDM\Joomla\Componentbuilder\Interfaces\SuperInterface;
+use VDM\Joomla\Interfaces\Data\RemoteInterface;
+use VDM\Joomla\Data\Remote;
/**
@@ -24,171 +21,14 @@ use VDM\Joomla\Componentbuilder\Interfaces\SuperInterface;
*
* @since 3.2.0
*/
-class Super implements SuperInterface
+final class Super extends Remote implements RemoteInterface
{
- /**
- * The Power Search Tool
- *
- * @var Grep
- * @since 3.2.0
- **/
- protected Grep $grep;
-
- /**
- * Insert Data Class
- *
- * @var Insert
- * @since 3.2.0
- **/
- protected Insert $insert;
-
- /**
- * Update Data Class
- *
- * @var Update
- * @since 3.2.0
- **/
- protected Update $update;
-
/**
* Table Name
*
* @var string
* @since 3.2.1
*/
- protected string $table = 'power';
-
- /**
- * Constructor.
- *
- * @param Grep $grep The Power Grep object.
- * @param Insert $insert The Power Database Insert object.
- * @param Update $update The Power Database Update object.
- *
- * @since 3.2.0
- */
- public function __construct(Grep $grep, Insert $insert, Update $update)
- {
- $this->grep = $grep;
- $this->insert = $insert;
- $this->update = $update;
- }
-
- /**
- * Init all power not found in database
- *
- * @return bool
- * @since 3.2.0
- */
- public function init(): bool
- {
- if (($powers = $this->grep->getRemotePowersGuid()) !== null)
- {
- foreach($powers as $guid)
- {
- if ($this->action($guid) === 'insert' && ($power = $this->grep->get($guid, ['remote'])) !== null)
- {
- $this->insert($power);
- }
- }
-
- return true;
- }
-
- return false;
- }
-
- /**
- * Reset the powers
- *
- * @param array $powers The global unique ids of the powers
- *
- * @return bool
- * @since 3.2.0
- */
- public function reset(array $powers): bool
- {
- if ($powers === [])
- {
- return false;
- }
-
- $success = true;
-
- foreach($powers as $guid)
- {
- if (!$this->load($guid, ['remote']))
- {
- $success = false;
- }
- }
-
- return $success;
- }
-
- /**
- * Load a superpower
- *
- * @param string $guid The global unique id of the power
- * @param array $order The search order
- * @param string|null $action The action to load power
- *
- * @return bool
- * @since 3.2.0
- */
- public function load(string $guid, array $order = ['remote', 'local'], ?string $action = null): bool
- {
- if (($power = $this->grep->get($guid, $order)) !== null &&
- ($action !== null || ($action = $this->action($power->guid)) !== null))
- {
- return method_exists($this, $action) ? $this->{$action}($power) : false;
- }
-
- return false;
- }
-
- /**
- * Insert a superpower
- *
- * @param object $power The power
- *
- * @return bool
- * @since 3.2.0
- */
- private function insert(object $power): bool
- {
- return $this->insert->item($power);
- }
-
- /**
- * Update a superpower
- *
- * @param object $power The power
- *
- * @return bool
- * @since 3.2.0
- */
- private function update(object $power): bool
- {
- return $this->update->item($power);
- }
-
- /**
- * Get loading action
- *
- * @param string $guid The global unique id of the power
- *
- * @return string
- * @since 3.2.0
- */
- private function action(string $guid): string
- {
- if (($id = GuidHelper::item($guid, $this->table)) !== null && $id > 0)
- {
- return 'update';
- }
-
- return 'insert';
- }
+ protected string $table = 'power';
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Table.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Table.php
index 4cbee85c3..004ac74b0 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Table.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Table.php
@@ -95,233 +95,57 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
- 'php_site_event' => [
- 'name' => 'php_site_event',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_SITE_EVENT_LABEL',
- 'type' => 'editor',
+ 'created' => [
+ 'name' => 'created',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CREATED_LABEL',
+ 'type' => 'calendar',
'title' => false,
'list' => 'joomla_components',
- 'store' => 'base64',
- 'tab_name' => 'Libs & Helpers',
+ 'store' => NULL,
+ 'tab_name' => 'publishing',
'db' => [
- 'type' => 'MEDIUMTEXT',
- 'default' => 'EMPTY',
+ 'type' => 'DATETIME',
+ 'default' => '0000-00-00 00:00:00',
'null_switch' => 'NOT NULL',
'unique_key' => false,
'key' => false,
],
],
- 'component_version' => [
- 'name' => 'component_version',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_COMPONENT_VERSION_LABEL',
+ 'crowdin_project_identifier' => [
+ 'name' => 'crowdin_project_identifier',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CROWDIN_PROJECT_IDENTIFIER_LABEL',
'type' => 'text',
'title' => false,
'list' => 'joomla_components',
'store' => NULL,
- 'tab_name' => 'Details',
+ 'tab_name' => 'Dynamic Integration',
'db' => [
- 'type' => 'CHAR(64)',
+ 'type' => 'VARCHAR(255)',
'default' => '',
'null_switch' => 'NOT NULL',
'unique_key' => false,
'key' => false,
],
],
- 'php_admin_event' => [
- 'name' => 'php_admin_event',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_ADMIN_EVENT_LABEL',
- 'type' => 'editor',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => 'base64',
- 'tab_name' => 'Libs & Helpers',
- 'db' => [
- 'type' => 'MEDIUMTEXT',
- 'default' => 'EMPTY',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'crowdin_username' => [
- 'name' => 'crowdin_username',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CROWDIN_USERNAME_LABEL',
+ 'backup_folder_path' => [
+ 'name' => 'backup_folder_path',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_BACKUP_FOLDER_PATH_LABEL',
'type' => 'text',
'title' => false,
'list' => 'joomla_components',
- 'store' => 'basic_encryption',
+ 'store' => NULL,
'tab_name' => 'Dynamic Integration',
'db' => [
- 'type' => 'TEXT',
- 'default' => 'EMPTY',
+ 'type' => 'VARCHAR(255)',
+ 'default' => '',
'null_switch' => 'NOT NULL',
'unique_key' => false,
'key' => false,
],
],
- 'php_preflight_install' => [
- 'name' => 'php_preflight_install',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_PREFLIGHT_INSTALL_LABEL',
- 'type' => 'editor',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => 'base64',
- 'tab_name' => 'Dash & Install',
- 'db' => [
- 'type' => 'MEDIUMTEXT',
- 'default' => 'EMPTY',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'remove_line_breaks' => [
- 'name' => 'remove_line_breaks',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_REMOVE_LINE_BREAKS_LABEL',
- 'type' => 'radio',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Details',
- 'db' => [
- 'type' => 'TINYINT(1)',
- 'default' => '0',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => true,
- ],
- ],
- 'description' => [
- 'name' => 'description',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_DESCRIPTION_LABEL',
- 'type' => 'textarea',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Details',
- 'db' => [
- 'type' => 'TEXT',
- 'default' => 'EMPTY',
- 'null_switch' => 'NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'php_method_uninstall' => [
- 'name' => 'php_method_uninstall',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_METHOD_UNINSTALL_LABEL',
- 'type' => 'editor',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => 'base64',
- 'tab_name' => 'Dash & Install',
- 'db' => [
- 'type' => 'MEDIUMTEXT',
- 'default' => 'EMPTY',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'debug_linenr' => [
- 'name' => 'debug_linenr',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_DEBUG_LINENR_LABEL',
- 'type' => 'radio',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Details',
- 'db' => [
- 'type' => 'TINYINT(1)',
- 'default' => '0',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => true,
- ],
- ],
- 'mvc_versiondate' => [
- 'name' => 'mvc_versiondate',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_MVC_VERSIONDATE_LABEL',
- 'type' => 'list',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Details',
- 'db' => [
- 'type' => 'TINYINT(1)',
- 'default' => '0',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => true,
- ],
- ],
- 'css_admin' => [
- 'name' => 'css_admin',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CSS_ADMIN_LABEL',
- 'type' => 'editor',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => 'base64',
- 'tab_name' => 'Libs & Helpers',
- 'db' => [
- 'type' => 'TEXT',
- 'default' => 'EMPTY',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'addreadme' => [
- 'name' => 'addreadme',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADDREADME_LABEL',
- 'type' => 'radio',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Readme',
- 'db' => [
- 'type' => 'TINYINT(1)',
- 'default' => '0',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => true,
- ],
- ],
- 'php_postflight_install' => [
- 'name' => 'php_postflight_install',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_POSTFLIGHT_INSTALL_LABEL',
- 'type' => 'editor',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => 'base64',
- 'tab_name' => 'Dash & Install',
- 'db' => [
- 'type' => 'MEDIUMTEXT',
- 'default' => 'EMPTY',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'add_placeholders' => [
- 'name' => 'add_placeholders',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_PLACEHOLDERS_LABEL',
- 'type' => 'radio',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Details',
- 'db' => [
- 'type' => 'TINYINT(1)',
- 'default' => '0',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => true,
- ],
- ],
- 'sql' => [
- 'name' => 'sql',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SQL_LABEL',
+ 'sql_uninstall' => [
+ 'name' => 'sql_uninstall',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SQL_UNINSTALL_LABEL',
'type' => 'textarea',
'title' => false,
'list' => 'joomla_components',
@@ -335,310 +159,6 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
- 'author' => [
- 'name' => 'author',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_AUTHOR_LABEL',
- 'type' => 'text',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Details',
- 'db' => [
- 'type' => 'VARCHAR(255)',
- 'default' => '',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'update_server_url' => [
- 'name' => 'update_server_url',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_UPDATE_SERVER_URL_LABEL',
- 'type' => 'url',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Dynamic Integration',
- 'db' => [
- 'type' => 'VARCHAR(255)',
- 'default' => '',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'email' => [
- 'name' => 'email',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_EMAIL_LABEL',
- 'type' => 'text',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Details',
- 'db' => [
- 'type' => 'VARCHAR(255)',
- 'default' => '',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'add_backup_folder_path' => [
- 'name' => 'add_backup_folder_path',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_BACKUP_FOLDER_PATH_LABEL',
- 'type' => 'radio',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Dynamic Integration',
- 'db' => [
- 'type' => 'TINYINT(1)',
- 'default' => '0',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => true,
- ],
- ],
- 'website' => [
- 'name' => 'website',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WEBSITE_LABEL',
- 'type' => 'url',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Details',
- 'db' => [
- 'type' => 'CHAR(255)',
- 'default' => '',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'translation_tool' => [
- 'name' => 'translation_tool',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_TRANSLATION_TOOL_LABEL',
- 'type' => 'list',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Dynamic Integration',
- 'db' => [
- 'type' => 'TINYINT(1)',
- 'default' => '0',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => true,
- ],
- ],
- 'add_license' => [
- 'name' => 'add_license',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_LICENSE_LABEL',
- 'type' => 'radio',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Details',
- 'db' => [
- 'type' => 'TINYINT(1)',
- 'default' => '0',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => true,
- ],
- ],
- 'buildcompsql' => [
- 'name' => 'buildcompsql',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_BUILDCOMPSQL_LABEL',
- 'type' => 'textarea',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => 'base64',
- 'tab_name' => 'Dynamic Build',
- 'db' => [
- 'type' => 'MEDIUMTEXT',
- 'default' => 'EMPTY',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'license_type' => [
- 'name' => 'license_type',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_LICENSE_TYPE_LABEL',
- 'type' => 'list',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Details',
- 'db' => [
- 'type' => 'TINYINT(1)',
- 'default' => '0',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => true,
- ],
- ],
- 'php_helper_admin' => [
- 'name' => 'php_helper_admin',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_HELPER_ADMIN_LABEL',
- 'type' => 'editor',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => 'base64',
- 'tab_name' => 'Libs & Helpers',
- 'db' => [
- 'type' => 'MEDIUMTEXT',
- 'default' => 'EMPTY',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'php_helper_site' => [
- 'name' => 'php_helper_site',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_HELPER_SITE_LABEL',
- 'type' => 'editor',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => 'base64',
- 'tab_name' => 'Libs & Helpers',
- 'db' => [
- 'type' => 'MEDIUMTEXT',
- 'default' => 'EMPTY',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'whmcs_key' => [
- 'name' => 'whmcs_key',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WHMCS_KEY_LABEL',
- 'type' => 'text',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => 'basic_encryption',
- 'tab_name' => 'Details',
- 'db' => [
- 'type' => 'VARCHAR(255)',
- 'default' => '',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'javascript' => [
- 'name' => 'javascript',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_JAVASCRIPT_LABEL',
- 'type' => 'editor',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => 'base64',
- 'tab_name' => 'Libs & Helpers',
- 'db' => [
- 'type' => 'TEXT',
- 'default' => 'EMPTY',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'whmcs_url' => [
- 'name' => 'whmcs_url',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WHMCS_URL_LABEL',
- 'type' => 'url',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Details',
- 'db' => [
- 'type' => 'VARCHAR(255)',
- 'default' => '',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'css_site' => [
- 'name' => 'css_site',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CSS_SITE_LABEL',
- 'type' => 'editor',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => 'base64',
- 'tab_name' => 'Libs & Helpers',
- 'db' => [
- 'type' => 'TEXT',
- 'default' => 'EMPTY',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'whmcs_buy_link' => [
- 'name' => 'whmcs_buy_link',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WHMCS_BUY_LINK_LABEL',
- 'type' => 'url',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Details',
- 'db' => [
- 'type' => 'VARCHAR(255)',
- 'default' => '',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'license' => [
- 'name' => 'license',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_LICENSE_LABEL',
- 'type' => 'textarea',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Details',
- 'db' => [
- 'type' => 'VARCHAR(255)',
- 'default' => '',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'php_preflight_update' => [
- 'name' => 'php_preflight_update',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_PREFLIGHT_UPDATE_LABEL',
- 'type' => 'editor',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => 'base64',
- 'tab_name' => 'Dash & Install',
- 'db' => [
- 'type' => 'MEDIUMTEXT',
- 'default' => 'EMPTY',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'bom' => [
- 'name' => 'bom',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_BOM_LABEL',
- 'type' => 'filelist',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Details',
- 'db' => [
- 'type' => 'CHAR(64)',
- 'default' => '',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
'php_postflight_update' => [
'name' => 'php_postflight_update',
'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_POSTFLIGHT_UPDATE_LABEL',
@@ -655,10 +175,138 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
- 'image' => [
- 'name' => 'image',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_IMAGE_LABEL',
- 'type' => 'media',
+ 'css_site' => [
+ 'name' => 'css_site',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CSS_SITE_LABEL',
+ 'type' => 'editor',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => 'base64',
+ 'tab_name' => 'Libs & Helpers',
+ 'db' => [
+ 'type' => 'TEXT',
+ 'default' => 'EMPTY',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'mvc_versiondate' => [
+ 'name' => 'mvc_versiondate',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_MVC_VERSIONDATE_LABEL',
+ 'type' => 'list',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'TINYINT(1)',
+ 'default' => '0',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'remove_line_breaks' => [
+ 'name' => 'remove_line_breaks',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_REMOVE_LINE_BREAKS_LABEL',
+ 'type' => 'radio',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'TINYINT(1)',
+ 'default' => '0',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'add_placeholders' => [
+ 'name' => 'add_placeholders',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_PLACEHOLDERS_LABEL',
+ 'type' => 'radio',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'TINYINT(1)',
+ 'default' => '0',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'php_helper_site' => [
+ 'name' => 'php_helper_site',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_HELPER_SITE_LABEL',
+ 'type' => 'editor',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => 'base64',
+ 'tab_name' => 'Libs & Helpers',
+ 'db' => [
+ 'type' => 'MEDIUMTEXT',
+ 'default' => 'EMPTY',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'javascript' => [
+ 'name' => 'javascript',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_JAVASCRIPT_LABEL',
+ 'type' => 'editor',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => 'base64',
+ 'tab_name' => 'Libs & Helpers',
+ 'db' => [
+ 'type' => 'TEXT',
+ 'default' => 'EMPTY',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'description' => [
+ 'name' => 'description',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_DESCRIPTION_LABEL',
+ 'type' => 'textarea',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'TEXT',
+ 'default' => 'EMPTY',
+ 'null_switch' => 'NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'debug_linenr' => [
+ 'name' => 'debug_linenr',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_DEBUG_LINENR_LABEL',
+ 'type' => 'radio',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'TINYINT(1)',
+ 'default' => '0',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'author' => [
+ 'name' => 'author',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_AUTHOR_LABEL',
+ 'type' => 'text',
'title' => false,
'list' => 'joomla_components',
'store' => NULL,
@@ -687,10 +335,10 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
- 'copyright' => [
- 'name' => 'copyright',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_COPYRIGHT_LABEL',
- 'type' => 'textarea',
+ 'email' => [
+ 'name' => 'email',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_EMAIL_LABEL',
+ 'type' => 'text',
'title' => false,
'list' => 'joomla_components',
'store' => NULL,
@@ -703,54 +351,22 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
- 'sql_uninstall' => [
- 'name' => 'sql_uninstall',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SQL_UNINSTALL_LABEL',
- 'type' => 'textarea',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => 'base64',
- 'tab_name' => 'MySQL',
- 'db' => [
- 'type' => 'MEDIUMTEXT',
- 'default' => 'EMPTY',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'preferred_joomla_version' => [
- 'name' => 'preferred_joomla_version',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PREFERRED_JOOMLA_VERSION_LABEL',
- 'type' => 'number',
+ 'website' => [
+ 'name' => 'website',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_WEBSITE_LABEL',
+ 'type' => 'url',
'title' => false,
'list' => 'joomla_components',
'store' => NULL,
'tab_name' => 'Details',
'db' => [
- 'type' => 'INT(11)',
- 'default' => '3',
+ 'type' => 'CHAR(255)',
+ 'default' => '',
'null_switch' => 'NOT NULL',
'unique_key' => false,
'key' => false,
],
],
- 'add_powers' => [
- 'name' => 'add_powers',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_POWERS_LABEL',
- 'type' => 'radio',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Details',
- 'db' => [
- 'type' => 'TINYINT(1)',
- 'default' => '1',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => true,
- ],
- ],
'add_sales_server' => [
'name' => 'add_sales_server',
'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_SALES_SERVER_LABEL',
@@ -767,14 +383,14 @@ class Table extends BaseTable implements Tableinterface
'key' => true,
],
],
- 'backup_folder_path' => [
- 'name' => 'backup_folder_path',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_BACKUP_FOLDER_PATH_LABEL',
- 'type' => 'text',
+ 'license' => [
+ 'name' => 'license',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_LICENSE_LABEL',
+ 'type' => 'textarea',
'title' => false,
'list' => 'joomla_components',
'store' => NULL,
- 'tab_name' => 'Dynamic Integration',
+ 'tab_name' => 'Details',
'db' => [
'type' => 'VARCHAR(255)',
'default' => '',
@@ -799,13 +415,253 @@ class Table extends BaseTable implements Tableinterface
'key' => true,
],
],
- 'crowdin_project_identifier' => [
- 'name' => 'crowdin_project_identifier',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CROWDIN_PROJECT_IDENTIFIER_LABEL',
+ 'bom' => [
+ 'name' => 'bom',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_BOM_LABEL',
+ 'type' => 'filelist',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'CHAR(64)',
+ 'default' => '',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'image' => [
+ 'name' => 'image',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_IMAGE_LABEL',
+ 'type' => 'media',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'VARCHAR(255)',
+ 'default' => '',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'php_admin_event' => [
+ 'name' => 'php_admin_event',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_ADMIN_EVENT_LABEL',
+ 'type' => 'editor',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => 'base64',
+ 'tab_name' => 'Libs & Helpers',
+ 'db' => [
+ 'type' => 'MEDIUMTEXT',
+ 'default' => 'EMPTY',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'copyright' => [
+ 'name' => 'copyright',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_COPYRIGHT_LABEL',
+ 'type' => 'textarea',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'VARCHAR(255)',
+ 'default' => '',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'php_site_event' => [
+ 'name' => 'php_site_event',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_SITE_EVENT_LABEL',
+ 'type' => 'editor',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => 'base64',
+ 'tab_name' => 'Libs & Helpers',
+ 'db' => [
+ 'type' => 'MEDIUMTEXT',
+ 'default' => 'EMPTY',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'css_admin' => [
+ 'name' => 'css_admin',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CSS_ADMIN_LABEL',
+ 'type' => 'editor',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => 'base64',
+ 'tab_name' => 'Libs & Helpers',
+ 'db' => [
+ 'type' => 'TEXT',
+ 'default' => 'EMPTY',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'php_preflight_update' => [
+ 'name' => 'php_preflight_update',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_PREFLIGHT_UPDATE_LABEL',
+ 'type' => 'editor',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => 'base64',
+ 'tab_name' => 'Dash & Install',
+ 'db' => [
+ 'type' => 'MEDIUMTEXT',
+ 'default' => 'EMPTY',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'component_version' => [
+ 'name' => 'component_version',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_COMPONENT_VERSION_LABEL',
'type' => 'text',
'title' => false,
'list' => 'joomla_components',
'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'CHAR(64)',
+ 'default' => '',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'php_preflight_install' => [
+ 'name' => 'php_preflight_install',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_PREFLIGHT_INSTALL_LABEL',
+ 'type' => 'editor',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => 'base64',
+ 'tab_name' => 'Dash & Install',
+ 'db' => [
+ 'type' => 'MEDIUMTEXT',
+ 'default' => 'EMPTY',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'preferred_joomla_version' => [
+ 'name' => 'preferred_joomla_version',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PREFERRED_JOOMLA_VERSION_LABEL',
+ 'type' => 'number',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'INT(11)',
+ 'default' => '3',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'php_postflight_install' => [
+ 'name' => 'php_postflight_install',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_POSTFLIGHT_INSTALL_LABEL',
+ 'type' => 'editor',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => 'base64',
+ 'tab_name' => 'Dash & Install',
+ 'db' => [
+ 'type' => 'MEDIUMTEXT',
+ 'default' => 'EMPTY',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'add_powers' => [
+ 'name' => 'add_powers',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_POWERS_LABEL',
+ 'type' => 'radio',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'TINYINT(1)',
+ 'default' => '1',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'php_method_uninstall' => [
+ 'name' => 'php_method_uninstall',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_METHOD_UNINSTALL_LABEL',
+ 'type' => 'editor',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => 'base64',
+ 'tab_name' => 'Dash & Install',
+ 'db' => [
+ 'type' => 'MEDIUMTEXT',
+ 'default' => 'EMPTY',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'sql' => [
+ 'name' => 'sql',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SQL_LABEL',
+ 'type' => 'textarea',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => 'base64',
+ 'tab_name' => 'MySQL',
+ 'db' => [
+ 'type' => 'MEDIUMTEXT',
+ 'default' => 'EMPTY',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'addreadme' => [
+ 'name' => 'addreadme',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADDREADME_LABEL',
+ 'type' => 'radio',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Readme',
+ 'db' => [
+ 'type' => 'TINYINT(1)',
+ 'default' => '0',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'update_server_url' => [
+ 'name' => 'update_server_url',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_UPDATE_SERVER_URL_LABEL',
+ 'type' => 'url',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
'tab_name' => 'Dynamic Integration',
'db' => [
'type' => 'VARCHAR(255)',
@@ -815,30 +671,14 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
- 'created' => [
- 'name' => 'created',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CREATED_LABEL',
- 'type' => 'calendar',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'publishing',
- 'db' => [
- 'type' => 'DATETIME',
- 'default' => '0000-00-00 00:00:00',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'add_php_helper_admin' => [
- 'name' => 'add_php_helper_admin',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_PHP_HELPER_ADMIN_LABEL',
+ 'add_backup_folder_path' => [
+ 'name' => 'add_backup_folder_path',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_BACKUP_FOLDER_PATH_LABEL',
'type' => 'radio',
'title' => false,
'list' => 'joomla_components',
'store' => NULL,
- 'tab_name' => 'Libs & Helpers',
+ 'tab_name' => 'Dynamic Integration',
'db' => [
'type' => 'TINYINT(1)',
'default' => '0',
@@ -847,17 +687,81 @@ class Table extends BaseTable implements Tableinterface
'key' => true,
],
],
- 'add_admin_event' => [
- 'name' => 'add_admin_event',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_ADMIN_EVENT_LABEL',
+ 'translation_tool' => [
+ 'name' => 'translation_tool',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_TRANSLATION_TOOL_LABEL',
+ 'type' => 'list',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Dynamic Integration',
+ 'db' => [
+ 'type' => 'TINYINT(1)',
+ 'default' => '0',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'crowdin_username' => [
+ 'name' => 'crowdin_username',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CROWDIN_USERNAME_LABEL',
+ 'type' => 'text',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => 'basic_encryption',
+ 'tab_name' => 'Dynamic Integration',
+ 'db' => [
+ 'type' => 'TEXT',
+ 'default' => 'EMPTY',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'buildcompsql' => [
+ 'name' => 'buildcompsql',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_BUILDCOMPSQL_LABEL',
+ 'type' => 'textarea',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => 'base64',
+ 'tab_name' => 'Dynamic Build',
+ 'db' => [
+ 'type' => 'MEDIUMTEXT',
+ 'default' => 'EMPTY',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'add_namespace_prefix' => [
+ 'name' => 'add_namespace_prefix',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_NAMESPACE_PREFIX_LABEL',
'type' => 'radio',
'title' => false,
'list' => 'joomla_components',
'store' => NULL,
- 'tab_name' => 'Libs & Helpers',
+ 'tab_name' => 'Settings',
'db' => [
- 'type' => 'TINYINT(1)',
- 'default' => '0',
+ 'type' => 'CHAR(1)',
+ 'default' => '',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'namespace_prefix' => [
+ 'name' => 'namespace_prefix',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_NAMESPACE_PREFIX_LABEL',
+ 'type' => 'text',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Settings',
+ 'db' => [
+ 'type' => 'VARCHAR(255)',
+ 'default' => '',
'null_switch' => 'NOT NULL',
'unique_key' => false,
'key' => true,
@@ -895,9 +799,9 @@ class Table extends BaseTable implements Tableinterface
'key' => true,
],
],
- 'add_namespace_prefix' => [
- 'name' => 'add_namespace_prefix',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_NAMESPACE_PREFIX_LABEL',
+ 'add_menu_prefix' => [
+ 'name' => 'add_menu_prefix',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_MENU_PREFIX_LABEL',
'type' => 'radio',
'title' => false,
'list' => 'joomla_components',
@@ -927,16 +831,16 @@ class Table extends BaseTable implements Tableinterface
'key' => true,
],
],
- 'namespace_prefix' => [
- 'name' => 'namespace_prefix',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_NAMESPACE_PREFIX_LABEL',
+ 'menu_prefix' => [
+ 'name' => 'menu_prefix',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_MENU_PREFIX_LABEL',
'type' => 'text',
'title' => false,
'list' => 'joomla_components',
'store' => NULL,
'tab_name' => 'Settings',
'db' => [
- 'type' => 'VARCHAR(255)',
+ 'type' => 'VARCHAR(100)',
'default' => '',
'null_switch' => 'NOT NULL',
'unique_key' => false,
@@ -975,22 +879,6 @@ class Table extends BaseTable implements Tableinterface
'key' => true,
],
],
- 'add_menu_prefix' => [
- 'name' => 'add_menu_prefix',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_MENU_PREFIX_LABEL',
- 'type' => 'radio',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Settings',
- 'db' => [
- 'type' => 'CHAR(1)',
- 'default' => '',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => true,
- ],
- ],
'dashboard_type' => [
'name' => 'dashboard_type',
'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_DASHBOARD_TYPE_LABEL',
@@ -1007,20 +895,20 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
- 'menu_prefix' => [
- 'name' => 'menu_prefix',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_MENU_PREFIX_LABEL',
+ 'toignore' => [
+ 'name' => 'toignore',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_TOIGNORE_LABEL',
'type' => 'text',
'title' => false,
'list' => 'joomla_components',
'store' => NULL,
'tab_name' => 'Settings',
'db' => [
- 'type' => 'VARCHAR(100)',
- 'default' => '',
+ 'type' => 'TEXT',
+ 'default' => 'EMPTY',
'null_switch' => 'NOT NULL',
'unique_key' => false,
- 'key' => true,
+ 'key' => false,
],
],
'dashboard' => [
@@ -1071,70 +959,6 @@ class Table extends BaseTable implements Tableinterface
'key' => true,
],
],
- 'toignore' => [
- 'name' => 'toignore',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_TOIGNORE_LABEL',
- 'type' => 'text',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Settings',
- 'db' => [
- 'type' => 'TEXT',
- 'default' => 'EMPTY',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'add_php_postflight_install' => [
- 'name' => 'add_php_postflight_install',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_PHP_POSTFLIGHT_INSTALL_LABEL',
- 'type' => 'radio',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Dash & Install',
- 'db' => [
- 'type' => 'TINYINT(1)',
- 'default' => '0',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => true,
- ],
- ],
- 'add_php_postflight_update' => [
- 'name' => 'add_php_postflight_update',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_PHP_POSTFLIGHT_UPDATE_LABEL',
- 'type' => 'radio',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Dash & Install',
- 'db' => [
- 'type' => 'TINYINT(1)',
- 'default' => '0',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => true,
- ],
- ],
- 'add_php_method_uninstall' => [
- 'name' => 'add_php_method_uninstall',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_PHP_METHOD_UNINSTALL_LABEL',
- 'type' => 'radio',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'Dash & Install',
- 'db' => [
- 'type' => 'TINYINT(1)',
- 'default' => '0',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => true,
- ],
- ],
'export_key' => [
'name' => 'export_key',
'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_EXPORT_KEY_LABEL',
@@ -1151,9 +975,9 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
- 'add_php_method_install' => [
- 'name' => 'add_php_method_install',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_PHP_METHOD_INSTALL_LABEL',
+ 'add_php_postflight_install' => [
+ 'name' => 'add_php_postflight_install',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_PHP_POSTFLIGHT_INSTALL_LABEL',
'type' => 'radio',
'title' => false,
'list' => 'joomla_components',
@@ -1183,14 +1007,14 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
- 'add_sql' => [
- 'name' => 'add_sql',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_SQL_LABEL',
+ 'add_php_postflight_update' => [
+ 'name' => 'add_php_postflight_update',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_PHP_POSTFLIGHT_UPDATE_LABEL',
'type' => 'radio',
'title' => false,
'list' => 'joomla_components',
'store' => NULL,
- 'tab_name' => 'MySQL',
+ 'tab_name' => 'Dash & Install',
'db' => [
'type' => 'TINYINT(1)',
'default' => '0',
@@ -1215,9 +1039,41 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
- 'add_sql_uninstall' => [
- 'name' => 'add_sql_uninstall',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_SQL_UNINSTALL_LABEL',
+ 'add_php_method_uninstall' => [
+ 'name' => 'add_php_method_uninstall',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_PHP_METHOD_UNINSTALL_LABEL',
+ 'type' => 'radio',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Dash & Install',
+ 'db' => [
+ 'type' => 'TINYINT(1)',
+ 'default' => '0',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'add_php_method_install' => [
+ 'name' => 'add_php_method_install',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_PHP_METHOD_INSTALL_LABEL',
+ 'type' => 'radio',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Dash & Install',
+ 'db' => [
+ 'type' => 'TINYINT(1)',
+ 'default' => '0',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'add_sql' => [
+ 'name' => 'add_sql',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_SQL_LABEL',
'type' => 'radio',
'title' => false,
'list' => 'joomla_components',
@@ -1231,38 +1087,6 @@ class Table extends BaseTable implements Tableinterface
'key' => true,
],
],
- 'assets_table_fix' => [
- 'name' => 'assets_table_fix',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ASSETS_TABLE_FIX_LABEL',
- 'type' => 'list',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => NULL,
- 'tab_name' => 'MySQL',
- 'db' => [
- 'type' => 'TINYINT(1)',
- 'default' => '3',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => true,
- ],
- ],
- 'readme' => [
- 'name' => 'readme',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_README_LABEL',
- 'type' => 'editor',
- 'title' => false,
- 'list' => 'joomla_components',
- 'store' => 'base64',
- 'tab_name' => 'Readme',
- 'db' => [
- 'type' => 'TEXT',
- 'default' => 'EMPTY',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
'addcontributors' => [
'name' => 'addcontributors',
'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADDCONTRIBUTORS_LABEL',
@@ -1279,14 +1103,14 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
- 'add_update_server' => [
- 'name' => 'add_update_server',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_UPDATE_SERVER_LABEL',
+ 'add_sql_uninstall' => [
+ 'name' => 'add_sql_uninstall',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_SQL_UNINSTALL_LABEL',
'type' => 'radio',
'title' => false,
'list' => 'joomla_components',
'store' => NULL,
- 'tab_name' => 'Dynamic Integration',
+ 'tab_name' => 'MySQL',
'db' => [
'type' => 'TINYINT(1)',
'default' => '0',
@@ -1311,17 +1135,17 @@ class Table extends BaseTable implements Tableinterface
'key' => true,
],
],
- 'update_server_target' => [
- 'name' => 'update_server_target',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_UPDATE_SERVER_TARGET_LABEL',
- 'type' => 'radio',
+ 'assets_table_fix' => [
+ 'name' => 'assets_table_fix',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ASSETS_TABLE_FIX_LABEL',
+ 'type' => 'list',
'title' => false,
'list' => 'joomla_components',
'store' => NULL,
- 'tab_name' => 'Dynamic Integration',
+ 'tab_name' => 'MySQL',
'db' => [
'type' => 'TINYINT(1)',
- 'default' => '0',
+ 'default' => '3',
'null_switch' => 'NOT NULL',
'unique_key' => false,
'key' => true,
@@ -1343,6 +1167,54 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
+ 'readme' => [
+ 'name' => 'readme',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_README_LABEL',
+ 'type' => 'editor',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => 'base64',
+ 'tab_name' => 'Readme',
+ 'db' => [
+ 'type' => 'TEXT',
+ 'default' => 'EMPTY',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'add_update_server' => [
+ 'name' => 'add_update_server',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_UPDATE_SERVER_LABEL',
+ 'type' => 'radio',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Dynamic Integration',
+ 'db' => [
+ 'type' => 'TINYINT(1)',
+ 'default' => '0',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'update_server_target' => [
+ 'name' => 'update_server_target',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_UPDATE_SERVER_TARGET_LABEL',
+ 'type' => 'radio',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Dynamic Integration',
+ 'db' => [
+ 'type' => 'TINYINT(1)',
+ 'default' => '0',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
'update_server' => [
'name' => 'update_server',
'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_UPDATE_SERVER_LABEL',
@@ -1375,6 +1247,22 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
+ 'creatuserhelper' => [
+ 'name' => 'creatuserhelper',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CREATUSERHELPER_LABEL',
+ 'type' => 'radio',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Libs & Helpers',
+ 'db' => [
+ 'type' => 'TINYINT(1)',
+ 'default' => '0',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
'add_git_folder_path' => [
'name' => 'add_git_folder_path',
'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_GIT_FOLDER_PATH_LABEL',
@@ -1391,6 +1279,22 @@ class Table extends BaseTable implements Tableinterface
'key' => true,
],
],
+ 'adduikit' => [
+ 'name' => 'adduikit',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADDUIKIT_LABEL',
+ 'type' => 'list',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Libs & Helpers',
+ 'db' => [
+ 'type' => 'TINYINT(1)',
+ 'default' => '0',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
'git_folder_path' => [
'name' => 'git_folder_path',
'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_GIT_FOLDER_PATH_LABEL',
@@ -1407,6 +1311,22 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
+ 'addfootable' => [
+ 'name' => 'addfootable',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADDFOOTABLE_LABEL',
+ 'type' => 'list',
+ 'title' => false,
+ 'list' => 'joomla_components',
+ 'store' => NULL,
+ 'tab_name' => 'Libs & Helpers',
+ 'db' => [
+ 'type' => 'TINYINT(1)',
+ 'default' => '0',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
'jcb_powers_path' => [
'name' => 'jcb_powers_path',
'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_JCB_POWERS_PATH_LABEL',
@@ -1423,9 +1343,9 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
- 'creatuserhelper' => [
- 'name' => 'creatuserhelper',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_CREATUSERHELPER_LABEL',
+ 'add_email_helper' => [
+ 'name' => 'add_email_helper',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_EMAIL_HELPER_LABEL',
'type' => 'radio',
'title' => false,
'list' => 'joomla_components',
@@ -1439,10 +1359,10 @@ class Table extends BaseTable implements Tableinterface
'key' => true,
],
],
- 'adduikit' => [
- 'name' => 'adduikit',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADDUIKIT_LABEL',
- 'type' => 'list',
+ 'add_php_helper_both' => [
+ 'name' => 'add_php_helper_both',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_PHP_HELPER_BOTH_LABEL',
+ 'type' => 'radio',
'title' => false,
'list' => 'joomla_components',
'store' => NULL,
@@ -1471,20 +1391,20 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
- 'addfootable' => [
- 'name' => 'addfootable',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADDFOOTABLE_LABEL',
- 'type' => 'list',
+ 'php_helper_both' => [
+ 'name' => 'php_helper_both',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_HELPER_BOTH_LABEL',
+ 'type' => 'editor',
'title' => false,
'list' => 'joomla_components',
- 'store' => NULL,
+ 'store' => 'base64',
'tab_name' => 'Libs & Helpers',
'db' => [
- 'type' => 'TINYINT(1)',
- 'default' => '0',
+ 'type' => 'MEDIUMTEXT',
+ 'default' => 'EMPTY',
'null_switch' => 'NOT NULL',
'unique_key' => false,
- 'key' => true,
+ 'key' => false,
],
],
'crowdin_account_api_key' => [
@@ -1503,9 +1423,9 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
- 'add_email_helper' => [
- 'name' => 'add_email_helper',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_EMAIL_HELPER_LABEL',
+ 'add_php_helper_admin' => [
+ 'name' => 'add_php_helper_admin',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_PHP_HELPER_ADMIN_LABEL',
'type' => 'radio',
'title' => false,
'list' => 'joomla_components',
@@ -1535,20 +1455,20 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
- 'add_php_helper_both' => [
- 'name' => 'add_php_helper_both',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_PHP_HELPER_BOTH_LABEL',
- 'type' => 'radio',
+ 'php_helper_admin' => [
+ 'name' => 'php_helper_admin',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_HELPER_ADMIN_LABEL',
+ 'type' => 'editor',
'title' => false,
'list' => 'joomla_components',
- 'store' => NULL,
+ 'store' => 'base64',
'tab_name' => 'Libs & Helpers',
'db' => [
- 'type' => 'TINYINT(1)',
- 'default' => '0',
+ 'type' => 'MEDIUMTEXT',
+ 'default' => 'EMPTY',
'null_switch' => 'NOT NULL',
'unique_key' => false,
- 'key' => true,
+ 'key' => false,
],
],
'guid' => [
@@ -1567,20 +1487,20 @@ class Table extends BaseTable implements Tableinterface
'key' => true,
],
],
- 'php_helper_both' => [
- 'name' => 'php_helper_both',
- 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_PHP_HELPER_BOTH_LABEL',
- 'type' => 'editor',
+ 'add_admin_event' => [
+ 'name' => 'add_admin_event',
+ 'label' => 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_ADD_ADMIN_EVENT_LABEL',
+ 'type' => 'radio',
'title' => false,
'list' => 'joomla_components',
- 'store' => 'base64',
+ 'store' => NULL,
'tab_name' => 'Libs & Helpers',
'db' => [
- 'type' => 'MEDIUMTEXT',
- 'default' => 'EMPTY',
+ 'type' => 'TINYINT(1)',
+ 'default' => '0',
'null_switch' => 'NOT NULL',
'unique_key' => false,
- 'key' => false,
+ 'key' => true,
],
],
'modified' => [
@@ -8163,6 +8083,22 @@ class Table extends BaseTable implements Tableinterface
'key' => true,
],
],
+ 'on_get_model_field' => [
+ 'name' => 'on_get_model_field',
+ 'label' => 'COM_COMPONENTBUILDER_FIELD_ON_GET_MODEL_FIELD_LABEL',
+ 'type' => 'textarea',
+ 'title' => false,
+ 'list' => 'fields',
+ 'store' => 'base64',
+ 'tab_name' => 'Database',
+ 'db' => [
+ 'type' => 'TEXT',
+ 'default' => 'EMPTY',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
'on_save_model_field' => [
'name' => 'on_save_model_field',
'label' => 'COM_COMPONENTBUILDER_FIELD_ON_SAVE_MODEL_FIELD_LABEL',
@@ -8195,22 +8131,6 @@ class Table extends BaseTable implements Tableinterface
'key' => false,
],
],
- 'initiator_on_save_model' => [
- 'name' => 'initiator_on_save_model',
- 'label' => 'COM_COMPONENTBUILDER_FIELD_INITIATOR_ON_SAVE_MODEL_LABEL',
- 'type' => 'textarea',
- 'title' => false,
- 'list' => 'fields',
- 'store' => 'base64',
- 'tab_name' => 'Database',
- 'db' => [
- 'type' => 'TEXT',
- 'default' => 'EMPTY',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
'xml' => [
'name' => 'xml',
'label' => '',
@@ -8243,6 +8163,22 @@ class Table extends BaseTable implements Tableinterface
'key' => true,
],
],
+ 'javascript_view_footer' => [
+ 'name' => 'javascript_view_footer',
+ 'label' => 'COM_COMPONENTBUILDER_FIELD_JAVASCRIPT_VIEW_FOOTER_LABEL',
+ 'type' => 'editor',
+ 'title' => false,
+ 'list' => 'fields',
+ 'store' => 'base64',
+ 'tab_name' => 'Scripts',
+ 'db' => [
+ 'type' => 'TEXT',
+ 'default' => 'EMPTY',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
'css_views' => [
'name' => 'css_views',
'label' => 'COM_COMPONENTBUILDER_FIELD_CSS_VIEWS_LABEL',
@@ -8323,38 +8259,6 @@ class Table extends BaseTable implements Tableinterface
'key' => true,
],
],
- 'on_get_model_field' => [
- 'name' => 'on_get_model_field',
- 'label' => 'COM_COMPONENTBUILDER_FIELD_ON_GET_MODEL_FIELD_LABEL',
- 'type' => 'textarea',
- 'title' => false,
- 'list' => 'fields',
- 'store' => 'base64',
- 'tab_name' => 'Database',
- 'db' => [
- 'type' => 'TEXT',
- 'default' => 'EMPTY',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
- 'javascript_view_footer' => [
- 'name' => 'javascript_view_footer',
- 'label' => 'COM_COMPONENTBUILDER_FIELD_JAVASCRIPT_VIEW_FOOTER_LABEL',
- 'type' => 'editor',
- 'title' => false,
- 'list' => 'fields',
- 'store' => 'base64',
- 'tab_name' => 'Scripts',
- 'db' => [
- 'type' => 'TEXT',
- 'default' => 'EMPTY',
- 'null_switch' => 'NOT NULL',
- 'unique_key' => false,
- 'key' => false,
- ],
- ],
'javascript_views_footer' => [
'name' => 'javascript_views_footer',
'label' => 'COM_COMPONENTBUILDER_FIELD_JAVASCRIPT_VIEWS_FOOTER_LABEL',
@@ -8435,6 +8339,22 @@ class Table extends BaseTable implements Tableinterface
'key' => true,
],
],
+ 'initiator_on_save_model' => [
+ 'name' => 'initiator_on_save_model',
+ 'label' => 'COM_COMPONENTBUILDER_FIELD_INITIATOR_ON_SAVE_MODEL_LABEL',
+ 'type' => 'textarea',
+ 'title' => false,
+ 'list' => 'fields',
+ 'store' => 'base64',
+ 'tab_name' => 'Database',
+ 'db' => [
+ 'type' => 'TEXT',
+ 'default' => 'EMPTY',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
'guid' => [
'name' => 'guid',
'label' => 'COM_COMPONENTBUILDER_FIELD_GUID_LABEL',
@@ -9074,6 +8994,214 @@ class Table extends BaseTable implements Tableinterface
],
],
],
+ 'repository' => [
+ 'system_name' => [
+ 'name' => 'system_name',
+ 'label' => 'COM_COMPONENTBUILDER_REPOSITORY_SYSTEM_NAME_LABEL',
+ 'type' => 'text',
+ 'title' => true,
+ 'list' => 'repositories',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'VARCHAR(255)',
+ 'default' => '',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'organisation' => [
+ 'name' => 'organisation',
+ 'label' => 'COM_COMPONENTBUILDER_REPOSITORY_ORGANISATION_LABEL',
+ 'type' => 'text',
+ 'title' => false,
+ 'list' => 'repositories',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'VARCHAR(255)',
+ 'default' => '',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'repository' => [
+ 'name' => 'repository',
+ 'label' => 'COM_COMPONENTBUILDER_REPOSITORY_REPOSITORY_LABEL',
+ 'type' => 'text',
+ 'title' => false,
+ 'list' => 'repositories',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'VARCHAR(255)',
+ 'default' => '',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'target' => [
+ 'name' => 'target',
+ 'label' => 'COM_COMPONENTBUILDER_REPOSITORY_TARGET_LABEL',
+ 'type' => 'list',
+ 'title' => false,
+ 'list' => 'repositories',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'TINYINT(7)',
+ 'default' => '1',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'type' => [
+ 'name' => 'type',
+ 'label' => 'COM_COMPONENTBUILDER_REPOSITORY_TYPE_LABEL',
+ 'type' => 'list',
+ 'title' => false,
+ 'list' => 'repositories',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'TINYINT(1)',
+ 'default' => '1',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'base' => [
+ 'name' => 'base',
+ 'label' => 'COM_COMPONENTBUILDER_REPOSITORY_BASE_LABEL',
+ 'type' => 'url',
+ 'title' => false,
+ 'list' => 'repositories',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'VARCHAR(255)',
+ 'default' => '',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => false,
+ ],
+ ],
+ 'guid' => [
+ 'name' => 'guid',
+ 'label' => 'COM_COMPONENTBUILDER_REPOSITORY_GUID_LABEL',
+ 'type' => 'text',
+ 'title' => false,
+ 'list' => 'repositories',
+ 'store' => NULL,
+ 'tab_name' => 'publishing',
+ 'db' => [
+ 'type' => 'VARCHAR(36)',
+ 'default' => '',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'access_repo' => [
+ 'name' => 'access_repo',
+ 'label' => 'COM_COMPONENTBUILDER_REPOSITORY_ACCESS_REPO_LABEL',
+ 'type' => 'radio',
+ 'title' => false,
+ 'list' => 'repositories',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'TINYINT(1)',
+ 'default' => '0',
+ 'null_switch' => 'NOT NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'write_branch' => [
+ 'name' => 'write_branch',
+ 'label' => 'COM_COMPONENTBUILDER_REPOSITORY_WRITE_BRANCH_LABEL',
+ 'type' => 'text',
+ 'title' => false,
+ 'list' => 'repositories',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'VARCHAR(255)',
+ 'default' => '',
+ 'null_switch' => 'NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'read_branch' => [
+ 'name' => 'read_branch',
+ 'label' => 'COM_COMPONENTBUILDER_REPOSITORY_READ_BRANCH_LABEL',
+ 'type' => 'text',
+ 'title' => false,
+ 'list' => 'repositories',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'VARCHAR(255)',
+ 'default' => '',
+ 'null_switch' => 'NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'token' => [
+ 'name' => 'token',
+ 'label' => 'COM_COMPONENTBUILDER_REPOSITORY_TOKEN_LABEL',
+ 'type' => 'password',
+ 'title' => false,
+ 'list' => 'repositories',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'VARCHAR(255)',
+ 'default' => '',
+ 'null_switch' => 'NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'username' => [
+ 'name' => 'username',
+ 'label' => 'COM_COMPONENTBUILDER_REPOSITORY_USERNAME_LABEL',
+ 'type' => 'text',
+ 'title' => false,
+ 'list' => 'repositories',
+ 'store' => NULL,
+ 'tab_name' => 'Details',
+ 'db' => [
+ 'type' => 'VARCHAR(255)',
+ 'default' => '',
+ 'null_switch' => 'NULL',
+ 'unique_key' => false,
+ 'key' => true,
+ ],
+ ],
+ 'access' => [
+ 'name' => 'access',
+ 'label' => 'Access',
+ 'type' => 'accesslevel',
+ 'title' => false,
+ 'store' => NULL,
+ 'tab_name' => NULL,
+ 'db' => [
+ 'type' => 'INT(10) unsigned',
+ 'default' => '0',
+ 'key' => true,
+ 'null_switch' => 'NOT NULL',
+ ],
+ ],
+ ],
'help_document' => [
'title' => [
'name' => 'title',
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Utilities/FilterHelper.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Utilities/FilterHelper.php
index 86dec4d31..999c38ef5 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Utilities/FilterHelper.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Utilities/FilterHelper.php
@@ -465,6 +465,42 @@ abstract class FilterHelper
return null;
}
+ /**
+ * get available repositories of target area
+ *
+ * @param int $target The target area
+ *
+ * @return array|null The result ids
+ * @since 3.2.0
+ **/
+ public static function repositories(int $target): ?array
+ {
+ $db = Factory::getDbo();
+ $query = $db->getQuery(true);
+ $query
+ ->select($db->quoteName(array('repository', 'organisation')))
+ ->from($db->quoteName('#__componentbuilder_repository'))
+ ->where($db->quoteName('published') . ' >= 1')
+ ->where($db->quoteName('target') . ' = ' . $target)
+ ->order($db->quoteName('ordering') . ' desc');
+ $db->setQuery($query);
+ $db->execute();
+
+ if ($db->getNumRows())
+ {
+ $items = $db->loadObjectList();
+ $options = [];
+ foreach($items as $item)
+ {
+ $path = $item->organisation . '/' . $item->repository;
+ $options[$path] = $path;
+ }
+ return $options;
+ }
+
+ return null;
+ }
+
/**
* Get a component admin views IDs
*
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Utilities/RepoHelper.php b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Utilities/RepoHelper.php
new file mode 100644
index 000000000..52036a9e7
--- /dev/null
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Utilities/RepoHelper.php
@@ -0,0 +1,78 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+namespace VDM\Joomla\Componentbuilder\Utilities;
+
+
+use Joomla\CMS\Factory;
+
+
+/**
+ * Repositories Helper
+ *
+ * @since 3.2.2
+ */
+abstract class RepoHelper
+{
+ /**
+ * get available repositories of target area
+ *
+ * @param int $target The target area
+ *
+ * @return array|null The result set
+ * @since 3.2.0
+ **/
+ public static function get(int $target): ?array
+ {
+ $db = Factory::getDbo();
+ $query = $db->getQuery(true);
+ $query->select($db->quoteName(array(
+ 'type',
+ 'base',
+ 'organisation',
+ 'repository',
+ 'read_branch',
+ 'write_branch',
+ 'token',
+ 'username',
+ 'target',
+ 'access_repo',
+ 'guid'
+ )))
+ ->from($db->quoteName('#__componentbuilder_repository'))
+ ->where($db->quoteName('published') . ' >= 1')
+ ->where($db->quoteName('target') . ' = ' . $target)
+ ->order($db->quoteName('ordering') . ' desc');
+ $db->setQuery($query);
+ $db->execute();
+
+ if ($db->getNumRows())
+ {
+ $items = $db->loadObjectList();
+ $options = [];
+ foreach($items as $item)
+ {
+ if ($item->access_repo != 1)
+ {
+ unset($item->username);
+ unset($item->token);
+ }
+ unset($item->access_repo);
+ $path = $item->organisation . '/' . $item->repository;
+ $options[$path] = $item;
+ }
+ return $options;
+ }
+
+ return null;
+ }
+}
+
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Data/Action/Delete.php b/libraries/vendor_jcb/VDM.Joomla/src/Data/Action/Delete.php
new file mode 100644
index 000000000..71276de6b
--- /dev/null
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Data/Action/Delete.php
@@ -0,0 +1,112 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+namespace VDM\Joomla\Data\Action;
+
+
+use VDM\Joomla\Interfaces\DeleteInterface as Database;
+use VDM\Joomla\Interfaces\Data\DeleteInterface;
+
+
+/**
+ * Data Delete
+ *
+ * @since 3.2.2
+ */
+class Delete implements DeleteInterface
+{
+ /**
+ * The Delete Class.
+ *
+ * @var Database
+ * @since 3.2.2
+ */
+ protected Database $database;
+
+ /**
+ * Table Name
+ *
+ * @var string
+ * @since 3.2.2
+ */
+ protected string $table;
+
+ /**
+ * Constructor.
+ *
+ * @param Database $database The Delete Class.
+ * @param string|null $table The table name.
+ *
+ * @since 3.2.2
+ */
+ public function __construct(Database $database, ?string $table = null)
+ {
+ $this->database = $database;
+ if ($table !== null)
+ {
+ $this->table = $table;
+ }
+ }
+
+ /**
+ * Set the current active table
+ *
+ * @param string|null $table The table that should be active
+ *
+ * @return self
+ * @since 3.2.2
+ */
+ public function table(?string $table): self
+ {
+ if ($table !== null)
+ {
+ $this->table = $table;
+ }
+
+ return $this;
+ }
+
+ /**
+ * Delete all items in the database that match these conditions
+ *
+ * @param array $conditions Conditions by which to delete the data in database [array of arrays (key => value)]
+ *
+ * @return bool
+ * @since 3.2.2
+ **/
+ public function items(array $conditions): bool
+ {
+ return $this->database->items($conditions, $this->getTable());
+ }
+
+ /**
+ * Truncate a table
+ *
+ * @return void
+ * @since 3.2.2
+ **/
+ public function truncate(): void
+ {
+ $this->database->truncate($this->getTable());
+ }
+
+ /**
+ * Get the current active table
+ *
+ * @return string
+ * @since 3.2.2
+ */
+ public function getTable(): string
+ {
+ return $this->table;
+ }
+}
+
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Database/Insert.php b/libraries/vendor_jcb/VDM.Joomla/src/Data/Action/Insert.php
similarity index 66%
rename from libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Database/Insert.php
rename to libraries/vendor_jcb/VDM.Joomla/src/Data/Action/Insert.php
index b9013214e..58fd464ee 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Database/Insert.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Data/Action/Insert.php
@@ -9,18 +9,18 @@
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
-namespace VDM\Joomla\Componentbuilder\Power\Database;
+namespace VDM\Joomla\Data\Action;
use VDM\Joomla\Interfaces\ModelInterface as Model;
-use VDM\Joomla\Database\Insert as Database;
-use VDM\Joomla\Componentbuilder\Interfaces\Database\InsertInterface;
+use VDM\Joomla\Interfaces\InsertInterface as Database;
+use VDM\Joomla\Interfaces\Data\InsertInterface;
/**
- * Power Database Insert
+ * Data Insert (GUID)
*
- * @since 3.2.0
+ * @since 3.2.2
*/
class Insert implements InsertInterface
{
@@ -46,20 +46,43 @@ class Insert implements InsertInterface
* @var string
* @since 3.2.1
*/
- protected string $table = 'power';
+ protected string $table;
/**
* Constructor
*
* @param Model $model The set model object.
* @param Database $database The insert database object.
+ * @param string|null $table The table name.
*
- * @since 3.2.0
+ * @since 3.2.2
*/
- public function __construct(Model $model, Database $database)
+ public function __construct(Model $model, Database $database, ?string $table = null)
{
$this->model = $model;
$this->database = $database;
+ if ($table !== null)
+ {
+ $this->table = $table;
+ }
+ }
+
+ /**
+ * Set the current active table
+ *
+ * @param string|null $table The table that should be active
+ *
+ * @return self
+ * @since 3.2.2
+ */
+ public function table(?string $table): self
+ {
+ if ($table !== null)
+ {
+ $this->table = $table;
+ }
+
+ return $this;
}
/**
@@ -97,10 +120,10 @@ class Insert implements InsertInterface
public function row(array $item): bool
{
// check if object could be modelled
- if (($item = $this->model->row($item, $this->table)) !== null)
+ if (($item = $this->model->row($item, $this->getTable())) !== null)
{
// Insert the column of this table
- return $this->database->row($item, $this->table);
+ return $this->database->row($item, $this->getTable());
}
return false;
}
@@ -117,10 +140,10 @@ class Insert implements InsertInterface
public function rows(?array $items): bool
{
// check if object could be modelled
- if (($items = $this->model->rows($items, $this->table)) !== null)
+ if (($items = $this->model->rows($items, $this->getTable())) !== null)
{
// Insert the column of this table
- return $this->database->rows($items, $this->table);
+ return $this->database->rows($items, $this->getTable());
}
return false;
}
@@ -137,10 +160,10 @@ class Insert implements InsertInterface
public function item(object $item): bool
{
// check if object could be modelled
- if (($item = $this->model->item($item, $this->table)) !== null)
+ if (($item = $this->model->item($item, $this->getTable())) !== null)
{
// Insert the column of this table
- return $this->database->item($item, $this->table);
+ return $this->database->item($item, $this->getTable());
}
return false;
}
@@ -157,12 +180,23 @@ class Insert implements InsertInterface
public function items(?array $items): bool
{
// check if object could be modelled
- if (($items = $this->model->items($items, $this->table)) !== null)
+ if (($items = $this->model->items($items, $this->getTable())) !== null)
{
// Update the column of this table using guid as the primary key.
- return $this->database->items($items, $this->table);
+ return $this->database->items($items, $this->getTable());
}
return false;
+ }
+
+ /**
+ * Get the current active table
+ *
+ * @return string
+ * @since 3.2.2
+ */
+ public function getTable(): string
+ {
+ return $this->table;
}
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Database/Load.php b/libraries/vendor_jcb/VDM.Joomla/src/Data/Action/Load.php
similarity index 70%
rename from libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Database/Load.php
rename to libraries/vendor_jcb/VDM.Joomla/src/Data/Action/Load.php
index 577d8ab38..6b1426c4d 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Database/Load.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Data/Action/Load.php
@@ -9,18 +9,18 @@
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
-namespace VDM\Joomla\Componentbuilder\Power\Database;
+namespace VDM\Joomla\Data\Action;
use VDM\Joomla\Interfaces\ModelInterface as Model;
-use VDM\Joomla\Database\Load as Database;
-use VDM\Joomla\Componentbuilder\Power\Database\LoadInterface;
+use VDM\Joomla\Interfaces\LoadInterface as Database;
+use VDM\Joomla\Interfaces\Data\LoadInterface;
/**
- * Power Database Load
+ * Data Load (GUID)
*
- * @since 2.0.1
+ * @since 3.2.2
*/
class Load implements LoadInterface
{
@@ -46,21 +46,43 @@ class Load implements LoadInterface
* @var string
* @since 3.2.1
*/
- protected string $table = 'power';
+ protected string $table;
/**
* Constructor
*
- * @param Table $table The core table object.
* @param Model $model The model object.
* @param Database $load The database object.
+ * @param string|null $table The table name.
*
* @since 2.0.1
*/
- public function __construct(Model $model, Database $load)
+ public function __construct(Model $model, Database $load, ?string $table = null)
{
$this->model = $model;
$this->load = $load;
+ if ($table !== null)
+ {
+ $this->table = $table;
+ }
+ }
+
+ /**
+ * Set the current active table
+ *
+ * @param string|null $table The table that should be active
+ *
+ * @return self
+ * @since 3.2.2
+ */
+ public function table(?string $table): self
+ {
+ if ($table !== null)
+ {
+ $this->table = $table;
+ }
+
+ return $this;
}
/**
@@ -73,7 +95,6 @@ class Load implements LoadInterface
*
* @param array $keys The item keys
* @param string $field The field key
- * @param string $table The table
*
* @return mixed
* @since 2.0.1
@@ -83,11 +104,11 @@ class Load implements LoadInterface
return $this->model->value(
$this->load->value(
["a.{$field}" => $field],
- ['a' => $this->table],
+ ['a' => $this->getTable()],
$this->prefix($keys)
),
$field,
- $this->table
+ $this->getTable()
);
}
@@ -100,7 +121,6 @@ class Load implements LoadInterface
* );
*
* @param array $keys The item keys
- * @param string $table The table
*
* @return object|null
* @since 2.0.1
@@ -110,10 +130,10 @@ class Load implements LoadInterface
return $this->model->item(
$this->load->item(
['all' => 'a.*'],
- ['a' => $this->table],
+ ['a' => $this->getTable()],
$this->prefix($keys)
),
- $this->table
+ $this->getTable()
);
}
@@ -127,10 +147,9 @@ class Load implements LoadInterface
* ]
* ]
* );
- * Example: $this->items($ids, 'table_name');
+ * Example: $this->items($ids);
*
* @param array $keys The item keys
- * @param string $table The table
*
* @return array|null
* @since 2.0.1
@@ -139,12 +158,23 @@ class Load implements LoadInterface
{
return $this->model->items(
$this->load->items(
- ['all' => 'a.*'], ['a' => $this->table], $this->prefix($keys)
+ ['all' => 'a.*'], ['a' => $this->getTable()], $this->prefix($keys)
),
- $this->table
+ $this->getTable()
);
}
+ /**
+ * Get the current active table
+ *
+ * @return string
+ * @since 3.2.2
+ */
+ public function getTable(): string
+ {
+ return $this->table;
+ }
+
/**
* Add prefix to the keys
*
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Database/Update.php b/libraries/vendor_jcb/VDM.Joomla/src/Data/Action/Update.php
similarity index 53%
rename from libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Database/Update.php
rename to libraries/vendor_jcb/VDM.Joomla/src/Data/Action/Update.php
index 759c75ad7..b340558c6 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Database/Update.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Data/Action/Update.php
@@ -9,18 +9,18 @@
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
-namespace VDM\Joomla\Componentbuilder\Power\Database;
+namespace VDM\Joomla\Data\Action;
use VDM\Joomla\Interfaces\ModelInterface as Model;
-use VDM\Joomla\Database\Update as Database;
-use VDM\Joomla\Componentbuilder\Interfaces\Database\UpdateInterface;
+use VDM\Joomla\Interfaces\UpdateInterface as Database;
+use VDM\Joomla\Interfaces\Data\UpdateInterface;
/**
- * Power Database Update
+ * Data Update
*
- * @since 3.2.0
+ * @since 3.2.2
*/
class Update implements UpdateInterface
{
@@ -46,20 +46,43 @@ class Update implements UpdateInterface
* @var string
* @since 3.2.1
*/
- protected string $table = 'power';
+ protected string $table;
/**
* Constructor
*
* @param Model $model The set model object.
* @param Database $database The update database object.
+ * @param string|null $table The table name.
*
* @since 3.2.0
*/
- public function __construct(Model $model, Database $database)
+ public function __construct(Model $model, Database $database, ?string $table = null)
{
$this->model = $model;
$this->database = $database;
+ if ($table !== null)
+ {
+ $this->table = $table;
+ }
+ }
+
+ /**
+ * Set the current active table
+ *
+ * @param string|null $table The table that should be active
+ *
+ * @return self
+ * @since 3.2.2
+ */
+ public function table(?string $table): self
+ {
+ if ($table !== null)
+ {
+ $this->table = $table;
+ }
+
+ return $this;
}
/**
@@ -81,8 +104,8 @@ class Update implements UpdateInterface
$item[$key] = $keyValue;
$item[$field] = $value;
- // Update the column of this table using guid as the primary key.
- return $this->row($item);
+ // Update the column of this table using $key as the primary key.
+ return $this->row($item, $key);
}
/**
@@ -90,17 +113,18 @@ class Update implements UpdateInterface
* Example: $this->item(Array);
*
* @param array $item The item to save
+ * @param string $key The key name
*
* @return bool
* @since 3.2.0
*/
- public function row(array $item): bool
+ public function row(array $item, string $key = 'guid'): bool
{
// check if object could be modelled
- if (($item = $this->model->row($item, $this->table)) !== null)
+ if (($item = $this->model->row($item, $this->getTable())) !== null)
{
- // Update the column of this table using guid as the primary key.
- return $this->database->row($item, 'guid', $this->table);
+ // Update the column of this table using $key as the primary key.
+ return $this->database->row($item, $key, $this->getTable());
}
return false;
}
@@ -110,17 +134,18 @@ class Update implements UpdateInterface
* Example: $this->items(Array);
*
* @param array|null $items The items updated in database (array of arrays)
+ * @param string $key The key name
*
* @return bool
* @since 3.2.0
*/
- public function rows(?array $items): bool
+ public function rows(?array $items, string $key = 'guid'): bool
{
// check if object could be modelled
- if (($items = $this->model->rows($items, $this->table)) !== null)
+ if (($items = $this->model->rows($items, $this->getTable())) !== null)
{
- // Update the column of this table using guid as the primary key.
- return $this->database->rows($items, 'guid', $this->table);
+ // Update the column of this table using $key as the primary key.
+ return $this->database->rows($items, $key, $this->getTable());
}
return false;
}
@@ -130,17 +155,18 @@ class Update implements UpdateInterface
* Example: $this->item(Object);
*
* @param object $item The item to save
+ * @param string $key The key name
*
* @return bool
* @since 3.2.0
*/
- public function item(object $item): bool
+ public function item(object $item, string $key = 'guid'): bool
{
// check if object could be modelled
- if (($item = $this->model->item($item, $this->table)) !== null)
+ if (($item = $this->model->item($item, $this->getTable())) !== null)
{
- // Update the column of this table using guid as the primary key.
- return $this->database->item($item, 'guid', $this->table);
+ // Update the column of this table using $key as the primary key.
+ return $this->database->item($item, $key, $this->getTable());
}
return false;
}
@@ -150,19 +176,31 @@ class Update implements UpdateInterface
* Example: $this->items(Array);
*
* @param array|null $items The items updated in database (array of objects)
+ * @param string $key The key name
*
* @return bool
* @since 3.2.0
*/
- public function items(?array $items): bool
+ public function items(?array $items, string $key = 'guid'): bool
{
// check if object could be modelled
- if (($items = $this->model->items($items, $this->table)) !== null)
+ if (($items = $this->model->items($items, $this->getTable())) !== null)
{
- // Update the column of this table using guid as the primary key.
- return $this->database->items($items, 'guid', $this->table);
+ // Update the column of this table using $key as the primary key.
+ return $this->database->items($items, $key, $this->getTable());
}
return false;
+ }
+
+ /**
+ * Get the current active table
+ *
+ * @return string
+ * @since 3.2.2
+ */
+ public function getTable(): string
+ {
+ return $this->table;
}
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Data/Action/index.html b/libraries/vendor_jcb/VDM.Joomla/src/Data/Action/index.html
new file mode 100644
index 000000000..fa6d84e80
--- /dev/null
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Data/Action/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Data/Item.php b/libraries/vendor_jcb/VDM.Joomla/src/Data/Item.php
new file mode 100644
index 000000000..cae444207
--- /dev/null
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Data/Item.php
@@ -0,0 +1,254 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+namespace VDM\Joomla\Data;
+
+
+use VDM\Joomla\Interfaces\Data\LoadInterface as Load;
+use VDM\Joomla\Interfaces\Data\InsertInterface as Insert;
+use VDM\Joomla\Interfaces\Data\UpdateInterface as Update;
+use VDM\Joomla\Interfaces\Data\DeleteInterface as Delete;
+use VDM\Joomla\Interfaces\LoadInterface as Database;
+use VDM\Joomla\Interfaces\Data\ItemInterface;
+
+
+/**
+ * Data Item
+ *
+ * @since 3.2.2
+ */
+final class Item implements ItemInterface
+{
+ /**
+ * The Load Class.
+ *
+ * @var Load
+ * @since 3.2.2
+ */
+ protected Load $load;
+
+ /**
+ * The Insert Class.
+ *
+ * @var Insert
+ * @since 3.2.2
+ */
+ protected Insert $insert;
+
+ /**
+ * The Update Class.
+ *
+ * @var Update
+ * @since 3.2.2
+ */
+ protected Update $update;
+
+ /**
+ * The Delete Class.
+ *
+ * @var Delete
+ * @since 3.2.2
+ */
+ protected Delete $delete;
+
+ /**
+ * The Load Class.
+ *
+ * @var Database
+ * @since 3.2.2
+ */
+ protected Database $database;
+
+ /**
+ * Table Name
+ *
+ * @var string
+ * @since 3.2.1
+ */
+ protected string $table;
+
+ /**
+ * Constructor.
+ *
+ * @param Load $load The LoadInterface Class.
+ * @param Insert $insert The InsertInterface Class.
+ * @param Update $update The UpdateInterface Class.
+ * @param Delete $delete The UpdateInterface Class.
+ * @param Database $database The Database Load Class.
+ * @param string|null $table The table name.
+ *
+ * @since 3.2.2
+ */
+ public function __construct(Load $load, Insert $insert, Update $update,
+ Delete $delete, Database $database, ?string $table = null)
+ {
+ $this->load = $load;
+ $this->insert = $insert;
+ $this->update = $update;
+ $this->delete = $delete;
+ $this->database = $database;
+ if ($table !== null)
+ {
+ $this->table = $table;
+ }
+ }
+
+ /**
+ * Set the current active table
+ *
+ * @param string $table The table that should be active
+ *
+ * @return self
+ * @since 3.2.2
+ */
+ public function table(string $table): self
+ {
+ $this->table = $table;
+
+ return $this;
+ }
+
+ /**
+ * Get an item
+ *
+ * @param string $value The item key value
+ * @param string $key The item key
+ *
+ * @return object|null The item object or null
+ * @since 3.2.2
+ */
+ public function get(string $value, string $key = 'guid'): ?object
+ {
+ return $this->load->table($this->getTable())->item([$key => $value]);
+ }
+
+ /**
+ * Get the value
+ *
+ * @param string $value The item key value
+ * @param string $key The item key
+ * @param string $get The key of the values we want back
+ *
+ * @return mixed
+ * @since 3.2.2
+ */
+ public function value(string $value, string $key = 'guid', string $get = 'id')
+ {
+ // Perform the database query
+ $value = $this->database->value(
+ ["a.$get" => $get],
+ ["a" => $this->getTable()],
+ ["a.$key" => $value]
+ );
+
+ // Check if rows are found
+ if ($value !== null)
+ {
+ // Return the value
+ return $value;
+ }
+
+ // Return null if no rows are found
+ return null;
+ }
+
+ /**
+ * Set an item
+ *
+ * @param object $item The item
+ * @param string $key The item key
+ * @param string|null $action The action to load power
+ *
+ * @return bool
+ * @since 3.2.2
+ */
+ public function set(object $item, string $key = 'guid', ?string $action = null): bool
+ {
+ if ($action !== null || (isset($item->{$key}) && ($action = $this->action($item->{$key}, $key)) !== null))
+ {
+ return method_exists($this, $action) ? $this->{$action}($item, $key) : false;
+ }
+
+ return false;
+ }
+
+ /**
+ * Delete an item
+ *
+ * @param string $value The item key value
+ * @param string $key The item key
+ *
+ * @return bool
+ * @since 3.2.2
+ */
+ public function delete(string $value, string $key = 'guid'): bool
+ {
+ return $this->delete->table($this->getTable())->items([$key => $value]);
+ }
+
+ /**
+ * Get the current active table
+ *
+ * @return string
+ * @since 3.2.2
+ */
+ public function getTable(): string
+ {
+ return $this->table;
+ }
+
+ /**
+ * Insert a item
+ *
+ * @param object $item The item
+ *
+ * @return bool
+ * @since 3.2.2
+ */
+ private function insert(object $item): bool
+ {
+ return $this->insert->table($this->getTable())->item($item);
+ }
+
+ /**
+ * Update a item
+ *
+ * @param object $item The item
+ * @param string $key The item key
+ *
+ * @return bool
+ * @since 3.2.2
+ */
+ private function update(object $item, string $key): bool
+ {
+ return $this->update->table($this->getTable())->item($item, $key);
+ }
+
+ /**
+ * Get loading action
+ *
+ * @param string $value The key value the item
+ * @param string $key The item key
+ *
+ * @return string
+ * @since 3.2.2
+ */
+ private function action(string $value, string $key): string
+ {
+ if (($id = $this->value($value, $key, 'id')) !== null && $id > 0)
+ {
+ return 'update';
+ }
+
+ return 'insert';
+ }
+}
+
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Data/Items.php b/libraries/vendor_jcb/VDM.Joomla/src/Data/Items.php
new file mode 100644
index 000000000..2e960b265
--- /dev/null
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Data/Items.php
@@ -0,0 +1,351 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+namespace VDM\Joomla\Data;
+
+
+use VDM\Joomla\Interfaces\Data\LoadInterface as Load;
+use VDM\Joomla\Interfaces\Data\InsertInterface as Insert;
+use VDM\Joomla\Interfaces\Data\UpdateInterface as Update;
+use VDM\Joomla\Interfaces\Data\DeleteInterface as Delete;
+use VDM\Joomla\Interfaces\LoadInterface as Database;
+use VDM\Joomla\Interfaces\Data\ItemsInterface;
+
+
+/**
+ * Data Items
+ *
+ * @since 3.2.2
+ */
+final class Items implements ItemsInterface
+{
+ /**
+ * The LoadInterface Class.
+ *
+ * @var Load
+ * @since 3.2.2
+ */
+ protected Load $load;
+
+ /**
+ * The InsertInterface Class.
+ *
+ * @var Insert
+ * @since 3.2.2
+ */
+ protected Insert $insert;
+
+ /**
+ * The UpdateInterface Class.
+ *
+ * @var Update
+ * @since 3.2.2
+ */
+ protected Update $update;
+
+ /**
+ * The DeleteInterface Class.
+ *
+ * @var Delete
+ * @since 3.2.2
+ */
+ protected Delete $delete;
+
+ /**
+ * The Load Class.
+ *
+ * @var Database
+ * @since 3.2.2
+ */
+ protected Database $database;
+
+ /**
+ * Table Name
+ *
+ * @var string
+ * @since 3.2.1
+ */
+ protected string $table;
+
+ /**
+ * Constructor.
+ *
+ * @param Load $load The LoadInterface Class.
+ * @param Insert $insert The InsertInterface Class.
+ * @param Update $update The UpdateInterface Class.
+ * @param Delete $delete The DeleteInterface Class.
+ * @param Database $database The Database Load Class.
+ * @param string|null $table The table name.
+ *
+ * @since 3.2.2
+ */
+ public function __construct(Load $load, Insert $insert, Update $update, Delete $delete,
+ Database $database, ?string $table = null)
+ {
+ $this->load = $load;
+ $this->insert = $insert;
+ $this->update = $update;
+ $this->delete = $delete;
+ $this->database = $database;
+ if ($table !== null)
+ {
+ $this->table = $table;
+ }
+ }
+
+ /**
+ * Set the current active table
+ *
+ * @param string $table The table that should be active
+ *
+ * @return self
+ * @since 3.2.2
+ */
+ public function table(string $table): self
+ {
+ $this->table = $table;
+
+ return $this;
+ }
+
+ /**
+ * Get list of items
+ *
+ * @param array $values The ids of the items
+ * @param string $key The key of the values
+ *
+ * @return array|null The item object or null
+ * @since 3.2.2
+ */
+ public function get(array $values, string $key = 'guid'): ?array
+ {
+ return $this->load->table($this->getTable())->items([
+ $key => [
+ 'operator' => 'IN',
+ 'value' => array_values($values)
+ ]
+ ]);
+ }
+
+ /**
+ * Get the values
+ *
+ * @param array $values The list of values (to search by).
+ * @param string $key The key on which the values being searched.
+ * @param string $get The key of the values we want back
+ *
+ * @return array|null The array of found values.
+ * @since 3.2.2
+ */
+ public function values(array $values, string $key = 'guid', string $get = 'id'): ?array
+ {
+ // Perform the database query
+ $rows = $this->database->rows(
+ ["a.$get" => $get],
+ ["a" => $this->getTable()],
+ ["a.$key" => ['operator' => 'IN', 'value' => $values]]
+ );
+
+ // Check if rows are found
+ if ($rows !== null)
+ {
+ // Return the values from the found rows
+ return array_values(
+ array_map(
+ fn($row) => $row[$get],
+ $rows
+ )
+ );
+ }
+
+ // Return null if no rows are found
+ return null;
+ }
+
+ /**
+ * Set items
+ *
+ * @param array $items The list of items
+ * @param string $key The key on which the items should be set
+ *
+ * @return bool
+ * @since 3.2.2
+ */
+ public function set(array $items, string $key = 'guid'): bool
+ {
+ if (($sets = $this->sort($items, $key)) !== null)
+ {
+ foreach ($sets as $action => $items)
+ {
+ $this->{$action}($items, $key);
+ }
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Delete items
+ *
+ * @param array $values The item key value
+ * @param string $key The item key
+ *
+ * @return bool
+ * @since 3.2.2
+ */
+ public function delete(string $values, string $key = 'guid'): bool
+ {
+ return $this->delete->table($this->getTable())->items([$key => ['operator' => 'IN', 'value' => $values]]);
+ }
+
+ /**
+ * Get the current active table
+ *
+ * @return string
+ * @since 3.2.2
+ */
+ public function getTable(): string
+ {
+ return $this->table;
+ }
+
+ /**
+ * Insert a item
+ *
+ * @param array $items The item
+ *
+ * @return bool
+ * @since 3.2.2
+ */
+ private function insert(array $items): bool
+ {
+ return $this->insert->table($this->getTable())->rows($items);
+ }
+
+ /**
+ * Update a item
+ *
+ * @param object $item The item
+ * @param string $key The item key
+ *
+ * @return bool
+ * @since 3.2.2
+ */
+ private function update(array $items, string $key): bool
+ {
+ return $this->update->table($this->getTable())->rows($items, $key);
+ }
+
+ /**
+ * Sort items between insert and update.
+ *
+ * @param array $items The list of items.
+ * @param string $key The key on which the items should be sorted.
+ *
+ * @return array|null The sorted sets.
+ * @since 3.2.2
+ */
+ private function sort(array $items, string $key): ?array
+ {
+ // Extract relevant items based on the key.
+ $values = $this->extractValues($items, $key);
+ if ($values === null)
+ {
+ return null;
+ }
+
+ $sets = [
+ 'insert' => [],
+ 'update' => []
+ ];
+
+ // Check for existing items.
+ $existingItems = $this->values($values, $key, $key);
+ if ($existingItems !== null)
+ {
+ $sets['update'] = $this->extractSet($items, $existingItems, $key) ?? [];
+ $sets['insert'] = $this->extractSet($items, $existingItems, $key, true) ?? [];
+ }
+ else
+ {
+ $sets['insert'] = $items;
+ }
+
+ // If either set is empty, remove it from the result.
+ $sets = array_filter($sets);
+
+ return !empty($sets) ? $sets : null;
+ }
+
+ /**
+ * Extracts values for a given key from an array of items.
+ * Items can be either arrays or objects.
+ *
+ * @param array $items Array of items (arrays or objects)
+ * @param string $key The key to extract values for
+ *
+ * @return array|null Extracted values
+ * @since 3.2.2
+ */
+ private function extractValues(array $items, string $key): ?array
+ {
+ $result = [];
+
+ foreach ($items as $item)
+ {
+ if (is_array($item) && !empty($item[$key]))
+ {
+ $result[] = $item[$key];
+ }
+ elseif (is_object($item) && !empty($item->{$key}))
+ {
+ $result[] = $item->{$key};
+ }
+ }
+
+ return ($result === []) ? null : $result;
+ }
+
+ /**
+ * Extracts items from an array of items based on a set.
+ * Items can be either arrays or objects.
+ *
+ * @param array $items Array of items (arrays or objects)
+ * @param array $set The set to match values against
+ * @param string $key The key of the set values
+ * @param bool $inverse Whether to extract items not in the set
+ *
+ * @return array|null Extracted values
+ * @since 3.2.2
+ */
+ private function extractSet(array $items, array $set, string $key, bool $inverse = false): ?array
+ {
+ $result = [];
+
+ foreach ($items as $item)
+ {
+ $value = is_array($item) ? ($item[$key] ?? null) : ($item->{$key} ?? null);
+
+ if ($value !== null)
+ {
+ $inSet = in_array($value, $set);
+ if (($inSet && !$inverse) || (!$inSet && $inverse))
+ {
+ $result[] = is_array($item) ? $item : (array) $item; // convert all to arrays
+ }
+ }
+ }
+
+ return empty($result) ? null : $result;
+ }
+}
+
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Data/Remote.php b/libraries/vendor_jcb/VDM.Joomla/src/Data/Remote.php
new file mode 100644
index 000000000..70e987af8
--- /dev/null
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Data/Remote.php
@@ -0,0 +1,169 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+namespace VDM\Joomla\Data;
+
+
+use VDM\Joomla\Interfaces\GrepInterface as Grep;
+use VDM\Joomla\Interfaces\Data\ItemInterface as Item;
+use VDM\Joomla\Interfaces\Data\RemoteInterface;
+
+
+/**
+ * Load data based on global unique ids from remote system
+ *
+ * @since 3.2.0
+ */
+class Remote implements RemoteInterface
+{
+ /**
+ * The Grep Class.
+ *
+ * @var Grep
+ * @since 3.2.0
+ */
+ protected Grep $grep;
+
+ /**
+ * The Item Class.
+ *
+ * @var Item
+ * @since 3.2.0
+ */
+ protected Item $item;
+
+ /**
+ * Table Name
+ *
+ * @var string
+ * @since 3.2.1
+ */
+ protected string $table;
+
+ /**
+ * Constructor.
+ *
+ * @param Grep $grep The GrepInterface Class.
+ * @param Item $item The ItemInterface Class.
+ * @param string|null $table The table name.
+ *
+ * @since 3.2.0
+ */
+ public function __construct(Grep $grep, Item $item, ?string $table = null)
+ {
+ $this->grep = $grep;
+ $this->item = $item;
+ if ($table !== null)
+ {
+ $this->table = $table;
+ }
+ }
+
+ /**
+ * Set the current active table
+ *
+ * @param string $table The table that should be active
+ *
+ * @return self
+ * @since 3.2.2
+ */
+ public function table(string $table): self
+ {
+ $this->table = $table;
+
+ return $this;
+ }
+
+ /**
+ * Init all items not found in database
+ *
+ * @return bool
+ * @since 3.2.0
+ */
+ public function init(): bool
+ {
+ if (($items = $this->grep->getRemotePowersGuid()) !== null)
+ {
+ foreach($items as $guid)
+ {
+ if ($this->item->table($this->getTable())->value($guid) !== null &&
+ ($item = $this->grep->get($guid, ['remote'])) !== null)
+ {
+ $this->item->set($item);
+ }
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Reset the items
+ *
+ * @param array $items The global unique ids of the items
+ *
+ * @return bool
+ * @since 3.2.0
+ */
+ public function reset(array $items): bool
+ {
+ if ($items === [])
+ {
+ return false;
+ }
+
+ $success = true;
+
+ foreach($items as $guid)
+ {
+ if (!$this->load($guid, ['remote']))
+ {
+ $success = false;
+ }
+ }
+
+ return $success;
+ }
+
+ /**
+ * Load a item
+ *
+ * @param string $guid The global unique id of the item
+ * @param array $order The search order
+ * @param string|null $action The action to load power
+ *
+ * @return bool
+ * @since 3.2.0
+ */
+ public function load(string $guid, array $order = ['remote', 'local'], ?string $action = null): bool
+ {
+ if (($item = $this->grep->get($guid, $order)) !== null)
+ {
+ return $this->item->table($this->getTable())->set($item);
+ }
+
+ return false;
+ }
+
+ /**
+ * Get the current active table
+ *
+ * @return string
+ * @since 3.2.2
+ */
+ public function getTable(): string
+ {
+ return $this->table;
+ }
+}
+
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Database/Delete.php b/libraries/vendor_jcb/VDM.Joomla/src/Database/Delete.php
new file mode 100644
index 000000000..34dee96f6
--- /dev/null
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Database/Delete.php
@@ -0,0 +1,132 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+namespace VDM\Joomla\Database;
+
+
+use VDM\Joomla\Utilities\ArrayHelper;
+use VDM\Joomla\Interfaces\DeleteInterface;
+use VDM\Joomla\Abstraction\Database;
+
+
+/**
+ * Database Delete Class
+ *
+ * @since 3.2.0
+ */
+final class Delete extends Database implements DeleteInterface
+{
+ /**
+ * Delete all items in the database that match these conditions
+ *
+ * @param array $conditions Conditions by which to delete the data in database [array of arrays (key => value)]
+ * @param string $table The table where the data is being deleted
+ *
+ * @return bool
+ * @since 3.2.2
+ **/
+ public function items(array $conditions, string $table): bool
+ {
+ // set the update columns
+ if ($conditions === [])
+ {
+ return false;
+ }
+
+ // get a query object
+ $query = $this->db->getQuery(true);
+
+ // start the conditions bucket
+ $_conditions = [];
+ foreach ($conditions as $key => $value)
+ {
+ if (ArrayHelper::check($value))
+ {
+ if (isset($value['value']) && isset($value['operator']))
+ {
+ // check if value needs to be quoted
+ $quote = $value['quote'] ?? true;
+ if (!$quote)
+ {
+ if (ArrayHelper::check($value['value']))
+ {
+ // add the where by array
+ $_conditions[] = $this->db->quoteName($key)
+ . ' ' . $value['operator']
+ . ' ' . ' (' .
+ implode(',', $value['value'])
+ . ')';
+ }
+ else
+ {
+ // add the conditions
+ $_conditions[] = $this->db->quoteName($key)
+ . ' ' . $value['operator']
+ . ' ' . $value['value'];
+ }
+ }
+ else
+ {
+ if (ArrayHelper::check($value['value']))
+ {
+ // add the where by array
+ $_conditions[] = $this->db->quoteName($key)
+ . ' ' . $value['operator']
+ . ' ' . ' (' .
+ implode(',', array_map(fn($val) => $this->quote($val), $value['value']))
+ . ')';
+ }
+ else
+ {
+ // add the conditions
+ $_conditions[] = $this->db->quoteName($key)
+ . ' ' . $value['operator']
+ . ' ' . $this->quote($value['value']);
+ }
+ }
+ }
+ else
+ {
+ // we should through an exception
+ // for security we just return false for now
+ return false;
+ }
+ }
+ else
+ {
+ // add default condition
+ $_conditions[] = $this->db->quoteName($key) . ' = ' . $this->quote($value);
+ }
+ }
+
+ // set the query targets
+ $query->delete($this->db->quoteName($this->getTable($table)));
+ $query->where($_conditions);
+
+ $this->db->setQuery($query);
+
+ return $this->db->execute();
+ }
+
+ /**
+ * Truncate a table
+ *
+ * @param string $table The table that should be truncated
+ *
+ * @return void
+ * @since 3.2.2
+ **/
+ public function truncate(string $table): void
+ {
+ $this->db->truncateTable($this->getTable($table));
+ }
+}
+
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Database/Load.php b/libraries/vendor_jcb/VDM.Joomla/src/Database/Load.php
index 620f99c7f..ab7b5ff80 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Database/Load.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Database/Load.php
@@ -40,15 +40,7 @@ final class Load extends Database implements LoadInterface
?array $order = null, ?int $limit = null): ?array
{
// set key if found
- $key = '';
- if (isset($select['key']))
- {
- if (is_string($select['key']))
- {
- $key = $select['key'];
- }
- unset($select['key']);
- }
+ $key = $this->getKey($select);
// check if we can get many rows
if ($this->many($select, $tables, $where, $order, $limit))
@@ -77,15 +69,7 @@ final class Load extends Database implements LoadInterface
?array $order = null, ?int $limit = null): ?array
{
// set key if found
- $key = '';
- if (isset($select['key']))
- {
- if (is_string($select['key']))
- {
- $key = $select['key'];
- }
- unset($select['key']);
- }
+ $key = $this->getKey($select);
// check if we can get many rows
if ($this->many($select, $tables, $where, $order, $limit))
@@ -464,6 +448,30 @@ final class Load extends Database implements LoadInterface
return $query;
}
-
+
+ /**
+ * Get the key from the selection array.
+ *
+ * This function retrieves a key from the provided selection array.
+ * The key is removed from the array after being retrieved.
+ *
+ * @param array $select Array of selection keys.
+ *
+ * @return string|null The key, or null if no key is found.
+ * @since 3.2.2
+ **/
+ protected function getKey(array &$select): ?string
+ {
+ $key = null;
+
+ // Check for 'key' first and ensure it's a string.
+ if (isset($select['key']) && is_string($select['key']))
+ {
+ $key = $select['key'];
+ unset($select['key']); // Remove 'key' from the array.
+ }
+
+ return $key;
+ }
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/DeleteInterface.php b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/DeleteInterface.php
new file mode 100644
index 000000000..46cc708d8
--- /dev/null
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/DeleteInterface.php
@@ -0,0 +1,60 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+namespace VDM\Joomla\Interfaces\Data;
+
+
+/**
+ * Data Delete
+ *
+ * @since 3.2.2
+ */
+interface DeleteInterface
+{
+ /**
+ * Set the current active table
+ *
+ * @param string|null $table The table that should be active
+ *
+ * @return self
+ * @since 3.2.2
+ */
+ public function table(?string $table): self;
+
+ /**
+ * Delete all items in the database that match these conditions
+ *
+ * @param array $conditions Conditions by which to delete the data in database [array of arrays (key => value)]
+ *
+ * @return bool
+ * @since 3.2.2
+ **/
+ public function items(array $conditions): bool;
+
+ /**
+ * Truncate a table
+ *
+ * @param string|null $table The table that should be truncated
+ *
+ * @return void
+ * @since 3.2.2
+ **/
+ public function truncate(): void;
+
+ /**
+ * Get the current active table
+ *
+ * @return string
+ * @since 3.2.2
+ */
+ public function getTable(): string;
+}
+
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Interfaces/Database/InsertInterface.php b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/InsertInterface.php
similarity index 80%
rename from libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Interfaces/Database/InsertInterface.php
rename to libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/InsertInterface.php
index 57a83d197..3a68e00ed 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Interfaces/Database/InsertInterface.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/InsertInterface.php
@@ -9,16 +9,26 @@
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
-namespace VDM\Joomla\Componentbuilder\Interfaces\Database;
+namespace VDM\Joomla\Interfaces\Data;
/**
- * Database Insert
+ * Data Insert
*
- * @since 3.2.1
+ * @since 3.2.2
*/
interface InsertInterface
{
+ /**
+ * Set the current active table
+ *
+ * @param string|null $table The table that should be active
+ *
+ * @return self
+ * @since 3.2.2
+ */
+ public function table(?string $table): self;
+
/**
* Insert a value to a given table
* Example: $this->value(Value, 'value_key', 'GUID');
@@ -76,6 +86,13 @@ interface InsertInterface
* @since 3.2.0
*/
public function items(?array $items): bool;
-
+
+ /**
+ * Get the current active table
+ *
+ * @return string
+ * @since 3.2.2
+ */
+ public function getTable(): string;
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/ItemInterface.php b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/ItemInterface.php
new file mode 100644
index 000000000..c7c274dcc
--- /dev/null
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/ItemInterface.php
@@ -0,0 +1,86 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+namespace VDM\Joomla\Interfaces\Data;
+
+
+/**
+ * Data Item Interface
+ *
+ * @since 3.2.2
+ */
+interface ItemInterface
+{
+ /**
+ * Set the current active table
+ *
+ * @param string $table The table that should be active
+ *
+ * @return self
+ * @since 3.2.2
+ */
+ public function table(string $table): self;
+
+ /**
+ * Get an item
+ *
+ * @param string $value The item key value
+ * @param string $key The item key
+ *
+ * @return object|null The item object or null
+ * @since 3.2.2
+ */
+ public function get(string $value, string $key = 'guid'): ?object;
+
+ /**
+ * Get the value
+ *
+ * @param string $value The item key value
+ * @param string $key The item key
+ * @param string $get The key of the values we want back
+ *
+ * @return mixed
+ * @since 3.2.2
+ */
+ public function value(string $value, string $key = 'guid', string $get = 'id');
+
+ /**
+ * Set an item
+ *
+ * @param object $item The item
+ * @param string $key The item key
+ * @param string|null $action The action to load power
+ *
+ * @return bool
+ * @since 3.2.2
+ */
+ public function set(object $item, string $key = 'guid', ?string $action = null): bool;
+
+ /**
+ * Delete an item
+ *
+ * @param string $value The item key value
+ * @param string $key The item key
+ *
+ * @return bool
+ * @since 3.2.2
+ */
+ public function delete(string $value, string $key = 'guid'): bool;
+
+ /**
+ * Get the current active table
+ *
+ * @return string
+ * @since 3.2.2
+ */
+ public function getTable(): string;
+}
+
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/ItemsInterface.php b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/ItemsInterface.php
new file mode 100644
index 000000000..62e2f0880
--- /dev/null
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/ItemsInterface.php
@@ -0,0 +1,85 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+namespace VDM\Joomla\Interfaces\Data;
+
+
+/**
+ * Data Items Interface
+ *
+ * @since 3.2.2
+ */
+interface ItemsInterface
+{
+ /**
+ * Set the current active table
+ *
+ * @param string $table The table that should be active
+ *
+ * @return self
+ * @since 3.2.2
+ */
+ public function table(string $table): self;
+
+ /**
+ * Get list of items
+ *
+ * @param array $values The ids of the items
+ * @param string $key The key of the values
+ *
+ * @return array|null The item object or null
+ * @since 3.2.2
+ */
+ public function get(array $values, string $key = 'guid'): ?array;
+
+ /**
+ * Get the values
+ *
+ * @param array $values The list of values (to search by).
+ * @param string $key The key on which the values being searched.
+ * @param string $get The key of the values we want back
+ *
+ * @return array|null The array of found values.
+ * @since 3.2.2
+ */
+ public function values(array $values, string $key = 'guid', string $get = 'id'): ?array;
+
+ /**
+ * Set items
+ *
+ * @param array $items The list of items
+ * @param string $key The key on which the items should be set
+ *
+ * @return bool
+ * @since 3.2.2
+ */
+ public function set(array $items, string $key = 'guid'): bool;
+
+ /**
+ * Delete items
+ *
+ * @param array $values The item key value
+ * @param string $key The item key
+ *
+ * @return bool
+ * @since 3.2.2
+ */
+ public function delete(string $values, string $key = 'guid'): bool;
+
+ /**
+ * Get the current active table
+ *
+ * @return string
+ * @since 3.2.2
+ */
+ public function getTable(): string;
+}
+
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Database/LoadInterface.php b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/LoadInterface.php
similarity index 78%
rename from libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Database/LoadInterface.php
rename to libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/LoadInterface.php
index 60d166f52..f43616fbf 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Database/LoadInterface.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/LoadInterface.php
@@ -9,16 +9,26 @@
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
-namespace VDM\Joomla\Componentbuilder\Power\Database;
+namespace VDM\Joomla\Interfaces\Data;
/**
- * Power Database Load
+ * Data Load Interface
*
- * @since 2.0.1
+ * @since 3.2.2
*/
interface LoadInterface
{
+ /**
+ * Set the current active table
+ *
+ * @param string|null $table The table that should be active
+ *
+ * @return self
+ * @since 3.2.2
+ */
+ public function table(?string $table): self;
+
/**
* Get a value from a given table
* Example: $this->value(
@@ -29,7 +39,6 @@ interface LoadInterface
*
* @param array $keys The item keys
* @param string $field The field key
- * @param string $table The table
*
* @return mixed
* @since 2.0.1
@@ -45,7 +54,6 @@ interface LoadInterface
* );
*
* @param array $keys The item keys
- * @param string $table The table
*
* @return object|null
* @since 2.0.1
@@ -62,14 +70,21 @@ interface LoadInterface
* ]
* ]
* );
- * Example: $this->items($ids, 'table_name');
+ * Example: $this->items($keys);
*
* @param array $keys The item keys
- * @param string $table The table
*
* @return array|null
* @since 2.0.1
*/
- public function items(array $keys): ?array;
+ public function items(array $keys): ?array;
+
+ /**
+ * Get the current active table
+ *
+ * @return string
+ * @since 3.2.2
+ */
+ public function getTable(): string;
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/RemoteInterface.php b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/RemoteInterface.php
new file mode 100644
index 000000000..ab4fea56b
--- /dev/null
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/RemoteInterface.php
@@ -0,0 +1,69 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+namespace VDM\Joomla\Interfaces\Data;
+
+
+/**
+ * Load data based on global unique ids from remote system
+ *
+ * @since 3.2.2
+ */
+interface RemoteInterface
+{
+ /**
+ * Set the current active table
+ *
+ * @param string $table The table that should be active
+ *
+ * @return self
+ * @since 3.2.2
+ */
+ public function table(string $table): self;
+
+ /**
+ * Init all items not found in database
+ *
+ * @return bool
+ * @since 3.2.0
+ */
+ public function init(): bool;
+
+ /**
+ * Reset the items
+ *
+ * @param array $items The global unique ids of the items
+ *
+ * @return bool
+ * @since 3.2.0
+ */
+ public function reset(array $items): bool;
+
+ /**
+ * Load a item
+ *
+ * @param string $guid The global unique id of the item
+ * @param array $order The search order
+ *
+ * @return bool
+ * @since 3.2.2
+ */
+ public function load(string $guid, array $order = ['remote', 'local']): bool;
+
+ /**
+ * Get the current active table
+ *
+ * @return string
+ * @since 3.2.2
+ */
+ public function getTable(): string;
+}
+
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Interfaces/Database/UpdateInterface.php b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/UpdateInterface.php
similarity index 65%
rename from libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Interfaces/Database/UpdateInterface.php
rename to libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/UpdateInterface.php
index 45658ee2f..02b91e616 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Interfaces/Database/UpdateInterface.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/UpdateInterface.php
@@ -9,16 +9,26 @@
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
-namespace VDM\Joomla\Componentbuilder\Interfaces\Database;
+namespace VDM\Joomla\Interfaces\Data;
/**
- * Database Update
+ * Data Update
*
- * @since 3.2.1
+ * @since 3.2.2
*/
interface UpdateInterface
{
+ /**
+ * Set the current active table
+ *
+ * @param string|null $table The table that should be active
+ *
+ * @return self
+ * @since 3.2.2
+ */
+ public function table(?string $table): self;
+
/**
* Update a value to a given table
* Example: $this->value(Value, 'value_key', 'GUID');
@@ -38,43 +48,55 @@ interface UpdateInterface
* Example: $this->item(Array);
*
* @param array $item The item to save
+ * @param string $key The key name
*
* @return bool
* @since 3.2.0
*/
- public function row(array $item): bool;
+ public function row(array $item, string $key = 'guid'): bool;
/**
* Update multiple rows to a given table
* Example: $this->items(Array);
*
* @param array|null $items The items updated in database (array of arrays)
+ * @param string $key The key name
*
* @return bool
* @since 3.2.0
*/
- public function rows(?array $items): bool;
+ public function rows(?array $items, string $key = 'guid'): bool;
/**
* Update single item with multiple values to a given table
* Example: $this->item(Object);
*
* @param object $item The item to save
+ * @param string $key The key name
*
* @return bool
* @since 3.2.0
*/
- public function item(object $item): bool;
+ public function item(object $item, string $key = 'guid'): bool;
/**
* Update multiple items to a given table
* Example: $this->items(Array);
*
* @param array|null $items The items updated in database (array of objects)
+ * @param string $key The key name
*
* @return bool
* @since 3.2.0
*/
- public function items(?array $items): bool;
+ public function items(?array $items, string $key = 'guid'): bool;
+
+ /**
+ * Get the current active table
+ *
+ * @return string
+ * @since 3.2.2
+ */
+ public function getTable(): string;
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/index.html b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/index.html
new file mode 100644
index 000000000..fa6d84e80
--- /dev/null
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Data/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/DeleteInterface.php b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/DeleteInterface.php
new file mode 100644
index 000000000..355015618
--- /dev/null
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/DeleteInterface.php
@@ -0,0 +1,43 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+namespace VDM\Joomla\Interfaces;
+
+
+/**
+ * Database Delete Interface
+ *
+ * @since 3.2.0
+ */
+interface DeleteInterface
+{
+ /**
+ * Delete all rows in the database that match these conditions
+ *
+ * @param array $conditions Conditions by which to delete the data in database [array of arrays (key => value)]
+ * @param string $table The table where the data is being deleted
+ *
+ * @return bool
+ * @since 3.2.0
+ **/
+ public function items(array $conditions, string $table): bool;
+
+ /**
+ * Truncate a table
+ *
+ * @param string $table The table that should be truncated
+ *
+ * @return void
+ * @since 3.2.2
+ **/
+ public function truncate(string $table): void;
+}
+
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/ModelInterface.php b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/ModelInterface.php
index 51f342455..c93e80a04 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/ModelInterface.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Interfaces/ModelInterface.php
@@ -19,6 +19,16 @@ namespace VDM\Joomla\Interfaces;
*/
interface ModelInterface
{
+ /**
+ * Set the current active table
+ *
+ * @param string $table The table that should be active
+ *
+ * @return self
+ * @since 3.2.2
+ */
+ public function table(string $table): self;
+
/**
* Model the value
* Example: $this->value(value, 'value_key', 'table_name');
@@ -36,13 +46,13 @@ interface ModelInterface
* Model the values of an item
* Example: $this->item(Object, 'table_name');
*
- * @param object $item The item object
+ * @param object|null $item The item object
* @param string|null $table The table
*
* @return object|null
* @since 3.2.0
*/
- public function item(object $item, ?string $table = null): ?object;
+ public function item(?object $item, ?string $table = null): ?object;
/**
* Model the values of multiple items
@@ -60,13 +70,13 @@ interface ModelInterface
* Model the values of an row
* Example: $this->item(Array, 'table_name');
*
- * @param array $item The item array
+ * @param array|null $item The item array
* @param string|null $table The table
*
* @return array|null
* @since 3.2.0
*/
- public function row(array $item, ?string $table = null): ?array;
+ public function row(?array $item, ?string $table = null): ?array;
/**
* Model the values of multiple rows
@@ -89,6 +99,26 @@ interface ModelInterface
* @return int|null
* @since 3.2.0
*/
- public function last(?string $table = null): ?int;
+ public function last(?string $table = null): ?int;
+
+ /**
+ * Set the current active table
+ *
+ * @param string $tableName The table name
+ *
+ * @return void
+ * @since 3.2.2
+ */
+ public function setTable(string $tableName): void;
+
+ /**
+ * Set the switch to control the behaviour of empty values
+ *
+ * @param bool $allowEmpty The switch
+ *
+ * @return void
+ * @since 3.2.2
+ */
+ public function setAllowEmpty(bool $allowEmpty): void;
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Model/Load.php b/libraries/vendor_jcb/VDM.Joomla/src/Model/Load.php
similarity index 84%
rename from libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Model/Load.php
rename to libraries/vendor_jcb/VDM.Joomla/src/Model/Load.php
index 6254608a2..83002ce50 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Model/Load.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Model/Load.php
@@ -9,22 +9,22 @@
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
-namespace VDM\Joomla\Componentbuilder\Power\Model;
+namespace VDM\Joomla\Model;
-use VDM\Joomla\Abstraction\Model as AbstractionModel;
use VDM\Joomla\Utilities\StringHelper;
use VDM\Joomla\Utilities\ArrayHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Interfaces\ModelInterface;
+use VDM\Joomla\Abstraction\Model;
/**
* Power Model Load
*
- * @since 3.2.0
+ * @since 3.2.2
*/
-class Load extends AbstractionModel implements ModelInterface
+final class Load extends Model implements ModelInterface
{
/**
* Model the value
@@ -80,6 +80,11 @@ class Load extends AbstractionModel implements ModelInterface
{
return true;
}
+ // check if we allow empty
+ elseif ($this->getAllowEmpty() && empty($value))
+ {
+ return true;
+ }
// remove empty values
return false;
}
@@ -101,19 +106,13 @@ class Load extends AbstractionModel implements ModelInterface
{
return true;
}
+ // check if we allow empty
+ elseif ($this->getAllowEmpty() && empty($value))
+ {
+ return true;
+ }
// remove empty values
return false;
- }
-
- /**
- * Get the current active table
- *
- * @return string
- * @since 3.2.0
- */
- protected function getTable(): string
- {
- return 'power';
}
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Model/Upsert.php b/libraries/vendor_jcb/VDM.Joomla/src/Model/Upsert.php
similarity index 86%
rename from libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Model/Upsert.php
rename to libraries/vendor_jcb/VDM.Joomla/src/Model/Upsert.php
index 00eda6b55..b9111e7df 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Model/Upsert.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Model/Upsert.php
@@ -9,7 +9,7 @@
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
-namespace VDM\Joomla\Componentbuilder\Power\Model;
+namespace VDM\Joomla\Model;
use VDM\Joomla\Utilities\StringHelper;
@@ -24,7 +24,7 @@ use VDM\Joomla\Abstraction\Model;
*
* @since 3.2.0
*/
-class Upsert extends Model implements ModelInterface
+final class Upsert extends Model implements ModelInterface
{
/**
* Model the value
@@ -80,6 +80,11 @@ class Upsert extends Model implements ModelInterface
{
return true;
}
+ // check if we allow empty
+ elseif ($this->getAllowEmpty() && empty($value))
+ {
+ return true;
+ }
// remove empty values
return false;
}
@@ -101,20 +106,13 @@ class Upsert extends Model implements ModelInterface
{
return true;
}
+ // check if we allow empty
+ elseif ($this->getAllowEmpty() && empty($value))
+ {
+ return true;
+ }
// remove empty values
return false;
- }
-
- /**
- * Get the current active table
- *
- * @return string
- * @since 3.2.0
- */
- protected function getTable(): string
- {
- return 'power';
- }
-
+ }
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Model/index.html b/libraries/vendor_jcb/VDM.Joomla/src/Model/index.html
new file mode 100644
index 000000000..fa6d84e80
--- /dev/null
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Model/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Service/Data.php b/libraries/vendor_jcb/VDM.Joomla/src/Service/Data.php
new file mode 100644
index 000000000..d05319a77
--- /dev/null
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Service/Data.php
@@ -0,0 +1,162 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+namespace VDM\Joomla\Service;
+
+
+use Joomla\DI\Container;
+use Joomla\DI\ServiceProviderInterface;
+use VDM\Joomla\Data\Action\Load;
+use VDM\Joomla\Data\Action\Insert;
+use VDM\Joomla\Data\Action\Update;
+use VDM\Joomla\Data\Action\Delete;
+use VDM\Joomla\Data\Item;
+use VDM\Joomla\Data\Items;
+
+
+/**
+ * Data Service Provider
+ *
+ * @since 3.2.0
+ */
+class Data implements ServiceProviderInterface
+{
+ /**
+ * Registers the service provider with a DI container.
+ *
+ * @param Container $container The DI container.
+ *
+ * @return void
+ * @since 3.2.0
+ */
+ public function register(Container $container)
+ {
+ $container->alias(Load::class, 'Data.Load')
+ ->share('Data.Load', [$this, 'getLoad'], true);
+
+ $container->alias(Insert::class, 'Data.Insert')
+ ->share('Data.Insert', [$this, 'getInsert'], true);
+
+ $container->alias(Update::class, 'Data.Update')
+ ->share('Data.Update', [$this, 'getUpdate'], true);
+
+ $container->alias(Delete::class, 'Data.Delete')
+ ->share('Data.Delete', [$this, 'getDelete'], true);
+
+ $container->alias(Item::class, 'Data.Item')
+ ->share('Data.Item', [$this, 'getItem'], true);
+
+ $container->alias(Items::class, 'Data.Items')
+ ->share('Data.Items', [$this, 'getItems'], true);
+ }
+
+ /**
+ * Get The Load Class.
+ *
+ * @param Container $container The DI container.
+ *
+ * @return Load
+ * @since 3.2.0
+ */
+ public function getLoad(Container $container): Load
+ {
+ return new Load(
+ $container->get('Model.Load'),
+ $container->get('Load')
+ );
+ }
+
+ /**
+ * Get The Insert Class.
+ *
+ * @param Container $container The DI container.
+ *
+ * @return Insert
+ * @since 3.2.0
+ */
+ public function getInsert(Container $container): Insert
+ {
+ return new Insert(
+ $container->get('Model.Upsert'),
+ $container->get('Insert')
+ );
+ }
+
+ /**
+ * Get The Update Class.
+ *
+ * @param Container $container The DI container.
+ *
+ * @return Update
+ * @since 3.2.0
+ */
+ public function getUpdate(Container $container): Update
+ {
+ return new Update(
+ $container->get('Model.Upsert'),
+ $container->get('Update')
+ );
+ }
+
+ /**
+ * Get The Delete Class.
+ *
+ * @param Container $container The DI container.
+ *
+ * @return Delete
+ * @since 3.2.0
+ */
+ public function getDelete(Container $container): Delete
+ {
+ return new Delete(
+ $container->get('Delete')
+ );
+ }
+
+ /**
+ * Get The Item Class.
+ *
+ * @param Container $container The DI container.
+ *
+ * @return Item
+ * @since 3.2.0
+ */
+ public function getItem(Container $container): Item
+ {
+ return new Item(
+ $container->get('Data.Load'),
+ $container->get('Data.Insert'),
+ $container->get('Data.Update'),
+ $container->get('Data.Delete'),
+ $container->get('Load')
+ );
+ }
+
+ /**
+ * Get The Items Class.
+ *
+ * @param Container $container The DI container.
+ *
+ * @return Items
+ * @since 3.2.0
+ */
+ public function getItems(Container $container): Items
+ {
+ return new Items(
+ $container->get('Data.Load'),
+ $container->get('Data.Insert'),
+ $container->get('Data.Update'),
+ $container->get('Data.Delete'),
+ $container->get('Load')
+ );
+ }
+}
+
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Service/Database.php b/libraries/vendor_jcb/VDM.Joomla/src/Service/Database.php
similarity index 79%
rename from libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Service/Database.php
rename to libraries/vendor_jcb/VDM.Joomla/src/Service/Database.php
index c5a417bf5..fe04c44f5 100644
--- a/libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Service/Database.php
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Service/Database.php
@@ -9,7 +9,7 @@
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
-namespace VDM\Joomla\Componentbuilder\Service;
+namespace VDM\Joomla\Service;
use Joomla\DI\Container;
@@ -17,6 +17,7 @@ use Joomla\DI\ServiceProviderInterface;
use VDM\Joomla\Database\Load;
use VDM\Joomla\Database\Insert;
use VDM\Joomla\Database\Update;
+use VDM\Joomla\Database\Delete;
/**
@@ -44,6 +45,9 @@ class Database implements ServiceProviderInterface
$container->alias(Update::class, 'Update')
->share('Update', [$this, 'getUpdate'], true);
+
+ $container->alias(Delete::class, 'Delete')
+ ->share('Delete', [$this, 'getDelete'], true);
}
/**
@@ -83,6 +87,19 @@ class Database implements ServiceProviderInterface
public function getUpdate(Container $container): Update
{
return new Update();
+ }
+
+ /**
+ * Get the Core Delete Database
+ *
+ * @param Container $container The DI container.
+ *
+ * @return Delete
+ * @since 3.2.2
+ */
+ public function getDelete(Container $container): Delete
+ {
+ return new Delete();
}
}
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Service/Model.php b/libraries/vendor_jcb/VDM.Joomla/src/Service/Model.php
new file mode 100644
index 000000000..800e48992
--- /dev/null
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Service/Model.php
@@ -0,0 +1,75 @@
+
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+namespace VDM\Joomla\Service;
+
+
+use Joomla\DI\Container;
+use Joomla\DI\ServiceProviderInterface;
+use VDM\Joomla\Model\Load;
+use VDM\Joomla\Model\Upsert;
+
+
+/**
+ * Model Service Provider
+ *
+ * @since 3.2.0
+ */
+class Model implements ServiceProviderInterface
+{
+ /**
+ * Registers the service provider with a DI container.
+ *
+ * @param Container $container The DI container.
+ *
+ * @return void
+ * @since 3.2.0
+ */
+ public function register(Container $container)
+ {
+ $container->alias(Load::class, 'Model.Load')
+ ->share('Model.Load', [$this, 'getLoad'], true);
+
+ $container->alias(Upsert::class, 'Model.Upsert')
+ ->share('Model.Upsert', [$this, 'getUpsert'], true);
+ }
+
+ /**
+ * Get The Load Class.
+ *
+ * @param Container $container The DI container.
+ *
+ * @return Load
+ * @since 3.2.0
+ */
+ public function getLoad(Container $container): Load
+ {
+ return new Load(
+ $container->get('Table')
+ );
+ }
+
+ /**
+ * Get The Upsert Class.
+ *
+ * @param Container $container The DI container.
+ *
+ * @return Upsert
+ * @since 3.2.0
+ */
+ public function getUpsert(Container $container): Upsert
+ {
+ return new Upsert(
+ $container->get('Table')
+ );
+ }
+}
+
diff --git a/libraries/vendor_jcb/VDM.Joomla/src/Service/index.html b/libraries/vendor_jcb/VDM.Joomla/src/Service/index.html
new file mode 100644
index 000000000..fa6d84e80
--- /dev/null
+++ b/libraries/vendor_jcb/VDM.Joomla/src/Service/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/media/js/field.js b/media/js/field.js
index 11d3d5e76..4d7956427 100644
--- a/media/js/field.js
+++ b/media/js/field.js
@@ -31,10 +31,6 @@ document.addEventListener('DOMContentLoaded', function()
var datatype_vvvvwbi = jQuery("#jform_datatype").val();
vvvvwbi(datatype_vvvvwbi);
- var store_vvvvwbj = jQuery("#jform_store").val();
- var datatype_vvvvwbj = jQuery("#jform_datatype").val();
- vvvvwbj(store_vvvvwbj,datatype_vvvvwbj);
-
var store_vvvvwbl = jQuery("#jform_store").val();
vvvvwbl(store_vvvvwbl);
@@ -277,67 +273,6 @@ function datatype_vvvvwbi_SomeFunc(datatype_vvvvwbi)
return false;
}
-// the vvvvwbj function
-function vvvvwbj(store_vvvvwbj,datatype_vvvvwbj)
-{
- if (isSet(store_vvvvwbj) && store_vvvvwbj.constructor !== Array)
- {
- var temp_vvvvwbj = store_vvvvwbj;
- var store_vvvvwbj = [];
- store_vvvvwbj.push(temp_vvvvwbj);
- }
- else if (!isSet(store_vvvvwbj))
- {
- var store_vvvvwbj = [];
- }
- var store = store_vvvvwbj.some(store_vvvvwbj_SomeFunc);
-
- if (isSet(datatype_vvvvwbj) && datatype_vvvvwbj.constructor !== Array)
- {
- var temp_vvvvwbj = datatype_vvvvwbj;
- var datatype_vvvvwbj = [];
- datatype_vvvvwbj.push(temp_vvvvwbj);
- }
- else if (!isSet(datatype_vvvvwbj))
- {
- var datatype_vvvvwbj = [];
- }
- var datatype = datatype_vvvvwbj.some(datatype_vvvvwbj_SomeFunc);
-
-
- // set this function logic
- if (store && datatype)
- {
- jQuery('.note_whmcs_encryption').closest('.control-group').show();
- }
- else
- {
- jQuery('.note_whmcs_encryption').closest('.control-group').hide();
- }
-}
-
-// the vvvvwbj Some function
-function store_vvvvwbj_SomeFunc(store_vvvvwbj)
-{
- // set the function logic
- if (store_vvvvwbj == 4)
- {
- return true;
- }
- return false;
-}
-
-// the vvvvwbj Some function
-function datatype_vvvvwbj_SomeFunc(datatype_vvvvwbj)
-{
- // set the function logic
- if (datatype_vvvvwbj == 'CHAR' || datatype_vvvvwbj == 'VARCHAR' || datatype_vvvvwbj == 'TEXT' || datatype_vvvvwbj == 'MEDIUMTEXT' || datatype_vvvvwbj == 'LONGTEXT' || datatype_vvvvwbj == 'BLOB' || datatype_vvvvwbj == 'TINYBLOB' || datatype_vvvvwbj == 'MEDIUMBLOB' || datatype_vvvvwbj == 'LONGBLOB')
- {
- return true;
- }
- return false;
-}
-
// the vvvvwbl function
function vvvvwbl(store_vvvvwbl)
{
diff --git a/media/js/repository.js b/media/js/repository.js
new file mode 100644
index 000000000..9d6629898
--- /dev/null
+++ b/media/js/repository.js
@@ -0,0 +1,11 @@
+/**
+ * @package Joomla.Component.Builder
+ *
+ * @created 30th April, 2015
+ * @author Llewellyn van der Merwe
+ * @git Joomla Component Builder
+ * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+