Ejemplo n.º 1
0
 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'));
 }
Ejemplo n.º 2
0
 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();
 }