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

/masportales/application/models/sites_model.php

https://github.com/eloypineda/XHTMLized
PHP | 269 lines | 172 code | 22 blank | 75 comment | 33 complexity | d94c599c1b52f1c390ea3605b2064507 MD5 | raw file
  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2. class Sites_model extends CI_Model
  3. {
  4. public function __construct()
  5. {
  6. parent::__construct();
  7. }
  8. /**
  9. * sites. getSites
  10. *
  11. * @access public
  12. * @since 0.5
  13. *
  14. * @param array $params
  15. *
  16. * @return array
  17. */
  18. public function getSites($params = array())
  19. {
  20. $defaults = array(
  21. 'start' => 0,
  22. 'limit' => 20,
  23. 'order_by' => 'date_added DESC',
  24. 'search_by' => false,
  25. 'search' => '',
  26. 'filter_by' => false,
  27. 'filter' => ''
  28. );
  29. $params = array_merge($defaults, $params);
  30. $where = "";
  31. if ($params['filter_by']) {
  32. if (is_array($params['filter_by'])) {
  33. foreach ($params['filter_by'] as $key => $value) {
  34. $where.= " AND " . $value . " = '" . $params['filter'][$key] . "'";
  35. }
  36. } elseif (is_string($params['filter_by'])) {
  37. $where.= " AND " . $params['filter_by'] . " = '" . $params['filter'] . "'";
  38. }
  39. }
  40. if ($params['search_by']) {
  41. if (is_array($params['search_by'])) {
  42. $searh_fields = array();
  43. foreach ($params['search_by'] as $key => $value) {
  44. $searh_fields[] = $value . " LIKE '%" . $params['search'][$key] . "%'";
  45. }
  46. $where.= " AND (" . implode(" OR ", $searh_fields) . ")";
  47. } else {
  48. $where.= " AND " . $params['search_by'] . " LIKE '%" . $params['search'] . "%'";
  49. }
  50. }
  51. $sql = "SELECT s.*, u.display_name as user_name, u.email as user_email FROM sites s
  52. LEFT JOIN users u ON (s.owner_ID = u.user_ID)
  53. WHERE s.subdomain is not null$where";
  54. $sql.= ($params['order_by']) ? " ORDER BY " . $params['order_by'] : "";
  55. $sql.= " LIMIT " . $params['start'] . ", " . $params['limit'] . ";";
  56. $query = $this->db->query($sql);
  57. if ($query->num_rows() > 0) {
  58. return $query->result_array();
  59. } else {
  60. return false;
  61. }
  62. }
  63. /**
  64. * sites. getNSites
  65. *
  66. * @access public
  67. * @since 0.5
  68. *
  69. * @param array $params
  70. *
  71. * @return int
  72. */
  73. public function getNSites()
  74. {
  75. $sql = "SELECT COUNT(site_ID) as n_sites FROM sites";
  76. $query = $this->db->query($sql);
  77. if ($query->num_rows() > 0) {
  78. $row = $query->row();
  79. $query->free_result();
  80. return $row->n_sites;
  81. } else {
  82. $query->free_result();
  83. return 0;
  84. }
  85. }
  86. /**
  87. * sites. getSiteInfo
  88. *
  89. * @access public
  90. * @since 0.9
  91. *
  92. * @param int $site_id
  93. *
  94. * @return bool|array
  95. */
  96. public function getSiteInfo($site_id, $owner_id = null)
  97. {
  98. $and_site = '';
  99. if ($owner_id !== null) {
  100. $and_site = "AND s.owner_ID = '$owner_id'";
  101. }
  102. $sql = "SELECT s.*, sa.address, sa.zipcode, sa.city, sa.state, sa.country, sa.phone FROM sites s
  103. LEFT JOIN sites_address sa USING (site_ID)
  104. WHERE s.site_ID = '$site_id' $and_site
  105. LIMIT 1;";
  106. $query = $this->db->query($sql);
  107. if ($query->num_rows() > 0) {
  108. return $query->row_array();
  109. } else {
  110. return false;
  111. }
  112. }
  113. /**
  114. * sites. saveUser
  115. *
  116. * @access public
  117. * @since 0.5
  118. *
  119. * @param array $data
  120. * @param int $site_id
  121. *
  122. * @return int
  123. */
  124. public function saveSite($data = array(), $site_id = null)
  125. {
  126. if ($data['sites']['domain'] == '') unset($data['sites']['domain']);
  127. /*
  128. echo '<pre>';
  129. print_r($data);
  130. echo '</pre>';
  131. exit();
  132. */
  133. if ($site_id) {
  134. // update site
  135. $where = array('user_ID' => $user_id);
  136. if ($this->db->update('users', $data['users'], $where)) {
  137. if (isset($data['users_address']) and is_array($data['users_address'])) {
  138. $this->db->update('users_address', $data['users_address'], $where);
  139. }
  140. if (isset($data['users_roles']) and is_array($data['users_roles'])) {
  141. $this->db->delete('users_roles', $where);
  142. foreach ($data['users_roles'] as $role) {
  143. $this->db->insert('users_roles', array('user_ID' => $user_id, 'role_ID' => $role));
  144. }
  145. }
  146. if (isset($data['users_meta']) and is_array($data['users_meta'])) {
  147. $this->db->delete('users_meta', $where);
  148. foreach ($data['users_meta'] as $key => $value) {
  149. $this->db->insert('users_meta', array('user_ID' => $user_id, 'meta_key' => $key, 'meta_value' => $value));
  150. }
  151. }
  152. return $user_id;
  153. } else {
  154. return false;
  155. }
  156. } else {
  157. // create new site
  158. // first we create the new franchiser user that will manage the site
  159. $data['users']['IP'] = $this->input->ip_address();
  160. $data['users']['date_added'] = date('Y-m-d H:i:s');
  161. if ($this->db->insert('users', $data['users'])) {
  162. $user_id = $this->db->insert_id();
  163. if (isset($data['users_address']) and is_array($data['users_address'])) {
  164. $data['users_address']['user_ID'] = $user_id;
  165. $this->db->insert('users_address', $data['users_address']);
  166. }
  167. // the role of the user will be 'franquiciado'
  168. $this->db->insert('users_roles', array('user_ID' => $user_id, 'role_ID' => '2'));
  169. // once we created the user we create the franchise site
  170. $data['sites']['owner_ID'] = $user_id;
  171. $data['sites']['status'] = '1';
  172. $data['sites']['date_added'] = date('Y-m-d H:i:s');
  173. if ($this->db->insert('sites', $data['sites'])) {
  174. $site_id = $this->db->insert_id();
  175. $this->saveSiteSettings($site_id, 'theme', 'default');
  176. $sql = "INSERT INTO `banners_sites_positions` (`banner_position_ID`, `site_ID`) VALUES (1, $site_id),
  177. (2, $site_id),
  178. (6, $site_id),
  179. (7, $site_id),
  180. (9, $site_id),
  181. (10, $site_id),
  182. (15, $site_id);";
  183. $query = $this->db->query($sql);
  184. return $site_id;
  185. } else {
  186. return false;
  187. }
  188. } else {
  189. return false;
  190. }
  191. }
  192. }
  193. /**
  194. * sites. getSiteOwner
  195. *
  196. * @access public
  197. * @since 0.9
  198. *
  199. * @param int $company_id
  200. *
  201. * @return mixed
  202. */
  203. public function getSiteOwner($site_id)
  204. {
  205. $sql = "SELECT owner_ID FROM sites WHERE site_ID = $site_id LIMIT 1";
  206. $query = $this->db->query($sql);
  207. if ($query->num_rows() > 0) {
  208. $result = $query->row_array();
  209. return $result['owner_ID'];
  210. } else {
  211. return false;
  212. }
  213. }
  214. /**
  215. * site. saveSiteSettings
  216. *
  217. * @access public
  218. * @since 0.5
  219. *
  220. * @param string|array $setting
  221. * @param string $value
  222. *
  223. * @return array
  224. */
  225. public function saveSiteSettings($site_id, $setting, $value = null)
  226. {
  227. $error = false;
  228. if (is_string($setting) and $value != null) {
  229. $settings = array($setting => $value);
  230. } elseif (is_array($setting)) {
  231. $settings = $setting;
  232. } else {
  233. return false;
  234. }
  235. foreach ($settings as $setting => $value) {
  236. $sql = "INSERT INTO settings (site_ID, meta_group, meta_key, meta_value)
  237. VALUES ($site_id, 'site', '" . $setting . "', '" . $value ."')
  238. ON DUPLICATE KEY UPDATE meta_value = '" . $value . "';";
  239. if (!$query = $this->db->query($sql)) {
  240. $error = true;
  241. }
  242. }
  243. return !$error;
  244. }
  245. }
  246. /* End of file sites_model.php */
  247. /* Location: ./application/models/sites_model.php */