function copydir($srcdir, $dstdir) { if (!is_dir($dstdir)) { mkdir($dstdir); } if ($curdir = opendir($srcdir)) { while ($file = readdir($curdir)) { if ($file != '.' && $file != '..') { $srcfile = $srcdir . '/' . $file; $dstfile = $dstdir . '/' . $file; if (is_file($srcfile)) { copy($srcfile, $dstfile); } else { if (is_dir($srcfile)) { file::copydir($srcfile, $dstfile); } } } } closedir($curdir); } }
function copy_newfile() { file::copydir(UPGRADE_PATH . $this->package['release_code'] . '/hdwiki', HDWIKI_ROOT); return true; }
function doinstall() { if (isset($this->get[2]) && is_numeric($this->get[2])) { $style_download_url = $this->setting['app_url'] . "/hdapp.php?action=download&type=template&install=1&id=" . $this->get[2] . "&url=" . WIKI_URL; $zipcontent = @util::hfopen($style_download_url); $tmpdir = HDWIKI_ROOT . '/data/tmp/'; file::forcemkdir($tmpdir); $tmpname = $tmpdir . util::random(6) . '.zip'; file::writetofile($tmpname, $zipcontent); require HDWIKI_ROOT . "/lib/zip.class.php"; require HDWIKI_ROOT . "/lib/xmlparser.class.php"; $zip = new zip(); if (!$zip->chk_zip) { $this->message($this->view->lang['styleInstallNoZlib'], ''); } $ziplist = @$zip->get_List($tmpname); if (!(bool) $ziplist) { @unlink($tmpname); $this->message($this->view->lang['styleZipFail'], 'BACK'); } $theme_name = $_ENV['theme']->get_theme_name($ziplist); @$zip->Extract($tmpname, $tmpdir); @unlink($tmpname); //move file $syle_path = $tmpdir . 'hdwiki'; if (is_dir(HDWIKI_ROOT . '/style/' . $theme_name)) { @file::removedir($syle_path); $this->message($this->view->lang['stylePathRepeat'], 'BACK'); } @file::copydir($syle_path, HDWIKI_ROOT); @file::removedir($syle_path); //save db $style_xml = HDWIKI_ROOT . '/style/' . $theme_name . '/desc.xml'; if (!is_file($style_xml)) { $this->message($this->view->lang['styleXmlNotExist'], 'BACK'); } $xmlnav = $_ENV['theme']->read_xml($theme_name); $style['name'] = $xmlnav['name']; $style['copyright'] = $xmlnav['copyright']; $style['path'] = $theme_name; $stylecon = $_ENV['theme']->add_check_style($style['path']); if ($stylecon == null) { $_ENV['theme']->add_style($style); $this->cache->removecache('style'); $this->message($this->view->lang['styleInstallSuccess'], 'BACK'); } else { $this->message($this->view->lang['styleDbPathRepeat'], 'index.php?admin_theme'); } } else { $this->message($this->view->lang['commonParametersInvalidTip'], 'index.php?admin_theme'); } }