public function set_columns() { $this->_transaction_isolation(); $this->db->trans_begin(); $teacher = new Teacher(); $teacher->get_by_id($this->usermanager->get_teacher_id()); $teacher->widget_columns = (int) $this->input->post('widget_columns'); if ($teacher->widget_columns >= 1 && $teacher->widget_columns <= 4) { if ($teacher->save()) { $widget = new Admin_widget(); $widget->where_related('teacher', $teacher); $widget->where('column >', $teacher->widget_columns); $widget->limit(1); $widget->get(); if ($widget->exists()) { $widget->where('column', $teacher->widget_columns); $widget->where_related('teacher', $teacher); $widget->limit(1); $widget->order_by('position', 'desc'); $widget->get(); $position = 1; if ($widget->exists()) { $position += $widget->position; } $widget->select('id'); $widget->where('column >', $teacher->widget_columns); $widget->where_related('teacher', $teacher); $widget->order_by('column', 'asc'); $widget->order_by('position', 'asc'); $widget->get(); $updates = TRUE; foreach ($widget->all as $widget_to_update) { $widget_to_update->column = $teacher->widget_columns; $widget_to_update->position = $position; if (!$widget_to_update->save()) { $updates = FALSE; } else { $position++; } } if ($updates) { $this->db->trans_commit(); $this->messages->add_message($this->lang->line('admin_dashboard_message_columns_saved'), Messages::MESSAGE_TYPE_SUCCESS); } else { $this->db->trans_rollback(); $this->messages->add_message($this->lang->line('admin_dashboard_message_columns_save_fail'), Messages::MESSAGE_TYPE_ERROR); } } else { $this->db->trans_commit(); $this->messages->add_message($this->lang->line('admin_dashboard_message_columns_saved'), Messages::MESSAGE_TYPE_SUCCESS); } } else { $this->db->trans_rollback(); $this->messages->add_message($this->lang->line('admin_dashboard_message_columns_save_fail'), Messages::MESSAGE_TYPE_ERROR); } } else { $this->db->trans_rollback(); $this->messages->add_message($this->lang->line('admin_dashboard_message_columns_save_fail_count'), Messages::MESSAGE_TYPE_ERROR); } redirect(create_internal_url('admin_dashboard')); }
public function sort() { $columns = $this->input->post('column'); $this->_transaction_isolation(); $this->db->trans_start(); if (count($columns)) { foreach ($columns as $column => $widget_ids) { $position = 1; if (count($widget_ids)) { foreach ($widget_ids as $widget_id) { $widget = new Admin_widget(); $widget->where_related('teacher', 'id', $this->usermanager->get_teacher_id()); $widget->get_by_id((int) $widget_id); if ($widget->exists()) { $widget->column = $column; $widget->position = $position; $widget->save(); $position++; } } } } } $this->db->trans_complete(); }