PageRenderTime 43ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/application/models/kalkun_model.php

https://github.com/alimashuri/custom_kalkun
PHP | 422 lines | 237 code | 51 blank | 134 comment | 12 complexity | 6fb4d68a1fbbae0548a135440414b70a MD5 | raw file
  1. <?php
  2. /**
  3. * Kalkun
  4. * An open source web based SMS Management
  5. *
  6. * @package Kalkun
  7. * @author Kalkun Dev Team
  8. * @license http://kalkun.sourceforge.net/license.php
  9. * @link http://kalkun.sourceforge.net
  10. */
  11. // ------------------------------------------------------------------------
  12. /**
  13. * Kalkun_model Class
  14. *
  15. * Handle all base database activity
  16. *
  17. * @package Kalkun
  18. * @subpackage Base
  19. * @category Models
  20. */
  21. class Kalkun_model extends Model {
  22. /**
  23. * Constructor
  24. *
  25. * @access public
  26. */
  27. function Kalkun_model()
  28. {
  29. parent::Model();
  30. }
  31. // --------------------------------------------------------------------
  32. /**
  33. * Login
  34. *
  35. * Check login credential and set session
  36. *
  37. * @access public
  38. */
  39. function login()
  40. {
  41. $username = $this->input->post('username');
  42. $password = sha1($this->input->post('password'));
  43. $this->db->from('user');
  44. $this->db->where('username', $username);
  45. $this->db->where('password', $password);
  46. $query = $this->db->get();
  47. if($query->num_rows()=='1') {
  48. $this->session->set_userdata('loggedin', 'TRUE');
  49. $this->session->set_userdata('level', $query->row('level'));
  50. $this->session->set_userdata('id_user', $query->row('id_user'));
  51. $this->session->set_userdata('username', $query->row('username'));
  52. if($this->input->post('remember_me')) $this->session->set_userdata('remember_me', TRUE);
  53. redirect('kalkun');
  54. }
  55. else $this->session->set_flashdata('errorlogin', 'Your username or password are incorrect');
  56. }
  57. // --------------------------------------------------------------------
  58. /**
  59. * Get Folders
  60. *
  61. * List of custom folders
  62. *
  63. * @access public
  64. */
  65. function get_folders($option=NULL, $id_folder=NULL, $id_user=NULL)
  66. {
  67. $this->db->from('user_folders');
  68. switch($option)
  69. {
  70. case 'all':
  71. $this->db->where('id_folder >', '10');
  72. $this->db->where('id_user', $this->session->userdata('id_user'));
  73. break;
  74. case 'exclude':
  75. $this->db->where('id_folder >', '10');
  76. $this->db->where('id_folder !=', $id_folder);
  77. $this->db->where('id_user', $this->session->userdata('id_user'));
  78. break;
  79. case 'name':
  80. $this->db->where('id_folder', $id_folder);
  81. if($id_folder!='5' && $id_folder!='6')
  82. {
  83. $this->db->where('id_user', $this->session->userdata('id_user'));
  84. }
  85. break;
  86. }
  87. $this->db->order_by('name');
  88. return $this->db->get();
  89. }
  90. // --------------------------------------------------------------------
  91. /**
  92. * Add Folder
  93. *
  94. * Add custom folder
  95. *
  96. * @access public
  97. */
  98. function add_folder()
  99. {
  100. $data = array ('name' => $this->input->post('folder_name'),'id_user' => $this->input->post('id_user'));
  101. $this->db->insert('user_folders',$data);
  102. }
  103. // --------------------------------------------------------------------
  104. /**
  105. * Rename Folder
  106. *
  107. * Rename custom folder
  108. *
  109. * @access public
  110. */
  111. function rename_folder()
  112. {
  113. $this->db->set('name', $this->input->post('edit_folder_name'));
  114. $this->db->where('id_folder', $this->input->post('id_folder'));
  115. $this->db->update('user_folders');
  116. }
  117. // --------------------------------------------------------------------
  118. /**
  119. * Delete Folder
  120. *
  121. * Delete custom folder
  122. *
  123. * @access public
  124. */
  125. function delete_folder($id_folder=NULL)
  126. {
  127. $id_user = $this->session->userdata('id_user');
  128. // get inbox
  129. $this->db->select_as('inbox.ID', 'id_inbox');
  130. $this->db->from('inbox');
  131. $this->db->join('user_inbox', 'user_inbox.id_inbox=inbox.ID');
  132. $this->db->join('user_folders', 'user_folders.id_folder=inbox.id_folder');
  133. $this->db->where('user_folders.id_folder', $id_folder);
  134. $inbox = $this->db->get();
  135. // delete inbox and user_inbox
  136. foreach($inbox->result() as $tmp)
  137. {
  138. $this->db->where('ID', $tmp->id_inbox);
  139. $this->db->delete('inbox');
  140. $this->db->where('id_inbox', $tmp->id_inbox);
  141. $this->db->delete('user_inbox');
  142. }
  143. // deprecated
  144. // inbox
  145. /* $inbox = "DELETE i, ui
  146. FROM user_folders AS uf
  147. LEFT JOIN inbox AS i ON i.id_folder = uf.id_folder
  148. LEFT JOIN user_inbox AS ui ON ui.id_inbox = i.ID
  149. WHERE uf.id_folder = '".$id_folder."'";
  150. $this->db->query($inbox);*/
  151. // get sentitems
  152. $this->db->select_as('sentitems.ID', 'id_sentitems');
  153. $this->db->from('sentitems');
  154. $this->db->join('user_sentitems', 'user_sentitems.id_sentitems=sentitems.ID');
  155. $this->db->join('user_folders', 'user_folders.id_folder=sentitems.id_folder');
  156. $this->db->where('user_folders.id_folder', $id_folder);
  157. $sentitems = $this->db->get();
  158. // delete sentitems and user_sentitems
  159. foreach($sentitems->result() as $tmp)
  160. {
  161. $this->db->where('ID', $tmp->id_sentitems);
  162. $this->db->delete('sentitems');
  163. $this->db->where('id_sentitems', $tmp->id_sentitems);
  164. $this->db->delete('user_sentitems');
  165. }
  166. // deprecated
  167. // Sentitems
  168. /*$sentitems = "DELETE s, us
  169. FROM user_folders AS uf
  170. LEFT JOIN sentitems AS s ON s.id_folder = uf.id_folder
  171. LEFT JOIN user_sentitems AS us ON us.id_sentitems = s.ID
  172. WHERE uf.id_folder = '".$id_folder."'";
  173. $this->db->query($sentitems);*/
  174. $this->db->delete('user_folders', array('id_folder' => $id_folder, 'id_user' => $id_user));
  175. }
  176. // --------------------------------------------------------------------
  177. /**
  178. * Update Setting
  179. *
  180. * Update setting/user preferences
  181. *
  182. * @access public
  183. */
  184. function update_setting($option)
  185. {
  186. switch($option)
  187. {
  188. case 'general':
  189. $this->db->set('language', $this->input->post('language'));
  190. $this->db->set('paging', $this->input->post('paging'));
  191. $this->db->set('permanent_delete', $this->input->post('permanent_delete'));
  192. $this->db->set('delivery_report', $this->input->post('delivery_report'));
  193. $this->db->set('conversation_sort', $this->input->post('conversation_sort'));
  194. $this->db->where('id_user', $this->session->userdata('id_user'));
  195. $this->db->update('user_settings');
  196. break;
  197. case 'personal':
  198. $this->db->set('realname', $this->input->post('realname'));
  199. $this->db->set('username', $this->input->post('username'));
  200. $this->db->set('phone_number', $this->input->post('phone_number'));
  201. $this->db->where('id_user', $this->session->userdata('id_user'));
  202. $this->db->update('user');
  203. $sig_opt = $this->input->post('signatureoption');
  204. $this->db->set('signature', $sig_opt.';'.$this->input->post('signature'));
  205. $this->db->where('id_user', $this->session->userdata('id_user'));
  206. $this->db->update('user_settings');
  207. break;
  208. case 'appearance':
  209. $this->db->set('theme', $this->input->post('theme'));
  210. $this->db->set('bg_image', $this->input->post('bg_image_option').';background.jpg');
  211. $this->db->where('id_user', $this->session->userdata('id_user'));
  212. $this->db->update('user_settings');
  213. break;
  214. case 'password':
  215. $this->db->set('password', sha1($this->input->post('new_password')));
  216. $this->db->where('id_user', $this->session->userdata('id_user'));
  217. $this->db->update('user');
  218. break;
  219. }
  220. }
  221. // --------------------------------------------------------------------
  222. /**
  223. * Get Setting
  224. *
  225. * Get setting/user preferences
  226. *
  227. * @access public
  228. */
  229. function get_setting($id_user = '')
  230. {
  231. if($id_user == '') $id_user = $this->session->userdata('id_user');
  232. $this->db->where('user.id_user', $id_user);
  233. $this->db->join('user', 'user.id_user = user_settings.id_user');
  234. return $this->db->get('user_settings');
  235. }
  236. // --------------------------------------------------------------------
  237. /**
  238. * Check Setting
  239. *
  240. * Check for duplicate username or phone number
  241. *
  242. * @access public
  243. */
  244. function check_setting($param)
  245. {
  246. $this->db->from('user');
  247. switch($param['option'])
  248. {
  249. case 'username':
  250. $this->db->where('username', $param['username']);
  251. break;
  252. case 'phone_number':
  253. $this->db->where('phone_number', $param['phone_number']);
  254. break;
  255. }
  256. return $this->db->get();
  257. }
  258. // --------------------------------------------------------------------
  259. /**
  260. * Get Gammu Info
  261. *
  262. * Get gammu related information
  263. *
  264. * @access public
  265. */
  266. function get_gammu_info($option)
  267. {
  268. switch($option)
  269. {
  270. case 'gammu_version':
  271. $this->db->from('phones');
  272. $this->db->select('Client');
  273. $this->db->order_by('UpdatedInDB', 'DESC');
  274. $this->db->limit('1');
  275. break;
  276. case 'db_version':
  277. $this->db->from('gammu');
  278. $this->db->select('Version');
  279. break;
  280. case 'last_activity':
  281. $this->db->from('phones');
  282. $this->db->select('UpdatedInDB');
  283. $this->db->order_by('UpdatedInDB', 'DESC');
  284. $this->db->limit('1');
  285. break;
  286. case 'phone_imei':
  287. $this->db->from('phones');
  288. $this->db->select('IMEI');
  289. $this->db->order_by('UpdatedInDB', 'DESC');
  290. $this->db->limit('1');
  291. break;
  292. case 'phone_signal':
  293. $this->db->from('phones');
  294. $this->db->select('Signal');
  295. $this->db->order_by('UpdatedInDB', 'DESC');
  296. $this->db->limit('1');
  297. break;
  298. case 'phone_battery':
  299. $this->db->from('phones');
  300. $this->db->select('Battery');
  301. $this->db->order_by('UpdatedInDB', 'DESC');
  302. $this->db->limit('1');
  303. break;
  304. }
  305. return $this->db->get();
  306. }
  307. // --------------------------------------------------------------------
  308. /**
  309. * Get SMS Used
  310. *
  311. * Get SMS count used by user based on date
  312. *
  313. * @access public
  314. */
  315. function get_sms_used($option, $param, $type = 'out')
  316. {
  317. switch($option)
  318. {
  319. case 'date':
  320. $this->db->select($type.'_sms_count');
  321. $this->db->from('sms_used');
  322. $this->db->where('sms_date', $param['sms_date']);
  323. $this->db->where('id_user', $param['user_id']);
  324. $res = $this->db->get()->row($type.'_sms_count');
  325. if(!$res) return 0;
  326. else return $res;
  327. break;
  328. }
  329. }
  330. // --------------------------------------------------------------------
  331. /**
  332. * Add SMS Used
  333. *
  334. * Add SMS counter used by user based on date
  335. *
  336. * @access public
  337. */
  338. function add_sms_used($user_id, $type = 'out')
  339. {
  340. $date = date("Y-m-d");
  341. $count = $this->_check_sms_used($date, $user_id,$type);
  342. $this->db->where('sms_date', $date);
  343. $this->db->where('id_user', $user_id);
  344. if($this->db->count_all_results('sms_used')>0)
  345. {
  346. $this->db->set($type.'_sms_count', $count+1);
  347. $this->db->where('sms_date', $date);
  348. $this->db->where('id_user', $user_id);
  349. $this->db->update('sms_used');
  350. }
  351. else
  352. {
  353. $this->db->set($type.'_sms_count', '1');
  354. $this->db->set('sms_date', $date);
  355. $this->db->set('id_user', $user_id);
  356. $this->db->insert('sms_used');
  357. }
  358. }
  359. function _check_sms_used($date, $user_id , $type = 'out')
  360. {
  361. $this->db->select($type."_sms_count");
  362. $this->db->from('sms_used');
  363. $this->db->where('sms_date', $date);
  364. $this->db->where('id_user', $user_id);
  365. $res = $this->db->get()->row($type.'_sms_count');
  366. if(!$res) return 0;
  367. else return $res;
  368. }
  369. }
  370. /* End of file kalkun_model.php */
  371. /* Location: ./application/models/kalkun_model.php */