示例#1
0
 function doimport()
 {
     $title = string::hiconv($this->post['title']);
     $data = $_ENV['doc']->get_doc_by_title($title);
     $page = $this->cache->getcache('systemdata');
     if (empty($page)) {
         $page = 1;
     }
     $_ENV['hdapi']->roll_docs($page, 10);
     $this->cache->writecache('systemdata', ++$page);
     if ($data) {
         $this->message(0, '', 2);
     }
     $doc['content'] = $_ENV['hdapi']->get_content_import($title, 2, true);
     $doc['tags'] = array($title);
     $doc['search_tags'] = $title;
     if ($doc['content'] && is_string($doc['content'])) {
         $doc['category'] = $this->post['cid'];
         $doc['title'] = $title;
         $doc['letter'] = string::getfirstletter($title);
         $doc['content'] = mysql_real_escape_string($doc['content']);
         $doc['content'] = str_replace('\\r\\n', "\r\n", $doc['content']);
         $doc['tags'] = $_ENV['doc']->jointags($doc['tags']);
         $doc['summary'] = trim(string::convercharacter(strip_tags($doc['content'])));
         $doc['images'] = util::getimagesnum($doc['content']);
         $doc['time'] = $this->time;
         $doc['words'] = string::hstrlen($doc['content']);
         $doc['visible'] = '1';
         //$this->setting['verify_doc']?'0':'1';
         $did = $_ENV['doc']->add_doc($doc);
         $_ENV['doc']->add_searchindex($did, $doc['title'], $doc['search_tags'], $doc['content']);
         $_ENV['user']->add_credit($this->user['uid'], 'doc-create', $this->setting['credit_create']);
         $_ENV['user']->update_field('creates', $this->user['creates'] + 1, $this->user['uid']);
         $_ENV['category']->update_category_docs($this->post['category']);
         //$data = array('did'=>$did, 'name'=>'互动百科 '.$title, 'url'=>'http://www.hudong.com/wiki/'.urlencode($this->post['title']));
         //$_ENV['reference']->add($data);
         $this->message(1, '', 2);
     } else {
         if ($doc['content'] && is_array($doc['content'])) {
             $this->message($doc['content']['return_type'] . '_' . $doc['content']['return_info'], '', 2);
         } else {
             $this->message(2, '', 2);
         }
     }
 }
示例#2
0
 function edit_doc($doc, $edittype = '1', $increase_edition = true)
 {
     if ($this->base->setting['base_createdoc'] == 1) {
         $edition = $doc;
     } else {
         $edition = $this->db->fetch_first("SELECT * FROM " . DB_TABLEPRE . "doc WHERE did=" . $doc['did']);
         $edition = string::haddslashes($edition, 1);
     }
     $edition_sql = $increase_edition ? 'edits=edits+1,editions=editions+1,' : '';
     $this->db->query("UPDATE " . DB_TABLEPRE . "doc SET\r\n\t\ttag='" . $doc['tags'] . "' ,summary='" . $doc['summary'] . "' ,content='" . $doc['content'] . "',lastedit='" . $doc['time'] . "',\r\n\t\tlasteditor='" . $this->base->user['username'] . "',lasteditorid='" . $this->base->user['uid'] . "',{$edition_sql}visible='" . $doc['visible'] . "' WHERE did=" . $doc['did']);
     $words = string::hstrlen($edition['content']);
     $images = util::getimagesnum($edition['content']);
     if ($this->base->setting['db_storage'] == 'txt') {
         $content = stripslashes($edition['content']);
         $edition['content'] = '';
     }
     if ($increase_edition == true) {
         $this->db->query("INSERT INTO " . DB_TABLEPRE . "edition\r\n\t\t\t(did,author,authorid,time,ip,title,tag,summary,content,words,images,reason,`type`)\r\n\t\t\tVALUES ('" . $edition['did'] . "','" . $this->base->user['username'] . "','" . $this->base->user['uid'] . "','" . $edition['lastedit'] . "','" . $this->base->ip . "','" . $edition['title'] . "','" . $edition['tags'] . "','" . $edition['summary'] . "','" . $edition['content'] . "','{$words}','{$images}','" . $doc['reason'] . "','{$edittype}')");
         $eid = $this->db->insert_id();
     } else {
         $last_edition = $this->db->fetch_first("SELECT * FROM " . DB_TABLEPRE . "edition WHERE did = {$doc['did']} AND authorid = {$this->base->user['uid']} ORDER BY eid DESC LIMIT 1");
         if (isset($last_edition['eid'])) {
             $eid = $last_edition['eid'];
             $sql = "UPDATE " . DB_TABLEPRE . "edition SET `time`='" . $edition['lastedit'] . "',";
             $sql .= "ip='" . $this->base->ip . "',";
             $sql .= "title='" . $edition['title'] . "',";
             $sql .= "tag='" . $edition['tags'] . "',";
             $sql .= "summary='" . $edition['summary'] . "',";
             $sql .= "content='" . $edition['content'] . "',";
             $sql .= "words='" . $words . "',";
             $sql .= "images='" . $images . "',";
             $sql .= "reason='" . $doc['reason'] . "',";
             $sql .= "`type`='" . $edittype . "' where eid = {$eid}";
             $this->db->query($sql);
         } else {
             $eid = 0;
         }
     }
     if ($this->base->setting['db_storage'] == 'txt') {
         file::forcemkdir($this->get_edition_fileinfo($eid, 'path'));
         file::writetofile($this->get_edition_fileinfo($eid, 'file'), $content);
     }
 }
示例#3
0
 function doimport()
 {
     //global $wmdb;
     if (file_exists($this->configfile) && file_exists($this->sumfile)) {
         include $this->configfile;
         include $this->sumfile;
     } else {
         $this->message('5|0', '', 2);
     }
     $this->wmdb = new hddb(WDB_HOST, WDB_USER, WDB_PW, WDB_NAME, WDB_CHARSET, WDB_CONNECT);
     //$wmdb = $this->wmdb;
     //判断做到哪一步了.
     if (file_exists($this->processfile)) {
         include $this->processfile;
         list($type, $i) = explode('|', $process);
         if ($type >= 5) {
             $this->message('5|0', '', 2);
         }
     } else {
         list($type, $i) = array(1, 0);
     }
     $totalnum = array(1 => $catsum, 2 => $usersum, 3 => $docsum, 4 => $clinksum);
     $totalnum = $totalnum[$type];
     $j = 10;
     for (; $i < $totalnum; $i += $j) {
         $msg = $type . '|' . (($n = $i + $j) >= $totalnum ? $totalnum : $n);
         if ($type == 1 || $type == 2 || $type == 4) {
             //导入分类和用户。
             $hdsql = $_ENV['mwimport']->get_sql($this->wmdb, $type, $i, $j);
             if (!$hdsql || $this->db->query($hdsql)) {
                 $_ENV['mwimport']->writefile($this->processfile, '<?php $process = "' . $msg . '"; ?>');
             } else {
                 $this->message('5|0', '', 2);
             }
         } elseif ($type == 3) {
             include HDWIKI_ROOT . '/plugins/mwimport/text/Mediawiki.php';
             $parser = 'Mediawiki';
             $text_wiki = new Text_Wiki_Mediawiki();
             $sql = "SELECT a.page_id, a.page_title, b.old_text, b.old_flags, b.old_id FROM " . WDB_TABLEPRE . "page a, " . WDB_TABLEPRE . "text b WHERE a.page_namespace = 0 AND a.page_latest = b.old_id limit " . $i . ",{$j}";
             $query = $this->wmdb->query($sql);
             while ($doc = $this->wmdb->fetch_array($query)) {
                 if ($_ENV['doc']->get_doc_by_title($doc['page_title'])) {
                     continue;
                 }
                 $doc['did'] = $doc['page_id'];
                 $doc['title'] = $doc['page_title'];
                 $doc['letter'] = string::getfirstletter($doc['page_title']);
                 $wiki = $text_wiki->singleton($parser);
                 $result = $wiki->transform($source);
                 $doc['old_text'] = $wiki->transform($doc['old_text']);
                 //加入对内容的处理和过滤。
                 $doc['old_text'] = mysql_real_escape_string($doc['old_text']);
                 $doc['tags'] = '';
                 $doc['summary'] = trim(string::convercharacter(string::substring(strip_tags($doc['old_text']), 0, 100)));
                 $doc['images'] = util::getimagesnum($doc['old_text']);
                 $doc['time'] = $this->time;
                 $doc['words'] = string::hstrlen($doc['old_text']);
                 $doc['visible'] = '1';
                 $doc['cid'] = $_ENV['mwimport']->get_cid($this->wmdb, '', $doc['did']);
                 $sql = "SELECT rev_user,rev_user_text FROM " . WDB_TABLEPRE . "revision  WHERE rev_page = " . $doc['page_id'] . " ORDER BY  rev_id ";
                 $user = $this->wmdb->fetch_first($sql);
                 $this->db->query("REPLACE INTO " . DB_TABLEPRE . "doc\r\n\t\t\t    (did,cid,letter,title,tag ,summary ,content,author,authorid,time,lastedit,lasteditor,lasteditorid,visible,editions)\r\n\t\t\t    VALUES (" . $doc['did'] . "," . $doc['cid'] . ",'" . $doc['letter'] . "','" . $doc['title'] . "','" . $doc['tags'] . "','" . $doc['summary'] . "','" . $doc['old_text'] . "',\r\n\t\t\t    '" . $user['rev_user_text'] . "','" . $user['rev_user'] . "',\r\n\t\t\t    " . $doc['time'] . "," . $doc['time'] . ",'" . $user['rev_user_text'] . "','" . $user['rev_user'] . "','" . $doc['visible'] . "',1)");
             }
             $_ENV['mwimport']->writefile($this->processfile, '<?php $process = "' . $msg . '"; ?>');
         }
         $this->message($msg, '', 2);
     }
     $msg = $type + 1 . '|0';
     $_ENV['mwimport']->writefile($this->processfile, '<?php $process = "' . $msg . '"; ?>');
     $this->message($msg, '', 2);
 }
示例#4
0
文件: doc.php 项目: meiwenhui/hdwiki
 function doeditsection()
 {
     $this->_anti_copy();
     if (4 != $this->user['groupid'] && $this->time - $this->user['regtime'] < $this->setting['forbidden_edit_time'] * 60) {
         $this->message($this->view->lang['editTimeLimit1'] . $this->setting['forbidden_edit_time'] . $this->view->lang['editTimeLimit2'], 'BACK', 0);
     }
     if ('0' === $this->user['checkup']) {
         $this->message($this->view->lang['createDocTip17'], 'BACK', 0);
     }
     @($did = isset($this->get[2]) ? $this->get[2] : $this->post['did']);
     @($id = isset($this->get[3]) ? $this->get[3] : $this->post['section_id']);
     if (!is_numeric($did) || !is_numeric($id)) {
         $this->message($this->view->lang['parameterError'], 'index.php', 0);
     }
     $doc = $this->db->fetch_by_field('doc', 'did', $did);
     //eval($this->plugin['hdapi']['hooks']['readcontent']);
     $this->load("hdapi");
     if ($this->setting['site_nick'] && $this->setting["hdapi_bklm"]) {
         if ($_ENV["hdapi"]->islock($doc["title"])) {
             $doc["locked"] = 1;
             $this->message("该词条正在被百科联盟网站锁定编辑中", "BACK", 0);
         } else {
             $_ENV["hdapi"]->lock($doc["title"]);
             $content = $_ENV["hdapi"]->get_content($doc["title"]);
             if (is_string($content) && !empty($content)) {
                 $doc["content"] = $content;
             }
         }
     }
     if (!(bool) $doc) {
         $this->message($this->view->lang['docNotExist'], 'index.php', 0);
     }
     if ($doc['visible'] == '0' && !$this->checkable('admin_doc-audit')) {
         $this->message($this->view->lang['viewDocTip4'], 'index.php', 0);
     }
     if (!isset($this->post['publishsubmit'])) {
         $editlockuid = $_ENV['doc']->iseditlocked($did);
         if ($editlockuid != 0 && $editlockuid != $this->user['uid']) {
             $this->message($this->view->lang['viewDocTip5'] . $this->view->lang['viewDocTip6'], 'BACK', 0);
         }
         if ($doc['locked']) {
             $this->header("doc-view-" . $doc['did'] . "-locked");
         }
         $array_section = $_ENV['doc']->splithtml($doc['content']);
         if (!isset($array_section[$id + 1]['value'])) {
             $this->header('doc-edit-' . $did);
         }
         //$doc['tag']=$_ENV['doc']->spilttags($doc['tag']);
         $doc['content'] = $array_section[$id + 1]['value'];
         $this->view->assign("savetime", 60000);
         $ramus = isset($this->get[4]) ? $this->get[4] : '';
         $autosave = $_ENV['doc']->is_autosave($this->user['uid'], $doc['did']);
         if ((bool) $autosave) {
             if ($ramus) {
                 $doc['content'] = $autosave['content'];
             } else {
                 $autosave['content'] = str_replace(array("\r\n", "\r", "\n"), "", addslashes($autosave['content']));
                 $autosave['showtime'] = $this->date($autosave['time']);
                 $this->view->assign("autosave", $autosave);
             }
         }
         $doc['content'] = $this->setting['auto_picture'] ? $_ENV['doc']->auto_picture($doc['content'], $did) : $doc['content'];
         $doc['title'] = $doc['title'] . "-" . $array_section[$id]['value'];
         $doc['section_id'] = $id;
         $this->view->assign('navtitle', $doc['title'] . '-' . $this->view->lang['editionEdit'] . '-');
         $this->view->assign("page_action", "editsection");
         $doc = str_replace("&", "&amp;", $doc);
         $doc['title'] = htmlspecialchars(stripslashes($doc['title']));
         $this->view->assign("doc", $doc);
         $this->view->assign("doc_verification_edit_code", $this->setting['checkcode'] != 3 && $this->setting['doc_verification_edit_code']);
         $this->view->assign('g_img_big', $this->setting['img_width_big']);
         $this->view->assign('g_img_small', $this->setting['img_width_small']);
         //$this->view->display("editor");
         $_ENV['block']->view('editor');
     } else {
         if ($this->setting['checkcode'] != 3 && $this->setting['doc_verification_edit_code'] && strtolower($this->post['code']) != $_ENV['user']->get_code()) {
             $this->message($this->view->lang['codeError'], 'BACK', 0);
         }
         if (trim($this->post['content']) == "") {
             $this->message($this->view->lang['contentIsNull'], 'BACK', 0);
         }
         $tem = $_ENV['doc']->splithtml($doc['content']);
         $tem[$id + 1]['value'] = $_ENV['doc']->replace_danger_word(stripcslashes($this->post['content']));
         $doc['content'] = string::haddslashes(string::stripscript($_ENV['doc']->joinhtml($tem)), 1);
         //$doc['tags']=$_ENV['doc']->jointags($this->post['tags']);
         $doc['tags'] = $this->post['tags'];
         $doc['tags'] = $_ENV['doc']->replace_danger_word($doc['tags']);
         $doc['summary'] = trim(strip_tags($_ENV['doc']->replace_danger_word($this->post['summary'])));
         $doc['summary'] = (bool) $doc['summary'] ? $doc['summary'] : $doc['content'];
         $doc['summary'] = trim(string::convercharacter(string::substring(strip_tags($doc['summary']), 0, 100)));
         $doc['images'] = util::getimagesnum($doc['content']);
         $doc['time'] = $this->time;
         $doc['visible'] = $this->setting['verify_doc'] ? '0' : '1';
         $doc['words'] = string::hstrlen($doc['content']);
         $doc['reason'] = htmlspecialchars(trim(implode(',', $this->post['editreason']), ' \\t\\n,'));
         /*foreach($this->post['tags'] as $search_tags){
         			$doc['search_tags'] .=string::convert_to_unicode($search_tags).";";
         		} */
         if (!$_ENV['doc']->check_submit_interval($this->user['uid'])) {
             if ($this->setting['save_spam']) {
                 $doc['visible'] = 0;
             } else {
                 $this->message(sprintf($this->view->lang['submit_interval_msg'], $this->setting['submit_min_interval']), "BACK", 0);
             }
         }
         if (!$_ENV['doc']->check_eng_pcnt($doc['content']) || !$_ENV['doc']->check_extlink_pcnt($doc['content'])) {
             if ($this->setting['save_spam']) {
                 $doc['visible'] = 0;
             } else {
                 $this->message($this->view->lang['spam_msg'], "BACK", 0);
             }
         }
         $_ENV['doc']->edit_doc($doc, "2");
         $_ENV['doc']->unset_editlock($doc['did'], $this->user['uid']);
         if ($doc['visible'] == 1 && $_ENV['doc']->is_addcredit($doc['did'], $this->user['uid'])) {
             $_ENV['user']->add_credit($this->user['uid'], 'doc-edit', $this->setting['credit_edit'], $this->setting['coin_edit']);
         }
         $_ENV['user']->update_field('edits', $this->user['edits'] + 1, $this->user['uid']);
         $_ENV['doc']->del_autosave('', $this->user['uid'], $doc['did']);
         $this->load('noticemail');
         $_ENV['noticemail']->doc_edit($doc);
         //eval($this->plugin['hdapi']['hooks']['postcontent']);
         $this->load("hdapi");
         if ($this->setting['site_nick'] && $this->setting["hdapi_bklm"]) {
             $_ENV["hdapi"]->post_content($doc["title"], $doc["content"]);
         }
         //#clode#
         if (1 == $this->setting['cloud_search']) {
             // 编辑段落 通知云搜索
             $_ENV['search']->cloud_change(array('dids' => $did, 'mode' => '2'));
         }
         $msg = $this->view->lang['docPublishSuccess'];
         if ($this->setting['hdapi_autoshare_edit']) {
             $msg .= "<script>\$.get('index.php?hdapi-hdautosns-edit-'+{$did});</script>";
         }
         $this->message($msg, $this->setting['seo_prefix'] . "doc-view-" . $doc['did'] . $this->setting['seo_suffix'], 0);
     }
 }