PageRenderTime 40ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/masportales/application/controllers/agenda.php

https://github.com/eloypineda/XHTMLized
PHP | 287 lines | 175 code | 33 blank | 79 comment | 13 complexity | c711947b023d235081dbe0f1e2f99bf1 MD5 | raw file
  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2. class Agenda extends Front_Controller {
  3. public function _remap($method, $arguments = array())
  4. {
  5. global $class;
  6. $this->load->model('event_model');
  7. $this->load->model('companies_model');
  8. $this->load->library('form_validation');
  9. $this->registry->set('module', $class, 'request');
  10. $this->settings['module_url'] = _reg('site_url') . $class . '/';
  11. /*
  12. if (isset($_POST['pid'])) {
  13. $this->form_validation->set_error_delimiters('<div class="message error">', '</div>');
  14. $this->form_validation->set_message('required', 'Debe rellenar el campo: %s');
  15. $this->form_validation->set_message('valid_email', 'El campo \'%s\' debe contener un email vĂĄlido.');
  16. $this->form_validation->set_rules('name', 'Nombre', 'trim|required|xss_clean');
  17. $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|xss_clean');
  18. $this->form_validation->set_rules('web', 'Web', 'trim|prep_url|xss_clean');
  19. $this->form_validation->set_rules('message', 'Mensaje', 'trim|xss_clem|strip_tags');
  20. if ($this->form_validation->run()) {
  21. $this->_save_comment();
  22. }
  23. }
  24. */
  25. if ($method == 'index' and !$arguments) {
  26. $this->registry->set('section', 'eventos', 'request');
  27. $this->registry->set('event_id', false, 'request');
  28. } elseif ($event_id = $this->event_model->slugFor($method)) {
  29. $this->registry->set('section', 'evento', 'request');
  30. $this->registry->set('event_id', $event_id, 'request');
  31. } elseif (method_exists($this, '_' . $method) and is_callable(array($this, '_' . $method))) {
  32. $this->registry->set('section', $method, 'request');
  33. $this->registry->set('event_id', ($arguments) ? $arguments[0] : null, 'request');
  34. } else {
  35. show_404();
  36. }
  37. $function = '_' . $this->registry->request('section');
  38. if (method_exists($this, $function)) {
  39. $this->settings['data'] = $this->$function($this->registry->request('event_id'));
  40. } else {
  41. show_404();
  42. }
  43. $this->columns(); // TODO
  44. if ($this->uri->segment(2) != 'calendar') {
  45. $this->load->view('themes/default/layout', $this->settings);
  46. }
  47. }
  48. public function _evento($event_id)
  49. {
  50. $this->load->helper('captcha');
  51. $vals = array(
  52. 'img_path' => _reg('base_path') . 'usrs/captcha/',
  53. 'img_url' => _reg('base_url') . 'usrs/captcha/'
  54. );
  55. $cap = create_captcha($vals);
  56. $data = array(
  57. 'captcha_time' => $cap['time'],
  58. 'ip_address' => $this->input->ip_address(),
  59. 'word' => $cap['word']
  60. );
  61. $query = $this->db->insert_string('captcha', $data);
  62. $this->db->query($query);
  63. $event_data = $this->event_model->getEventEvent($event_id);
  64. $this->registry->set_meta('title', $this->registry->site_name() . ' . Agenda . ' . $event_data['title']);
  65. $this->registry->set_meta('keywords', $event_data['meta_keywords']);
  66. $this->registry->set_meta('description', $event_data['meta_description']);
  67. $comments_number = $this->event_model->getAgendaOwnComments($event_id, 'APPROVED');
  68. $comments = $this->event_model->getAgendaOwnCommentsDetail($event_id,'APPROVED');
  69. //var_dump($comments);exit();
  70. return array(
  71. 'event' => $event_data,
  72. 'captcha' => $cap,
  73. 'comments' => $comments,
  74. 'comments_number' => $comments_number
  75. );
  76. }
  77. public function _eventos()
  78. {
  79. $params = array(
  80. 'start' => 0,
  81. 'limit' => 10,
  82. 'from' => date('Y-m-d')
  83. );
  84. $this->registry->set_meta('title', $this->registry->site_name() . ' . Agenda');
  85. $this->registry->set_meta('keywords', $this->registry->site('event_keywords'));
  86. $this->registry->set_meta('description', $this->registry->site('event_description'));
  87. $comments_number = $this->event_model->getAgendaNComments('APPROVED');
  88. return array(
  89. 'events' => $this->event_model->getEventsByDays($params),
  90. 'search_query' => false,
  91. 'comments_number' => $comments_number
  92. );
  93. }
  94. public function _dia($date)
  95. {
  96. $this->registry->set_meta('title', $this->registry->site_name() . ' . Agenda . ' . fecha($date));
  97. $this->registry->set_meta('keywords', $this->registry->site('event_keywords'));
  98. $this->registry->set_meta('description', $this->registry->site('event_description'));
  99. //echo "RES"; var_dump($this->event_model->getEventsFromDate($date));
  100. return array(
  101. 'events' => $this->event_model->getEventsFromDate($date),
  102. 'dia' => $date
  103. );
  104. }
  105. public function _search()
  106. {
  107. $this->registry->set('section', 'eventos', 'request');
  108. $search_query = $this->input->post('searchquery', true);
  109. $params_events = array(
  110. 'start' => 0,
  111. 'limit' => 10,
  112. 'search_by' => ($search_query) ? array('title', 'content') : false,
  113. 'search' => array($search_query, $search_query),
  114. 'filter_by' => 'type',
  115. 'filter' => 'event'
  116. );
  117. $events = $this->event_model->getEventsByDays($params_events);
  118. $this->registry->set_meta('title', $this->registry->site_name() . ' . Agenda . Resultado para la bĂşsqueda: ' . $search_query);
  119. $this->registry->set_meta('keywords', $this->registry->site('event_keywords'));
  120. $this->registry->set_meta('description', $this->registry->site('event_description'));
  121. return array(
  122. 'events' => $events,
  123. 'search_query' => $search_query
  124. );
  125. }
  126. private function _save_comment()
  127. {
  128. $data = array();
  129. $data['comment'] = array(
  130. 'agenda_ID' => $this->input->post('agenda_id'),
  131. 'author' => $this->input->post('name'),
  132. 'author_email' => $this->input->post('email'),
  133. 'author_url' => $this->input->post('web'),
  134. 'author_IP' => $this->input->ip_address(),
  135. 'date_added' => date('Y-m-d H:i:s'),
  136. 'content' => $this->input->post('message'),
  137. 'approved' => 1,
  138. 'agent' => $this->input->user_agent()
  139. );
  140. if ($this->registry->user()) {
  141. $data['comment']['user_ID'] = $this->registry->user('user_ID');
  142. }
  143. $agenda = $this->event_model->getEventEvent($data['comment']["agenda_ID"]);
  144. if ($this->event_model->addAgendaComment($data)) {
  145. $this->event_model->updateNumberComment($data['comment']["agenda_ID"]);
  146. $this->session->set_flashdata('message', 'Nuevo comentario guardado correctamente.');
  147. mp_redirect('agenda/'.$agenda["slug"]);
  148. } else {
  149. $this->session->set_flashdata('message', 'Error al guardar el nuevo comentario.');
  150. mp_redirect('agenda/'.$agenda["slug"]);
  151. }
  152. }
  153. //http://www.php.net/manual/en/function.json-encode.php#95667
  154. public function _calendar()
  155. {
  156. $i = 0; // counter prevents infinite loop
  157. $cutoff = '31'; // limit on timespan (in days)
  158. $result = array();
  159. // if date is provided, use it, otherwise default to today
  160. $start_date = (!empty($start_date)) ? mysql_real_escape_string($start_date) : date('Y-m-d');
  161. $check_date = $start_date;
  162. $end_date = date('Y-m-d', strtotime("$start_date +$cutoff days")); // never retrieve more than 2 months
  163. //$result = "array (";
  164. $x=0;
  165. /*while ($check_date != $end_date)
  166. {
  167. // check if any incomplete todos exist on this date
  168. // if (mysql_result(mysql_query("SELECT COUNT(id) FROM " . DB_TODOS . " WHERE date_due = '$check_date'"), 0) == 0)
  169. if ($this->event_model->getEventEvents())
  170. {
  171. $result .= $check_date;
  172. $x++;
  173. }
  174. // +1 day to the check date
  175. $check_date = date('Y-m-d', strtotime("$check_date +1 day"));
  176. // break from loop if its looking like an infinite loop
  177. $i++;
  178. if ($i > $cutoff) break;
  179. }*/
  180. //$result .= ")";
  181. //$result = explode(',', $result);
  182. //echo "TODOS LOS EVENTOS";
  183. $x=0;
  184. $event_res = array();
  185. //$json = "{";
  186. foreach ($this->event_model->events_calendar() as $key =>$event) {
  187. //var_dump($event['event_start']);
  188. // $z = rand(1, 1000);
  189. if ($event['event_start'] != $event['event_finish']){
  190. //TODO:meter los dias interiores
  191. $event_start_timestamp = strtotime($event['event_start']);
  192. $event_finish_timestamp = strtotime($event['event_finish']);
  193. $now = $event_start_timestamp;
  194. //echo 'now '.$now;echo "<br/>";
  195. //echo 'finish '.$event_finish_timestamp.'<br>';
  196. $event_res[$x] = date('Y-m-d H:i:s', $event_start_timestamp);
  197. $x++;
  198. $next_day = strtotime("+1 day", $now);
  199. $event_res[$x] = date('Y-m-d H:i:s', $next_day);
  200. $x++;
  201. while($now < $event_finish_timestamp) {
  202. //echo "mas";
  203. $now = strtotime("+1 day", $now);
  204. $event_res[$x] = date('Y-m-d H:i:s', $now);
  205. $x++;
  206. }
  207. //while($now < $event_finish_timestamp) {
  208. //$next_day = strtotime("+1 day", $now);
  209. //$next_day_date = date('Y-m-d H:i:s', $next_day);
  210. //$event_res[$x] = $next_day_date;
  211. /* $now = $next_day_date;
  212. $x++;
  213. echo "ENTRA";
  214. var_dump($now);
  215. }*/
  216. }elseif (!in_array($event['event_start'], $event_res)) {
  217. //$event_res[] = $event['event_start'];
  218. $event_res[$x] = $event['event_start'];
  219. $x++;
  220. }elseif (!in_array($event['event_finish'], $event_res)) {
  221. //$event_res[] = $event['event_start'];
  222. $event_res[$x] = $event['event_finish'];
  223. $x++;
  224. }
  225. };
  226. //echo "AQUI";var_dump($event_res);
  227. //echo "AQUI";var_dump($result);
  228. // header('Content-type: application/json');
  229. // header ('Access-Control-Allow-Origin: *');
  230. //echo "llega"; var_dump($result);
  231. //$arr = array ("freenode-1" => "2012-06-29 00:00:00","2" =>"2012-06-30 00:00:00","3" =>"2012-07-01 00:00:00","4" =>"2012-06-28 00:00:00");
  232. //echo "ASI SI!";
  233. //$this->autoRender = false;
  234. $this->output
  235. ->set_content_type('application/json')
  236. ->set_output(json_encode($event_res));
  237. //{"freedate-1":"2012-06-28 00:00:00","freedate-2":"2012-06-30 00:00:00","freedate-3":"2012-07-01 00:00:00"}
  238. //return json_encode($arr);
  239. //echo '(' . json_encode($result) . ')';
  240. //echo "FIN";
  241. //return '('.json_encode($result).');';
  242. //print_r($_GET['callback'].$json);
  243. //return json_encode($result);
  244. }
  245. }
  246. /* End of file agenda.php */
  247. /* Location: ./application/controllers/agenda.php */