Changeset 21757 for branches/version-2_12-dev/data
- Timestamp:
- 2012/04/17 17:43:10 (12 years ago)
- Location:
- branches/version-2_12-dev/data/class
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_12-dev/data/class/helper/SC_Helper_CSV.php
r21686 r21757 248 248 $res = true; 249 249 } else { 250 $res = SC_ Utils_Ex::sfReadFile($tmp_filename);250 $res = SC_Helper_FileManager_Ex::sfReadFile($tmp_filename); 251 251 } 252 252 -
branches/version-2_12-dev/data/class/helper/SC_Helper_FileManager.php
r21755 r21757 121 121 122 122 /** 123 * 指定したディレクトリ又はファイルを削除する.124 *125 * @param string $dir 削除するディレクトリ又はファイル126 * @return void127 */128 function sfDeleteDir($dir) {129 $arrResult = array();130 if (file_exists($dir)) {131 // ディレクトリかチェック132 if (is_dir($dir)) {133 if ($handle = opendir("$dir")) {134 $cnt = 0;135 while (false !== ($item = readdir($handle))) {136 if ($item != '.' && $item != '..') {137 if (is_dir("$dir/$item")) {138 $this->sfDeleteDir("$dir/$item");139 } else {140 $arrResult[$cnt]['result'] = @unlink("$dir/$item");141 $arrResult[$cnt]['file_name'] = "$dir/$item";142 }143 }144 $cnt++;145 }146 }147 closedir($handle);148 $arrResult[$cnt]['result'] = @rmdir($dir);149 $arrResult[$cnt]['file_name'] = "$dir/$item";150 } else {151 // ファイル削除152 $arrResult[0]['result'] = @unlink("$dir");153 $arrResult[0]['file_name'] = "$dir";154 }155 }156 157 return $arrResult;158 }159 160 /**161 123 * ツリー生成用配列取得(javascriptに渡す用). 162 124 * … … 373 335 $debug_message = $dir . ' から ' . $dlFileName . " を作成します...\n"; 374 336 // ファイル一覧取得 375 $arrFileHash = SC_ Utils_Ex::sfGetFileList($dir);337 $arrFileHash = SC_Helper_FileManager_Ex::sfGetFileList($dir); 376 338 foreach ($arrFileHash as $val) { 377 339 $arrFileList[] = $val['file_name']; … … 419 381 420 382 // フォルダ削除 421 SC_ Utils_Ex::sfDelFile($dir . '/' . $unpacking_name);383 SC_Helper_FileManager_Ex::deleteFile($dir . '/' . $unpacking_name); 422 384 // 圧縮ファイル削除 423 385 unlink($path); 424 386 return $result; 425 387 } 388 389 /** 390 * 指定されたパスの配下を再帰的に削除. 391 * 392 * @param string $path 削除対象のディレクトリまたはファイルのパス 393 * @param boolean $del_myself $pathそのものを削除するか. true なら削除する. 394 * @return void 395 */ 396 function deleteFile($path, $del_myself = true) { 397 $flg = false; 398 // 対象が存在するかを検証. 399 if (file_exists($path) === false) { 400 GC_Utils_Ex::gfPrintLog($path . ' が存在しません.'); 401 } elseif (is_dir($path)) { 402 // ディレクトリが指定された場合 403 $handle = opendir($path); 404 if (!$handle) { 405 GC_Utils_Ex::gfPrintLog($path . ' が開けませんでした.'); 406 } 407 while (($item = readdir($handle)) !== false) { 408 if ($item === '.' || $item === '..') continue; 409 $cur_path = $path . '/' . $item; 410 if (is_dir($cur_path)) { 411 // ディレクトリの場合、再帰処理 412 $flg = SC_Helper_FileManager_Ex::deleteFile($cur_path); 413 } else { 414 // ファイルの場合、unlink 415 $flg = @unlink($cur_path); 416 } 417 } 418 closedir($handle); 419 // ディレクトリを削除 420 GC_Utils_Ex::gfPrintLog($path . ' を削除します.'); 421 if ($del_myself) { 422 $flg = @rmdir($path); 423 } 424 } else { 425 // ファイルが指定された場合. 426 GC_Utils_Ex::gfPrintLog($path . ' を削除します.'); 427 $flg = @unlink($path); 428 } 429 return $flg; 430 } 426 431 } -
branches/version-2_12-dev/data/class/pages/admin/contents/LC_Page_Admin_Contents_FileManager.php
r21755 r21757 146 146 $this->arrErr = $objFormParam->checkError(); 147 147 if (SC_Utils_Ex::isBlank($this->arrErr)) { 148 $objFileManager-> sfDeleteDir($objFormParam->getValue('select_file'));148 $objFileManager->deleteFile($objFormParam->getValue('select_file')); 149 149 } 150 150 break; -
branches/version-2_12-dev/data/class/pages/admin/design/LC_Page_Admin_Design_Template.php
r21743 r21757 233 233 // テンプレート削除 234 234 $templates_dir = SMARTY_TEMPLATES_REALDIR . $template_code. '/'; 235 if (SC_ Utils_Ex::sfDelFile($templates_dir) === false) {235 if (SC_Helper_FileManager_Ex::deleteFile($templates_dir) === false) { 236 236 $this->arrErr['err'] = $error; 237 237 $objQuery->rollback(); … … 240 240 // ユーザーデータ削除 241 241 $user_dir = USER_TEMPLATE_REALDIR. $template_code. '/'; 242 if (SC_ Utils_Ex::sfDelFile($user_dir) === false) {242 if (SC_Helper_FileManager_Ex::deleteFile($user_dir) === false) { 243 243 $this->arrErr['err'] = $error; 244 244 $objQuery->rollback(); … … 248 248 // コンパイル削除 249 249 $templates_c_dir = DATA_REALDIR. 'Smarty/templates_c/'. $template_code. '/'; 250 if (SC_ Utils_Ex::sfDelFile($templates_c_dir) === false) {250 if (SC_Helper_FileManager_Ex::deleteFile($templates_c_dir) === false) { 251 251 $this->arrErr['err'] = $error; 252 252 $objQuery->rollback(); -
branches/version-2_12-dev/data/class/pages/admin/system/LC_Page_Admin_System_Bkup.php
r21743 r21757 110 110 $work_dir = $this->bkup_dir . $arrData['bkup_name'] . '/'; 111 111 // バックアップデータの事前削除 112 SC_ Utils_Ex::sfDelFile($work_dir);112 SC_Helper_FileManager_Ex::deleteFile($work_dir); 113 113 // バックアップファイル作成 114 114 $res = $this->lfCreateBkupData($arrData['bkup_name'], $work_dir); 115 115 // バックアップデータの事後削除 116 SC_ Utils_Ex::sfDelFile($work_dir);116 SC_Helper_FileManager_Ex::deleteFile($work_dir); 117 117 118 118 $arrErrTmp[3] = array(); -
branches/version-2_12-dev/data/class/pages/admin/system/LC_Page_Admin_System_Plugin.php
r21743 r21757 399 399 400 400 // 不要なファイルの削除 401 SC_ Utils_EX::deleteFile(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, false);401 SC_Helper_FileManager_EX::deleteFile(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, false); 402 402 return $arrErr; 403 403 } … … 413 413 function rollBack($temp_dir, $plugin_id = '', $plugin_html_dir ='') { 414 414 // 一時ディレクトリを削除. 415 SC_ Utils_Ex::deleteFile($temp_dir, false);415 SC_Helper_FileManager_Ex::deleteFile($temp_dir, false); 416 416 // DBからプラグイン情報を削除 417 417 if (empty($plugin_id) === false) { … … 420 420 // htmlディレクトリを削除 421 421 if (empty($plugin_html_dir) === false) { 422 SC_ Utils_Ex::deleteFile($plugin_html_dir, true);422 SC_Helper_FileManager_Ex::deleteFile($plugin_html_dir, true); 423 423 } 424 424 } … … 512 512 513 513 // 保存ディレクトリの削除. 514 SC_ Utils_Ex::deleteFile(DOWNLOADS_TEMP_PLUGIN_UPDATE_DIR, false);514 SC_Helper_FileManager_Ex::deleteFile(DOWNLOADS_TEMP_PLUGIN_UPDATE_DIR, false); 515 515 516 516 return $arrErr; … … 767 767 SC_Plugin_Util_Ex::deletePluginByPluginId($plugin_id); 768 768 769 if (SC_ Utils_Ex::deleteFile($this->getPluginDir($plugin_code)) === false) {769 if (SC_Helper_FileManager_Ex::deleteFile($this->getPluginDir($plugin_code)) === false) { 770 770 // TODO エラー処理 771 771 } 772 772 773 if (SC_ Utils_Ex::deleteFile($this->getHtmlPluginDir($plugin_code)) === false) {773 if (SC_Helper_FileManager_Ex::deleteFile($this->getHtmlPluginDir($plugin_code)) === false) { 774 774 // TODO エラー処理 775 775 } -
branches/version-2_12-dev/data/class/util/SC_Utils.php
r21755 r21757 1150 1150 } 1151 1151 1152 // 指定したフォルダ内のファイルを全て削除する1153 function sfDelFile($dir) {1154 if (file_exists($dir)) {1155 $dh = opendir($dir);1156 // フォルダ内のファイルを削除1157 while ($file = readdir($dh)) {1158 if ($file == '.' or $file == '..') continue;1159 $del_file = $dir . '/' . $file;1160 if (is_file($del_file)) {1161 $ret = unlink($dir . '/' . $file);1162 } else if (is_dir($del_file)) {1163 $ret = SC_Utils_Ex::sfDelFile($del_file);1164 }1165 1166 if (!$ret) {1167 return $ret;1168 }1169 }1170 1171 // 閉じる1172 closedir($dh);1173 1174 // フォルダを削除1175 return rmdir($dir);1176 }1177 }1178 1179 1152 /* 1180 1153 * 関数名:sfWriteFile … … 1309 1282 trigger_error('前方互換用メソッドが使用されました。', E_USER_WARNING); 1310 1283 GC_Utils_Ex::printXMLDeclaration(); 1311 }1312 1313 /*1314 * 関数名:sfGetFileList()1315 * 説明 :指定パス配下のディレクトリ取得1316 * 引数1 :取得するディレクトリパス1317 */1318 function sfGetFileList($dir) {1319 $arrFileList = array();1320 $arrDirList = array();1321 1322 if (is_dir($dir)) {1323 if ($dh = opendir($dir)) {1324 $cnt = 0;1325 // 行末の/を取り除く1326 while (($file = readdir($dh)) !== false) $arrDir[] = $file;1327 $dir = rtrim($dir, '/');1328 // アルファベットと数字でソート1329 natcasesort($arrDir);1330 foreach ($arrDir as $file) {1331 // ./ と ../を除くファイルのみを取得1332 if ($file != '.' && $file != '..') {1333 1334 $path = $dir.'/'.$file;1335 // SELECT内の見た目を整えるため指定文字数で切る1336 $file_name = SC_Utils_Ex::sfCutString($file, FILE_NAME_LEN);1337 $file_size = SC_Utils_Ex::sfCutString(SC_Utils_Ex::sfGetDirSize($path), FILE_NAME_LEN);1338 $file_time = date('Y/m/d', filemtime($path));1339 1340 // ディレクトリとファイルで格納配列を変える1341 if (is_dir($path)) {1342 $arrDirList[$cnt]['file_name'] = $file;1343 $arrDirList[$cnt]['file_path'] = $path;1344 $arrDirList[$cnt]['file_size'] = $file_size;1345 $arrDirList[$cnt]['file_time'] = $file_time;1346 $arrDirList[$cnt]['is_dir'] = true;1347 } else {1348 $arrFileList[$cnt]['file_name'] = $file;1349 $arrFileList[$cnt]['file_path'] = $path;1350 $arrFileList[$cnt]['file_size'] = $file_size;1351 $arrFileList[$cnt]['file_time'] = $file_time;1352 $arrFileList[$cnt]['is_dir'] = false;1353 }1354 $cnt++;1355 }1356 }1357 closedir($dh);1358 }1359 }1360 1361 // フォルダを先頭にしてマージ1362 return array_merge($arrDirList, $arrFileList);1363 }1364 1365 /*1366 * 関数名:sfGetDirSize()1367 * 説明 :指定したディレクトリのバイト数を取得1368 * 引数1 :ディレクトリ1369 */1370 function sfGetDirSize($dir) {1371 if (file_exists($dir)) {1372 // ディレクトリの場合下層ファイルの総量を取得1373 if (is_dir($dir)) {1374 $handle = opendir($dir);1375 while ($file = readdir($handle)) {1376 // 行末の/を取り除く1377 $dir = rtrim($dir, '/');1378 $path = $dir.'/'.$file;1379 if ($file != '..' && $file != '.' && !is_dir($path)) {1380 $bytes += filesize($path);1381 } else if (is_dir($path) && $file != '..' && $file != '.') {1382 // 下層ファイルのバイト数を取得する為、再帰的に呼び出す。1383 $bytes += SC_Utils_Ex::sfGetDirSize($path);1384 }1385 }1386 } else {1387 // ファイルの場合1388 $bytes = filesize($dir);1389 }1390 }1391 // ディレクトリ(ファイル)が存在しない場合は0byteを返す1392 if ($bytes == '') {1393 $bytes = 0;1394 }1395 1396 return $bytes;1397 }1398 1399 /*1400 * 関数名:sfGetFileTree()1401 * 説明 :ツリー生成用配列取得(javascriptに渡す用)1402 * 引数1 :ディレクトリ1403 * 引数2 :現在のツリーの状態開いているフォルダのパスが | 区切りで格納1404 */1405 function sfGetFileTree($dir, $tree_status) {1406 1407 $cnt = 0;1408 $arrTree = array();1409 $default_rank = count(explode('/', $dir));1410 1411 // 文末の/を取り除く1412 $dir = rtrim($dir, '/');1413 // 最上位層を格納(user_data/)1414 if (sfDirChildExists($dir)) {1415 $arrTree[$cnt]['type'] = '_parent';1416 } else {1417 $arrTree[$cnt]['type'] = '_child';1418 }1419 $arrTree[$cnt]['path'] = $dir;1420 $arrTree[$cnt]['rank'] = 0;1421 $arrTree[$cnt]['count'] = $cnt;1422 // 初期表示はオープン1423 if ($_POST['mode'] != '') {1424 $arrTree[$cnt]['open'] = lfIsFileOpen($dir, $tree_status);1425 } else {1426 $arrTree[$cnt]['open'] = true;1427 }1428 $cnt++;1429 1430 sfGetFileTreeSub($dir, $default_rank, $cnt, $arrTree, $tree_status);1431 1432 return $arrTree;1433 }1434 1435 /*1436 * 関数名:sfGetFileTree()1437 * 説明 :ツリー生成用配列取得(javascriptに渡す用)1438 * 引数1 :ディレクトリ1439 * 引数2 :デフォルトの階層(/区切りで 0,1,2・・・とカウント)1440 * 引数3 :連番1441 * 引数4 :現在のツリーの状態開いているフォルダのパスが | 区切りで格納1442 */1443 function sfGetFileTreeSub($dir, $default_rank, &$cnt, &$arrTree, $tree_status) {1444 1445 if (file_exists($dir)) {1446 if ($handle = opendir("$dir")) {1447 while (false !== ($item = readdir($handle))) $arrDir[] = $item;1448 // アルファベットと数字でソート1449 natcasesort($arrDir);1450 foreach ($arrDir as $item) {1451 if ($item != '.' && $item != '..') {1452 // 文末の/を取り除く1453 $dir = rtrim($dir, '/');1454 $path = $dir.'/'.$item;1455 // ディレクトリのみ取得1456 if (is_dir($path)) {1457 $arrTree[$cnt]['path'] = $path;1458 if (sfDirChildExists($path)) {1459 $arrTree[$cnt]['type'] = '_parent';1460 } else {1461 $arrTree[$cnt]['type'] = '_child';1462 }1463 1464 // 階層を割り出す1465 $arrCnt = explode('/', $path);1466 $rank = count($arrCnt);1467 $arrTree[$cnt]['rank'] = $rank - $default_rank + 1;1468 $arrTree[$cnt]['count'] = $cnt;1469 // フォルダが開いているか1470 $arrTree[$cnt]['open'] = lfIsFileOpen($path, $tree_status);1471 $cnt++;1472 // 下層ディレクトリ取得の為、再帰的に呼び出す1473 sfGetFileTreeSub($path, $default_rank, $cnt, $arrTree, $tree_status);1474 }1475 }1476 }1477 }1478 closedir($handle);1479 }1480 }1481 1482 /*1483 * 関数名:sfDirChildExists()1484 * 説明 :指定したディレクトリ配下にファイルがあるか1485 * 引数1 :ディレクトリ1486 */1487 function sfDirChildExists($dir) {1488 if (file_exists($dir)) {1489 if (is_dir($dir)) {1490 $handle = opendir($dir);1491 while ($file = readdir($handle)) {1492 // 行末の/を取り除く1493 $dir = rtrim($dir, '/');1494 $path = $dir.'/'.$file;1495 if ($file != '..' && $file != '.' && is_dir($path)) {1496 return true;1497 }1498 }1499 }1500 }1501 1502 return false;1503 }1504 1505 /*1506 * 関数名:lfIsFileOpen()1507 * 説明 :指定したファイルが前回開かれた状態にあったかチェック1508 * 引数1 :ディレクトリ1509 * 引数2 :現在のツリーの状態開いているフォルダのパスが | 区切りで格納1510 */1511 function lfIsFileOpen($dir, $tree_status) {1512 $arrTreeStatus = explode('\|', $tree_status);1513 if (in_array($dir, $arrTreeStatus)) {1514 return true;1515 }1516 1517 return false;1518 }1519 1520 /*1521 * 関数名:sfDownloadFile()1522 * 引数1 :ファイルパス1523 * 説明 :ファイルのダウンロード1524 */1525 function sfDownloadFile($file) {1526 // ファイルの場合はダウンロードさせる1527 Header('Content-disposition: attachment; filename='.basename($file));1528 Header('Content-type: application/octet-stream; name='.basename($file));1529 Header('Cache-Control: ');1530 Header('Pragma: ');1531 echo (sfReadFile($file));1532 }1533 1534 /*1535 * 関数名:sfCreateFile()1536 * 引数1 :ファイルパス1537 * 引数2 :パーミッション1538 * 説明 :ファイル作成1539 */1540 function sfCreateFile($file, $mode = '') {1541 // 行末の/を取り除く1542 if ($mode != '') {1543 $ret = @mkdir($file, $mode);1544 } else {1545 $ret = @mkdir($file);1546 }1547 1548 return $ret;1549 }1550 1551 /*1552 * 関数名:sfReadFile()1553 * 引数1 :ファイルパス1554 * 説明 :ファイル読込1555 */1556 function sfReadFile($filename) {1557 $str = '';1558 // バイナリモードでオープン1559 $fp = @fopen($filename, 'rb');1560 //ファイル内容を全て変数に読み込む1561 if ($fp) {1562 $str = @fread($fp, filesize($filename)+1);1563 }1564 @fclose($fp);1565 1566 return $str;1567 1284 } 1568 1285 … … 1991 1708 } 1992 1709 1993 /**1994 * 指定されたパスの配下を再帰的に削除.1995 *1996 * @param string $path 削除対象のディレクトリまたはファイルのパス1997 * @param boolean $del_myself $pathそのものを削除するか. true なら削除する.1998 * @return void1999 */2000 function deleteFile($path, $del_myself = true) {2001 $flg = false;2002 // 対象が存在するかを検証.2003 if (file_exists($path) === false) {2004 GC_Utils_Ex::gfPrintLog($path . ' が存在しません.');2005 } elseif (is_dir($path)) {2006 // ディレクトリが指定された場合2007 $handle = opendir($path);2008 if (!$handle) {2009 GC_Utils_Ex::gfPrintLog($path . ' が開けませんでした.');2010 }2011 while (($item = readdir($handle)) !== false) {2012 if ($item === '.' || $item === '..') continue;2013 $cur_path = $path . '/' . $item;2014 if (is_dir($cur_path)) {2015 // ディレクトリの場合、再帰処理2016 $flg = SC_Utils_Ex::deleteFile($cur_path);2017 } else {2018 // ファイルの場合、unlink2019 $flg = @unlink($cur_path);2020 }2021 }2022 closedir($handle);2023 // ディレクトリを削除2024 GC_Utils_Ex::gfPrintLog($path . ' を削除します.');2025 if ($del_myself) {2026 $flg = @rmdir($path);2027 }2028 } else {2029 // ファイルが指定された場合.2030 GC_Utils_Ex::gfPrintLog($path . ' を削除します.');2031 $flg = @unlink($path);2032 }2033 return $flg;2034 }2035 2036 1710 /** 2037 1711 * コンパイルファイルを削除します. … … 2040 1714 function clearCompliedTemplate() { 2041 1715 // コンパイルファイルの削除処理 2042 SC_ Utils_Ex::deleteFile(COMPILE_REALDIR, false);2043 SC_ Utils_Ex::deleteFile(COMPILE_ADMIN_REALDIR, false);2044 SC_ Utils_Ex::deleteFile(SMARTPHONE_COMPILE_REALDIR, false);2045 SC_ Utils_Ex::deleteFile(MOBILE_COMPILE_REALDIR, false);1716 SC_Helper_FileManager_Ex::deleteFile(COMPILE_REALDIR, false); 1717 SC_Helper_FileManager_Ex::deleteFile(COMPILE_ADMIN_REALDIR, false); 1718 SC_Helper_FileManager_Ex::deleteFile(SMARTPHONE_COMPILE_REALDIR, false); 1719 SC_Helper_FileManager_Ex::deleteFile(MOBILE_COMPILE_REALDIR, false); 2046 1720 } 2047 1721
Note: See TracChangeset
for help on using the changeset viewer.