/** * 编辑后提交 */ public function doEdit() { $id = intval($_POST['articleid']); $title = $_POST['title']; $title = trim($title); if (empty($title)) { $title = '[请尽快补充标题]'; } $subtitle = $_POST['subtitle']; $link = $_POST['link']; $content = $_POST['FCKeditor1']; $desc1 = $_POST['desc1']; $desc2 = $_POST['desc2']; $desc3 = $_POST['desc3']; $key = $_POST['key']; $now = date('Y-m-d H:i:s'); //操作数据库 $query = $this->app->orm()->query(); $query = $query->addTable('Article')->addValue('Sort', 0)->addValue('SeoKey', $key)->addValue('Title', $title)->addValue('SubTitle', $subtitle)->addValue('Link', $link)->addValue('Content', $content)->addValue('UpdateTime', $now)->addValue('UpdateUserId', $_SESSION['uid'])->addValue('Desc1', $desc1)->addValue('Desc2', $desc2)->addValue('Desc3', $desc3); if ($id > 0) { $action = 2; $bol = $query->addWhere('ArticleId', $id)->addWhere('GameType', $_SESSION['gameid'])->update(); } else { $action = 1; $bol = $query->addValue('CreateTime', $now)->addValue('ServerTime', '0000-00-00 00:00:00')->addValue('PublishTime', '0000-00-00 00:00:00')->addValue('GameType', $_SESSION['gameid'])->addValue('ArticleUserId', $_SESSION['uid'])->addValue('TemplateId', 0)->addValue('Status', 1)->addValue('Url', '')->insert(); } //导航为跳转返回做准备 $refer = $_POST['refer'] ? $_POST['refer'] : 'original.php'; if (!empty($bol)) { //上传封面 if (empty($id)) { $id = $query->getLastId(); } //先写日志 $query->clear()->addTable('Log')->insert(array('UserId' => $_SESSION['uid'], 'ArticleId' => $id, 'UserName' => $_SESSION['name'], 'ArticleTitle' => $title, 'LogTime' => date('Y-m-d H:i:s'), 'GameType' => $_SESSION['gameid'], 'Action' => $action)); //获取生成时间 $row = $query->clear()->addTable('Article')->addWhere('ArticleId', $id)->addWhere('GameType', $_SESSION['gameid'])->addField('CreateTime')->addField('Status')->getRow(); $date = $row['CreateTime']; $status = $row['Status']; $date = date('Ymd', strtotime($date)); $imgpath = $this->app->cfg['path']['root'] . 'output/' . $this->app->cfg['game'][$_SESSION['gameid']]['key'] . '/images/' . $date . '/'; $fileField = $_FILES['pic']; //无图片上传 if (empty($fileField)) { $this->app->redirect($refer); return; } //上传成功 if ($fileField['error'] == UPLOAD_ERR_OK) { $dirname = ''; $folders = explode('/', $imgpath); foreach ($folders as $folder) { $dirname .= $folder . '/'; if ($folder != '' && $folder != '.' && $folder != '..' && !is_dir($dirname)) { mkdir($dirname); } } chmod($imgpath, 0777); // //$ext = substr($fileField['name'],strrpos($fileField['name'],'.')); $newFile = 'thumb' . $id . '.jpg'; //move_uploaded_file不会自己覆盖旧文件 if (file_exists($imgpath . $newFile)) { unlink($imgpath . $newFile); } if (move_uploaded_file($fileField['tmp_name'], $imgpath . $newFile)) { //上传成功; chmod($imgpath . $newFile, 0777); //$this->app->redirect('original.php'); } else { //上传失败,移动文件失败 //echo $fileField['tmp_name'], $imgpath . $newFile; // /echo '上传失败,移动文件失败'; } $this->app->redirect($refer); } else { //上传失败 echo $fileField['error']; $this->app->redirect($refer); } //已发布的就需要同步 if ($status == 3) { $atc = $query->clear()->addTable('Article')->addWhere('ArticleId', $id)->addWhere('GameType', intval($_SESSION['gameid']))->addField('Url')->addField('UpdateTime')->addField('Title')->getRow(); squid_clear($atc['Url']); $nodes = $query->clear()->addTable('NodeLink')->addWhere('ArticleId', $id)->addWhere('GameType', $_SESSION['gameid'])->addField('NodeId')->getColumn(); if (!empty($nodes)) { $nodes = array_unique($nodes); importModule('Manager'); $manager = new Manager(); foreach ($nodes as $v) { $manager->updateNode($v, true); } } } } else { //数据库失败 echo '数据库失败'; $this->app->redirect('editor.php'); } }
/** * 更新分页节点的所有目标 * * @param integer $tid 模板ID */ public function updateTemplateWithPage($tid) { // 取模板信息 $db = $this->app->orm()->query(); $db->addTable('Template'); $db->addWhere('TemplateId', $tid); $template = $db->getRow(); if (!isset($template['TemplateId'])) { Action::showMsg('模板ID不正确'); } // 取节点数据 $db->clear(); $db->addTable('NodeLink'); $db->addField('count(NodeLinkId)'); $db->addWhere('NodeId', $template['NodeId']); $db->addWhere('GameType', $_SESSION['gameid']); $count = $db->getValue(); $pagecount = ceil($count / $template['ListPage']); $urls = array(); for ($i = 1; $i <= $pagecount; $i++) { $urls[] = $this->app->cfg['game'][$_SESSION['gameid']]['host'] . 'list' . $tid . '_' . $i . '.html'; } squid_clear($urls); }
/** * 发布操作 * @return void */ public function doRelease() { //判断权限 if (!in_array($_SESSION['group'], array(3, 4))) { echo json_encode(array('error' => true, 'msg' => '你没权限进行审核操作')); return; } //获取id $id = $_POST['id']; $tpl = $_POST['tpl']; //检查参数 if (!is_array($id) || empty($id) || !is_array($tpl) || empty($tpl)) { echo json_encode(array('error' => true, 'msg' => '请先选中文章')); return; } //过滤id foreach ($id as &$a) { $a = intval($a); } //过滤$tpl foreach ($tpl as &$b) { $b = intval($b); } //建立TPL与Article的索引 $tpl_link = array(); foreach ($tpl as $k => $v) { $tpl_link[$v][] = $id[$k]; } //获取TPL $enum_tpl = array_unique($tpl); $query = $this->app->orm()->query(); $db_tpl = $query->addTable('Template')->addField('TemplateId')->addField('Template')->addWhere('Type', 0)->addWhere('TemplateId', $enum_tpl, _ORM_OP_IN)->addWhere('GameType', $_SESSION['gameid'])->getArray(); if (empty($db_tpl)) { echo json_encode(array('error' => true, 'msg' => '连接不上数据库')); return; } //建立TPL索引为了检测是否有空的tpl参数 $tpl_index = array(); foreach ($db_tpl as $v) { $tpl_index[$v['TemplateId']] = $v['Template']; } //获取Article $db_atc = $query->clear()->addTable('Article')->addWhere('ArticleId', $id, _ORM_OP_IN)->addWhere('GameType', $_SESSION['gameid'])->getArray(); //建立Article索引,为了检测是否有错误的参数 $atc_index = array(); foreach ($db_atc as $v) { $atc_index[$v['ArticleId']] = $v; } //记录发表失败的id $error = array(); $success = array(); //生成静态页 $date = date('Ymd'); foreach ($enum_tpl as $tid) { if (empty($tpl_index[$tid])) { //将该tpl下的所有的文章id记录下 $error = array_merge($error, $tpl_link[$tid]); } else { //生成临时模板文件 $template_file = tempnam($this->app->cfg['path']['temp'], "ARTICLE"); file_put_contents($template_file, $tpl_index[$tid]); //循环生成页面 foreach ($tpl_link[$tid] as $aid) { $count = $query->clear()->addTable('NodeLink')->addField('NodeId', 'Count', 'count')->addWhere('ArticleId', $aid)->addWhere('GameType', $_SESSION['gameid'])->getValue(); if (empty($atc_index[$aid]) || $count == 0) { //文章不存在或者节点没有设置 $error[] = $aid; } else { //生成页面内容 $article = $atc_index[$aid]; /* $smarty = $this->app->page(); $smarty->params['template'] = $template_file; $output = $smarty->value('Title', $article['Title']) ->value('SubTitle', $article['SubTitle']) ->value('Date', $article['PublishTime']) ->value('Content', $article['Content']) ->output(true); $html_file_path = $this->app->cfg['game'][$_SESSION['gameid']]['root'] . 'news/' . $date . '/'; //如果没有建立文件夹就建立它 $dirname = ''; $folders = explode('/',$html_file_path); foreach ($folders as $folder) { $dirname .= $folder . '/'; if ($folder!='' && $folder!='.' && $folder!='..' && !is_dir($dirname)) { mkdir($dirname); } } chmod($html_file_path,0777); $html_file_path .= $article['ArticleId'] . '.html'; //写入指定文件 file_put_contents($html_file_path, $output); */ //更新数据库 $date = date('Ymd', strtotime($article['PublishTime'])); $url = $this->app->cfg['game'][$_SESSION['gameid']]['host'] . 'news/' . $date . '/'; if (!empty($article['SeoKey'])) { $url .= $article['SeoKey'] . '-'; } $url .= $article['ArticleId'] . '.html'; squid_clear($url); $query->clear()->addTable('Article')->addWhere('ArticleId', $aid)->update(array('Status' => 3, 'UpdateTime' => date('Y-m-d H:i:s'), 'Url' => $url, 'TemplateId' => $tid)); //写日志 $query->clear()->addTable('Log')->insert(array('UserId' => $_SESSION['uid'], 'ArticleId' => $aid, 'UserName' => $_SESSION['name'], 'ArticleTitle' => $article['Title'], 'LogTime' => date('Y-m-d H:i:s'), 'GameType' => $_SESSION['gameid'], 'Action' => 5)); $success[] = $aid; } } //删除临时文件 unlink($template_file); } } //如果没有文章发布成功 if (empty($success)) { echo json_encode(array('error' => true, 'msg' => '没有文章发布成功。请检查提交的文章和模板是否正确,并且设置了正确的节点。')); return; } else { //更新节点 $nodes = $query->clear()->addTable('NodeLink')->addWhere('ArticleId', $success, _ORM_OP_IN)->addWhere('GameType', $_SESSION['gameid'])->addField('NodeId')->getColumn(); if (!empty($nodes)) { $nodes = array_unique($nodes); importModule('Manager'); $manager = new Manager(); foreach ($nodes as $v) { $manager->updateNode($v); } } if (empty($error)) { echo json_encode(array('error' => false, 'msg' => '文章全部发布成功。')); } else { echo json_encode(array('error' => false, 'msg' => '有一部分文章没有发布成功。', 'error' => $error)); } } }
/** * 线上同步更新 * */ public function doOnlineUpdate() { $tid = intval($_GET['tid']); squid_clear($this->app->cfg['game'][$_SESSION['gameid']]['host'] . 'newslist/' . $tid . '.html'); $this->showMsg('线上同步完成!'); }
private function sync($id) { $query = $this->app->orm()->query(); $atc = $query->addTable('Article')->addWhere('ArticleId', $id)->addWhere('GameType', intval($_SESSION['gameid']))->addField('Url')->addField('UpdateTime')->addField('Title')->getRow(); squid_clear($atc['Url']); $nodes = $query->clear()->addTable('NodeLink')->addWhere('ArticleId', $id)->addWhere('GameType', $_SESSION['gameid'])->addField('NodeId')->getColumn(); if (!empty($nodes)) { $nodes = array_unique($nodes); importModule('Manager'); $manager = new Manager(); foreach ($nodes as $v) { $manager->updateNode($v, true); } } }