echo '<script type="text/javascript">alert("'._f('%1는 잘못된 형식의 파일입니다.', $_FILES['importFile']['name']).'");</script>'; $_FILES = null; exit; } $opmlCacheDir = ROOT . '/cache/opml'; $tmpFilename = md5($_SERVER['REMOTE_ADDR'].time()).'.xml'; if (!is_dir($opmlCacheDir)) func::mkpath($opmlCacheDir); if (!is_writable($opmlCacheDir) || !move_uploaded_file($_FILES['importFile']['tmp_name'], $opmlCacheDir.'/'.$tmpFilename)) { echo '<script type="text/javascript">alert("'._t('파일 가져오기에 실패했습니다.\n날개가 설치된 폴더와 cache 폴더에 쓰기 권한이 있는지 확인해주세요.').'");</script>'; exit; } $xmls = new XMLStruct(); $xmls->openFile($opmlCacheDir.'/'.$tmpFilename, true); $xmlURLs = func::multiarray_values($xmls->selectNodes("/opml/body/outline"), 'xmlUrl'); if (count($xmlURLs)==0) { echo '<script type="text/javascript">alert("'._t('바른 형식의 OPML 파일이 아닙니다.').'");</script>'; exit; } echo '<script type="text/javascript">"'._t('피드를 추가하고 있습니다').'";</script>'; flush(); $_feeder = new Feed; foreach($xmlURLs as $xmlURL) { if (empty($xmlURL)) continue; $_feeder->add($xmlURL); } @unlink($opmlCacheDir.'/'.$tmpFilename);
function multiarray_values($ar,$key) { $values = array(); foreach($ar as $k => $v) { if($k === $key) { $values[] = $v; } if (is_array($ar[$k])) $values = array_merge($values, func::multiarray_values($ar[$k],$key)); } return $values; }