Example #1
0
 function doeditxml()
 {
     if (!isset($this->post['stylesave']) && !isset($this->post['styleshare'])) {
         $xmlcon = $_ENV['theme']->read_xml($this->get[2]);
         $this->view->assign('stylename', $this->get[2]);
         $this->view->assign('style', $xmlcon);
         $this->view->assign('share', $this->get[3]);
         $this->view->display('admin_themexml_edit');
     } else {
         if ($_FILES['styleimg']['name'] != '') {
             $image = $_FILES['styleimg'];
             $extname = file::extname($image['name']);
             if ($extname == 'jpg') {
                 $destfile = 'style/' . $this->get[2] . '/screenshot.' . $extname;
                 $result = file::uploadfile($image, $destfile);
                 if ($result['result']) {
                     util::image_compress($destfile, NULL, 158, 118);
                 } else {
                     $this->message($result['msg'], 'BACK');
                 }
             } else {
                 $this->message($this->view->lang['uploadFormatWrong'], 'BACK');
             }
         }
         //insert into db
         $style = $this->post['style'];
         $style['hdversion'] = HDWIKI_VERSION;
         $style['path'] = trim($this->get[2]);
         $style['charset'] = $_ENV['theme']->style_charset($style[path]);
         $stylecon = $_ENV['theme']->add_check_style($style['path']);
         if ($stylecon == null) {
             $_ENV['theme']->add_style($style);
         } else {
             $_ENV['theme']->update_style($style);
         }
         //得到需要插入的blocks的sql。
         $style['sql'] = '';
         $blocks = $_ENV['theme']->get_blocks_by_theme($this->get[2]);
         if ($blocks) {
             $insertsql = "INSERT INTO wiki_block (theme,file,area,areaorder,block,fun,tpl,params) VALUES ";
             foreach ($blocks as $val) {
                 $insertsql .= "( '{$val['theme']}','{$val['file']}','{$val['area']}','{$val['areaorder']}','{$val['block']}','{$val['fun']}','{$val['tpl']}','{$val['params']}' ),";
             }
             $style['sql'] = substr($insertsql, 0, -1);
         }
         //write to xml
         $_ENV['theme']->write_xml($style);
         if (isset($this->post['stylesubmit'])) {
             $this->message($this->view->lang['docEditSuccess'], 'index.php?admin_theme');
         } else {
             if (isset($this->post['stylesave'])) {
                 $this->message($this->view->lang['docEditSuccess'], 'index.php?admin_theme-editxml-' . $style[path] . '-share');
             } else {
                 if (isset($this->post['styleshare'])) {
                     //check
                     $filename = 'style/' . $style['path'] . '/share.lock';
                     if (is_file($filename)) {
                         $this->message($this->view->lang['style_share_lock'] . $filename, 'BACK');
                     } else {
                         file::writetofile($filename, $a = '');
                     }
                     //zip
                     require HDWIKI_ROOT . "/lib/zip.class.php";
                     $zip = new Zip();
                     $filedir = array('style/' . $style['path'], 'view/' . $style['path'], 'block/' . $style['path']);
                     $zipdir = array('hdwiki/style/' . $style['path'], 'hdwiki/view/' . $style['path'], 'hdwiki/block/' . $style['path']);
                     file::forcemkdir(HDWIKI_ROOT . '/data/tmp/');
                     $tmpname = HDWIKI_ROOT . '/data/tmp/' . util::random(6) . '.zip';
                     @$zip->zip_dir($filedir, $tmpname, $zipdir);
                     //share
                     if (is_file($tmpname)) {
                         $zip_content = file::readfromfile($tmpname);
                         $upload_url = $this->setting['app_url'] . "/hdapp.php?action=upload&type=template";
                         $data = 'data=' . base64_encode($zip_content);
                         unlink($tmpname);
                         if ('1' == @util::hfopen($upload_url, 0, $data)) {
                             $this->message($this->view->lang['styleShareSuccess'], 'index.php?admin_theme');
                         } else {
                             $this->message($this->view->lang['styleShareFaile'], 'index.php?admin_theme');
                         }
                     } else {
                         $this->message($this->view->lang['styleFileZipFail'], 'index.php?admin_theme');
                     }
                 }
             }
         }
     }
 }