1: <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
2:
3: class Article extends CI_Controller {
4:
5: function __construct(){
6: parent::__construct();
7: $this->load->driver('cache', array('backup' => 'file'));
8: }
9:
10:
11: public function index()
12: {
13: $this->load->model('Model_article');
14: $this->Model_article->remove_article_full();
15: $this->load->view('head');
16: $this->load->view('article/list');
17: $this->load->view('foot');
18: }
19:
20: public function edit($id,$action = ''){
21: $uri_parts = explode('?', $_SERVER['REQUEST_URI'], 2);
22: if($this->input->get('dellink') !=''){
23: $this->load->model('Model_link');
24: $this->Model_link->disable_data_link($id,$this->input->get('dellink'));
25: header('Location:'.'http://' . $_SERVER['HTTP_HOST'] . $uri_parts[0]);
26: }
27: if($this->input->get('activeref')!=''){
28: $this->load->model('Model_link');
29: $this->Model_link->enable_data_link($id,$this->input->get('activeref'));
30: header('Location:'.'http://' . $_SERVER['HTTP_HOST'] . $uri_parts[0]);
31: }
32:
33: if($this->input->post('action')!='' && $this->input->post('indexTitle')!=''){
34: $index['index_title'] = $this->input->post('indexTitle');
35: $index['index_data'] = base64_decode(urldecode($id));
36: $this->db->insert('xenon_index',$index);
37: }
38:
39: $id_decrypted = base64_decode(urldecode($id));
40: $this->load->model('Model_article');
41: $this->load->model('Model_link');
42: if($action == 'refresh'){
43: $this->Model_article->remove_cache($id);
44: }
45: $this->Model_article->remove_article_full();
46: $ar = $this->Model_article->update($id);
47: $data['links'] = $this->Model_link->article_links($id_decrypted);
48: $data['references'] = $this->Model_link->article_references($id_decrypted);
49: $data['article'] = $this->Model_article->pick($id);
50: $data['indexs'] = $this->Model_article->index($id);
51: $this->load->view('head',(is_array($ar)?$ar:array()));
52: $this->load->view('article/edit',$data);
53: $this->load->view('foot');
54: }
55:
56: public function poplist(){
57: if($this->input->get('selected')!=''){
58: $url = base64_decode(urldecode($this->input->get('selected')));
59:
60: $this->session->set_flashdata('current_article',$url);
61:
62: }
63: $this->load->model('Model_article');
64: $this->Model_article->remove_article_full();
65: $this->load->view('head_pop');
66: $this->load->view('article/list-popup');
67: $this->load->view('foot_pop');
68: }
69:
70:
71: public function popreference($id)
72: {
73: $this->load->model('Model_article');
74: $this->load->view('head_pop');
75: $this->load->view('article/reference-update',array('article'=>$this->Model_article->pick($id),'id'=>$id));
76: $this->load->view('foot_pop');
77: }
78:
79:
80: public function detail($id,$backup_id = ''){
81: $this->load->model('Model_article');
82: $article = '';
83: if($id == 'link'){
84: $article = $this->Model_article->pick_link($backup_id);
85: }else{
86: $article = $this->Model_article->pick($id);
87: }
88: if($article->data_body_cache == ''){
89: $this->Model_article->build_article_cache($article->data_body_temp,$article->data_id);
90: $article = $this->Model_article->pick(urlencode(base64_encode($article->data_id)));
91: }
92: $this->load->view('head');
93: $this->load->view('article/detail',array('article'=>$article,'indexs'=>$this->Model_article->index($id),'references'=>$this->Model_article->reference($id)));
94: $this->load->view('foot');
95: }
96:
97: public function core($id){
98: $this->load->model('Model_article');
99: $this->load->view('head');
100: $this->load->view('article/link',array('article'=>$this->Model_article->pick($id),'indexs'=>$this->Model_article->index($id),'references'=>$this->Model_article->reference($id)));
101: $this->load->view('foot');
102: }
103:
104:
105: public function cache($action = 'refresh'){
106: $all_nodes = $this->db->query('select * from xenon_data limit 1000');
107: foreach($all_nodes->result() as $article){
108: $ref_count = 0;
109: $dom = new DOMDocument();
110: $dom->loadHTML(html_entity_decode(mb_convert_encoding($article->data_body_temp,"HTML-ENTITIES","UTF-8")));
111: $a_tags = $dom->getElementsByTagName('a');
112: foreach ($a_tags as $a_tag) {
113: $txt = str_replace('&','&',str_replace('’', "'", $a_tag->nodeValue));
114: $txt = htmlentities($txt);
115: if($txt == 'references'){
116: $ref_count = $ref_count + 1;
117: $txt = '['.$ref_count.']';
118: }
119: echo $txt.'<br />';
120: }
121:
122: 123: 124:
125: }
126: }
127:
128: public function links(){
129: $all_nodes = $this->db->query('select * from xenon_link where data_id = 0;');
130: foreach($all_nodes->result() as $row){
131:
132: $link = str_replace('%20', ' ', $row->link_href);
133: if(strpos($link,'JavaScript:XdkPopup')!== FALSE){
134: $link = str_replace("JavaScript:XdkPopup('",'',$row->link_href);
135: $link = substr($link,0,-2);
136: }
137: $this->db->query('update xenon_link set link_href = \''.$link.'\' where link_id = '.$row->link_id);
138: if($row->link_text == 'references'){
139: echo 'reference = '.$link.'<br />';
140: }else{
141: echo $row->link_text.' = '.$link.'<br />';
142:
143: }
144: }
145: }
146:
147: public function generate_gmreader($start = ''){
148: if($start!=''){
149: $start = $start * 500;
150: $this->load->model('Model_article');
151: $all_data = $this->db->query("select data_id, data_body_temp from xenon_data limit ".$start.",500");
152: foreach($all_data->result() as $data_topic){
153: $dataTmp = $data_topic->data_body_temp;
154:
155:
156:
157: $this->Model_article->build_article_cache_gmreader($dataTmp,$data_topic->data_id);
158:
159: }
160: }
161: for($i = 0;$i<12;$i++){
162: echo '<a href="'.site_url('article/generate_gmreader/'.$i).'">'.($i + 1).'</a>';
163: }
164:
165: }
166:
167: public function build_temp($id){
168: $this->load->model('Model_article');
169: $all_data = $this->db->select("data_id, data_body")->from("xenon_data")->where("data_id",$id)->get()->row();
170: $this->Model_article->build_article_temp($all_data->data_body,$all_data->data_id);
171: }
172:
173: public function reverting_data(){
174: $articles = $this->db->from('xenon_data')->where('data_id',12)->get()->row();
175: preg_match_all("/<a.*?href=\"([^`]*?)\"([^`]*?)>([^`]*?)<\/a>/",$articles->data_body_cache,$ar);
176: $a_tag = $ar[0];
177: $a_href = $ar[1];
178: $a_other = $ar[2];
179: $a_title = $ar[3];
180:
181: $a_reference_num = array();
182: $a_reference_link = array();
183:
184:
185: }
186:
187: public function clear(){
188: if($this->cache->file->clean()!==FALSE){
189: redirect('employee');
190: }else{
191: $this->load->view('head');
192: echo 'Cache deletion failed.';
193: $this->load->view('foot');
194: }
195: }
196:
197: }