Welcome Guest, Not a member yet? Register   Sign In
Expanding my calendar for multiples
#1

[eluser]austintbiggs[/eluser]
I currently have a working calendar, but what I'm now trying to do now is make multiple calendars. And I'm trying to wrap my head around what exactly I would need to add and how to structure the DB and php to allow multiple calendars. An example would be have a calendar for each user of the application. How would you do it [more concerned with the model]?

Controller [calendar.php]
Code:
<?php
class Calendar extends CI_Controller {
    
    public function display($year = null, $month = null) {
        
        if (!$year) {
            $year = date('Y');
        }
        if (!$month) {
            $month = date('m');
        }
        
        $this->load->model('Calendar_model');
        
        if ($day = $this->input->post('day')) {
            $this->Calendar_model->add_calendar_data(
                "$year-$month-$day",
                $this->input->post('data')
            );
        }
        
        $data['calendar'] = $this->Calendar_model->generate($year, $month);
        
        $this->load->view('calendar', $data);
        
    }
    
}

Model [calendar_model.php]
Code:
<?php
class Calendar_model extends CI_Model {
    
    var $conf;
    
    function Calendar_model () {
        parent::__construct();
        
        $this->conf = array(
            'start_day' => 'monday',
            'show_next_prev' => true,
            'next_prev_url' => base_url() . 'calendar/display'
        );
        
        $this->conf['template'] = '
            {table_open}<table border="0" cellpadding="0" cellspacing="0" class="calendar">{/table_open}
            
            {heading_row_start}<tr>{/heading_row_start}
            
            {heading_previous_cell}<th><a href="{previous_url}">&lt;&lt;</a></th>{/heading_previous_cell}
            {heading_title_cell}<th colspan="{colspan}">{heading}</th>{/heading_title_cell}
            {heading_next_cell}<th><a href="{next_url}">&gt;&gt;</a></th>{/heading_next_cell}
            
            {heading_row_end}</tr>{/heading_row_end}
            
            {week_row_start}<tr>{/week_row_start}
            {week_day_cell}<td>{week_day}</td>{/week_day_cell}
            {week_row_end}</tr>{/week_row_end}
            
            {cal_row_start}<tr class="days">{/cal_row_start}
            {cal_cell_start}<td class="day">{/cal_cell_start}
            
            {cal_cell_content}
                <div class="day_num">{day}</div>
                <div class="content">{content}</div>
            {/cal_cell_content}
            {cal_cell_content_today}
                <div class="day_num highlight">{day}</div>
                <div class="content">{content}</div>
            {/cal_cell_content_today}
            
            {cal_cell_no_content}<div class="day_num">{day}</div>{/cal_cell_no_content}
            {cal_cell_no_content_today}<div class="day_num highlight">{day}</div>{/cal_cell_no_content_today}
            
            {cal_cell_blank}&nbsp;{/cal_cell_blank}
            
            {cal_cell_end}</td>{/cal_cell_end}
            {cal_row_end}</tr>{/cal_row_end}
            
            {table_close}</table>{/table_close}
        ';
        
    }
    
    function get_calendar_data($year, $month) {
        
        $query = $this->db->select('date, data')->from('calendar')
            ->like('date', "$year-$month", 'after')->get();
            
        $cal_data = array();
        
        foreach ($query->result() as $row) {
            $cal_data[substr($row->date,8,2)] = $row->data;
        }
        
        return $cal_data;
        
    }
    
    function add_calendar_data($date, $data) {
        
        if ($this->db->select('date')->from('calendar')
                ->where('date', $date)->count_all_results()) {
            
            $this->db->where('date', $date)
                ->update('calendar', array(
                'date' => $date,
                'data' => $data            
            ));
            
        } else {
        
            $this->db->insert('calendar', array(
                'date' => $date,
                'data' => $data            
            ));
        }
        
    }
    
    function generate ($year, $month) {
        
        $this->load->library('calendar', $this->conf);
        
        $cal_data = $this->get_calendar_data($year, $month);
        
        return $this->calendar->generate($year, $month, $cal_data);
        
    }
    
}

MySQL Schema
Code:
Calendar
-- Name
-- Description
-- Address
-- ID
-- Creator
-- Start Date
-- Start Time
-- End Date
-- End Time
-- Image Path
#2

[eluser]toopay[/eluser]
And where is the problems..? I can't see any problems...
#3

[eluser]Akinzekeel[/eluser]
Code:
$this->load->model("calendar_model", "calendar1");
$this->load->model("calendar_model", "calendar2");

$this->calendar1->...
$this->calendar2->...

Is this what you mean by "multiple calendar"? If not, please explain what exactly the problem is.
#4

[eluser]austintbiggs[/eluser]
There are no errors, I'm trying to redesign it for multiples, but sHiRoKKo1337 has a good point. I think that would work, actually I'm pretty sure, I'll have to test that out soon. thanks!




Theme © iAndrew 2016 - Forum software by © MyBB