sync-projekty-files-to-www.biall.net.pl.php 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. <?php
  2. /**
  3. * @params $_GET['project_id'] - int
  4. * TODO: not used: @params $_GET['www_files'] - array of file names
  5. */
  6. error_reporting(E_ALL & ~E_NOTICE);
  7. define('DS', DIRECTORY_SEPARATOR);
  8. define('APP_PATH_ROOT', dirname(__FILE__));
  9. define('APP_PATH_CONFIG', APP_PATH_ROOT . DS . 'config');
  10. //session_save_path("../session") ;
  11. session_start();
  12. date_default_timezone_set('Europe/Warsaw');// PHP 5 >= 5.1.0 required by date functions
  13. if (file_exists(".config.php")) include(".config.php");
  14. SEF('DEBUG_S');
  15. require_once dirname(__FILE__) . '/' . 'se-lib' . '/' . 'Lib.php';
  16. Lib::loadClass('V');
  17. Lib::loadClass('User');
  18. Lib::loadClass('Config');
  19. Lib::loadClass('App');
  20. Lib::loadClass('DB');
  21. Lib::loadClass('S');
  22. // DBG:
  23. ini_set('error_reporting', E_ALL ^ E_NOTICE);
  24. //ini_set('error_reporting', E_ALL);
  25. error_reporting(E_ALL ^ E_NOTICE);
  26. //error_reporting(E_ALL);
  27. ini_set('display_errors', TRUE);
  28. $sync_project_file_command = '/home/plabudda/sync-projekty-files-to-www.sh';
  29. $sync_projekty_tmp_folder = '/home/plabudda/sync-projekty-files-to-www';
  30. {// fetch active projects
  31. $sql_select = array();
  32. $sql_where_and = array();
  33. $sql_select []= "p.`ID`";
  34. $sql_select []= "p.`M_DIST_TYPE`";
  35. $sql_select []= "p.`M_DIST_DESC`";
  36. //$sql_select []= "p.``";
  37. $sql_project_types = array();
  38. $sql_project_types []= "'WWW_PRACA'";
  39. $sql_project_types []= "'WWW_DOKUMENTY'";
  40. $sql_project_types []= "'WWW_AKTUALNOSCI'";
  41. $sql_project_types []= "'WWW_AKTUALNOSCI_TV'";
  42. $sql_where_and []= "p.`M_DIST_TYPE` in (".implode(",", $sql_project_types).")";
  43. $sql_where_and []= "p.`A_STATUS` in ('NORMAL','WAITING')";
  44. $projekt_id = V::get('projekt_id', 0, $_REQUEST, 'int');
  45. if ($projekt_id > 0) {
  46. $sql_where_and []= "p.`ID`='".$projekt_id."'";
  47. }
  48. $sql_select = implode(", ", $sql_select);
  49. $sql_where = implode("\n and ", $sql_where_and);
  50. $sql = "select $sql_select
  51. from `IN7_MK_BAZA_DYSTRYBUCJI` as p
  52. where
  53. $sql_where
  54. ";
  55. $projekty = array();
  56. $res = DB::query( $sql );
  57. while ( $r = DB::fetch( $res ) ) {
  58. $projekty [$r->ID] = $r;
  59. }
  60. if ($projekt_id > 0) {
  61. if (!array_key_exists($projekt_id, $projekty)) {
  62. die('Error: Projekt nie istnieje lub nie ma statusu WAITING lub NORMAL.');
  63. }
  64. $r =& $projekty[$projekt_id];
  65. $files = PROJEKT__find_folder( $r->ID );
  66. if (in_array($r->M_DIST_TYPE, array('WWW_AKTUALNOSCI', 'WWW_AKTUALNOSCI_TV'))) {
  67. $files_add = PROJEKT__find_folder( $r->ID, 'ZDJECIE', array('jpg','png','gif') );
  68. // TODO: create image files - convert to specified format: 700x700, 150x120
  69. // name, path, www
  70. //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">files_add: ';print_r($files_add);echo'</pre>';
  71. foreach ($files_add as $f) {
  72. $tmp_folder_path = $sync_projekty_tmp_folder.'/'.$r->ID;
  73. if (!is_dir($tmp_folder_path)) {
  74. mkdir($tmp_folder_path);
  75. }
  76. Lib::loadClass('DB_Image');
  77. $img_ext = end( explode('.', $f['name']) );
  78. if ($img_ext == 'jpg') $im = imagecreatefromjpeg($f['path']);
  79. else if ($img_ext == 'png') $im = imagecreatefrompng($f['path']);
  80. else if ($img_ext == 'gif') $im = imagecreatefromgif($f['path']);
  81. $sizes_all = array( array('700', '700'), array('150', '120') );
  82. foreach ($sizes_all as $sizes) {
  83. $tmp_name = substr($f['name'], 0, -4).'.'.$sizes[0].'x'.$sizes[1].'.'.$img_ext;
  84. $tmp_path = $tmp_folder_path.'/'.$tmp_name;
  85. $files []= array('name'=>$tmp_name,'path'=>$tmp_path);
  86. $im = DB_Image::resize_image_from_data($im, $sizes[0], $sizes[1]);
  87. if ($img_ext == 'jpg') imagejpeg($im, $tmp_path);
  88. else if ($img_ext == 'png') imagepng($im, $tmp_path);
  89. else if ($img_ext == 'gif') imagegif($im, $tmp_path);
  90. }//end foreach
  91. }//end foreach
  92. }
  93. if (empty($files)) {
  94. die('Error: Nie odnaleziono plikow Projektu.');
  95. }
  96. foreach ($files as $f) {
  97. echo "file:".$f['name']." ";
  98. // string exec ( string $command [, array &$output [, int &$return_var ]] )
  99. $cmd = $sync_project_file_command." ".$r->ID." ".$f['path'];
  100. $output = array();
  101. $ret_val = 0;
  102. exec($cmd, $output, $ret_val);
  103. $completed = false;
  104. if ($ret_val == 0) {
  105. foreach ($output as $out_line) {
  106. if (strpos($out_line, 'Transfer complete') !== false) {
  107. $completed = true;
  108. }
  109. }//end foreach
  110. }
  111. if ($completed) {
  112. echo "Plik skopiowano.\n";
  113. } else {
  114. echo "Error: prawdopodobnie nie udalo sie skopiowac pliku.\n";
  115. foreach ($output as $out_line) {
  116. echo $out_line."\n";
  117. }//end foreach
  118. }
  119. }//end foreach
  120. }
  121. else {
  122. echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">'."<b>projekty:</b>\n";
  123. //print_r($projekty);
  124. foreach ($projekty as $k_id => $r) {
  125. echo " projekt ".$r->ID.":\n";
  126. if (in_array($r->M_DIST_TYPE, array('WWW_AKTUALNOSCI', 'WWW_AKTUALNOSCI_TV'))) {
  127. $files = PROJEKT__find_folder( $r->ID, 'ZDJECIE', 'jpg' );
  128. foreach ($files as $f) {
  129. echo " file: ".$f['path']."\n";
  130. }//end foreach
  131. }
  132. $files = PROJEKT__find_folder( $r->ID, $r->M_DIST_TYPE );
  133. foreach ($files as $f) {
  134. echo " file: ".$f['path']."\n";
  135. }//end foreach
  136. }//end foreach
  137. echo'</pre>';
  138. }
  139. }// fetch active projects
  140. // TODO: @sowa: Call to undefined function ftp_connect()
  141. if(0){// fetch current file list on www
  142. $ftp_server = 'www.biall.net.pl';
  143. $ftp_user = 'biallnet';
  144. $ftp_pass = '100noga';
  145. $ftp_conn = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
  146. if (ftp_login($ftp_conn, $ftp_user, $ftp_pass)) {
  147. ftp_chdir($ftp_conn, 'public_html/PROJEKTY');
  148. }
  149. $list = ftp_nlist($ftp_conn, 'public_html/PROJEKTY');
  150. echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">';
  151. echo "<b>Pliki na www:</b>\n";
  152. if (empty($list)) {
  153. echo'brak plikow';
  154. } else {
  155. foreach ($list as $f) {
  156. echo 'file: '.$f."\n";
  157. }//end foreach
  158. }
  159. echo'</pre>';
  160. }// fetch current file list on www
  161. function PROJEKT__find_folder( $project_id, $type = '', $suffix = 'pdf' ) {
  162. global $FOLDERS;
  163. $ret = array();
  164. //global $FOLDERS;
  165. // @see .config:$FOLDERS[IN7_MK_BAZA_DYSTRYBUCJI_COLUMN]="/home/samba/PROJEKTY";
  166. $dir_projekty = $FOLDERS['IN7_MK_BAZA_DYSTRYBUCJI_COLUMN'];
  167. //$www_projekty = "PROJEKTY/";
  168. echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">IN7_MK_BAZA_DYSTRYBUCJI_COLUMN (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($FOLDERS['IN7_MK_BAZA_DYSTRYBUCJI_COLUMN']);echo'</pre>';
  169. $pattern = $dir_projekty.'/'.$project_id.'.*';
  170. $path_projekt = glob( $pattern , GLOB_ONLYDIR );// array glob(pattern [, flags])
  171. if (empty($path_projekt)) {
  172. return $ret;
  173. }
  174. $path_projekt = reset( $path_projekt );
  175. $dir_projekt = end( explode('/', $path_projekt) );
  176. if (is_array($suffix)) {
  177. $files_projekt_add = array();
  178. foreach ($suffix as $add_suffix) {
  179. $files_oferty_pattern = $path_projekt.'/*.'.$add_suffix;
  180. if ($type) $files_oferty_pattern = $path_projekt.'/*.'.$type.'.*.'.$add_suffix;
  181. $files_projekt_add = glob( $files_oferty_pattern );// array glob(pattern [, flags])
  182. foreach ($files_projekt_add as $f) {
  183. $files_projekt []= $f;
  184. }//end foreach
  185. }//end foreach
  186. } else {
  187. $files_oferty_pattern = $path_projekt.'/*.'.$suffix;
  188. if ($type) $files_oferty_pattern = $path_projekt.'/*.'.$type.'.*.'.$suffix;
  189. $files_projekt = glob( $files_oferty_pattern );// array glob(pattern [, flags])
  190. }
  191. foreach ($files_projekt as $v) {
  192. $f_name = end( explode('/', $v) );
  193. // TODO: f_www link do akryptu zmieniajacego nazwe pliku na nazwe projektu
  194. //$f_www = 'http://'.$host.'/'.$www_projekty.'/'.$dir_projekt.'/'.$f_name;
  195. //$f_www = 'http://'.$host.'/index.php?action=project_file&project='.$project_id.'&f='.$f_name;
  196. $f_www = '';
  197. $ret []= array('name'=>$f_name, 'path'=>$v, 'www'=>$f_www);
  198. }//end foreach
  199. return $ret;
  200. }