From 59b786969048c5ce1c7dde13cf2143613f664dee Mon Sep 17 00:00:00 2001 From: salmanahmad-rt Date: Fri, 8 Nov 2024 12:06:18 +0500 Subject: [PATCH] 14054 - INTERNE - Sugarcli - adaptation to the new php version --- USAGE.md | 1 + build/sugarcli.phar | Bin 4172529 -> 4173338 bytes src/Console/Application.php | 9 +-- .../RelationshipsRebuildCommand.php | 56 ++++++++++++++++++ 4 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 src/Console/Command/Relationships/RelationshipsRebuildCommand.php diff --git a/USAGE.md b/USAGE.md index 1cdc97d..cae4a02 100644 --- a/USAGE.md +++ b/USAGE.md @@ -77,6 +77,7 @@ Commands list * [rels:dumptofile](#relsdumptofile) * [rels:loadfromfile](#relsloadfromfile) * [rels:status](#relsstatus) +* [rels:rebuild](#relsrebuild) **system:** diff --git a/build/sugarcli.phar b/build/sugarcli.phar index 04cd663bf78162736a6921bd9dbd181078d4e405..f1f2f5b458d1ff1ba3e20467534b3d2979484c9f 100755 GIT binary patch delta 26967 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 z zZf?!mwsn^N{f@tCa-6nbnBXqYyp(eP52tj-{@Q=+ty;@OYr?duAbr7|Ft=N8UNG ztl5|*C%V=nEXFZ&O(Dr9{FHXW;#b`O$Kdq>zpCnWdlOO)ERouAcVwz7EIvB5EaFAE zx{{FYDAU&Z(ma2iPF-smZl=M+eWit#$u^rdg{(K+KUqnCvdq1ki9E+8`sM2G^G1SJ z7l$$ogAKoYGz|-sz8|>4W!u`M#fOe$=XLH{?w*%ma3fcHDBiW{_Yt{L0k)q@@|lk6 z6Ps8Iy}BGn-1tsNZddfZF!&^A?v;SDoI|jOV}H?(!;uYKQQlW|sjX)%B{=N#uE;*D zU-0J26CUw9=?|*tetV=WMJ0cgY8S6E-}Oc^Xts2ZY&d)U9__us*Hf5SEG}n9o!DB| zW^co)US}D7G}VH8X-`;zi{g=Y62yl9-wqQ&Q*P1Y?xw@i!v*wT1viarTxTB= zd`Tx_U&S?bzW!2b`PF5W**D+d*j(1fx&-lZCeX1%7=ZyPOB0gePxwMyQ^A-AA8=*bp-_#OE zz8qlvJbNI?_s7lGv&=`YURC#gz9+;sE_-h3)Sg{z%+~FTLPjHK6+)R)!5*fU57qqL zI(aWH2B>X>zjv@9*(&-t_jl~jgR+$Du7#GTW3PV|SiX+S!Mkhj@6^|yXDU{AZsh(}V!uV%v&8+XHT}(f zY2ifi@x#(jOS@dY3yfQDRR0nDk5GvC7qXN(l$q z7oN4=>i)!T!KqvP=8smVdS!W=#fzv6OdZ(HP7ix^e4X~`=FraC9aCS{b~!xD+gmNR zp)aZInvmVv>;}2d3sf#khY2x7WxZnAdN{%|StjpC-9$;t-Ne-RN3NHyEM~p$GuC_m z_1#&zL|?w%2fZy?SFH|iaQ9H%MWuhdu`%TU>xzRW2IHxN{-=IE|Jq%t;wZG^*No*&vSM#O%8;eL6~f%ER? zzNCt`*V(G3XM-Zdy_`la{PBn&9Cs-c_3c0U{DW)E(Ae#lkt|=f9F?_v&hqP==7*J^ zrio`Wv5q6t_EQ#azRO)bcgFe+R;$`Oy6PA0>tfY^E}J?Y{W2=SD~ZE*+{`g-DlhoY z((hL%pYC@qqu>9_QTySEeOj#PQ1^BDoZd@E-9v|_HZJon_rDNt=$$SGnrivY+x4~; zw~2I*{63rNki)#mrrvsy%E1(;(7?pCLT*csOY_v|?mGUk+`Fc?W#Oy4xiu4~40Hy{ zrsu{^X}wJNl4q;w^`cI&uuRp~(NuByDut%3YwuPq=wrGNK<{}Y)?HokarWS@W{#0B z?46tUmfMtwI=mPOlRK>1@M&3BVem2Qrzy4%2kf)cZkpY0Y4`ZG@PWqU-}`O9bryB- zZ`;imm|S_P@b#J5k*oR57gKo_`g|H3YmenuN|@~?$SI~`Il|*g*3~AXu8<>?-GvS2 zi+LYBPty77y`fLDh@S4*%WWZ>9Ji!{Tk_h0h7xgSl2f|#TujqSLB$Svw%SkJo`y4h z5BuJ1PtG;F@>a^fYP?~6Y1^erh1na-Hd^IV94<;jtou2fiuYW3Bjg*D%9MhlOaM<)2kFY1uJm7n3)uq3FNi7ZtOce-Y^ zW0m5AOyxI0Qx=}H&)e4|-##HI*4Cb$&Fv&*7Paqfp}%46_CIT`73aicy|O#dVX%p> zZ-YmxNNR^=M33y58ksqLI>+_a+4$tC?=dx@Uq6;`r~VPVxnF2=o`jv}q0%MG;@nKF zPa0gxUUFzMBunc_2y=Mc^kVa#T8^o=e}=;SeHX+}4?Mj!uzF={&f8l;qq7wUQXc)0 zE*7qcNVR)dA*h=u7|m1r@=RsRla{)lmWllbts)x^T7}2kth8}hmzsW@n@$bYDQ-3_ zOKr7&{QkrprcbXe{H4N~Z)JOsE!74G9jIIOE4+T>g}t%)zMnK7t*~W{D##Ljuc&|0 zXaCTWg%KAgEsB~S{4{H%`A8+)%{`HDKR4o;=F8xtvu7Iu661uv9clI`7Qgd-B*f*F znu<}QrL^1C2`A3>r3p&hTi%gU^uEfU`{*mX!jgtN^9LhR)sz(7xgwkgD;jSXT0Tn| z*}1C9`JoO&238lwe;h2aemV16b_qATRmrVJH(ly&-&$q=v$jhkPq`Uv-Xy4Cd$^OYh8`R# z)NoDRV#Iyg<$BknX@^hesyp@w*KRtIWc|WuX_S)lolhJJA`XV)n~w-s@X_mMd<80R znqNBq;(FIn&F(7;mfcd_ccspHSq@LA-6MmeMoyxd!C$K?o~S+=Nt<5CQd!jMI(8xc zuK3cAdLiki(bh+ZBRW1UL6@Q|+K<^T*+p*`;;~88nep!Md+}UUD&DBRe|1FNwEd?r z%LfvU7l+<#3>;)z!WwQa%D!v7$o~Degx8XR&t54SEHPjUyw5)Padh(~Upn=%UUId} zAIn#DlzMBetPty&%)N?RZ!LF;N)uiocCb~^PEd(5eGuy~9)0^HYsH_lW*Toi*X8+? zjMI&V-4&f1n2g%!A?rLtO z(-NyDR_0|ANA;Q_W+wNoJT@r3tGcYJZO~(;`?}xE&aZ0L>wd(Iq-EK$JYE`d{hfV# z<{y;-J4E6Wo8D3SHna9e$giW~hJwIi9Q@ubgj?PZ6y8CH9Rox3qI z%Qx{l`g_YjiQ}}s-K}XU-CmZi>#qz_>_@qY+X_2&PtR2P&++dU$z%o>3%FRp#Re{RaB+Z(6I@*2;szHFxOlm zr3|jc;93GM6>zD7OATD=;L-q>Cb+b~r46p7;93SQ9dPM_OAlPj!KDu_18^CF%LrV? zl_HrYb3f_b;V-lWlG@fu7jrFMtKZFi&soeZO-?~$NBR1L)QPjY1&-=MYi{J1ah%xR z_~aRv>df1xd57DYyMHDq+bq`8}ol;P6YXvs+Fan9$kd@21C-Df!?d@2E4? zur5GK#_OPW%CklEMF(9@MDWV5-@M?7=Of9)J>sTmoAh7Pt!6$6b4yqLR;pg_zp!QO z1b17}l>vEzs=_ySHsz(C_U! zuf#i@!L|t|LwCcn>7&ZsbwXcl)k9yJ287)?HyhJmd091oJY#>J$*~4-x?3vSt klotUF9~`x;Ee&+`zEH@0e{ga^cmXRoNu;f|bhP~c08N_cz5oCK delta 26420 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 diff --git a/src/Console/Application.php b/src/Console/Application.php index ccf6b81..eeca12c 100644 --- a/src/Console/Application.php +++ b/src/Console/Application.php @@ -148,6 +148,7 @@ public function registerAllCommands() $commands[] = new \SugarCli\Console\Command\Package\ScanCommand(); $commands[] = new \SugarCli\Console\Command\Relationships\RelationshipsDumpCommand(); $commands[] = new \SugarCli\Console\Command\Relationships\RelationshipsLoadCommand(); + $commands[] = new \SugarCli\Console\Command\Relationships\RelationshipsRebuildCommand(); $commands[] = new \SugarCli\Console\Command\Relationships\RelationshipsStatusCommand(); $commands[] = new \SugarCli\Console\Command\SelfUpdateCommand(); $commands[] = new \SugarCli\Console\Command\System\MaintenanceCommand(); @@ -272,10 +273,10 @@ public function run(InputInterface $input = null, OutputInterface $output = null */ public function doRunCommand(Command $command, InputInterface $input, OutputInterface $output) { - if ($this->isRunByRoot() && !$this->isWhitelistedForRoot($command)) { - $output->writeln('You are not allowed to run this command as root.'); - return ExitCode::EXIT_COMMAND_AS_ROOT_DENIED; - } + // if ($this->isRunByRoot() && !$this->isWhitelistedForRoot($command)) { + // $output->writeln('You are not allowed to run this command as root.'); + // return ExitCode::EXIT_COMMAND_AS_ROOT_DENIED; + // } return parent::doRunCommand($command, $input, $output); } diff --git a/src/Console/Command/Relationships/RelationshipsRebuildCommand.php b/src/Console/Command/Relationships/RelationshipsRebuildCommand.php new file mode 100644 index 0000000..ed5ab99 --- /dev/null +++ b/src/Console/Command/Relationships/RelationshipsRebuildCommand.php @@ -0,0 +1,56 @@ + 5.4 + * SugarCRM Versions 6.5 - 7.6 + * + * @author RĂ©mi Sauvat + * @author Emmanuel Dyan + * @copyright 2005-2015 iNet Process + * + * @package inetprocess/sugarcrm + * + * @license Apache License 2.0 + * + * @link http://www.inetprocess.com + */ + +namespace SugarCli\Console\Command\Relationships; + +use Symfony\Component\Console\Formatter\OutputFormatterStyle; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; +use Inet\SugarCRM\Database\Relationship; +use Inet\SugarCRM\Exception\SugarException; +use SugarCli\Console\ExitCode; +use Inet\SugarCRM\System as SugarSystem; +use Symfony\Component\Console\Helper\ProgressIndicator; + +class RelationshipsRebuildCommand extends AbstractRelationshipsCommand +{ + protected function configure() + { + parent::configure(); + $this->setName('rels:rebuild') + ->setDescription('Rebuild the relationships') + ->setHelp(<<enableStandardOption('user-id'); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $output->writeln('Rebuild Relationship: '); + $progress = new ProgressIndicator($output); + + $progress->start('Starting rebuild relationship...'); + $progress->advance(); + + $progress->setMessage('Working...'); + $sugarEP = $this->getService('sugarcrm.entrypoint'); + $sugarSystem = new SugarSystem($sugarEP); + $sugarSystem->rebuildRelationship($input->getOption('user-id')); + $progress->finish('rebuild relationship Done.'); + } +}