From 746197e68cd90bf09a681c3552cddfc63e1c129f Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Fri, 20 Nov 2015 13:39:06 +0100 Subject: [PATCH] Modification & optimisation format MCC --- manager/phpExcel.php | 65 ++++++++++++++++++++-------- page/modules.php | 3 +- src/.~lock.nouveau_modele.xlsx# | 1 + src/excelTemplates/.~lock.mcc.xlsx# | 1 - src/nouveau_modele.xlsx | Bin 14298 -> 9169 bytes 5 files changed, 51 insertions(+), 19 deletions(-) create mode 100644 src/.~lock.nouveau_modele.xlsx# delete mode 100644 src/excelTemplates/.~lock.mcc.xlsx# diff --git a/manager/phpExcel.php b/manager/phpExcel.php index 5f82bf1..37a174b 100755 --- a/manager/phpExcel.php +++ b/manager/phpExcel.php @@ -120,34 +120,49 @@ function xlsx_switch_lvl1($request, $answer){ break; + + + + + + + + + + + case 'import_mcc': if(isset($request->docPath)) { - $inputFileType = 'Excel2007'; + // $inputFileType = 'Excel2007'; $inputFileName = $request->docPath; - - // Charger le fichier en tant que document Excel - $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); - - // Get sur la première case - $sheet = $objPHPExcel->getSheet(0); - $mccData = $sheet->rangeToArray('A2:'.$sheet->getHighestColumn().''.$sheet->getHighestRow()); - $uelist = array(); + // Charger le fichier en tant que document Excel + $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); + + // Get sur la première case + $sheet = $objPHPExcel->getSheet(0); + $mccData = $sheet->rangeToArray('A2:'.$sheet->getHighestColumn().''.$sheet->getHighestRow()); + - // permet d'éviter les doublons + /* permet d'éviter les doublons */ + $uelist = array(); // contiendra le tableau de retour $ueuid = array(); + /****************************/ + /* TRAITEMENT SUR LES CASES */ + /****************************/ foreach($mccData as $line){ + if( $line[0] != null ){ /* [1] On récupère les données de l'UE, si les champs sont définis =========================================================================*/ - if( $line[0] != null && $line[1] != null && $line[2] != null ){ + if( /*$line[0] != null && */ $line[1] != null && $line[2] != null ){ - if( !in_array($line[0], $ueuid) ){ // on créé l'UE dans la liste s'il n'y est pas déjà + if( $line[0] != null && !in_array($line[0], $ueuid) ){ // on créé l'UE dans la liste s'il n'y est pas déjà array_push( // on ajoute l'UE $uelist, @@ -163,14 +178,14 @@ function xlsx_switch_lvl1($request, $answer){ array_push($ueuid, $line[0]); // on dis qu'on a déjà enregistré l'ue } - - $ueIndex = array_search($line[0], $ueuid); + if( $line[0] != null ) + $ueIndex = array_search($line[0], $ueuid); /* [2] On récupère les données du module, si les champs sont définis =========================================================================*/ - if( $line[3] != null && $line[4] != null && $line[5] != null ){ + if( /*$line[3] != null && */ $line[4] != null && $line[5] != null ){ - if( !in_array($line[3], $uelist[$ueIndex]['moduid']) ){ // on créé le module dans la liste de cet UE s'il n'y est pas déjà + if( $line[3] != null && !in_array($line[3], $uelist[$ueIndex]['moduid']) ){ // on créé le module dans la liste de cet UE s'il n'y est pas déjà array_push( // on ajoute l'UE $uelist[$ueIndex]['modules'], array( @@ -186,7 +201,8 @@ function xlsx_switch_lvl1($request, $answer){ } } - $modIndex = array_search($line[3], $uelist[$ueIndex]['moduid']); + if( $line[3] != null ) + $modIndex = array_search($line[3], $uelist[$ueIndex]['moduid']); /* [3] On récupère les contrôles du module, si les champs sont définis =========================================================================*/ @@ -231,6 +247,21 @@ function xlsx_switch_lvl1($request, $answer){ $answer->request = 'param_error'; break; + + + + + + + + + + + + + + + // DEFAULT diff --git a/page/modules.php b/page/modules.php index 26f7dc8..60295bb 100755 --- a/page/modules.php +++ b/page/modules.php @@ -496,7 +496,8 @@ if( permission('admin') ){ $request = new stdClass(); $answer = new stdClass(); $request->level_1 = 'import_mcc'; - $request->docPath = __ROOT__.'/src/excelTemplates/mcc.xlsx'; + // $request->docPath = __ROOT__.'/src/excelTemplates/mcc.xlsx'; + $request->docPath = __ROOT__.'/src/nouveau_modele.xlsx'; xlsx_switch_lvl1($request, $answer); diff --git a/src/.~lock.nouveau_modele.xlsx# b/src/.~lock.nouveau_modele.xlsx# new file mode 100644 index 0000000..350a912 --- /dev/null +++ b/src/.~lock.nouveau_modele.xlsx# @@ -0,0 +1 @@ +,xdrm,linux,20.11.2015 13:38,file:///home/xdrm/.config/libreoffice/4; \ No newline at end of file diff --git a/src/excelTemplates/.~lock.mcc.xlsx# b/src/excelTemplates/.~lock.mcc.xlsx# deleted file mode 100644 index 23b194f..0000000 --- a/src/excelTemplates/.~lock.mcc.xlsx# +++ /dev/null @@ -1 +0,0 @@ -,xdrm,linux,20.11.2015 13:13,file:///home/xdrm/.config/libreoffice/4; \ No newline at end of file diff --git a/src/nouveau_modele.xlsx b/src/nouveau_modele.xlsx index 3fd843089fdf62ad49f771f815aef50197dba2a3..5570669a3389d8b2356847c9c3364567c508125f 100755 GIT binary patch literal 9169 zcmaKS1yoyG(>6|^xD<*NLVy;Er^Tf}QZ%?1mj-v2;_mJeq(CWNptx)CV#T2aiWVsp zDDZ{e_rCZ3_y4{-$vT<6*6f`#GtbO9Yd>2_4jqFG1pok`Oq)8tK>3^8L+S>OX4X!e z9Cz1u31hP8+(e;=J`r(VZuR6+rnRkMajkhPq0O;q2`)< zsobTdFSu@4MDrokbjj2!$VSfq{nm8*EUffw8NPfKtr2=2lv-7~3k`MqqK^g@m{`|D z#Ic`0f^zb<5G#&JsjBBu!J4f(-7dUffJZaB)vI9+*^O$oQEBZi!XH8%v&Bfaf+}vD z1R4R**qfFFg>S>~>5d5&xEP9(95%qbETCZ(>9!CW3Ud5^1%?P|VQOch~e=ET+hM@UJ;TP`Je4zkNF)Ev~rkyg+T0UFt{@4oIh2lnS zN~Z-yCF#rz?Rt-wAIpa`rgUScc4K=e?&8C*K>c+c={+3v-{M33_xPCDIhx%CC^|t- zHIR!e`1}T!*$d#WL5sEhvnzU(Uv}Cd6{i7gLXrkLJvzj%>n+o393Bz4I1rJUoQLAt zVSfG&H4DRFI2NxiUN0LRZ+Y@d?#lx?bqJ(@UQ(9}o|0QsuAo)0Cd0=LAMSJ~D3tH| zjK}`YhBOLaH=vN&p5SW_q=4yt#iysXkFN@!u0FyWtHzLHvwVEu?<+(yL8o0!JnyQ5 z=NDl_ME_hnP)7WF!)!px<`@6x0*M>!dBRJC30(M}B)$rW*I2nJEw5)T)QEeKC6p?LDXu5<41#6Xw;6leN6$N!nkFuM z`h)YbF)AA~+Lx1Cy~w-@^2!btuQ%`QQ;Y=)+y3BWDXES>&myVU$q-th`Z0ON%mUXw%5du6aqqWD{*o>yM~MD0^vAMbgVF!TP_mxEdt z*KBV*aeVfqP5Q?UIC>|nM-mUK41p2c+3N~u^}jyYUwfc2f>>UKGsRXtBzfCHI_F0r z!>Lny!mrI?+!ZIJS2!pOE1ex|3fx!b96pwr%0e9>SAD08UT4du)a=xCTV*nfPhe2s zmCH4Nk2B&(7tcGP5^KE5#>s0cv5_D5u#;6{#SrmD`47PhaPeq&a1L}h`C zsO|hQSk#`?;fb#V0}guMM=sS6d4Fu8`h*e_xl$1Csf{Nn6-MY2aM{~bL(7~;zRzv7 z-*B}*#$x7ush0dD-ik3POKQ-Nl9f9~0`2{g|%3wgU?6J&gcILM8rIB?M z(<(#0aN^;70j)s8M`-lLDdXWdB% z?f70vYq(AAXD(jli-*7xb*u7^bsMTlsC!{7e0-C7^+aY_rxWTrD8Rc&G*G^1#AXHy z+Phqn-P-^Sj(2}Z(2$&4>@p=WK+TXUNtR_J)(CjZ14ljO^2WA;*na7!Q^s;GNo%`9o3kmp?(Hzf~lr%!Mi4pO= ziPZ^HP{qMwNqB8Qnq9@wjTl>cpTT5mlZT!n6YQ$>UXUTi3Z<)HYQf<+XL=zibmZ8E z)qjItC}CM2bJP<&cFPNZ*@}rDpgee+RjFfXQ{LiwZRMqFUD)d=@=Cyzakor+x9SPa z&m=FQwi;~zJwmkkhi&h>OkW4f+t?)A&T#EOYD0vu4}^AYym-D3xaIjy@?|9Z*V4s5 z3B4es>6@oD-V>h@*}jUhmGjY0-N(&%DIVFg_+yQco0X#6n%qLWS(hSFU}yLCY3;Ci ztFng*AaQqd9+6#?w%X7m8KB7B`TD4%*xxu|Wue+4ugx(K13X5kl&{j!$CZDiLhre_ zaMVI%w7>7Jzx+*J6c=Cj2NvG|JX2XRbilzYd{G-h8TAvf#%*@$|^Y;(;U8%Qb>)LHVNrG3-H31TIt`BE43}mS2IE}Sy zAo4t&uo~1e1(OLAhMJNhxKN@&dyA}EcFjwyzK@bnR=Q`UqSK})PJCCt3|@lN=3O1kh+5hVPuY0|1__oci!+da))v#%Q2+U@mDu1F;8wi|T)SsB@$E%s*q;ldSY z5F3KJyC1sdlVdjuQ*3BBAMEz_O0Z3Ess73_LbvI0^z_QJX~}fZTY3MqN^rU$Ud$(r zbGExFs8(JD>gm?dqEIop&>w1=JsWH~XqiLtroGj`w!S;^WCzf08rb}mRk0>_65{aL z?PU7d<9eG-gTyhJn}y=fIky=%Dj1(f-cW4485yP6iZpWws?osGc04!wSs)nM%Epwu zE;jtdW8p&BUB80j+X<(321|p7da6r$;J(kLFuQN(hGm-wK>yWnZ~s@p#|V$JIgHzE z(b%bJ1!cuxrX~Dag&JpyffR$oNT=Jh#jnl4lZ(``!7_gLn(c%0Z`=mt*cZR{*W{W$ zlUGR}Y{tHA5e{Crx0vb6jmSMVYUE(^Rwqlh9g>VnoGvT(TU)LFG#YW-N=tAfI~6+C zaH6j4V+r2zzWwky8#)|u!+)D1s_|pmn!R>gF5^ZyWXSPFk*A)X)@7HfYXdX&YMU)nZToYl-TAtqQXo!7#-p8U=Eqj=`MF(;L-$4B9jv$f z++WzaHDfQ|%(T%SQ&?Kzq=+=NyXgKkhDcjq`Py{pmihXvW$Dk>VTkXo5oI=I0b)Fe zam$ClY*bUf##VMleo!MY!=&@+g3aS0+MnWrx{>Y35@ z^@6Oc!eGqRMd;J3`T!r*sx3u2jcEw3?~9|8p}^$XS)1vS$n4>TxvAdmU#F$Qtx$(>T$d8c0*QyL6-q_~ z{VdLX(CY>DrYN=Eer=$ zFs;EHH5a$GnsIM_EhxUuz0Mmm7i)Z-mAgExF0`)4C(>+7)eh5*wJ?-N*DOA&#FvK~ zT2k44?s)&45x&3!$FO;c6~zUTG&xy{suH0#DkTPU75lTvMd$gK7D2VZ0Wb4xpHLAK zGw$uOclq)$z8r({TVmixS*#8zGr|pbN{9)f#zCoeG?e*+)2^H2fX~21H{Pyu>!8X} z;m_31(KiH@P6u3JN`paI#Z_Z2q{__$_)_LX;mz@Zmbji3#d)H{K6`yj@R;QffwPB; z3fxP&4aE(%Fv-KE=*^!aLLK)d?3PjMi9AmT@`5`=7>VlQ^56`XrJ^`D-H5HG+~lH_)Kjf+id&yf_`5ruc&;*3<`35qA}W_t5#BXzm8NpR-mJ&5(XBt zz~2`%1NI+JFMZom2v1t6bSDC5vuq%=R+&ou3mVR!UTR1!*+BaDZPfH$TSPX`TezMp zg!L$VxtepMacv3oi8zy?=dlGY>Enbk6Q!@)&f1hr@pg{mNgh4luIjri#+8*L(Z6@e zBI|emb3oIDEtw5jmh==fzgih?O(snll^=~p9LPYMo-Wack}AUFk5{%g^mg{@xXf-e zFA7A6r~ea0tPZh3=LGyd7bXmKH=_AL`7QY9lSvN+op8$cd)56ujCf{Dbh@XM15h@> z18x?y*mnaaUx3VcbPXBT$*E9drcOHJ+e_w$Lo&adwjZLzYd9~8!7y$F;$MfU;_Z7M zfW2$5@wkr9uONI;+z zJqk(8>yHA65J2b{Vb$a4kR0QD>osvgd z{o1FN6n_r`XcE1LAw?P{@6cd{)FgTFdM_ca2(O3n3`Q(EU9dV+Ev!I@wYV-O3$Df6 z@j2G2v5NTYxv+ZNPaOtm1YoPP$G{l`DwSEge*1FeEOJqHBNnRpa4c8EgC_xh=EZgW z5!f8OU5y$mLaS8-F%c`IJ0F471!dPED*8KM;6TW@2@HcyH@<%WM&mOyXK|*fZ^)tp zHkH~jK*m*WE*$EL@Xv;0Mdsc4;{?2o%jQ?OMt4Pv*NTK@NMG+}X2T6xh#pv(ve0LU zn?^M2AvMYjqenBGHKa>?LK7se2&O%$dvoFDRbd4Me%i#efR7P*%JhN`<7ThG_8U8v zGkf@4GbGN4VcS+>=iMtPi%tLxj3C9|mf}^zVBeH7L}Dj0K8t@SN&ug>+CI-?&=^O6 zSa*?6V1mRE5uXL8XUXsf!tbmEh_#|tg93)B@mKGn?MGVbQ*38%3|j4>=jTR&;dM)O zh-ygfn?OE^1}^qYr}Tf-=U~BJdXaq7FMX@q zWQtzgArG=i#--wj?mGZ!n4TQQ1MrMGrBb`ORz0*nLS!>Yz`wiaYVm`v$TJg?1*MiY=1 ze}(&iW;4Kt!MuX#G#FIgmlR8)@%_;R-&=0Hx1C_*{bJ>V@G0>EEjq&K@zc^FaaaSE zXo9j`tJ0KvIBRzo8TS}|{L4*&kTroctSrDJeL^8>pd}YRKXD-{FEP#}O1dJ7B6R;r z!S&Zns4=6Fs7j>G%Ex}5kJwMlA)nTf{m^)Lm8L3W_iW;sQETBo`hJ`rTe}K%bxt>1<>#pX`dXK>McFd+s@?qr93*xvKhF5dw3!?)_ zA$7`J^3t8%{t#xeNfz-)`A3DEWG_su5Y1=}><{VIV(C<#YT1U)h66 z583kuN+|ksP(29`=;=HyljI>1mT?RkQVOmlJYOic(V1(3mdE+qOo_BL`C+4>&K)82 zBtkgUB$Aj zSpsIqbfhsTFAqR_(pdnXT1FP57v%tw=Up*0fx%qF{KOzMzVk?Cv;@Yd2oYoKZ2+)3 zF^>`Xlq_Jp8<>P{|Cv0bc9*;Zi1U|A=nGgtj23YnE{>oh9=Qsm;Gv)9L^yU9E;Aj! z=?hD#bXGP5r;iX(t8;MDIHRVhrF&-qbmeqFW}BET;APx6W4|8*GldrUmjKg@G)eD5 zsB;}E8?FThfH^_{N1S9!Vg+ST28HC#76sH_^{1_9x@15h^fa5CfQUrOnB}>&N~X^W zU{H>Tgbne`3rFG@k5(engZzEEs{aVxg9HTWrme6zD6B^xExza3Iez@zAWB36M5I8^ z)4NoG)bK{Q$gU_D5)P?>9yn4+Fmi#226?@uC+2^U>O)p)zdeX5gg1*z6>iHcRRJ&S z1!C!OpegP+(#KyVgDJ}OCi$d~N#c;uA_vhA@qcHr^W%R zhkX)(oD7h1z{`|4;FvglpP2?G2QPAHu0{NWcGI8yIp~Z;AuOoXnf6OycJlw72rf8phrTNkuF~VXgI5_)Q5KKp;}f3@_FLK63-70}8IJ^)8Eqfg z8gGwCYS`}Ay4M-63{rdjHK#2<6(r_q=Qdqry~*5Bjelz}+0yu=Zsp)Dq+-~vLi#p- z;hK+TvB+Z7PH>5R?Yi-S^=2mMs^u43sb=YZImD;oW4*_R_0zFfLW8n|kROgK?R>)> z&kWqGLd%E-QL6VVef{`ZTO4S>tNePf{s5I%jS6kJX% z4BFA!wng`lV>NwIyG4X~;3t~JebN^23p?v6KYn_nsDh%4ZyqPRi(nosdjL_Vy+w|p zd7IvK&A=Q^XRH?>y_49!9(*2E)UK^@f6oZ5h7S~+=H(j1?02L}rL8T?0N^D~qPMbM zs7Uss%zTR}3d#&JgNhTRIZ!1J#x;vc*gCTmGpu=&II^~jwR&BC|Nh3}-F*$zDxEz* zg@bu9xcvS+-^M+08dFdRHU_cfIJ_CmM=i7x^dJyp$VgQDD5bBf5nUzz6i);p?V~1OALBuMUN|BRr01zSB2|S*5Y2Fv4c_CPi zwdrQQV4d@FOx2V$^KgZK!E=2q$2`J1*6QekLp}DP1NgOy>066MmBB$zuv?O>=kiE$ zIp&qYX5X9DlC5VATbCIh-F}TOkWd}FDW8bYD?lj&!wmgIi{zZJm9R#JPNmz{CmVI> z8%>1qqYGN+coT4+1#u^Q59EOo#ScuQDn1ks5{;l(FldhGp4-gpU%H3{Y_a_EdE7`5 zN>a*?Y7qgW28thJ=Yh*l7}%%KBN($fMmx@vxG1ZBwPs~%-cup~p9S@;@YlHqL5L)W za;?{&j;@QReeqTZ>}0$Wr;K})HKmC=`O3CjD#{^^WwXs%(d5@fy7l_dh?y)K6&A4b z6=e$O++jeHn(^I6MM09@F4*%O40EhPNx@0AvN2cG^*pSQ)%tzW;-Lo_TiAwVBO# zwoJilx-ZbOvgGMjahZkhH(%{KKWcg#OAVdN!gO7$XAi*5O`}*N6|>ft8&64Jqqh{i z(IzC{^@#p(ty;eI^cgi-^XpzuU(IEWY9n@`#q^zIYeKT-W_4{sjhb^Mvulkzqr+Td zk;-a1)-%=VxvIXOIJ+NN+aADAuhdpZ8qK>c! zY02Ye(K2@YckKLX5ba5akP8~4ZHhPG&z7GbHRm+3{8%iAthPBSI0NKz#K!n@Kfq~XzA4!&-1GD{c$2yNxt>6w zUqPzmyRKx}Q!Xs*w z(Y)Y%n-V}E7^~L5Bi#P(_=D~AZ9vWCZ_=+rQfey}0|lj@=ifRR;a{7pfAUJvDhhTB zTzIXAnt&$G`dXlLAb;;T5KgEY`D0gJ&bb_tf)^gMaD6!;yGUplnhiQujy;UmF=(mN zpy86*(0d%I&4DTS^}R#0im0e{J4aC%1}yLgf!sxevc7d&IrhV|J$6V*ytC_>Zprw|ww0Smm0+|VLI3B3Nz3pDx{rso}xv?-Y5f944 zH2zV|t(TPPV)I0l79VH3DR;bPPp(SVJdJ^nh+zaOe{9HB3^80zfvEQ3mab$#L3dPuKe{;ArKnS*F*K;Gq3g0iH@tlVj4 zDOm-QdsT_(j_usWlJnRvEM84Leo3``-^(OYnRUw+>;}6Hq7+Pnvkpge4{;IMo(glr zz}A{azwnJ#FXdK*Qk0@H&}PJ1%p(pzx^}IkI7L*BlT;08=WIdNv$5JP?%h42U=y&2 zEF^6>@~`9=DKfFTl6JPvX12}-Y997xPI|vL%#%9hy1B^u4zJi`D<+Fi=z;sLM8Z2A z9w})p@A7R(mLqGg4t+{9^8gET-zSxh+YZl{Q{yZ}Pxb0iLA!eF#gNB5_MfSDXWqMO zi+*V^7R^)}wm}(coKa@apzO|0Dx}^fCl~eG$WHFphurkO$CGWa#6NC&Vpn*^5fJGi zPiL$l!cFkb-#VX5w2aP@!GKsW0dg6!cOw^<_Fjp>S>x@%^9cWi z3cv;5pnI$ML+Kia_#If+#q^M+VeEMh6DD3c*zmX`#c!g^!Frz<7JB$fVTUnXvLW)U z+vIA~C$r?1m^ZLg8L%k;TwxLvvcv@pDWMa21Uy{EzLYMA6-?ORX|?BExd}ZETOi<| z>w$Ypp(?IUQ=EeXTNhl%MAFn~^jo>!txCgRY6JC?z>mG%}RGPG9`}_`%)j zi~m>tb{6BG6aUW3-Yry7{yF>a^zj{c|Cb0Lk@4Tze=_<1oc?!?^^Rly zOU99u%>T_e|8t$clQ?&b>|e5jj1_X7|Bs*j=L&y+=ei?%{*np6?-l-6>gS)U{Jr1Z zy`TLhrVswOkN>`{{d4NyE9$Nx{v{lA|Gj}f+v7hc{~Z~3MfaCr)Bmp}s3eDpb!UWw N{D>hl<;`$6`X7r|Mq>Z~ literal 14298 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 MG0+M0*?yh