private static function get_reference_date()
 {
     $reference_date = new Date();
     $life_time = self::get_life_time();
     $reference_date->set_day($reference_date->get_day() - $life_time);
     return $reference_date;
 }
 public function on_changeday(Date $yesterday, Date $today)
 {
     try {
         $result = PersistenceContext::get_querier()->insert(StatsSetup::$stats_table, array('stats_year' => $yesterday->get_year(Timezone::SERVER_TIMEZONE), 'stats_month' => $yesterday->get_month(Timezone::SERVER_TIMEZONE), 'stats_day' => $yesterday->get_day(Timezone::SERVER_TIMEZONE), 'nbr' => 0, 'pages' => 0, 'pages_detail' => ''));
         //We retrieve the id we just come to create
         $last_stats = $result->get_last_inserted_id();
     } catch (MySQLQuerierException $e) {
         $last_stats = PersistenceContext::get_querier()->get_column_value(StatsSetup::$stats_table, 'id', 'WHERE stats_year = :stats_year AND stats_month = :stats_month AND stats_day = :stats_day', array('stats_year' => $yesterday->get_year(Timezone::SERVER_TIMEZONE), 'stats_month' => $yesterday->get_month(Timezone::SERVER_TIMEZONE), 'stats_day' => $yesterday->get_day(Timezone::SERVER_TIMEZONE)));
     }
     PersistenceContext::get_querier()->inject("UPDATE " . StatsSetup::$stats_referer_table . " SET yesterday_visit = today_visit, today_visit = 0, nbr_day = nbr_day + 1");
     //We delete the referer entries older than one week
     PersistenceContext::get_querier()->delete(StatsSetup::$stats_referer_table, 'WHERE last_update < :last_update', array('last_update' => time() - 604800));
     //We retrieve the number of pages seen until now
     $pages_displayed = StatsSaver::retrieve_stats('pages');
     //We delete the file containing the displayed pages
     $pages_file = new File(PATH_TO_ROOT . '/stats/cache/pages.txt');
     $pages_file->delete();
     //How much visitors were there today?
     $total_visit = PersistenceContext::get_querier()->get_column_value(DB_TABLE_VISIT_COUNTER, 'total', 'WHERE id = 1');
     //We update the stats table: the number of visits today
     PersistenceContext::get_querier()->update(StatsSetup::$stats_table, array('nbr' => $total_visit, 'pages' => array_sum($pages_displayed), 'pages_detail' => serialize($pages_displayed)), 'WHERE id=:id', array('id' => $last_stats));
 }
 public function execute(array $args)
 {
     if (count($args) == 0) {
         $date = new Date();
         $file_name = PATH_TO_ROOT . '/cache/backup/dump_' . $date->get_year() . '-' . $date->get_month() . '-' . $date->get_day() . '_' . $date->get_hours() . 'h' . $date->get_minutes() . '.sql';
     } else {
         $file_name = $args[0];
         array_shift($args);
     }
     $tables = null;
     foreach ($args as $arg) {
         $tables[] = $arg;
     }
     $this->dump($file_name, $tables);
 }
$field = $request->get_getvalue('field', '');
$input_field = $request->get_getvalue('input_field', '');
$input_date = $request->get_getvalue('input_date', '');
$calendar_number = $request->get_getvalue('calendar_number', '');
//Vide par défaut => Type date.
$calendar_type = !empty($date) ? 'timestamp' : 'date';
$field = !empty($field) ? trim($field) : 'calendar';
$date_lang = LangLoader::get('date-common');
$tpl = new FileTemplate('framework/util/mini_calendar_response.tpl');
$tpl->add_lang($date_lang);
//Type date.
if ($calendar_type == 'date') {
    $now = new Date();
    $year = $request->get_getint('y', $now->get_year());
    $month = $request->get_getint('m', $now->get_month());
    $day = $request->get_getint('d', $now->get_day());
    $input_date = !empty($input_date) ? trim($input_date) : $day . '/' . $month . '/' . $year;
    $selected = explode('/', $input_date);
    $selected_day = NumberHelper::numeric($selected[0]);
    $selected_month = NumberHelper::numeric($selected[1]);
    $selected_year = NumberHelper::numeric($selected[2]);
    if (!checkdate($month, $day, $year)) {
        list($year, $month, $day) = array(date('Y'), date('n'), date('j'));
    }
    $bissextile = date("L", mktime(0, 0, 0, 1, 1, $year)) == 1 ? 29 : 28;
    $array_month = array(31, $bissextile, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    $array_l_month = array($date_lang['january'], $date_lang['february'], $date_lang['march'], $date_lang['april'], $date_lang['may'], $date_lang['june'], $date_lang['july'], $date_lang['august'], $date_lang['september'], $date_lang['october'], $date_lang['november'], $date_lang['december']);
    $month_day = $array_month[$month - 1];
    $tpl->put_all(array('FIELD' => $field, 'INPUT_FIELD' => $input_field, 'CALENDAR_NUMBER' => $calendar_number, 'MONTH' => $month, 'YEAR' => $year, 'PREVIOUS_YEAR' => $month == 1 ? $year - 1 : $year, 'PREVIOUS_MONTH' => $month == 1 ? 12 : $month - 1, 'NEXT_YEAR' => $month == 12 ? $year + 1 : $year, 'NEXT_MONTH' => $month == 12 ? 1 : $month + 1));
    //Génération des select.
    for ($i = 1; $i <= 12; $i++) {
示例#5
0
 private static function optimize_database_tables(Date $current_date)
 {
     if (ModulesManager::is_module_installed('database')) {
         $database_config = DatabaseConfig::load();
         if ($database_config->is_database_tables_optimization_enabled()) {
             if ($database_config->get_database_tables_optimization_day() == 7 && $current_date->get_day() == 1 || $database_config->get_database_tables_optimization_day() == $current_date->get_day_of_week()) {
                 $tables_to_optimize = array();
                 foreach (PersistenceContext::get_dbms_utils()->list_and_desc_tables(true) as $key => $table_info) {
                     if (NumberHelper::round($table_info['data_free'] / 1024, 1) != 0) {
                         $tables_to_optimize[] = $key;
                     }
                 }
                 PersistenceContext::get_dbms_utils()->optimize($tables_to_optimize);
             }
         }
     }
 }
    private function send_mail()
    {
        $message = '';
        $current_user = AppContext::get_current_user();
        $fields = $this->config->get_fields();
        $recipients_field_id = $this->config->get_field_id_by_name('f_recipients');
        $recipients_field = new ContactField();
        $recipients_field->set_properties($fields[$recipients_field_id]);
        $recipients = $recipients_field->get_possible_values();
        $recipients['admins']['email'] = implode(';', MailServiceConfig::load()->get_administrators_mails());
        $subject_field_id = $this->config->get_field_id_by_name('f_subject');
        $subject_field = new ContactField();
        $subject_field->set_properties($fields[$subject_field_id]);
        $subjects = $subject_field->get_possible_values();
        if ($subject_field->get_field_type() == 'ContactShortTextField') {
            $subject = $this->form->get_value('f_subject');
        } else {
            $subject = $this->form->get_value('f_subject')->get_raw_value();
        }
        $display_message_title = false;
        if ($this->config->is_tracking_number_enabled()) {
            $now = new Date();
            $tracking_number = $this->config->get_last_tracking_number();
            $tracking_number++;
            $message .= $this->lang['contact.tracking_number'] . ' : ' . ($this->config->is_date_in_tracking_number_enabled() ? $now->get_year() . $now->get_month() . $now->get_day() . '-' : '') . $tracking_number . '

';
            $this->config->set_last_tracking_number($tracking_number);
            ContactConfig::save();
            $subject = '[' . $tracking_number . '] ' . $subject;
            $display_message_title = true;
        }
        foreach ($this->config->get_fields() as $id => $properties) {
            $field = new ContactField();
            $field->set_properties($properties);
            if ($field->is_displayed() && $field->is_authorized() && $field->is_deletable()) {
                try {
                    $value = ContactFieldsService::get_value($this->form, $field);
                    $message .= $field->get_name() . ': ' . $value . '

';
                } catch (Exception $e) {
                    throw new Exception($e->getMessage());
                }
                $display_message_title = true;
            }
        }
        if ($display_message_title) {
            $message .= $this->lang['contact.form.message'] . ':
';
        }
        $message .= $this->form->get_value('f_message');
        $mail = new Mail();
        $mail->set_sender(MailServiceConfig::load()->get_default_mail_sender(), $this->lang['module_title']);
        $mail->set_reply_to($this->form->get_value('f_sender_mail'), $current_user->get_level() == User::VISITOR_LEVEL ? $this->lang['module_title'] : $current_user->get_display_name());
        $mail->set_subject($subject);
        $mail->set_content($message);
        if ($recipients_field->is_displayed()) {
            if (in_array($recipients_field->get_field_type(), array('ContactSimpleSelectField', 'ContactSimpleChoiceField'))) {
                $recipients_mails = explode(';', $recipients[$this->form->get_value('f_recipients')->get_raw_value()]['email']);
            } else {
                $selected_recipients = $this->form->get_value('f_recipients');
                $recipients_mails = array();
                foreach ($selected_recipients as $recipient) {
                    $mails = explode(';', $recipients[$recipient->get_id()]['email']);
                    foreach ($mails as $m) {
                        $recipients_mails[] = $m;
                    }
                }
            }
            foreach ($recipients_mails as $mail_address) {
                $mail->add_recipient($mail_address);
            }
        } else {
            if ($subject_field->get_field_type() != 'ContactShortTextField') {
                $recipient = $subjects[$this->form->get_value('f_subject')->get_raw_value()]['recipient'];
                $recipients_mails = explode(';', $recipients[$recipient]['email']);
                foreach ($recipients_mails as $mail_address) {
                    $mail->add_recipient($mail_address);
                }
            } else {
                $recipients_mails = explode(';', $recipients['admins']['email']);
                foreach ($recipients_mails as $mail_address) {
                    $mail->add_recipient($mail_address);
                }
            }
        }
        $mail_service = AppContext::get_mail_service();
        if ($this->config->is_sender_acknowledgment_enabled()) {
            $acknowledgment = new Mail();
            $acknowledgment->set_sender(MailServiceConfig::load()->get_default_mail_sender(), Mail::SENDER_ADMIN);
            $acknowledgment->set_subject('[' . $this->lang['contact.acknowledgment_title'] . '] ' . $subject);
            $acknowledgment->set_content($this->lang['contact.acknowledgment'] . $message);
            $acknowledgment->add_recipient($this->form->get_value('f_sender_mail'));
            return $mail_service->try_to_send($mail) && $mail_service->try_to_send($acknowledgment);
        }
        return $mail_service->try_to_send($mail);
    }
 /**
  * Sets the date of the last time PHPBoost executed the daily tasks.
  * @param Date $date The date
  */
 public function set_last_use_date(Date $date)
 {
     $this->set_property('year', $date->get_year());
     $this->set_property('month', $date->get_month());
     $this->set_property('day', $date->get_day());
 }
 /**
  * {@inheritDoc}
  */
 public function on_changeday(Date $yesterday, Date $today)
 {
     if ($today->get_day() == 1) {
         CalendarCurrentMonthEventsCache::invalidate();
     }
 }
    private function build_view(HTTPRequestCustom $request)
    {
        $config = CalendarConfig::load();
        $categories = CalendarService::get_categories_manager()->get_categories_cache()->get_categories();
        $year = $this->year ? $this->year : min($request->get_int('calendar_ajax_year', date('Y')), 2037);
        $month = $this->month ? $this->month : min($request->get_int('calendar_ajax_month', date('n')), 12);
        $bissextile = date("L", mktime(0, 0, 0, 1, 1, $year)) == 1 ? 29 : 28;
        $array_month = array(31, $bissextile, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
        $array_l_month = array($this->lang['january'], $this->lang['february'], $this->lang['march'], $this->lang['april'], $this->lang['may'], $this->lang['june'], $this->lang['july'], $this->lang['august'], $this->lang['september'], $this->lang['october'], $this->lang['november'], $this->lang['december']);
        $month_days = $array_month[$month - 1];
        $previous_month = $month == 1 ? 12 : $month - 1;
        $previous_year = $month == 1 ? $year - 1 : $year;
        $next_month = $month == 12 ? 1 : $month + 1;
        $next_year = $month == 12 ? $year + 1 : $year;
        //Months
        for ($i = 1; $i <= 12; $i++) {
            $this->view->assign_block_vars('months', array('VALUE' => $i, 'NAME' => $array_l_month[$i - 1], 'SELECTED' => $month == $i));
        }
        //Years
        for ($i = 1970; $i <= 2037; $i++) {
            $this->view->assign_block_vars('years', array('VALUE' => $i, 'NAME' => $i, 'SELECTED' => $year == $i));
        }
        //Retrieve all the events of the selected month
        $events = $month == date('n') && $year == date('Y') ? CalendarCurrentMonthEventsCache::load()->get_events() : CalendarService::get_all_current_month_events($month, $year, $month_days);
        $events_legends_list = array();
        foreach ($events as $event) {
            $start_date = new Date($event['start_date'], Timezone::SERVER_TIMEZONE);
            $end_date = new Date($event['end_date'], Timezone::SERVER_TIMEZONE);
            if (($end_date->get_month() > $start_date->get_month() || $end_date->get_year() > $start_date->get_year()) && $month == $start_date->get_month()) {
                $first_event_day = $start_date->get_day();
                $last_event_day = $array_month[$month - 1];
            } else {
                if (($end_date->get_month() > $start_date->get_month() || $end_date->get_year() > $start_date->get_year()) && $month == $end_date->get_month()) {
                    $first_event_day = 1;
                    $last_event_day = $end_date->get_day();
                } else {
                    if (($end_date->get_month() > $start_date->get_month() || $end_date->get_year() > $start_date->get_year()) && $month > $start_date->get_month() && $month < $end_date->get_month()) {
                        $first_event_day = 1;
                        $last_event_day = $array_month[$month - 1];
                    } else {
                        $first_event_day = $start_date->get_day();
                        $last_event_day = $end_date->get_day();
                    }
                }
            }
            for ($j = $first_event_day; $j <= $last_event_day; $j++) {
                if ($event['type'] == 'EVENT' || $event['type'] == 'BIRTHDAY') {
                    $title = isset($array_events[$j]['title']) ? $array_events[$j]['title'] : '';
                    $array_events[$j] = array('title' => $title . (!empty($title) ? '
' : '') . ($event['type'] != 'BIRTHDAY' ? $j == $start_date->get_day() && $month == $start_date->get_month() && $year == $start_date->get_year() ? $start_date->get_hours() . 'h' . $start_date->get_minutes() . ' : ' : '' : LangLoader::get_message('calendar.labels.birthday_title', 'common', 'calendar') . ' ') . $event['title'], 'type' => $event['type'], 'color' => $event['type'] == 'BIRTHDAY' ? $config->get_birthday_color() : ($event['id_category'] != Category::ROOT_CATEGORY && $categories[$event['id_category']]->get_color() ? $categories[$event['id_category']]->get_color() : $config->get_event_color()), 'id_category' => $event['id_category']);
                    if ($event['type'] == 'BIRTHDAY') {
                        $events_legends_list[$j] = array('name' => LangLoader::get_message('calendar.labels.birthday', 'common', 'calendar'), 'color' => $config->get_birthday_color());
                    } else {
                        if ($event['type'] == 'EVENT' && $event['id_category'] == Category::ROOT_CATEGORY) {
                            $events_legends_list[$j] = array('name' => LangLoader::get_message('calendar.titles.event', 'common', 'calendar'), 'color' => $config->get_event_color());
                        } else {
                            if (!isset($events_legends_list[$event['id_category']])) {
                                $events_legends_list[$j] = array('name' => $categories[$event['id_category']]->get_name(), 'color' => $categories[$event['id_category']]->get_color());
                            }
                        }
                    }
                }
            }
        }
        $this->view->put_all(array('C_MINI_MODULE' => $this->is_mini_calendar(), 'C_DISPLAY_LEGEND' => !empty($events_legends_list) && !$this->is_mini_calendar(), 'DATE' => $array_l_month[$month - 1] . ' ' . $year, 'MINI_MODULE' => (int) $this->is_mini_calendar(), 'PREVIOUS_MONTH_TITLE' => $month == 1 ? $array_l_month[11] . ' ' . ($year - 1) : $array_l_month[$month - 2] . ' ' . $year, 'PREVIOUS_YEAR' => $previous_year, 'PREVIOUS_MONTH' => $previous_month, 'NEXT_MONTH_TITLE' => $month == 12 ? $array_l_month[0] . ' ' . ($year + 1) : $array_l_month[$month] . ' ' . $year, 'NEXT_YEAR' => $next_year, 'NEXT_MONTH' => $next_month, 'LEGEND' => self::build_legend($events_legends_list), 'U_AJAX_CALENDAR' => CalendarUrlBuilder::ajax_month_calendar()->rel(), 'U_AJAX_EVENTS' => CalendarUrlBuilder::ajax_month_events()->rel()));
        //First day of the month
        $first_day = date('w', @mktime(1, 0, 0, $month, 1, $year));
        if ($first_day == 0) {
            $first_day = 7;
        }
        //Calendar generation
        $day = 1;
        $last_day = $month_days + $first_day;
        for ($i = 1; $i <= 56; $i++) {
            $birthday_day = $color = false;
            if ($i % 8 == 1 && $i < $last_day) {
                $content = date('W', mktime(0, 0, 0, $month, $day, $year));
                $class = 'calendar-week';
                $last_day++;
            } else {
                if ($i >= $first_day + 1 && $i < $last_day) {
                    if ($day == date("j") && $month == date("m") && $year == date("Y")) {
                        $class = 'calendar-today';
                    } else {
                        if (!empty($array_events[$day])) {
                            $birthday_day = $array_events[$day]['type'] == 'BIRTHDAY';
                            $color = $array_events[$day]['color'];
                            $class = '';
                        } else {
                            if ($i % 8 == 7 || $i % 8 == 0) {
                                $class = 'calendar-weekend';
                            } else {
                                $class = 'calendar-other';
                            }
                        }
                    }
                    $content = $day;
                    $day++;
                } else {
                    if (($i % 8 == 7 || $i % 8 == 0) && $i > $first_day && $day <= $month_days) {
                        $class = 'calendar-weekend';
                    } else {
                        $class = 'calendar-none';
                    }
                }
            }
            if ($day > $month_days && $i % 8 == 0) {
                $i = 56;
            }
            $today = $day - 1;
            $this->view->assign_block_vars('day', array('C_MONTH_DAY' => $i % 8 != 1 && $class != 'calendar-none', 'C_COLOR' => $color || $birthday_day, 'C_WEEK_LABEL' => $i % 8 == 1, 'DAY' => $content, 'TITLE' => !empty($array_events[$today]) ? $array_events[$today]['title'] : '', 'COLOR' => $color, 'CLASS' => $class, 'CHANGE_LINE' => $i % 8 == 0 && $i != 56, 'U_DAY_EVENTS' => CalendarUrlBuilder::home($year, $month, $today, true)->rel()));
        }
    }
示例#10
0
 public function test_set_day()
 {
     $date = new Date();
     $date->set_day(3);
     self::assertEquals(3, $date->get_day());
 }