Welcome Guest, Not a member yet? Register   Sign In
How to create next prev by week in Codeigniter calendar
#1

[eluser]Unknown[/eluser]
Hi Team,

I would like to make a new customize for event calendar with CodeIgniter next previous url week by week in each month.

I have already extends and customize the calendar to display as week view with this following code:

Code:
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
* My Calendar Class
*
* This class enables the creation of calendars
*
* @package  CodeIgniter
* @subpackage Libraries
* @category Libraries
* @author  PNC VC Team
*/
class MY_Calendar extends CI_Calendar {

/**
  * Generate one week the calendar
  *
  * @access public
  * @param integer the year
  * @param integer the month
  * @param array the data to be shown in the calendar cells
  * @return string
  */
function generate_one_week($year = '', $month = '', $data = array())
{
  // Set and validate the supplied month/year
  if ($year == '')
   $year  = date("Y", $this->local_time);

  if ($month == '')
   $month = date("m", $this->local_time);

  if (strlen($year) == 1)
   $year = '200'.$year;

  if (strlen($year) == 2)
   $year = '20'.$year;

  if (strlen($month) == 1)
   $month = '0'.$month;

  $adjusted_date = $this->adjust_date($month, $year);

  $month  = $adjusted_date['month'];
  $year   = $adjusted_date['year'];

  // Determine the total days in the month
  $total_days = $this->get_total_days($month, $year);

  // Set the starting day of the week
  $start_days = array('sunday' => 0, 'monday' => 1, 'tuesday' => 2, 'wednesday' => 3, 'thursday' => 4, 'friday' => 5, 'saturday' => 6);
  $start_day = ( ! isset($start_days[$this->start_day])) ? 0 : $start_days[$this->start_day];

  // Set the starting day number
  $local_date = mktime(12, 0, 0, $month, date('j'), $year);
  $date = getdate($local_date);
  $day  = $date["mday"];

  // Set the current month/year/day
  // We use this to determine the "today" date
  $cur_year   = date("Y", $this->local_time);
  $cur_month  = date("m", $this->local_time);
  $cur_day    = date("j", $this->local_time);

  $is_current_month = ($cur_year == $year AND $cur_month == $month) ? TRUE : FALSE;

  // Generate the template data array
  $this->parse_template();

  // Begin building the calendar output
  $out = $this->temp['table_open'];
  $out .= "\n";

  $out .= "\n";
  $out .= $this->temp['heading_row_start'];
  $out .= "\n";

  // "previous" month link
  if ($this->show_next_prev == TRUE)
  {
   // Add a trailing slash to the  URL if needed
   $this->next_prev_url = preg_replace("/(.+?)\/*$/", "\\1/",  $this->next_prev_url);

   $adjusted_date = $this->adjust_date($month - 1, $year);
   $out .= str_replace('{previous_url}', $this->next_prev_url.$adjusted_date['year'].'/'.$adjusted_date['month'], $this->temp['heading_previous_cell']);
   $out .= "\n";
  }

  // Heading containing the month/year
  $colspan = ($this->show_next_prev == TRUE) ? 5 : 7;

  $this->temp['heading_title_cell'] = str_replace('{colspan}', $colspan, $this->temp['heading_title_cell']);
  $this->temp['heading_title_cell'] = str_replace('{heading}', $this->get_month_name($month)." ".$year, $this->temp['heading_title_cell']);

  $out .= $this->temp['heading_title_cell'];
  $out .= "\n";

  // "next" month link
  if ($this->show_next_prev == TRUE)
  {
   $adjusted_date = $this->adjust_date($month + 1, $year);
   $out .= str_replace('{next_url}', $this->next_prev_url.$adjusted_date['year'].'/'.$adjusted_date['month'], $this->temp['heading_next_cell']);
  }

  $out .= "\n";
  $out .= $this->temp['heading_row_end'];
  $out .= "\n";

  // Write the cells containing the days of the week
  $out .= "\n";
  $out .= $this->temp['week_row_start'];
  $out .= "\n";

  $day_names = $this->get_day_names();

  for ($i = 0; $i < 7; $i ++)
  {
   $out .= str_replace('{week_day}', $day_names[($start_day + $i) %7], $this->temp['week_day_cell']);
  }

  $out .= "\n";
  $out .= $this->temp['week_row_end'];
  $out .= "\n";

  // Build the main body of the calendar
  $limit = $day + 6;
  if ($limit > $total_days)
  {
   $total_days_left = $limit - $total_days;
  }
  while ($day <= $limit)
  {
   $out .= "\n";
   $out .= $this->temp['cal_row_start'];
   $out .= "\n";

   for ($i = 0; $i < 7; $i++)
   {
    if ($day > $total_days)
    {
     $day = 1;
     $limit = $total_days_left;
    }
    $out .= ($is_current_month == TRUE AND $day == $cur_day) ? $this->temp['cal_cell_start_today'] : $this->temp['cal_cell_start'];

    if ($day > 0 AND $day <= $limit)
    {
     if (isset($data[$day]))
     {
      // Cells with content       $temp = ($is_current_m TRUE AND $day == $cur_day) ? $this->temp['cal_cell_content_today'] : $this->temp['cal_cell_content'];
      $out .= str_replace('{day}', $day, str_replace('{content}', $data[$day], $temp));
     }
     else
     {
      // Cells with no content
      $temp = ($is_current_month == TRUE AND $day == $cur_day) ? $this->temp['cal_cell_no_content_today'] : $this->temp['cal_cell_no_content'];
      $out .= str_replace('{day}', $day, $temp);
     }
    }
    else
    {
     // Blank cells
     $out .= $this->temp['cal_cell_blank'];
    }

    $out .= ($is_current_month == TRUE AND $day == $cur_day) ? $this->temp['cal_cell_end_today'] : $this->temp['cal_cell_end'];                
    $day++;
   }
   $out .= "\n";
   $out .= $this->temp['cal_row_end'];
   $out .= "\n";
  }
  $out .= "\n";
  $out .= $this->temp['table_close'];

  return $out;
}

}

// END MY_Calendar class

/* End of file MY_Caledar.php */
/* Location: ./application/libraries/MY_Calendar.php */

Does anyone have any suggestion and good deal with this issue?
I would need more guideline and description because I am just a junior developer with CI!

thanks,
Man




Theme © iAndrew 2016 - Forum software by © MyBB