1. Если часто используется какой-то компонент, подключайся его через автолоад. Так код будет чище и понятней. Те лишние мс на загрузку значения не имеют.
2. Данные из post принимай через $this->input->posts('name'). Посмотри встроенную библиотеку input-.
3. На предмет наличия файла view проверку не делай. Если файла нет страница ошибки выйдет сама.
4. Header и footer лучше подключать во view файле, а не контроллере.
5. Ну и собственно у тебя все в куче в модели. Все действия нужно разнести в отдельный методы. Или даже Объекты.