1: <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
2: class Model_reference extends CI_Model{
3: public function browse(){
4: $cache_name = '_references_term_'.$this->input->get('term').'_alpha_'.$this->input->get('alpha').'_sort_'.$this->input->get('sort').'_page_'.$this->input->get('page');
5: if ( ! $data = $this->cache->file->get($cache_name)) {
6: $this->db->from('xenon_reference')->select('refe_id, refe_title, refe_modified, link_status');
7: $this->db->join('(SELECT DISTINCT data_id, link_status FROM xenon_link WHERE link_type = \'r\') as xenon_link', 'data_id = refe_id', 'left');
8:
9: if ($this->input->get('term') != '') {
10: $this->db->like('refe_title', $this->input->get('term'));
11: }
12: if ($this->input->get('alpha') != '') {
13: $this->db->where("refe_title like '" . $this->input->get('alpha') . "%'", '', FALSE);
14: }
15: if ($this->input->get('sort') != '') {
16: $this->db->order_by($this->input->get('sort'));
17: } else {
18: $this->db->order_by('refe_title');
19: }
20: if ($this->input->get('page') != '') {
21: $page = $this->input->get('page');
22: $start = ($page * 50) - 50;
23: $end = ($page * 50);
24: $this->db->limit($start, $end);
25: } else {
26: $this->db->limit(50);
27: }
28:
29: $data = $this->db->get()->result();
30: $this->cache->file->save($cache_name, $data, 2592000);
31: }
32: return $data;
33: }
34:
35: public function render($reference){
36: return '
37: <tr>
38: <td>'.$reference->refe_title.'</td>
39: <td>'.date('F d,Y',$reference->refe_modified).'</td>
40: <td><a href="'.site_url('reference/edit/'.urlencode(base64_encode($reference->refe_id))).'">Edit</a> | <a href="?action=delete&id='.urlencode(base64_encode($reference->refe_id)).'">Delete</a> | <a href="?action='.($reference->link_status == 'y' ?'disable':'enable').'&id='.urlencode(base64_encode($reference->refe_id)).'">'.($reference->link_status == 'y' ?'Disable Link':'Enable Link').'</a></td>
41: </tr>
42: ';
43:
44: }
45: public function render_pop($reference){
46: $url = '<a class="article_link" href="/reference/'.urlencode(base64_encode($reference->refe_id)).'">reference</a>';
47: $url = urlencode(base64_encode($url));
48: $url1= urlencode($reference->refe_title);
49: $url2= urlencode($reference->refe_id);
50: return '
51: <tr>
52: <td>'.$reference->refe_title.'</td>
53: <td align="center"><a href="?selected='.$url.'&title='.$url1.'&id='.$url2.'">Select</a>
54: </tr>
55: ';
56: }
57: public function error(){
58: return '
59: <tr>
60: <td colspan="3">No artciles found</td>
61: </tr>
62: ';
63: }
64: public function pick($enc_id){
65: return $this->db->from('xenon_reference')->where('refe_id',base64_decode(urldecode($enc_id)))->get()->row();
66: }
67: public function pick_link($enc_id){
68: $data_id = $this->db->select('data_id')->from('xenon_link')->where('link_id',base64_decode(urldecode($enc_id)))->get()->row()->data_id;
69: return $this->pick(urlencode(base64_encode($data_id)));
70: }
71: public function articles($enc_id){
72: return $this->db->query('select d.data_id, d.data_title, dl.status, l.link_status,l.link_id,dl.link_id as lid, dl.data_id as did from xenon_data_links dl inner join xenon_link l on dl.link_id = l.link_id inner join xenon_data d on d.data_id = dl.data_id where l.data_id = '.base64_decode(urldecode($enc_id)));
73: }
74: public function article_reference_add($id,$rid,$rowed){
75: $link = $this->db->from('xenon_link')->where('data_id',$rid)->where('link_type','r')->get();
76: $refe = $this->db->from('xenon_reference')->where('refe_id',$rid)->get();
77:
78: if($link->num_rows() > 0){
79: $refe_link = $this->db->from('xenon_data_links')->where('data_id',$id)->where('link_id',$link->row()->link_id)->get();
80: if($refe_link->num_rows() <= 0){
81: $data['data_id'] = $id;
82: $data['link_id'] = $link->row()->link_id;
83: $this->db->insert('xenon_data_links',$data);
84: }
85: return array('<li>'.$refe->row()->refe_title.'<a href="?dellink='.urlencode(base64_encode($link->row()->link_id)).'"><div class="delref"></div></a></li>','<a href="'.urlencode(base64_encode($link->row()->link_id)).'" class="blueref">references</a>');
86: }else{
87: $data['link_class'] = 'blueref';
88: $data['data_id'] = $rid;
89: $data['link_text'] = 'references';
90: $data['link_href'] = $refe->row()->refe_link;
91: $data['link_type'] = 'r';
92: $this->db->insert('xenon_link',$data);
93: $iddd = $this->db->insert_id();
94: $data['data_id'] = $id;
95: $data['link_id'] = $iddd;
96: $this->db->insert('xenon_data_links',$data);
97: return array('<li>'.$refe->row()->refe_title.'<a href="?dellink='.urlencode(base64_encode($iddd)).'"><div class="delref"></div></a></li>','<a href="'.urlencode(base64_encode($iddd)).'" class="blueref">references</a>');
98: }
99: }
100:
101: public function article_reference_add_with_term($id,$rterm){
102: $row_id = $this->db->from('xenon_reference')->where('refe_link',$rterm)->get();
103: if($row_id->num_rows() > 0){
104: $row_id = $row_id->row();
105: $row = $this->db->from('xenon_reference_data')->where('data_id',$id)->where('refe_id',$row_id->refe_id)->get();
106: $rowL= $this->db->from('xenon_reference_data')->where('data_id',$id)->get();
107: if($row->num_rows() > 0){
108: return $row->row()->row_num;
109: }else{
110: $data['refe_id'] = $row_id->refe_id;
111: $data['data_id'] = $id;
112: $data['row_num'] = $rowL->num_rows() + 1;
113: $this->db->insert('xenon_reference_data',$data);
114: return $data['row_num'];
115: }
116: }else{
117: echo $rterm;
118: }
119: }
120:
121: public function update($id){
122: if($this->input->post('action')=='update_reference'){
123: $id = base64_decode(urldecode($id));
124: $data['refe_title'] = $this->input->post('dtitle');
125: $data['refe_body'] = $this->input->post('content');
126: $data['refe_modified'] = time();
127: $this->db->where('refe_id',$id);
128: $this->db->update('xenon_reference',$data);
129: 130: 131: 132:
133: return array('success'=>'Reference has been updated Successfully');
134: }
135: }
136:
137: public function article($enc_id){
138:
139:
140: return $this->db->distinct()->select('xenon_data.data_id, data_title')->from('xenon_reference_data')->join('xenon_data','xenon_reference_data.data_id = xenon_data.data_id')->where('refe_id',base64_decode(urldecode($enc_id)))->get()->result();
141: }
142:
143: public function delete(){
144: if($this->input->get('action') == 'delete'){
145: $this->db->query('delete from xenon_reference where refe_id = '.base64_decode(urldecode($this->input->get('id'))));
146: $this->db->query('delete from xenon_reference_data where refe_id = '.base64_decode(urldecode($this->input->get('id'))));
147: }
148: if($this->input->get('action') == 'disable'){
149: $data['link_status'] = 'n';
150: $this->db->where('data_id',base64_decode(urldecode($this->input->get('id'))));
151: $this->db->update('xenon_link',$data);
152:
153: $links = $this->db->select('link_id')->from('xenon_link')->where('data_id',base64_decode(urldecode($this->input->get('id'))))->get();
154: if($links->num_rows() > 0){
155: $links_list = array();
156: foreach($links->result() as $l){
157: $links_list[] = $l->link_id;
158: }
159: $datas = $this->db->select('data_id')->from('xenon_data_links')->where_in('link_id',$links_list)->get();
160: if($datas->num_rows() > 0){
161: $datas_list = array();
162: foreach($datas->result() as $l){
163: $datas_list[] = $l->data_id;
164: }
165: $dataz['data_body_cache'] = '';
166: $this->db->where_in('data_id',$datas_list);
167: $this->db->update('xenon_data',$dataz);
168: }
169: }
170: }
171: }
172:
173: public function add(){
174: if($this->input->post('action') == 'add_reference'){
175: if($this->input->post('dtitle') != '' && $this->input->post('content')!=''){
176: $data['refe_title'] = $this->input->post('dtitle');
177: $data['refe_body'] = $this->input->post('content');
178: $data['refe_created'] = time();
179: $data['refe_createdby'] = $this->session->userdata('user_id');
180: $this->db->insert('xenon_reference',$data);
181: $id = $this->db->insert_id();
182: $data_link['link_text'] = 'references';
183: $data_link['link_href'] = urlencode(base64_encode($id));
184: $data_link['link_class'] = 'blueref';
185: $data_link['link_type'] = 'r';
186: $data_link['link_status'] = 'y';
187: $data_link['data_id'] = $id;
188: $this->db->insert('xenon_link',$data_link);
189: redirect('reference/edit/'.urlencode(base64_encode($id)));
190: }
191: }
192: }
193: }?>