Exemple #1
0
 /**
  * 编辑后提交
  */
 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');
     }
 }
Exemple #2
0
 /**
  * 更新分页节点的所有目标
  *
  * @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);
 }
Exemple #3
0
 /**
  * 发布操作
  * @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));
         }
     }
 }
Exemple #4
0
 /**
  * 线上同步更新
  *
  */
 public function doOnlineUpdate()
 {
     $tid = intval($_GET['tid']);
     squid_clear($this->app->cfg['game'][$_SESSION['gameid']]['host'] . 'newslist/' . $tid . '.html');
     $this->showMsg('线上同步完成!');
 }
Exemple #5
0
 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);
         }
     }
 }