noalyss  Version-6.7.2
Public Member Functions | Static Public Member Functions | Data Fields | Static Private Attributes
Calendar Class Reference

Public Member Functions

 __construct ()
 display ($p_type)
 display a calendar after a call to Calendar::fill
 fill_from_action (&$p_array, $p_style)
 fill the array given as parameter with the data from action_gestion
 fill_from_todo (&$p_array, $p_style)
 fill the array given as parameter with the data from todo
 get_preference ()
 get the periode from the preference of the current user change the value of default_periode to today
 set_month_year ()
 set correctly the month and the year with the default_periode
 set_periode ($p_per)
 set the periode to the parameter, change the value of $this->default_periode there is no check on the periode
 zoom ()
 zoom the calendar

Static Public Member Functions

static test_me ()

Data Fields

 $current_date

Static Private Attributes

static $nb_day = array(31,28,31,30,31,30,31,31,30,31,30,31)

Detailed Description

Definition at line 25 of file class_calendar.php.


Constructor & Destructor Documentation

Definition at line 30 of file class_calendar.php.

References title.

    {
        /* get the current month */
        $this->current_date=getdate();
        $this->month=$this->current_date['mon'];
        $this->day=self::$nb_day[$this->month-1];
        $this->year=$this->current_date['year'];
                $this->action_div=array();
                $this->action=array();
                $this->title=array();

        if ( $this->year % 4 == 0 && $this->month=2)
            $this->day=29;
    }

Member Function Documentation

Calendar::display ( p_type)

display a calendar after a call to Calendar::fill

Parameters:
$p_typelong or short
Returns:
HTML String

Definition at line 153 of file class_calendar.php.

References $cn, $g_user, $ret, $week, default_periode, echo, fill_from_action(), fill_from_todo(), id, and set_month_year().

Referenced by fill_from_action().

    {
        global $g_user;
        if  ($p_type != 'long' && $p_type != 'short') {
            throw new Exception("Calendar::display, unknow type");
        }
        $exercice_user=$g_user->get_exercice();
        /* day */
        $cell=array();
        for ($i=0;$i<42;$i++)
        {
            $cell[$i]="";
        }
        $this->set_month_year();
        /* weekday */
        $week=array(_('Dimanche'),_('Lundi'),_('Mardi'),_('Mercredi'),_('Jeudi'),_('Vendredi'),_('Samedi'));

        $this->fill_from_action($cell,$p_type);
        $this->fill_from_todo($cell,$p_type);
        $wMonth=new ISelect('per');
        $cn=new Database(dossier::id());
        $wMonth->value=$cn->make_array("select p_id,to_char(p_start,'MM/YYYY') from parm_periode where p_exercice = '$exercice_user' order by p_start");
        $wMonth->selected=$this->default_periode;
        $wMonth->javascript="onchange=change_month(this)";
        $wMonth->set_attribute('gDossier',dossier::id());
        $wMonth->set_attribute('type_display',$p_type);
        $month_year=$wMonth->input().$wMonth->get_js_attr();
        ob_start();
        $zoom=($p_type=='short')?0:1;
        require_once('template/calendar.php');

                if (count($this->action_div) > 0)
                {
                        foreach ($this->action_div as $day)
                        {
                                echo $day;
                        }
                }
                $ret=ob_get_contents();
        ob_end_clean();
        return $ret;
    }
Calendar::fill_from_action ( &$  p_array,
p_style 
)

fill the array given as parameter with the data from action_gestion

Parameters:
$p_arrayarray of the date of the month
$p_styleis either short or long, short: for a small title, long for a complete one

Definition at line 49 of file class_calendar.php.

References $array, $cn, $g_user, $ind, $p_array, $profile, $sql, display(), hide, id, title, and width.

Referenced by display(), and zoom().

    {
                global $g_user;
                $profile=$g_user->get_profile();

        $cn=new Database(dossier::id());
        $sql="select ag_id,to_char(ag_remind_date,'DD')::integer as ag_timestamp_day,ag_title,ag_hour,
             coalesce(name,'interne') as str_name
                        ".
             " from action_gestion ".
             "  left join vw_fiche_name  on (f_id=f_id_dest) ".
             " where ".
             " to_char(ag_remind_date,'MM')::integer=$1 ".
             " and to_char(ag_remind_date,'YYYY')::integer=$2 ".
             "  and ag_dest in (select p_granted from user_sec_action_profile where p_id =$3)
                                 and ag_state IN (2, 3)
                                ";

                $array=$cn->get_array($sql,array($this->month,$this->year,$profile));
        for ($i=0;$i<count($array);$i++)
        {
            $ind=$array[$i]['ag_timestamp_day'];
            $this->action[$ind][]=$array[$i]['ag_id'];
            $this->title[$ind][]=$array[$i]['ag_title'];
            $this->hour[$ind][]=$array[$i]['ag_hour'];
            $this->str_name[$ind][]=$array[$i]['str_name'];

        }
                /*
                 * Fill foreach day
                 */
        if ( $p_style == "short")
        {
                foreach ($this->action as $day=>$aAction)
                {
                        if ($p_array[$day]=="")  {
                                $p_array[$day]='<span class="input_text" onclick="display_task(\'tsk'.$day.'\');">'." ".count($aAction)." "._("Tâches").'</span>';
                        }
                        $this->action_div[$day]='<div id="tsk'.$day.'" class="inner_box" style="width:200;display:none">';
                        $this->action_div[$day].=HtmlInput::title_box($day."/".$this->month."/".$this->year, "tsk".$day, "hide");
                         $this->action_div[$day].="<ol>";
                        for ($i=0;$i<count($aAction);$i++)
                        {
                                $this->action_div[$day].='<li>'.HtmlInput::detail_action($aAction[$i], $this->title[$day][$i]).'</li>';
                        }
                        $this->action_div[$day].='</ol></div>';
                }
        }
        else if ( $p_style == "long")
        {
                foreach ($this->action as $day=>$aAction)
                {
                        $p_array[$day].="<ol>";
                        for ($i=0;$i<count($aAction);$i++)
                        {
                                $p_array[$day].='<li>'.hb($this->str_name[$day][$i]).'&rarr;'.HtmlInput::detail_action($aAction[$i], $this->hour[$day][$i]." ".$this->title[$day][$i]).'</li>';
                        }
                        $p_array[$day].='</ol>';
                }
        }
    }
Calendar::fill_from_todo ( &$  p_array,
p_style 
)

fill the array given as parameter with the data from todo

Parameters:
$p_arrayarray of the date of the month
$p_styleis either short or long, short: for a small title, long for a complete one

Definition at line 114 of file class_calendar.php.

References $ind, and $p_array.

Referenced by display(), and zoom().

    {
        $cn=new Database(dossier::id());
        if ($p_style=="short")
        {
            $sql="select count(*) as nb,to_char(tl_date,'DD')::integer as tl_date_day ".
                 " from todo_list ".
                 " where ".
                 " to_char(tl_date,'MM')::integer=$1 ".
                 " and to_char(tl_date,'YYYY')::integer=$2 ".
                 " and use_login=$3 group by to_char(tl_date,'DD')::integer ";
            $array=$cn->get_array($sql,array($this->month,$this->year,$_SESSION['g_user']));
            for ($i=0;$i<count($array);$i++)
            {
                $ind=$array[$i]['tl_date_day'];
                $p_array[$ind].="<span style=\"display:block\" class=\"todo\">".h($array[$i]['nb'])." "._('Notes').'</span>';
            }
        } else if ($p_style=="long")
        {
            $sql="select to_char(tl_date,'DD')::integer as tl_date_day,tl_title ".
                 " from todo_list ".
                 " where ".
                 " to_char(tl_date,'MM')::integer=$1 ".
                 " and to_char(tl_date,'YYYY')::integer=$2 ".
                 " and use_login=$3  ";
            $array=$cn->get_array($sql,array($this->month,$this->year,$_SESSION['g_user']));
            for ($i=0;$i<count($array);$i++)
            {
                $ind=$array[$i]['tl_date_day'];
                
               $p_array[$ind].="<span style=\"display:block\" class=\"todo\">".h($array[$i]['tl_title']).'</span>';
            }
        }
    }

get the periode from the preference of the current user change the value of default_periode to today

Returns:
$this->default_periode

Definition at line 214 of file class_calendar.php.

References $cn, $g_user, default_periode, and id.

    {
        global $g_user;
        $cn=new Database(dossier::id());
        $today=date('d.m.Y');
        $p_id=$cn->get_value("
                select p_id from parm_periode
                where
                p_start <= to_date($1,'DD.MM.YYYY')
                and
                p_end >= to_date($1,'DD.MM.YYYY')",
                array($today));
        if ( $p_id == '')
        {
            $p_id=$g_user->get_periode();
        }
                $this->default_periode=$p_id;
        return  $p_id;
    }

set correctly the month and the year with the default_periode

Definition at line 198 of file class_calendar.php.

References $array, $cn, default_periode, and id.

Referenced by display(), and zoom().

    {
        $cn=new Database(dossier::id());
        $array=$cn->get_array("select to_char(p_start,'MM') as month, to_char(p_start,'YYYY') as year ".
                              " from parm_periode where p_id=$1",array($this->default_periode));
        $this->month=(int)$array[0]['month'];
        $this->year=(int)$array[0]['year'];
        $this->day=self::$nb_day[$this->month-1];
        if ( $this->year % 4 == 0 && $this->month==2)
            $this->day=29;
    }
Calendar::set_periode ( p_per)

set the periode to the parameter, change the value of $this->default_periode there is no check on the periode

Definition at line 237 of file class_calendar.php.

References default_periode.

    {
        $this->default_periode=$p_per;
    }
static Calendar::test_me ( ) [static]

Definition at line 283 of file class_calendar.php.

                              {
        
    }

zoom the calendar

Definition at line 244 of file class_calendar.php.

References $cn, $g_user, $ret, $week, default_periode, echo, fill_from_action(), fill_from_todo(), id, and set_month_year().

    {
        global $g_user;
        $exercice_user=$g_user->get_exercice();
        /* day */
        $cell=array();
        for ($i=0;$i<42;$i++)
        {
            $cell[$i]="";
        }
        $this->set_month_year();
        /* weekday */
        $week=array(_('Dimanche'),_('Lundi'),_('Mardi'),_('Mercredi'),_('Jeudi'),_('Vendredi'),_('Samedi'));

        $this->fill_from_action($cell,"long");
        $this->fill_from_todo($cell,"long");
        $wMonth=new ISelect('per_div');
        $cn=new Database(dossier::id());
        $wMonth->value=$cn->make_array("select p_id,to_char(p_start,'MM/YYYY') from parm_periode where p_exercice = '$exercice_user' order by p_start");
        $wMonth->selected=$this->default_periode;
        $wMonth->javascript=sprintf("onchange=calendar_zoom({gDossier:%d,invalue:'%s',outvalue:'%s'})",
            dossier::id(),'per_div','calendar_zoom_div');
        $wMonth->set_attribute('gDossier',dossier::id());
        $month_year=$wMonth->input().$wMonth->get_js_attr();
        $zoom=1;
        ob_start();
        require_once('template/calendar.php');

        if (count($this->action_div) > 0)
        {
                foreach ($this->action_div as $day)
                {
                        echo $day;
                }
        }
        $ret=ob_get_contents();
        ob_end_clean();
        return $ret;
    }

Field Documentation

Calendar::$current_date

Definition at line 27 of file class_calendar.php.

Calendar::$nb_day = array(31,28,31,30,31,30,31,31,30,31,30,31) [static, private]

Definition at line 28 of file class_calendar.php.


The documentation for this class was generated from the following file:
 All Data Structures Namespaces Files Functions Variables Enumerations