You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
information-system/author/controllers/welcome.php

571 lines
21 KiB
PHTML

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller {
public $all_unread_sms;
function __construct()
{
parent::__construct();
$this->permission->is_admin();
//$this->output->enable_profiler(TRUE);
$this->load->model('Infotasks_model');
$this->load->model('Infotaskarticles_model');
$this->load->model('InfoSMS_model');
$this->load->model('Operator_model');
$this->load->model('Infoauthors_model');
}
//所有任务
public function index($page=1)
{
$data=array();
$data=$this->_get_home_base_data();
//已完成任务使用另一模板
if($this->input->get('taskstatus')=='complete'){
$this->in_complete_tasks();
return;
}
$task_list = $this->_get_task_list(false,$page,site_url("welcome/index"));
$data['task_list'] = $task_list['task_list'];
$data['page']=$task_list['page'];
$data['nav_view']=$this->load->view('nav',array('nav_active'=>'in_all')+$data,true);
$this->load->view('header', array('navbar_active'=>'mytask')+$data);
$this->load->view('tasklist');
$this->load->view('footer');
}
//正在编辑的任务
public function in_edit_tasks($page=1)
{
$data=array();
$data=$this->_get_home_base_data();
$task_list = $this->_get_task_list('edit',$page,site_url("welcome/in_edit_tasks"));
$data['task_list_in_edit'] = $task_list['task_list'];
$data['page']=$task_list['page'];
$data['nav_view']=$this->load->view('nav',array('nav_active'=>'in_edit')+$data,true);
$this->load->view('header', array('navbar_active'=>'mytask')+$data);
$this->load->view('welcome');
$this->load->view('footer');
}
//已经完成的任务
public function in_complete_tasks($page=1)
{
$data=array();
$data=$this->_get_home_base_data();
$task_list = $this->_get_task_list('complete',$page,site_url("welcome/in_complete_tasks"));
$data['task_list'] = $task_list['task_list'];
$data['page']=$task_list['page'];
foreach ($data['task_list'] as $task) {
$task->last_version = $this->Infotaskarticles_model->version_last($task->t_id);
}
$data['site_config']=$this->config->item('site');
$data['nav_view']=$this->load->view('nav',array('nav_active'=>'in_complete')+$data,true);
$this->load->view('header', array('navbar_active'=>'mytask')+$data);
$this->load->view('in_complete');
$this->load->view('footer');
}
//未通过审核的投稿申请
public function in_refuse_tasks($page=1)
{
$data=array();
$data=$this->_get_home_base_data();
$task_list = $this->_get_task_list('refuse',$page,site_url("welcome/in_refuse_tasks"));
$data['task_list'] = $task_list['task_list'];
$data['page']=$task_list['page'];
$data['nav_view']=$this->load->view('nav',array('nav_active'=>'in_refuse')+$data,true);
$this->load->view('header', array('navbar_active'=>'mytask')+$data);
$this->load->view('in_refuse');
$this->load->view('footer');
}
//根据任务状态获取任务列表
public function task_lists($t_status=false,$page=1){
$data=array();
$data=$this->_get_home_base_data();
$admin_info=$this->session->userdata('session_admin');
$task_list = $this->_get_task_list($t_status,$page,site_url("welcome/task_lists/$t_status"));
$data['task_list'] = $task_list['task_list'];
$data['page']=$task_list['page'];
$data['nav_view']=$this->load->view('nav',array('nav_active'=>'in_'.$t_status)+$data,true);
$this->load->view('header', array('navbar_active'=>'mytask')+$data);
$this->load->view('in_refuse');
$this->load->view('footer');
}
//获取任务列表
function _get_task_list($t_status=false,$page=false,$pageurl=false){
$t_td_type=$start_date=$tasktitle=false;
$end_date=date('Y-m-d');
if($this->input->get('tasktype') && $this->input->get('tasktype')!='-') $t_td_type=$this->input->get('tasktype');
if($this->input->get('startdate') && $this->input->get('startdate')!='') $start_date=$this->input->get('startdate');
if($this->input->get('enddate') && $this->input->get('enddate')!='') $end_date=$this->input->get('enddate');
if($this->input->get('tasktitle') && $this->input->get('tasktitle')!='') $tasktitle=$this->input->get('tasktitle');
if(!$t_status && $this->input->get('taskstatus') && $this->input->get('taskstatus')!='-') $t_status=$this->input->get('taskstatus');
$admin_info = $this->session->userdata('session_admin');
//分页
$page_task=$this->Infotasks_model->get_tasks_list($t_status,$admin_info->a_id,$t_td_type,$start_date,$end_date,$tasktitle,$page);
$pages['total']=count($page_task);
$pages['pageSize']= 20;
$pages['url'] = $pageurl;
$pages['current']=$page;
$task_list['page']=show_page($pages);
//获取任务列表
$task_id_str=0;
$page_task=array_slice($page_task,$pages['pageSize']*($page-1),$pages['pageSize']);
foreach ($page_task as $v) {
$task_id_str.=','.$v->t_id;
}
$task_list['task_list'] = $this->Infotasks_model->get_list_by_taskids($task_id_str);
return $task_list;
}
public function _get_home_base_data(){
$user_data=$this->session->userdata('session_admin');
$data['author_rank_list']=$this->Infotasks_model->get_author_rank_list();
$data['article_rank_list']=$this->Infotasks_model->get_article_rank_list();
//最新公告
$announce=$this->Infotaskarticles_model->get_announce('','announce');
$data['announce']=array();
if(!empty($announce))$data['announce']=$announce;
$data['notice_list']=$this->Infotaskarticles_model->get_announce();
$data['avatar']=get_author_photo();
$data['rank_view']=$this->load->view('rank',$data,true);
//获取作者网前url名字组成部分
$data['suer_weburl']=get_user_web_url();
return $data;
}
public function view($t_id)
{
$data=array();
$data['task']=$this->Infotasks_model->detail($t_id);
$admin_info=$this->session->userdata('session_admin');
if(empty($data['task']))
{
show_404();
return false;
}
$data['task_detail']=$this->Infotaskarticles_model->detail($data['task']->t_id);
$data['task_last_version']=$this->Infotaskarticles_model->version_last($data['task']->t_id);
if(!empty($data['task_detail']))
{
$data['information']=$this->Infotaskarticles_model->get_information($data['task_detail']->ta_ic_id);
if (isset($data['information']->ic_sitecode)) {
$sitedata=$this->config->item('site');
$data['sitedata']=$sitedata[$data['information']->ic_sitecode];
}
//判断任务是否已上线
$data['task_status']=$this->Infotasks_model->is_in_used($data['task_detail']->ta_id);
}
if ($data['task']->t_a_id!=$admin_info->a_id and $data['task_detail']->ta_isbest==NULL) {
show_404();
return false;
}
switch ($data['task']->t_status)
{
case 'published':
case 'complete':
$data['nav_view']=$this->load->view('nav',array('nav_active'=>'in_complete')+$data,true);
break;
case 'review':
$data['nav_view'] = $this->load->view('nav', array('nav_active' => 'in_review') + $data, true);
break;
case 'reviewed':
$data['nav_view'] = $this->load->view('nav', array('nav_active' => 'in_reviewed') + $data, true);
break;
case 'unreviewed':
$data['nav_view'] = $this->load->view('nav', array('nav_active' => 'in_unreviewed') + $data, true);
break;
case 'refuse':
$data['nav_view']=$this->load->view('nav',array('nav_active'=>'in_refuse')+$data,true);
break;
case 'wait':
$data['nav_view']=$this->load->view('nav',array('nav_active'=>'in_refuse')+$data,true);
break;
default:
$data['nav_view']=$this->load->view('nav',array('nav_active'=>'in_edit')+$data,true);
break;
}
//获取短消息列表
$data['sms_list']=$this->InfoSMS_model->get_task_sms($data['task']->t_id);
$admin_info=$this->session->userdata('session_admin');
foreach($data['sms_list'] as $sms)
{
if($sms->m_receiver==$admin_info->a_id)
{
$this->InfoSMS_model->readed($sms->m_id);
}
}
$data['admin_info_user']=$admin_info->a_id;
$this->load->view('header', array('navbar_active'=>'mytask')+$data);
if ($data['task']->t_status=='refuse') {
$this->load->view('edit_refuse_task');//未通过审核的投稿
}else{
$this->load->view('task_detail');
}
$this->load->view('footer');
}
public function edit_submit($task_submit=false)
{
$t_id=$this->input->post('t_id');
$task=$this->Infotasks_model->detail($t_id);
$admin_info=$this->session->userdata('session_admin');
if ($admin_info->a_id!=$task->t_a_id) {
$data[] = array('name' => 'no', 'value' => 'error:it\'s not your task!');
echo json_encode($data);
return false;
}
$task_used=$this->Infotaskarticles_model->detail($t_id);
/*if(empty($task_used))
{
$data[] = array('name' => 'no', 'value' => $this->lang->line('task_error_notfound'));
echo json_encode($data);
return false;
}*/
$task_original=$this->Infotaskarticles_model->detail_original($t_id);
if(empty($task_original))
{
if (!empty($task_used)) {
//把原始任务状态改为original防止原始任务信息被删除
$this->Infotaskarticles_model->set_original($task_used->ta_id);
}
//新建一个任务状态改为used
$this->Infotaskarticles_model->add($t_id,$this->input->post('ta_ic_id'), $this->input->post('ta_title')
, $this->input->post('ta_content'), $this->input->post('ta_summary'), $this->input->post('ta_seo_title')
, $this->input->post('ta_seo_description'), $this->input->post('ta_seo_keywords')
, $this->input->post('ta_photo'));
if (!$task_submit) {
$data[] = array('name' => 'ok', 'value' => $this->lang->line('script_success_save'));
echo json_encode($data);
}
return true;
}
else
{
if(empty($task_used))
{
$data[] = array('name' => 'no', 'value' => $this->lang->line('task_error_notfound'));
echo json_encode($data);
return false;
}
$this->Infotaskarticles_model->update($task_used->ta_id, $this->input->post('ta_title'), $this->input->post('ta_content')
, $this->input->post('ta_summary'), $this->input->post('ta_seo_title')
, $this->input->post('ta_seo_description'), $this->input->post('ta_seo_keywords')
, $this->input->post('ta_photo'));
if (!$task_submit) {
$data[] = array('name' => 'ok', 'value' => $this->lang->line('script_success_save'));
echo json_encode($data);
}
return true;
}
}
public function review_submit()
{
if($this->edit_submit(true))
{
$this->Infotaskarticles_model->add($this->input->post('t_id'),$this->input->post('ta_ic_id'), $this->input->post('ta_title')
, $this->input->post('ta_content'), $this->input->post('ta_summary'), $this->input->post('ta_seo_title')
, $this->input->post('ta_seo_description'), $this->input->post('ta_seo_keywords')
, $this->input->post('ta_photo'),'version');
$this->Infotasks_model->reviwed($this->input->post('t_id'),'review');
//发送消息
$this->InfoSMS_model->add('task',$this->input->post('t_id'),$this->input->post('ht_user'),$this->input->post('t_a_id'),'Task submitted; please check!');
$data[] = array('name' => 'ok', 'value' => $this->lang->line('task_success_submit'));
echo json_encode($data);
return true;
}
}
//发送短消息给管理员
public function send_to_admin()
{
$t_id=$this->input->post('t_id');
$task=$this->Infotasks_model->detail($t_id);
if(empty($task))
{
$data[] = array('name' => 'no', 'value' => $this->lang->line('task_error_notfound'));
echo json_encode($data);
return false;
}
$this->form_validation->set_rules('m_content', 'lang:task_m_content', 'required');
if ($this->form_validation->run() == FALSE)
{
$data = array();
foreach ($this->form_validation->_error_array as $key => $value)
{
$data[] = array('name' => $key, 'value' => $value);
}
echo json_encode($data);
return false;
}
else
{
$this->InfoSMS_model->add('task',$task->t_id,$task->t_ht_op_code,$task->t_a_id,$this->input->post('m_content'));
$data[] = array('name' => 'ok', 'value' => $this->lang->line('send_sms_success'));
echo json_encode($data);
//发送邮件通知
$admin_info=$this->session->userdata('session_admin');
$author_admin=$this->Operator_model->get_user($task->t_ht_op_code);
$this->InfoSMS_model->send_mail($admin_info->a_name, $admin_info->a_email, 'gavin', 'gavin@chinahighlights.com', sprintf($this->lang->line('author_email_message_subject'),$task->t_title), $this->lang->line('author_email_message_body'));
return true;
}
}
public function create_task()
{
$data=array();
$data=$this->_get_home_base_data();
$data['nav_view']=$this->load->view('nav_hall',array('nav_active'=>'create_task')+$data,true);
$this->load->view('header', array('navbar_active'=>'create_task')+$data);
$this->load->view('create_task');
$this->load->view('footer');
}
public function create_task_submit()
{
$this->form_validation->set_rules('t_title', 'lang:t_title', 'required');
$this->form_validation->set_rules('t_content', 'lang:t_content', 'required');
$this->form_validation->set_rules('t_expires', 'lang:t_expires', 'required');
if ($this->form_validation->run() == FALSE)
{
$data = array();
foreach ($this->form_validation->_error_array as $key => $value)
{
$data[] = array('name' => $key, 'value' => $value);
}
echo json_encode($data);
return false;
}
else
{
//TODO:暂时把稿件全部发给RURU(zzy),今后会读取各站点的管理员名单
$admin_info=$this->session->userdata('session_admin');
$this->Infotasks_model->add(
$this->input->post('t_title'),
$this->input->post('t_content'),
$admin_info->a_id,
'Gavin',
'contribute',
$this->input->post('t_expires'),
'wait',
$this->input->post('t_attach')
);
$this->Infotaskarticles_model->add($this->Infotasks_model->insert_id,0, '','','','','','','');
$this->InfoSMS_model->add('task',$this->Infotasks_model->insert_id,'Gavin',$admin_info->a_id,'I have submitted a proposal; please check!');
$data[] = array('name' => 'ok', 'value' => $this->lang->line('task_create_success'));
$data[] = array('name'=>'ok_go','value'=>site_url('welcome'));
echo json_encode($data);
return true;
}
}
public function upload_task_attach(){
$save_path='task_attach';
$jsfunction='upload_task_attach';
$upload_id='task_attach';
$config['upload_path'] = APPPATH.'document/'.$save_path;
$config['allowed_types'] = 'gif|jpg|png|rar|zip|docx|doc|xls|xlsx|ppt';
$config['encrypt_name'] = true;
$this->load->library('upload', $config);
if (!$this->upload->do_upload($upload_id))
{
$error = array('error' => $this->upload->display_errors());
var_dump($error);
}
else
{
$data = array('upload_data' => $this->upload->data());
$file_name=$data['upload_data']['file_name'];
echo "<script>parent.$jsfunction('$file_name');</script>";
}
}
//修改后重新提交投稿申请
public function update_task(){
$this->form_validation->set_rules('t_title', 'lang:t_title', 'required');
$this->form_validation->set_rules('t_content', 'lang:t_content', 'required');
$this->form_validation->set_rules('t_expires', 'lang:t_expires', 'required');
if ($this->form_validation->run() == FALSE)
{
$data = array();
foreach ($this->form_validation->_error_array as $key => $value)
{
$data[] = array('name' => $key, 'value' => $value);
}
echo json_encode($data);
return false;
}else{
//更新任务状态
$result=$this->Infotasks_model->update(
$this->input->post('t_id'),
$this->input->post('t_title'),
$this->input->post('t_content'),
$this->input->post('t_a_id'),
'contribute',
$this->input->post('t_expires'),
'wait',
$this->input->post('t_attach')
);
if ($result) {
$this->InfoSMS_model->add('task',$this->input->post('t_id'),'Gavin',$this->input->post('t_a_id'),'I have submitted a proposal; please check!');
$data[] = array('name' => 'ok', 'value' => 'success');
}else{
$data[] = array('name' => 'no', 'value' => 'error');
}
echo json_encode($data);
}
return true;
}
//删除任务
public function delete_task($t_id){
$this->Infotasks_model->delete($t_id);
if ($this->Infotasks_model->delete($t_id)) {
redirect(site_url('welcome/in_refuse_tasks'));
}else{
header('Location: '.$_SERVER['HTTP_REFERER']);
}
return true;
}
//返回指定页面路径pagepath在指定时间内的成效信息
public function get_analytics_by_date($loadtotal=0){
$data=array();
//获取请求的日期范围以及请求的页面路径
$startdate=$this->input->post('startdate');
$enddate=$this->input->post('enddate');
$pagepath=$this->input->post('pagepath');
$sitecode=$this->input->post('sitecode');
if (empty($pagepath)) {
echo '';
return false;
}
//如果开始时间为空则把开始时间设为往前七天
if ($startdate == '') {
$startdate = time()-7*24*60*60;
}else{
$startdate = strtotime($startdate);
}
//如果结束时间为空,则把结束时间设为当天
if ($enddate == '') {
$enddate = time();
}else{
$enddate = strtotime($enddate);
}
if ($startdate>$enddate) {
echo "please check your date";die();
}
//查取google分析数据
$data['analytics_list'] = $this->Infotaskarticles_model->get_analytics_list($pagepath,$sitecode,50,$startdate,$enddate);
$total_visit['pv'] = $total_visit['uv']=$total_visit['agv_time']=$total_visit['entrances']=0;
$analytics_count=0;
//访问量汇总
foreach ($data['analytics_list'] as $v) {
$total_visit['pv']+=$v->kwa_pageviews;
$total_visit['uv']+=$v->kwa_uniquepageviews;
$total_visit['agv_time']+=$v->kwa_avgtimeonpage;
$total_visit['entrances']+=$v->kwa_entrances;
$analytics_count++;
}
$analytics_count==0 ? $analytics_count=1 : null;
$total_visit['agv_time']=ceil($total_visit['agv_time']/$analytics_count);
$data['total_visit']=$total_visit;
//如果loadtotal==1,则只返回google分析的汇总数据;如果loadtotal==0则返回明细数据表
$data['loadtotal']=$loadtotal;
$this->load->view('analytics',$data);
}
public function set_readed($m_id)
{
$this->InfoSMS_model->readed($m_id);
echo 'ok';
}
public function search_by_icid(){
$ic_id_list=$this->input->post('ic_id_list');
$ic_id_list=rtrim(trim($ic_id_list),',').',';
$this->load->model('InfoContents_model');
$data['search_list'] = $this->InfoContents_model->get_ic_contents_by_list($ic_id_list);
$data['search_type'] = 'recommended';
$this->load->view('recommendlist',$data);
}
public function search() {
$this->load->model('Information_model');
$data['keywords'] = $this->input->post('keywords');
$search_url = str_replace($this->config->item('site_url'), "", $data['keywords']);
$data['search_list'] = $this->Information_model->search_url($search_url);
if (count($data['search_list']) === 0) {
$data['search_list'] = $this->Information_model->search($data['keywords']);
}
$data['ic_id_list']=$this->input->post('ic_id_list')==''?'0':$this->input->post('ic_id_list');
$this->load->view('recommendlist',$data);
return TRUE;
}
//保存自定义配置
function save_meta()
{
$this->load->model('InfoMetas_model');
$im_ic_id=$this->input->post('im_ic_id');
$im_key=$this->input->post('im_key');
$im_value=$this->input->post('im_value');
if($im_ic_id && $im_key && $im_value!==false)
{
$meta=$this->InfoMetas_model->get($im_ic_id, $im_key);
if($meta===false)
{
$this->InfoMetas_model->add($im_ic_id, $im_key, $im_value);
}
else
{
$this->InfoMetas_model->update($im_ic_id, $im_key, $im_value);
}
$data[] = array('name' => 'ok', 'value' => 'success');
}
else
{
$data[] = array('name' => 'no', 'value' => 'error');
}
echo json_encode($data);
return true;
}
//保存自定义配置
function delete_meta()
{
$this->load->model('InfoMetas_model');
$im_ic_id=$this->input->post('im_ic_id');
$im_key=$this->input->post('im_key');
if($im_ic_id && $im_key)
{
$this->InfoMetas_model->delete($im_ic_id, $im_key);
$data[] = array('name' => 'ok', 'value' => 'success');
}
else
{
$data[] = array('name' => 'no', 'value' => 'error');
}
echo json_encode($data);
return true;
}
}