superedit-IN7_FILERENAME.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. <?php
  2. //VERSION 2010-02-12
  3. function IN7_FILERENAME($M_DIST_FILES_PARAMS,$FILENAME_POST,$DEST_FOLDER) {
  4. global $BAD_FILE_SIGNS ; $OK_FILE_SIGNS;
  5. if(file_exists(".config.php")) include(".config.php");
  6. //$M_DIST_FILES_PARAMS are:
  7. // [M_DIST_FILES_DEST_FOLDER] => /home/www/biall.com.pl/MARKETING_SMB/BAZA_REKLAM_2008/2008-02-15.127.DRUK_REKLAMY.Prezentacja_w_power_poit_Piotr_Justynski
  8. // [M_DIST_FILES_PROJECT_TYPE] => on
  9. // [M_DIST_FILES_DESCRIPTION_AUTO] => on
  10. // [M_DIST_FILES_DATE_TODAY] => on
  11. // [M_DIST_FILES_VERSION_AUTO] => on
  12. // [M_DIST_FILES_VERSION_OVERWRITE] - nadpisywanie
  13. // [M_DIST_FILES_EXTENSION_AUTO] => on
  14. // [M_DIST_FILES_INDEXNAME] =>
  15. // [M_DIST_FILES_TYPE] => NOTATKA
  16. // [M_DIST_FILES_DESCRIPTION] =>
  17. // [M_DIST_FILES_DATE] =>
  18. // [M_DIST_FILES_VERSION] =>
  19. // [M_DIST_FILES_EXTENSION] =>
  20. // [M_DIST_FILES_FOLDER_CREATE_AUTO] - zalozenie katalogu jak nie ma
  21. // [M_DIST_FILES_TEMP] - tymczasowa wersja
  22. //$FILENAME_POST - wyslana nazwa pliku oryginalnego
  23. //$DEST_FOLDER - folder docelowy - potrzebne do sprawdzenia czy nie bedzie overwrite , zatem automatycznie musi zmienic wersje
  24. echo "<br>FUNCTION IN7_FILERENAME in DEVELOPMENT<br>";
  25. //echo "Parametry z M_DIST_FILES_PARAMS:\n<br>";
  26. //print_r($M_DIST_FILES_PARAMS);
  27. //echo "<br>FILENAME_POST: $FILENAME_POST ";
  28. //Plan dzialania:
  29. //1. Zidentyfikujmy wyslana nazwe pliku i znajdzmy interesujace nas fragmenty -> $GUESS[TYPE]
  30. //2. Przejedzmy po GUESS_Types i uformujmy je odpowiednio w zaleznosci od zadanych wymuszen
  31. //3. Sprawdzmy czy ktores z wymuszen nie jest niemozliwe do realizacji, napiszmy error
  32. //3.1 - Nazwy wpisane normalnie - bez funkcji automatycznych
  33. //4. Uformujmy docelowa nazwe pliku
  34. //5. sprawdzmy czy takiego pliku juz nie ma, a jak jest, to dodajmy wersje + 1
  35. //6. zwrocmy array na wyjsciu z nazwa pliku docelowa
  36. //1. sekcja identyfikacji pliku
  37. // zasada: [0]=INDEKS , [1]=TYP_REKORDU(Instrukcja) , [2]=Nazwa(opcj) , [Ost-1 or 3]=Data, [Ost]=.rozszerzenie
  38. // echo $FILENAME_POST ;
  39. $FILE_A=split("\.",$FILENAME_POST);
  40. $FILE_AB=split("\_",$FILENAME_POST);
  41. $FILE_P["COUNT"]=count($FILE_A);
  42. $FILE_PB["COUNT"]=count($FILE_AB);
  43. //print_r($FILE_A);
  44. //print_r($FILE_B);
  45. // echo "\n Count ".$FILE_P[COUNT]." ".$FILE_PB[COUNT];
  46. // if($PRODUKT_ID==$FILE_A[0]) { //Nazwa produktu jest spelniona i zgodna z oczekiwaniem
  47. $DST_FILE[0]=$PRODUKT_ID;
  48. $DST_FILE[1]=$TYP_DANYCH;
  49. //wykrywamy poprawnosc oznaczenia daty
  50. //dla AB
  51. if(($FILE_PB[COUNT]>=2)&&($FILE_PB[COUNT]<=7)) { //podstawowa zasada
  52. $I=0;
  53. foreach($FILE_AB as $FILE_A_A) {
  54. $I++;
  55. $FILE_A_D=split("-",$FILE_A_A);
  56. // print_r($FILE_A_D);
  57. if(($FILE_A_D[0]>1980)&&
  58. ($FILE_A_D[0]<9999)&&
  59. (count($FILE_A_D)==3)&&
  60. ($FILE_A_D[1]<=12)&&
  61. ($FILE_A_D[2]<=33)&&
  62. (strlen($FILE_A_D[2])==2)&&
  63. (strlen($FILE_A_D[1])==2)&&
  64. (strlen($FILE_A_D[0])==4)) {
  65. if(!$M_DIST_FILES_PARAMS[M_DIST_FILES_DATE]) $GUESS[DATE]=$FILE_A_A ; // echo "\nDATA_OK";
  66. $GUESS_INDEX[DATE][]=array( 'PREFIX'=>"_" , 'INDEKS'=>"$I" , 'VALUE'=>"$FILE_A_A" );
  67. // $GUESS_INDEX[DATE][PREFIX]="_";
  68. // $GUESS_INDEX[DATE][INDEKS]="$I";
  69. // $GUESS_INDEX[DATE][VALUE]="$FILE_A_A";
  70. }
  71. }
  72. }
  73. //dla A
  74. if(($FILE_P[COUNT]>=2)&&($FILE_P[COUNT]<=7)) { //podstawowa zasada
  75. $I=0;
  76. foreach($FILE_A as $FILE_A_A) {
  77. $I++;
  78. $FILE_A_D=split("-",$FILE_A_A);
  79. // echo "<br>Dater dla $FILE_A_D ";
  80. // print_r($FILE_A_D);
  81. if(($FILE_A_D[0]>1980)&&
  82. ($FILE_A_D[0]<9999)&&
  83. (count($FILE_A_D)==3)&&
  84. ($FILE_A_D[1]<=12)&&
  85. ($FILE_A_D[2]<=33)&&
  86. (strlen($FILE_A_D[0])==4)&&
  87. (strlen($FILE_A_D[1])==2)&&
  88. (strlen($FILE_A_D[2])==2)) {
  89. if(!$M_DIST_FILES_PARAMS[M_DIST_FILES_DATE]) if(!$GUESS_INDEX[DATE][1]) $GUESS[DATE]=$FILE_A_D[0]."-".$FILE_A_D[1]."-".$FILE_A_D[2] ;
  90. // echo "\nDATA_OK TUTAJJJJ ";
  91. $GUESS_INDEX[DATE][]=array( 'PREFIX'=>"." , 'INDEKS'=>"$I" , 'VALUE'=>$FILE_A_D[0]."-".$FILE_A_D[1]."-".$FILE_A_D[2] );
  92. }
  93. }
  94. //wykrywamy rozszerzenie
  95. $FILE_A_ROZ=$FILE_A[($FILE_P["COUNT"]-1)];
  96. //echo "\n Rozszerzenie to $FILE_A_ROZ";
  97. // $DST_FILE[4]=$FILE_A_ROZ;
  98. if($FILE_A_ROZ) {
  99. $GUESS["EXT"]=$FILE_A_ROZ;
  100. $GUESS_INDEX["EXT"][]=array( 'PREFIX'=>"." , 'INDEKS'=>($FILE_P["COUNT"]-1) , 'VALUE'=>"$FILE_A_ROZ" );
  101. }
  102. }
  103. //Wyciagamy Opis, usuwamy DATY oraz inne znane ciagi znakow
  104. //Usuwamy date ze stringu
  105. if(($M_DIST_FILES_PARAMS[M_DIST_FILES_TYPE])&&($M_DIST_FILES_PARAMS[M_DIST_FILES_PROJECT_TYPE])) { //TYPE PROJECT
  106. $GUESS[TYPE]=$M_DIST_FILES_PARAMS[M_DIST_FILES_TYPE]."_P";
  107. //TODO wprowadzic typ _P
  108. $GUESS[TYPE]=$M_DIST_FILES_PARAMS[M_DIST_FILES_TYPE];
  109. } else if($M_DIST_FILES_PARAMS[M_DIST_FILES_TYPE]) $GUESS[TYPE]=$M_DIST_FILES_PARAMS[M_DIST_FILES_TYPE] ;
  110. if(($M_DIST_FILES_PARAMS[M_DIST_FILES_TEMP])&&($M_DIST_FILES_PARAMS[M_DIST_FILES_TYPE])&&($GUESS[TYPE])) $GUESS[TYPE]=$GUESS[TYPE]."_TEMP";
  111. if(($M_DIST_FILES_PARAMS[M_DIST_FILES_VERSION_AUTO])&&(!$M_DIST_FILES_PARAMS[M_DIST_FILES_VERSION])) { //Version Auto
  112. if($GUESS_INDEX[DATE][1]) {
  113. $SPLITER=$GUESS_INDEX["DATE"]["1"]["PREFIX"];
  114. if($SPLITER==".") $SPLITER='\.';
  115. $GIS=split($SPLITER,$FILENAME_POST);
  116. // echo "GIS ".$GUESS_INDEX["DATE"]["1"]["PREFIX"].",".$FILENAME_POST." <br>";
  117. // print_r($GIS);
  118. echo $GUESS_INDEX[DATE][1][INDEKS];
  119. $pattern = '/[[:alpha:]]/';
  120. $subject = $GIS[$GUESS_INDEX[DATE][1][INDEKS]];
  121. //$PO=preg_match($pattern, $subject, $GIS[$GUESS_INDEX[DATE][1][INDEKS]]);
  122. $PO=preg_match($pattern, $subject , $PO2 ,PREG_OFFSET_CAPTURE);
  123. // print_r($PO);
  124. if(($PO==0)&&($GIS[$GUESS_INDEX[DATE][1][INDEKS]]>=0)&&($GIS[$GUESS_INDEX[DATE][1][INDEKS]]<=999)) $GUESS[VERSION]=$GIS[$GUESS_INDEX[DATE][1][INDEKS]];
  125. //$GUESS[VERSION]="";
  126. // echo "PRZED ".$GIS[$GUESS_INDEX[DATE][1][INDEKS]]." PO $PO<br>";
  127. }
  128. }
  129. //Wersja TODO
  130. if($M_DIST_FILES_PARAMS[M_DIST_FILES_VERSION]) $GUESS[VERSION]=$M_DIST_FILES_PARAMS[M_DIST_FILES_VERSION] ;
  131. //Indexname zgadujemy wklepujemy
  132. if($M_DIST_FILES_PARAMS[M_DIST_FILES_INDEXNAME]) $GUESS[INDEXNAME]=$M_DIST_FILES_PARAMS[M_DIST_FILES_INDEXNAME] ;
  133. if((!$GUESS[INDEXNAME])&&(!$M_DIST_FILES_PARAMS[M_DIST_FILES_INDEXNAME])&&($GUESS[DATE])) {
  134. echo "INDEXNAME AUTO";
  135. $GUESS[INDEXNAME]=$GUESS[DATE];
  136. if(($GUESS_INDEX[DATE][0])&&($GUESS_INDEX[DATE][1])) $GUESS[INDEXNAME]=$GUESS_INDEX[DATE][0][VALUE];
  137. } //EOF if((!$GUESS[INDEXNAME...
  138. if(($M_DIST_FILES_PARAMS[M_DIST_FILES_DESCRIPTION_AUTO])) {//AUTODESC
  139. echo "M_DIST_FILES_DESCRIPTION_AUTO L.170<br>\n";
  140. // $GUESS[DESCRIPTION]=ereg_replace($GUESS_INDEX[DATE][0][VALUE].$GUESS_INDEX[DATE][0][PREFIX],'',$FILENAME_POST);
  141. $GUESS[DESCRIPTION]=$M_DIST_FILES_PARAMS[M_DIST_FILES_DESCRIPTION]."_".$FILENAME_POST;
  142. // echo "<br> GUESS[DESCRIPTION] line 177: ".$GUESS[DESCRIPTION]." should be added ".$M_DIST_FILES_PARAMS[M_DIST_FILES_DESCRIPTION]." EOL.";
  143. if($GUESS_INDEX[DATE][0]) {
  144. $SPL=split('_',$GUESS[DESCRIPTION]);
  145. unset($GUESS[DESCRIPTION]);
  146. foreach($SPL as $SPLL){
  147. echo "<br> if $SPLL == ".$GUESS_INDEX[DATE][0][VALUE]." EOL";
  148. if(!strstr($SPLL,$GUESS_INDEX[DATE][0][VALUE])) {
  149. $GUESS[DESCRIPTION].="_".$SPLL;
  150. echo "<br> Added Line 177a | $SPLL |";
  151. }
  152. }
  153. echo "<br> GUESS[DESCRIPTION] line 177: ".$GUESS[DESCRIPTION]." should be added ".$M_DIST_FILES_PARAMS[M_DIST_FILES_DESCRIPTION]." EOL.";
  154. if($GUESS_INDEX[DATE][1]) {
  155. $SPL=split('\.',$GUESS[DESCRIPTION]);
  156. unset($GUESS[DESCRIPTION]);
  157. foreach($SPL as $SPLL){
  158. // echo "<br> if $SPLL == ".$GUESS_INDEX[DATE][1][VALUE]." EOL";
  159. if(!strstr($SPLL,$GUESS_INDEX[DATE][1][VALUE])) $GUESS[DESCRIPTION].=".".$SPLL;
  160. }
  161. }
  162. echo "<br> DESCRIPT TO $GUESS[DESCRIPTION] L.194";
  163. // if($GUESS_INDEX[DATE][1]) $GUESS[DESCRIPTION]=ereg_replace($GUESS_INDEX[DATE][1][VALUE].$GUESS_INDEX[DATE][1][PREFIX],'',$FILENAME_POST);
  164. // $GUESS_INDEX[M_DIST_FILES_DESCRIPTION];
  165. //wywalamy spacje
  166. $GUESS_INDEX[M_DIST_FILES_DESCRIPTION]=str_replace(' ','_',$GUESS_INDEX[M_DIST_FILES_DESCRIPTION]);
  167. } else if($FILENAME_POST) {
  168. } else $GUESS[DESCRIPTION]=$M_DIST_FILES_PARAMS[M_DIST_FILES_DESCRIPTION]; //EOF ? if((!$M_DIST_FILES_PARAMS[M_DIST_FILES_DESCRIPTION])&&($M_DIST_FILES_PARAMS[M_DIST_FILES_DESCRIPTION_AUTO])) {
  169. if($GUESS_INDEX[EXT][0]) $GUESS[DESCRIPTION]=ereg_replace($GUESS_INDEX[EXT][0][PREFIX].$GUESS_INDEX[EXT][0][VALUE],'',$GUESS[DESCRIPTION]);
  170. // if($GUESS[VERSION]) $GUESS[DESCRIPTION]=ereg_replace('\.'.$GUESS[VERSION],'',$FILENAME_POST);
  171. $SPL=split('\.',$GUESS[DESCRIPTION]);
  172. unset($GUESS[DESCRIPTION]);
  173. $I=0;
  174. foreach($SPL as $SPLL){
  175. if(!strstr($GUESS[VERSION],$SPLL)) {
  176. $GUESS[DESCRIPTION].=$SPLL;
  177. if($_SESSION[DEBUG]) echo "<br>Sciagam z desc wersje $SPLL == ".$GUESS[VERSION]." |";
  178. }
  179. if($_SESSION[DEBUG]) echo "<br>line 203: teraz GUESS[DESCRIPTION]= ".$GUESS[DESCRIPTION]." | a w oryginale z parametru: ".$FILENAME_POST." |";
  180. }
  181. }
  182. //
  183. //3.1 - Nazwy wpisane normalnie - bez funkcji automatycznych
  184. if((!$M_DIST_FILES_PARAMS[M_DIST_FILES_DESCRIPTION_AUTO])&&($M_DIST_FILES_PARAMS[M_DIST_FILES_DESCRIPTION]))
  185. $GUESS[DESCRIPTION]=$M_DIST_FILES_PARAMS[M_DIST_FILES_DESCRIPTION];
  186. if((!$M_DIST_FILES_PARAMS[M_DIST_FILES_DESCRIPTION_AUTO])&&(!$M_DIST_FILES_PARAMS[M_DIST_FILES_DESCRIPTION])) $ERROR.="ERROR_EMPTY_M_DIST_FILES_DESCRIPTION (BRAK OPISU),";
  187. //3.1.1 ... Walidacja daty
  188. if((!$M_DIST_FILES_PARAMS[M_DIST_FILES_DATE])&&($GUESS[DATE]))
  189. $GUESS[DATE]=$M_DIST_FILES_PARAMS[DATE];
  190. if($M_DIST_FILES_PARAMS[M_DIST_FILES_DATE_TODAY]) $GUESS[DATE]=date(Y)."-".date(m)."-".date(d);
  191. // $GDATE=date
  192. if(!$GUESS[DATE]) if($M_DIST_FILES_PARAMS[M_DIST_FILES_DATE]) $GUESS[DATE]=$M_DIST_FILES_PARAMS[M_DIST_FILES_DATE];
  193. if((!$GUESS[DATE])) $ERROR.="ERROR_EMPTY_M_DIST_FILES_DATE (PUSTA DATA),"; else {
  194. //TODO uzyc globalnej funkcji walidacji daty
  195. $FILE_A_D=split("-",$GUESS[DATE]);
  196. // echo "<br>Dater dla $FILE_A_D ";
  197. // print_r($FILE_A_D);
  198. if(($FILE_A_D[0]>1980)&&
  199. ($FILE_A_D[0]<9999)&&
  200. (count($FILE_A_D)==3)&&
  201. ($FILE_A_D[1]<=12)&&
  202. ($FILE_A_D[2]<=33)&&
  203. (strlen($FILE_A_D[0])==4)&&
  204. (strlen($FILE_A_D[1])==2)&&
  205. (strlen($FILE_A_D[2])==2)) $INFO.="3.1.1 WALIDACJA DATY OK , " ;
  206. else $ERROR.="ERROR_BAD_M_DIST_FILES_DATE (zly format daty ".$GUESS[DATE].") , ";
  207. }
  208. if((!$GUESS[VERSION])&&($M_DIST_FILES_PARAMS[M_DIST_FILES_VERSION])) $GUESS[VERSION]=$M_DIST_FILES_PARAMS[M_DIST_FILES_VERSION];
  209. else if((!$GUESS[VERSION])&&(!$M_DIST_FILES_PARAMS[M_DIST_FILES_VERSION])) $GUESS[VERSION]="1";
  210. //Ogolne usuniecie spacji
  211. $GUESS[VERSION]=str_replace(' ','_',$GUESS[VERSION]);
  212. $GUESS[DESCRIPTION]=str_replace($BAD_FILE_SIGNS,$OK_FILE_SIGNS,$GUESS[DESCRIPTION]);
  213. $GUESS[M_DIST_FILES_EXTENSION]=str_replace($BAD_FILE_SIGNS,$OK_FILE_SIGNS,$GUESS[M_DIST_FILES_EXTENSION]);
  214. $GUESS[M_DIST_FILES_INDEXNAME]=str_replace($BAD_FILE_SIGNS,$OK_FILE_SIGNS,$GUESS[M_DIST_FILES_INDEXNAME]);
  215. //EOF 3.1
  216. //echo "Zgadnieto z pliku";
  217. if($_SESSION[DEBUG]) print_r($GUESS);
  218. //print_r($GUESS_INDEX);
  219. //Listujemy czy nie zrobimy overwrite'u
  220. if(!file_exists($DEST_FOLDER)) {
  221. if($M_DIST_FILES_PARAMS[M_DIST_FILES_FOLDER_CREATE_AUTO]) {
  222. mkdir ($DEST_FOLDER, 0777, true);
  223. $INFO.="TWORZE_NOWY_FOLDER , ";
  224. } else $ERROR.="ERROR_DEST_FOLDER_NOT_EXISTS";
  225. if(!file_exists($DEST_FOLDER)) $ERROR.="ERROR_DEST_FOLDER_NOT_EXISTS";
  226. }
  227. //
  228. //Sprawdzanie wersji i dodanie nowszej, zamiast overwrite (dla funkcji Automatycznie dodaj wersje)
  229. if ($handle3 = opendir($DEST_FOLDER)) {
  230. $I=0;
  231. while($I<1000) {
  232. $I++;
  233. unset($ERROR_VER);
  234. while (false !== ($file = readdir($handle3))) {
  235. // echo "<br>DIRLIST sprawdzam $file pod katem ".$GUESS[DESCRIPTION]."z katalofu $DEST_FOLDER";
  236. if(strstr($file,$GUESS[INDEXNAME].".".$GUESS[TYPE].".".$GUESS[DESCRIPTION].".".$GUESS[DATE].".".$GUESS[VERSION].".".$GUESS[EXT])) {
  237. echo "<br>WARNING Plik $file istnieje juz, (".$GUESS[VERSION].")";
  238. //Zmieniamy tylko wersje jak jest autowersja oraz nie jest OVERWRITE
  239. if(($M_DIST_FILES_PARAMS[M_DIST_FILES_VERSION_AUTO])&&(!$M_DIST_FILES_PARAMS[M_DIST_FILES_VERSION_OVERWRITE])) {
  240. $GUESS[VERSION]++;
  241. $ERROR_VER="ERROR_OVERWRITE";
  242. echo "- zmieniamy wersje ".$GUESS[VERSION]." . ";
  243. }
  244. if($M_DIST_FILES_PARAMS[M_DIST_FILES_VERSION_OVERWRITE]) $INFO.="OVERWRITE,";
  245. echo " - bedziemy nadpisywac - uzycie OVERWRITE";
  246. }
  247. //echo "$FOLDER , $FOLDER_I , $file\n";
  248. } //EOF while (false !== ($file = readdir($handle3)))
  249. if(!$ERROR_VER) {
  250. echo "<br>Brak erroru przerywam proces sprawdzania wersji";
  251. break;
  252. } else {
  253. if($M_DIST_FILES_PARAMS[M_DIST_FILES_VERSION_AUTO]) echo "<br>Error powtorzonej wersji , powtarzam petle testu AUTOWERSJI ($I)".$GUESS[VERSION]." .";
  254. else break ;
  255. }
  256. } //EOF while($I<1000)
  257. } //EOF if ($handle3 = opendir($DEST_FOLDER))
  258. //if(!$ERROR_VER) {
  259. $RETURN_ARR=$GUESS;
  260. $RETURN_ARR[M_DIST_FILES_DEST_FOLDER]=$DEST_FOLDER;
  261. $RETURN_ARR[DST_FILE_NAME]=$GUESS[INDEXNAME].".".$GUESS[TYPE].".".str_replace($BAD_FILE_SIGNS,$OK_FILE_SIGNS,$GUESS[DESCRIPTION]).".".$GUESS[DATE].".".$GUESS[VERSION].".".$GUESS[EXT];
  262. $RETURN_ARR[ERROR]=$ERROR_VER.$ERROR;
  263. $RETURN_ARR[INFO]=$INFO;
  264. return($RETURN_ARR);
  265. // } // echo "$file";
  266. //
  267. }//eof func
  268. ?>