_column = $column; $this->_record = $record; $this->BAD_FILE_SIGNS = array('.', ' ', ',', '/', 'ą', 'ć', 'ę', 'ł', 'ń', 'ó', 'ś', 'ź', 'ż', 'Ą', 'Ć', 'Ę', 'Ł', 'Ń', 'Ó', 'Ś', 'Ź', 'Ż'); $this->OK_FILE_SIGNS = array('-', '_', '--', '---', 'a', 'c', 'e', 'l', 'n', 'o', 's', 'z', 'z', 'A', 'C', 'E', 'L', 'N', 'O', 'S', 'Z', 'Z'); } public function setConfig($conf, &$errMsg = '') { $DBG = (V::get('DBG_F', 0, $_GET, 'int') > 0); $this->_cnf['LOCAL_PATH'] = V::get('mount_point', null, $conf); $this->_cnf['PATH'] = V::get('share_point', null, $conf); $this->_cnf['WWW'] = V::get('www_share_point', null, $conf); $this->_cnf['LOOKAT_FOLDER'] = array(); $this->_cnf['LOOKAT_FILES'] = array();// LOOKAT_FILES_LOOK_GLOB $this->_cnf['DEST_FOLDER'] = array(); foreach ($conf as $key => $val) { if (substr($key, 0, 14) == 'LOOKAT_FOLDER_') { $key = substr($key, 14); $this->_cnf['LOOKAT_FOLDER'][$key] = $val; } else if (substr($key, 0, 12) == 'DEST_FOLDER_') { $key = substr($key, 12); $this->_cnf['DEST_FOLDER'][$key] = $val; } else if (substr($key, 0, 13) == 'LOOKAT_FILES_') { $key = substr($key, 13); $this->_cnf['LOOKAT_FILES'][$key] = $val; } } if($DBG){ echo'
this->_conf (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($this->_cnf);echo''."\n"; }
foreach ($this->_cnf as $key => $val) {
if ($key == 'LOOKAT_FILES') {
continue;
}
if ($val == null) {
$errMsg = "Brak wartości dla {$key}.";
return false;
}
}
if (!is_writable($this->_cnf['LOCAL_PATH'])) {
$errMsg = "Error: brak uprawnień do zapisu w głównym katalogu!";
return false;
}
return true;
}
private function setLastUploadedFile($lastUploadedFile) {
$this->_lastUploadedFile = $lastUploadedFile;
}
public function getLastUploadedFile() {
return $this->_lastUploadedFile;
}
public function getFolderWeb() {
return $this->_cnf['WWW'];
}
public function getLocalPath() {
return $this->_cnf['LOCAL_PATH'];
}
function findFolder() {
$DBG = (V::get('DBG_F', 0, $_GET, 'int') > 0);
if (!empty($this->_foundFolders)) {
return $this->_foundFolders;
}
$this->_foundFolders = array();
if (empty($this->_cnf['LOOKAT_FOLDER'])) {
return $this->_foundFolders;
}
$look = new stdClass();
//$look->regex = V::get('LOOK_REGEX', '', $this->_cnf['LOOKAT_FOLDER']);
$look->glob = V::get('LOOK_GLOB', '', $this->_cnf['LOOKAT_FOLDER']);
$look->varname = array();
$look->varname['VARNAME'] = V::get('VARNAME', '', $this->_cnf['LOOKAT_FOLDER']);
$look->varname['VARNAME1'] = V::get('VARNAME1', '', $this->_cnf['LOOKAT_FOLDER']);
$look->varname['VARNAME2'] = V::get('VARNAME2', '', $this->_cnf['LOOKAT_FOLDER']);
$look->varname['VARNAME3'] = V::get('VARNAME3', '', $this->_cnf['LOOKAT_FOLDER']);
if($DBG){ echo'$look (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($look);echo''; }
foreach ($look->varname as $kName => $vVar) {
if ($vVar) {
if (isset($this->_record->{$vVar})) {
$vVar = $this->_record->{$vVar};
}
$look->glob = str_replace("<{$kName}>", $vVar, $look->glob);
}
}
if($DBG){ echo'look->glob (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($look->glob);echo''."\n"; }
$foundFolders = glob("{$this->_cnf['LOCAL_PATH']}/{$look->glob}", GLOB_ONLYDIR & GLOB_NOSORT);
if (false == $foundFolders) {
return false;
} else {
foreach ($foundFolders as $vFolder) {
$this->_foundFolders []= end(explode('/', $vFolder));
}
}
if($DBG){ echo'this->_foundFolders (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($this->_foundFolders);echo''."\n"; }
return $this->_foundFolders;
}
function cleanFilenamePart($part) {
if ($part == '') return '_';
$part = str_replace($this->BAD_FILE_SIGNS, $this->OK_FILE_SIGNS, trim($part));
if (strlen($part) > 20) $part = substr($part, 0, 20) . '_';
$part = preg_replace('/[^0-9a-zA-Z\-_]/', '_', $part);
return $part;
}
/**
* TODO:
*/
function generateFolderName() {
$DBG = false;
$folderParts = array();
$look = new stdClass();
$look->format = V::get('FORMAT', '', $this->_cnf['DEST_FOLDER']);
$look->varname = array();
$look->varname['VARNAME'] = V::get('VARNAME', '', $this->_cnf['DEST_FOLDER']);
$look->varname['VARNAME1'] = V::get('VARNAME1', '', $this->_cnf['DEST_FOLDER']);
$look->varname['VARNAME2'] = V::get('VARNAME2', '', $this->_cnf['DEST_FOLDER']);
$look->varname['VARNAME3'] = V::get('VARNAME3', '', $this->_cnf['DEST_FOLDER']);
if($DBG){ echo'$look (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($look);echo''; }
foreach ($look->varname as $kName => $vVar) {
if (!empty($vVar)) {
if (isset($this->_record->{$vVar})) {
if ($vVar == 'M_DIST_DESC') {
$badPrefixes = array();
$badPrefixes[] = 'Sprawy związane z ';
$badPrefixes[] = 'Sprawy związane ze ';
$badPrefixes[] = 'Sprawy zwiazane z ';
$badPrefixes[] = 'Sprawy zwiazane ze ';
$badPrefixes[] = 'Sprawy prowadzone przez ';
$badPrefixes[] = 'Sprawy ';
foreach ($badPrefixes as $vBadPrefix) {
$prefixLen = strlen($vBadPrefix);
if (substr($this->_record->{$vVar}, 0, $prefixLen) == $vBadPrefix) {
$this->_record->{$vVar} = substr($this->_record->{$vVar}, $prefixLen);
break;
}
}
}
$part = $this->cleanFilenamePart($this->_record->{$vVar});
}
if (empty($part)) {
$part = '_';
}
$look->format = str_replace("<{$kName}>", $part, $look->format);
}
}
if (false !== strpos('<', $look->format) || false !== strpos('>', $look->format)) {
return false;// TODO: blad konfiguracji - brakuje definicji zmiennych
}
if($DBG){ echo'$look (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($look);echo''; }
return $look->format;
}
function generateFolderName__OLD() {
$dir_tree = array();
foreach ($this->_cnf['DEST_FOLDER'] as $k => $v_fldr) {
$look = new stdClass();
$look->regex = V::get('LOOK_REGEX', '', $v_fldr);
$look->varname = array();
foreach ($v_fldr['VARNAME'] as $k_var_ind => $v_look) {
if (false !== strpos($v_look, '$_SESSION[$thiss->DETECT_TABLE_COLUMN][EDITRECORD][')) {
$v_look = substr($v_look, strlen('$_SESSION[$thiss->DETECT_TABLE_COLUMN][EDITRECORD]['), -1);
$v_look = V::get($v_look, '', $_SESSION[$this->_column]['EDITRECORD']);
}
$v_look = (empty($v_look))? '_' : $this->cleanFilenamePart($v_look);
$look->regex = str_replace('' . "Error: Blad konfiguracji \$FOLDERS[{$this->_column}_DEST_FOLDER]" . '
'); } else { $dir_tree []= $look->regex; } } return implode('/', $dir_tree); } function getDestFolder($show_if_not_found = false) { if (empty($this->_foundFolders)) { if ($show_if_not_found) { return $this->generateFolderName(); } else { return null; } } else { return reset($this->_foundFolders); } } function getDestPathShare($show_if_not_found = false) { $dest_dir = $this->getDestFolder($show_if_not_found); if (!$dest_dir) { return null; } return $this->_cnf['PATH'] . '/' . $dest_dir; } function getDestLocalPath($show_if_not_found = false) { $dest_dir = $this->getDestFolder($show_if_not_found); if (!$dest_dir) { return null; } return "{$this->_cnf['LOCAL_PATH']}/{$dest_dir}"; } function getFoundFolders() { return $this->_foundFolders; } function getFilesFromFolder($folder, $fileNamesOnly = false, $recursive = false) { $DBG = (V::get('DBG_F', 0, $_GET, 'int') > 0); if (empty($folder)) { return false; } $look = new stdClass(); if ($this->_cnf['LOOKAT_FILES']) { //$look->regex = V::get('LOOK_REGEX', '', $this->_cnf['LOOKAT_FOLDER']); $look->glob = V::get('LOOK_GLOB', '', $this->_cnf['LOOKAT_FILES']); $look->varname = array(); $look->varname['VARNAME'] = V::get('VARNAME', '', $this->_cnf['LOOKAT_FILES']); $look->varname['VARNAME1'] = V::get('VARNAME1', '', $this->_cnf['LOOKAT_FILES']); $look->varname['VARNAME2'] = V::get('VARNAME2', '', $this->_cnf['LOOKAT_FILES']); $look->varname['VARNAME3'] = V::get('VARNAME3', '', $this->_cnf['LOOKAT_FILES']); if($DBG){ echo'$look (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($look);echo''; }
foreach ($look->varname as $kName => $vVar) {
if ($vVar) {
if (isset($this->_record->{$vVar})) {
$vVar = $this->_record->{$vVar};
}
$look->glob = str_replace("<{$kName}>", $vVar, $look->glob);
}
}
} else {
$look->glob = "*.*";
}
$ret = glob("{$this->_cnf['LOCAL_PATH']}/{$folder}/{$look->glob}", GLOB_NOSORT);
if($DBG){ echo'glob('."{$this->_cnf['LOCAL_PATH']}/{$folder}/*.*".') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($ret);echo''; }
if ($recursive) {
$retSubFolderFiles = glob("{$this->_cnf['LOCAL_PATH']}/{$folder}/*/*.*", GLOB_NOSORT);
if ($retSubFolderFiles !== false) {
foreach ($retSubFolderFiles as $vFile) {
if ($fileNamesOnly == true) {
$ret[] = str_replace("{$this->_cnf['LOCAL_PATH']}/{$folder}/", '', $vFile);
} else {
$ret[] = $vFile;
}
}
}
}
if (false === $ret) {
return false;
} else {
foreach ($ret as $k => $vFile) {
if ($fileNamesOnly == true) {
$ret[$k] = str_replace("{$this->_cnf['LOCAL_PATH']}/{$folder}/", '', $vFile);
} else {
$ret[$k] = $vFile;
}
}
}
return $ret;
}
function getFilesFromSkany($skanyConf, $fileNamesOnly = false) {
$DBG = (V::get('DBG_F', 0, $_GET, 'int') > 0);
if (empty($skanyConf)) {
return false;
}
$skanyLocalPath = V::get('mount_point', '', $skanyConf);
if (empty($skanyLocalPath)) {
return false;
}
$ret = glob("{$skanyLocalPath}/*.*", GLOB_NOSORT);
if($DBG){ echo'glob('."{$this->_cnf['LOCAL_PATH']}/{$folder}/*.*".') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($ret);echo''; }
if (false === $ret) {
return false;
} else {
foreach ($ret as $k => $vFile) {
if ($fileNamesOnly == true) {
$ret[$k] = end(explode('/', $vFile));
} else {
$ret[$k] = $vFile;
}
}
}
return $ret;
}
function showFoundFolders() {// TODO: RMME not used
$cnt_dirs = count($this->_foundFolders);
if ($cnt_dirs > 1) {
echo '' . "Odnaleziono {$cnt_dirs} folderów, przenieś pliki do jednego folderu i usuń błędnie nazwane." . '
'; } else if ($cnt_dirs == 0) { echo '' . "Nie odnaleziono folderu - zostanie utworzony automatycznie podczas dodawania pliku." . '
'; } else { echo '' . "Odnaleziono odpowiedni folder: " . '' . $this->getDestFolder() . '' . '
| ' . "Nazwa" . ' | '; echo '' . "Rozmiar" . ' | '; echo '' . "Typ" . ' | '; echo '
|---|---|---|
| ' . '' . "Folder jest pusty" . '' . ' | ||
| ' . $v_file_name . ' | '; echo '' . filesize($v_file) . " B" . ' | '; echo '' . (is_dir($v_file)? "Folder" : "Plik") . " " . '' . "(Web)" . '' . ' | '; echo '
Error: Wystąpił błąd podczas wgrywania pliku: ' . $_FILES['M_DIST_FILES_NAME']['error'] . '
'; return; } echo '' . "Error: Brak uprawnień do zapisu (W) dla pola M_DIST_FILES." . '
'; // return; //} if (!is_uploaded_file($_FILES['M_DIST_FILES_NAME']['tmp_name'])) { echo '' . "Error: Wystąpił błąd podczas wgrywania pliku." . '
'; return; } $IN7_FILERENAME = $this->renameFile($_POST, $_FILES['M_DIST_FILES_NAME']['name'], $this->getDestLocalPath(true)); if ($IN7_FILERENAME == false) { return false; } if (!empty($IN7_FILERENAME['ERROR'])) { echo "' . "Error: Brak uprawnień do zapisu (W) dla pola M_DIST_FILES." . '
'; // return; //} if (!is_uploaded_file($_FILES['M_DIST_FILES_NAME']['tmp_name'])) { $errorMsg = ' Wystąpił błąd podczas wgrywania pliku'; return; } $renameErrorMsg = ''; $IN7_FILERENAME = $this->renameFile($_POST, $_FILES['M_DIST_FILES_NAME']['name'], $this->getDestLocalPath(true), $renameErrorMsg); if ($IN7_FILERENAME == false) { $errorMsg = "Wystąpił błąd podczas zmiany nazwy wgrywanego pliku: {$renameErrorMsg}."; return false; } if (!empty($IN7_FILERENAME['ERROR'])) { $errorMsg = "Wystąpiły błądy podczas zmiany nazwy wgrywanego pliku: '{$IN7_FILERENAME['ERROR']}'"; } else if (!empty($IN7_FILERENAME['DST_FILE_NAME']) && !empty($IN7_FILERENAME['M_DIST_FILES_DEST_FOLDER'])) { $newFilePath = "{$IN7_FILERENAME['M_DIST_FILES_DEST_FOLDER']}/{$IN7_FILERENAME['DST_FILE_NAME']}"; if (!move_uploaded_file($_FILES['M_DIST_FILES_NAME']['tmp_name'], $newFilePath)) { $errorMsg = "plik nie został przeniesiony do odpowiedniego katalogu"; } else { if (file_exists($newFilePath)) { $this->setLastUploadedFile($newFilePath); return true; } else { $errorMsg = "PLIK NIE ZOSTAL WGRANY BLAD/ERROR"; } } } return false; } function tryMoveFromScanAjax(&$errorMsg) { $destFolderPath = $this->getDestLocalPath(true); $skanFileName = V::get('SCANS_COLUMN_ADD', '', $_POST); if (empty($skanFileName)) { $errorMsg = 'Nie wybrano pliku ze skanów'; return false; } Lib::loadClass('FoldersConfig'); $skanyConf = FoldersConfig::getAll('SCANS_COLUMN'); $skanyLocalPath = V::get('mount_point', '', $skanyConf); $skanyFiles = $this->getFilesFromSkany($skanyConf, true); if (!in_array($skanFileName, $skanyFiles)) { $errorMsg = 'Wybrany plik nie istnieje w skanach'; return false; } $renameErrorMsg = ''; $IN7_FILERENAME = $this->renameFile($_POST, $skanFileName, $destFolderPath, $renameErrorMsg); if ($IN7_FILERENAME == false) { $errorMsg = "Wystąpił błąd podczas zmiany nazwy wgrywanego pliku: {$renameErrorMsg}."; return false; } if (!empty($IN7_FILERENAME['ERROR'])) { $errorMsg = "Wystąpiły błądy podczas zmiany nazwy wgrywanego pliku: '{$IN7_FILERENAME['ERROR']}'"; } else if (!empty($IN7_FILERENAME['DST_FILE_NAME']) && !empty($IN7_FILERENAME['M_DIST_FILES_DEST_FOLDER'])) { $newFilePath = "{$IN7_FILERENAME['M_DIST_FILES_DEST_FOLDER']}/{$IN7_FILERENAME['DST_FILE_NAME']}"; if (!copy("{$skanyLocalPath}/{$skanFileName}", "{$newFilePath}")) { $errorMsg = "Plik nie został przeniesiony do odpowiedniego katalogu"; } else { unlink("{$skanyLocalPath}/{$skanFileName}"); if (file_exists("{$newFilePath}")) { $this->setLastUploadedFile($newFilePath); return true; } else { $errorMsg = "Plik nie został przenisiony ze skanów"; } } } return false; } /** * TODO: obecnie działa tylko wersja tryMoveFromScanAjax */ function tryMoveFromScan() { return false; $dest_folder = $this->getDestLocalPath(true); foreach ($_POST as $POST_I => $POST_V) { if (false === strpos($POST_I, 'SCANS_COLUMN_ADD__')) continue; echo "