MasterClass/application/controllers/Frontoffice.php
2025-07-29 15:53:43 +03:00

1831 lines
106 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
if (!defined('BASEPATH')) {
exit('No direct script access allowed');
}
use app\core\auth\User as UserAuth;
use app\core\auth\Sso;
use app\core\auth\Page;
use app\core\utils\Response;
use app\core\auth\Registration as UserRegistration;
use app\core\auth\Unregister;
use app\core\auth\Profile as ProfileDetails;
use app\libraries\StripePayment;
class Frontoffice extends MY_Controller
{
protected $registration;
protected $profile;
public function __construct()
{
$this->setCspHeader(true);
$this->frontoffice_parent_controller();
$this->load_language_frontoffice();
if (isset($_GET['preview_event'])) {
Page::authorize(PAGE_CODE['events'], PRIVS[PAGE_CODE['events']]['preview_event'], true);
} else {
Response::showPage404('frontoffice');
}
// Release the lock
$this->check_instance_of_reservation_modal();
$this->load->model('event_model', '', true);
$this->load->model('event_type_model', '', true);
$this->load->model('event_city_location_model', '', true);
$this->load->model('event_sponsor_assignee_model', '', true);
$this->load->model('event_speaker_assignee_model', '', true);
$this->load->model('personalization_model', '', true);
$this->load->model('User_subscription_model', '', true);
$this->load->model('event_payment_model', '', true);
$this->load->model('event_video_model', '', true);
$this->load->model('event_registration_model', '', true);
$this->load->model('event_schedule_model', '', true);
$this->load->model('event_registration_model','', true);
$announcement = $this->personalization_model->getLatestAnnouncement();
$announcementID = @$announcement['id'];
$announcementTitle = @$announcement['title'];
$announcementContent = @$announcement['content'];
$announcementCookie = 'announcement_cookie_'.@$announcement['cookie_char'];
$this->data['announcement_id'] = $announcementID;
$this->data['announcement_title'] = $announcementTitle;
$this->data['announcement_content'] = $announcementContent;
$this->data['announcement_cookie'] = $announcementCookie;
$this->data['homepage_title'] = $this->personalization_model->get_homepage_title();
if (!isset($_COOKIE['eucookie'])) {
$expire = time() + 86400;
set_cookie('eucookie', 'eucookie', $expire);
}
if (!isset($_COOKIE[$announcementCookie])) {
delete_cookie( $prefix = 'announcement_cookie_');
$expire = time() + 86400;
set_cookie($announcementCookie, $announcementTitle, $expire);
}
$this->registration = new UserRegistration();
$this->profile = new ProfileDetails();
}
public function index()
{
$this->home();
}
public function home()
{
$this->load->model('user_login_history_model');
$this->load->model('event_moderation_model');
$new_banner = $this->personalization_model->upload_get_banner();
$white_label = $new_banner['description'];
$banner = (isset($new_banner['image']) && !empty($new_banner['image'])) ? $new_banner['image'] : '';
$this->data['content'] = 'frontoffice/home/homepage_view';
$this->data['page_title'] = "Les ateliers du Company For Madagascar : sélection d'ateliers et cours par la rédaction du Company For Madagascar";
$this->data['page_description'] = "Company For Madagascar propose une sélection d'ateliers et de cours organisés par la rédaction du Company For Madagascar";
$this->data['page_banner_bg'] = $banner;
$this->data['page_banner_description'] = $white_label;
$this->data['event_city'] = $this->event_city_location_model->home();
$this->data['past_events'] = [];
$events = $this->event_model->get_selected_past_events();
/** past events */
/**Get the videos of past events */
if(count($events)>0) {
$se = array();
foreach($events as $item) {
$videoReserved = false;
$event_item = (array)$item;
$videos = $this->event_video_model->get_videos_by_event_id($item->event_id);
$event_item['total_duration'] = $this->event_video_model->total_video_duration($videos);
$sevs = array();
if(count($videos)>0) {
foreach($videos as $video) {
$video->duration = $this->event_video_model->format_video_duration($video->duration);
array_push($sevs, (array)$video);
}
}
if(UserAuth::isAuth() && ($item->workshop_session == 'ENLIGNE')) {
$re = $this->event_registration_model->is_subscribed($this->data['logged_in']['user_id'], $item->event_id);
if($re && $re->is_expired == 1) {
$videoReserved = true;
}
}
$event_item['video_reserved'] = $videoReserved;
$event_item['event_videos'] = $sevs;
array_push($se, (object)$event_item);
}
$this->data['past_events'] = $se;
}
/** end past events */
/** Only For SEO */
$this->data['event_seo'] = $this->event_model->filter_events("_default_", "1", "", "", "", "", "","");
/** end for SEO */
$event_type_data = $this->event_type_model->home();
$event_data = array();
foreach($event_type_data as $row) {
$event_count = $this->event_model->count_workshop('type', $row->event_type_id, isset($this->data['logged_in']['user_id'])?$this->data['logged_in']['user_id']:NULL);
if($event_count>0) {
array_push($event_data, (object)array(
'event_type_id' => $row->event_type_id,
'event_type' =>$row->event_type,
'count' => $event_count
));
}
}
$this->data['event_type'] =(object) $event_data;
/**
* Check if subscriber is already notified by the moderation feature or not
*/
$this->data['notifyUserABoutModerationFeature'] = false;
$this->data['reservations'] = [
'base' => [],
'sessions' => []
];
if (UserAuth::isAuth()) {
$this->load->model('user_subscriber_model', '', true);
$this->data['notifyUserABoutModerationFeature'] = $this->user_subscriber_model->notifyUserABoutModerationFeature($this->data['logged_in']['user_id']);
$subscription = $this->User_subscription_model->get_subscription($this->data['logged_in']['user_id']);
if(!empty($subscription) && !is_null($subscription)) {
$this->data['subscription'] = !is_null($subscription->expirationDate) && !is_null($subscription->transactionDateTime) ? 'enabled': 'disabled';
}
if ($this->data['notifyUserABoutModerationFeature']) {
$cur_sett = $this->event_moderation_model->getLatestModSettings(3, 0);
$this->data['notifyUserABoutModerationFeature'] = (!count($cur_sett) || $cur_sett['gm_mod_stat'] == 0) ? false : true;
}
// Mes réservations tab data
$this->data['reservations']['base'] = $this->event_payment_model->getActiveEventsPayment([
'user_id' => $this->session->userdata('logged_in')['user_id'],
//"DATEDIFF(end_date_time, NOW()) >=" => "0"
]);
$events = array();
foreach($this->data['reservations']['base'] as $index => $r) {
$event = (array)$r;
$videoReserved = false;
if($r->workshop_session =='ENLIGNE' || $r->workshop_session =='DISTANCE-PRESENTIEL'){
$videos = $this->event_video_model->get_videos_by_event_id($r->event_id);
if($videos) {
$event['total_videos_duration'] = $this->event_video_model->total_video_duration($videos);
$event['total_videos'] = count($videos);
$event["commencement_cours"] = $this->event_video_model->get_next_course_from_id($r->event_id)["live_video_start_date"];
}
$re = $this->event_registration_model->is_subscribed($this->data['logged_in']['user_id'], $r->event_id);
if($re) {
$videoReserved = true;
}
}
$event['video_reserved'] = $videoReserved;
array_push($events, (object)$event);
$this->data['reservations']['sessions'][$index] = $this->event_schedule_model->get_event_schedule($r->event_id);
}
$this->data['reservations']['base'] = $events;
}
$announcement = $this->personalization_model->getLatestAnnouncement();
$announcementID = @$announcement['id'];
$announcementTitle = @$announcement['title'];
$announcementContent = @$announcement['content'];
$this->data['announcement_id'] = $announcementID;
$this->data['announcement_title'] = $announcementTitle;
$this->data['announcement_content'] = $announcementContent;
$expire_announcement = $this->personalization_model->expireAnnouncement();
$this->data['expire_announcement'] = $expire_announcement;
$this->load_extra_files(array(
'bootbox' => true,
'dotdotdot' => true,
'notify' => true,
'ga' => true,
'moment' => true,
'ajax_helper' => true,
));
//load laguages
array_push($this->data['load_scripts'], '<script type="text/javascript" nonce="'.($this->data['csp_nonce']).'">app.setLocale([], {currenturl : "'.str_replace(base_url().'?', base_url(), current_url()).'", baseurl : "'.base_url().'", timeout: '.Response::handleSessionTimeoutOnPageLoad('fo').'}, 2);</script>');
if (UserAuth::isAuth()) {
array_push($this->data['load_scripts'], "<script src='".auto_version(app_bundle()."frontoffice/init.js")."'></script>");
array_push($this->data['load_scripts'], '<script type="text/javascript" nonce="'.($this->data['csp_nonce']).'">_initjs.set_vars({baseurl : "'.base_url().'", currenturl : "'.str_replace(base_url().'?/', base_url(), current_url()).'"});</script>');
}
array_push($this->data['load_scripts'], "<script src='".auto_version(app_bundle()."frontoffice/online.event.js")."'></script>");
array_push($this->data['load_scripts'], "<script src='".auto_version(app_bundle()."frontoffice/subscribe.js")."'></script>");
// Changes start here
array_push($this->data['load_scripts'], "<script src='".auto_version(app_bundle()."frontoffice/events.js")."'></script>");
array_push($this->data['load_scripts'], "<script src='".auto_version(app_bundle()."frontoffice/jquery.translate.js")."'></script>");
array_push($this->data['load_scripts'], "<script type='text/javascript' nonce=\"{$this->data['csp_nonce']}\"> const notifyUserABoutModerationFeature='".(($this->data['notifyUserABoutModerationFeature'])?'true':'false')."'; </script>");
$this->data['load_styles'] = array(
'<link href="'.auto_version(styles_bundle().'frontoffice/homepage.css').'" rel="stylesheet">'
);
$this->load->view('frontoffice_view', $this->data);
}
public function my_account()
{
if (!UserAuth::isAuth())
redirect('home');
$user = null;
if (Sso::isLoggedIn()) {
$loggedIn = UserAuth::auth();
$user = $this->user_model->get_subscribers($loggedIn['user_id']);
}
$this->data['user'] = $user;
$this->data['content'] = 'frontoffice/home/my_account_view';
$this->data['page_title'] = 'Mon Compte';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->data['load_styles'] = array(
'<link href="'.auto_version(styles_bundle().'frontoffice/my_account.css').'" rel="stylesheet">'
);
$this->load_extra_files(array(
'bootbox' => true,
'notify' => true,
'ajax_helper' => true
));
//load laguages
array_push($this->data['load_scripts'], '<script type="text/javascript" nonce="'.($this->data['csp_nonce']).'">app.setLocale([], {currenturl : "'.str_replace(base_url().'?', base_url(), current_url()).'", baseurl : "'.base_url().'", timeout: '.Response::handleSessionTimeoutOnPageLoad('fo').'}, 2);</script>');
array_push($this->data['load_scripts'], "<script src='".auto_version(app_bundle()."frontoffice/profile.js")."'></script>");
$this->load->view('frontoffice_view', $this->data);
}
public function my_reservations()
{
$this->data['content'] = 'frontoffice/home/my_reservation';
$this->data['page_title'] = 'Mes Réservations';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->data['load_styles'] = array(
'<link href="'.auto_version(styles_bundle().'frontoffice/booking_history.css').'" rel="stylesheet">'
);
// Mes réservations tab data
$this->data['reservations'] = [
'base' => [],
'sessions' => []
];
$this->data['reservations']['base'] = $this->event_payment_model->getActiveEventsPayment([
'user_id' => $this->session->userdata('logged_in')['user_id'],
//"DATEDIFF(end_date_time, NOW()) >=" => "0"
]);
$events = array();
foreach($this->data['reservations']['base'] as $index => $r) {
$event = (array)$r;
if($r->workshop_session =='ENLIGNE'){
$videos = $this->event_video_model->get_videos_by_event_id($r->event_id);
if($videos) {
$event['total_videos_duration'] = $this->event_video_model->total_video_duration($videos);
$event['total_videos'] = count($videos);
$event["commencement_cours"] = $this->event_video_model->get_next_course_from_id($r->event_id)["live_video_start_date"];
}
}
array_push($events, (object)$event);
$this->data['reservations']['sessions'][$index] = $this->event_schedule_model->get_event_schedule($r->event_id);
}
$this->data['reservations']['base'] = $events;
// Mon historique tab data
$this->data['reservations_history'] = [
'base' => [],
'sessions' => []
];
$this->data['reservations_history']['base'] = $this->event_payment_model->getPastEventsPayment([
'user_id' => $this->session->userdata('logged_in')['user_id'],
"DATEDIFF(end_date_time, NOW()) <" => "0"
]);
$historyEvents = array();
foreach($this->data['reservations_history']['base'] as $index => $r) {
if($r->workshop_session =='DISTANCE-PRESENTIEL' && $r->registration_type == 'soir-distance' && $r->is_expired == 1) {
break;
} else {
$event = (array)$r;
if($r->workshop_session =='ENLIGNE' || $r->workshop_session =='DISTANCE-PRESENTIEL'){
$videos = $this->event_video_model->get_videos_by_event_id($r->event_id);
if($videos) {
$event['total_videos_duration'] = $this->event_video_model->total_video_duration($videos);
$event['total_videos'] = count($videos);
$event["commencement_cours"] = $this->event_video_model->get_next_course_from_id($r->event_id)["live_video_start_date"];
}
}
array_push($historyEvents, (object)$event);
$this->data['reservations_history']['sessions'][$index] = $this->event_schedule_model->get_event_schedule($r->event_id);
}
}
$this->data['reservations_history']['base'] = $historyEvents;
$this->load->view('frontoffice_view', $this->data);
}
public function cours_en_ligne_achat($event_id = null)
{
if (!UserAuth::isAuth() || $event_id == null)
redirect('home');
$event = $this->event_model->get_event_details($event_id);
if((!isset($event) || is_null($event)) && $event->workshop_session != 'ENLIGNE')
redirect('home');
$this->data['event'] = $event;
/** Check if user has current subscription on this video workshop */
$user_id = $this->session->userdata('logged_in')['user_id'];
if (Sso::isLoggedIn()) {
$loggedIn = UserAuth::auth();
$user_id = $loggedIn['user_id'];
}
$re = $this->event_registration_model->is_subscribed($user_id, $event_id);
if(!isset($re) || is_null($re))
redirect('home');
//$this->load->model('event_video_model');
$videos = $this->event_video_model->get_videos_by_event_id($event_id);
$this->data['event_videos'] = array();
$this->data['total_videos_duration'] = $this->event_video_model->total_video_duration($videos);
$this->data["commencement_cours"] = $this->event_video_model->get_next_course_from_id($event_id)["live_video_start_date"];
$this->data['total_videos'] = count($videos);
foreach($videos as $video) {
$video->duration = $this->event_video_model->format_video_duration($video->duration);
array_push($this->data['event_videos'], $video);
}
$this->data['content'] = 'frontoffice/home/cours_en_ligne_achat_view';
$this->data['page_title'] = 'Cours en ligne achat';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->data['load_styles'] = array(
'<link href="'.auto_version(styles_bundle().'frontoffice/online-course-achat.css').'" rel="stylesheet">',
);
$this->data['load_scripts'] = array(
"<script src='".auto_version(app_bundle()."frontoffice/event.video.js")."'></script>"
);
$this->load->view('frontoffice_view', $this->data);
}
public function in_development()
{
$this->data['content'] = 'in_development_view';
$this->data['page_title'] = 'In Development';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->load->view('frontoffice_view', $this->data);
}
public function event_details(string $event_id = null)
{
if(!empty($event_id))
$_GET['event_id'] = $event_id;
$this->data['content'] = 'frontoffice/home/event_details_view';
// $this->data['page_title'] = 'Event Details';
// $this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->data['load_styles'] = array(
'<link href="'.auto_version(styles_bundle().'frontoffice/event_details.css').'" rel="stylesheet">',
'<link href="' . auto_version(plugins_bundle() . 'floating-labels.css').'" rel="stylesheet">'
);
//$this->load->view('frontoffice_view', $this->data);
if (!isset($_GET['event_id']) || empty($_GET['event_id']) || !is_numeric($_GET['event_id'])) {
show_404();
} else {
if(!UserAuth::isAuth()) {
$this->set_event_cookie($_GET['event_id']);
}
$logged_in = UserAuth::isAuth();
$this->load->model('event_author_works_model');
$this->load->model('event_venue_photos_model');
$this->load->model('event_comment_model');
//$this->load->model('event_video_model');
$this->data['include_archived_events'] = (!isset($_GET['hs']) || empty($_GET['hs']) || strtolower($_GET['hs']) !== 'true') ? false : true;
$event_id = $this->input->get('event_id');
$event = $this->event_model->event_details($event_id);
// if(UserAuth::isPremium() == true && $event->event_id != EVENT_ID && $event->discounted_price > 0) {
// $event->event_rate = $event->discounted_price;
// }
$similar_events = $this->event_model->get_similar_events(json_decode($event->similar_events));
$event->similar_events = [];
/**Get the videos of similar events */
if(count($similar_events)>0) {
$se = array();
foreach($similar_events as $item) {
$videoReserved = false;
$event_item = (array)$item;
$videos = $this->event_video_model->get_videos_by_event_id($item['event_id']);
$event_item['total_duration'] = $this->event_video_model->total_video_duration($videos);
$sevs = array();
if(count($videos)>0) {
foreach($videos as $video) {
$video->duration = $this->event_video_model->format_video_duration($video->duration);
array_push($sevs, (array)$video);
}
}
if($logged_in && $item['workshop_session'] == 'ENLIGNE') {
$re = $this->event_registration_model->is_subscribed($this->data['logged_in']['user_id'], $item['event_id']);
if($re && $re->is_expired == 1) {
$videoReserved = true;
}
}
$event_item['video_reserved'] = $videoReserved;
$event_item['event_videos'] = $sevs;
array_push($se, $event_item);
}
$event->similar_events = $se;
}
$works = $this->event_author_works_model->get_works_by_event_id($event_id);
$venue_photos = $this->event_venue_photos_model->get_venue_photos_by_event_id($event_id);
$comments = $this->event_comment_model->get_formatted_comments_by_event_id($event_id);
$event_videos = $this->event_video_model->get_videos_by_event_id($event_id);
if($event->workshop_session == 'DISTANCE-PRESENTIEL') {
$event = $this->event_model->format_night_class_prices($event);
} else {
$registration = $this->event_registration_model->count_total_reserved_seats($event_id);
$event->remaining_combined_seat = (int)$event->total_available_seat - (int) $registration;
}
$event = (array)$event;
$event['works'] = $works;
$event['venue_photos'] = $venue_photos;
$event['commentaires'] = $comments;
$event['event_videos'] = $event_videos;
$event = (object) $event;
$event->workshop_author_awards = json_decode($event->workshop_author_awards);
$this->data['event_details'] = $event;
/**
* Redirect to 404 page if event's back_office_status is either `en cours` (being created) or `archived`
*/
if (in_array($this->data['event_details']->back_office_status, [
BO_STAT['en_c'],
BO_STAT['arc'],
]) ) {
show_404();
}
if (isset($this->data['event_details']) && !empty($this->data['event_details']) && !empty($this->data['event_details']->event_id)) {
/*heart stroke*/
$this->load->model('personalization_model');
$this->load->model('event_schedule_model');
$images = $this->event_model->get_file_attachments($this->input->get('event_id'));
if(isset($images)) {
$image = null;
for($i=0; $i<count($images); $i++) {
if($images[$i]['display']==1) {
$image= $images[$i]['file_name'];
}
}
if($image)
$this->data['event_details']->file_name = $image;
}
$this->hstroke_folder = hstroke_bundle();
$this->data['heart_stroke_img'] = $this->hstroke_folder.$this->personalization_model->get_logo()['image'];
/*end heart stroke*/
$this->lang->load('frontoffice/event_details', 'fr');
$this->data['content'] = 'frontoffice/home/event_details_view';
$this->load->model('personalization_model');
$new_banner = $this->personalization_model->upload_get_banner();
$white_label = $new_banner['description'];
$banner = $new_banner['image'];
$this->data['page_banner_bg'] = $banner; //images_bundle().'frontoffice/homepage/caroussel.png';
$this->data['page_banner_description'] = $white_label;
if($this->data['event_details']->event_id === '38') { // Lewis Trondheim
$this->data['page_title'] = 'Atelier commando BD avec Lewis Trondheim';
$this->data['page_description'] = "Atelier BD avec Lewis Trondheim : réservez votre place pour l'atelier commando BD animé par Lewis Trondheim.";
}else if($this->data['event_details']->event_id === '42') { // Atelier dîner dégustation
$this->data['page_title'] = 'Atelier dîner dégustation vins du Portugal avec Tomy Gousset et Micael Morais';
$this->data['page_description'] = "Atelier dîner dégustation vins du Portugal avec Tomy Gousset et Micael Morais : réservez votre place pour un dîner dégustation animé par Tomy Gousset et Micael Morais.";
}else if($this->data['event_details']->event_id === '36') { // Agnès Desarthe
$this->data['page_title'] = "Atelier d'écriture avec Agnès Desarthe";
$this->data['page_description'] = "Atelier d'écriture avec Agnès Desarthe : réservez votre place pour l'atelier d'écriture animé par Agnès Desarthe.";
}else if($this->data['event_details']->event_id === '37') { // Muriel Gilbert
$this->data['page_title'] = 'Dictée interactive avec Muriel Gilbert';
$this->data['page_description'] = "Dictée interactive avec Muriel Gilbert : réservez votre place pour la dictée interactive animée par Muriel Gilbert.";
} else if($this->data['event_details']->event_id === '26') { // Véronique Ovaldé
$this->data['page_title'] = "Atelier d'écriture avec Véronique Ovaldé";
$this->data['page_description'] = "Atelier d'écriture avec Véronique Ovaldé : réservez votre place pour l'atelier d'écriture animé par Véronique Ovaldé.";
}
else {
$this->data['page_title'] = $this->data['event_details']->workshop_author . ' - ' . $this->data['event_details']->event_type . ' with ' . $this->data['event_details']->workshop_author;
$this->data['page_description'] = $this->data['event_details']->event_type . ' with ' . $this->data['event_details']->workshop_author . ': ' . substr_replace(strip_tags($this->data['event_details']->description),'...', 100);
}
$this->load->model('event_schedule_model');
$this->load->model('event_file_attachment_model');
//check weather a user can still register more than one date per event
$this->data['allowed_to_book'] = $this->event_schedule_model->continue_registration($this->input->get('event_id'), UserAuth::isAuth() ? $this->data['logged_in']['user_id'] : null, 'register', 1);
//check weather a user can still register for waitinglist more than one date per event
$this->data['allowed_to_book_for_wl'] = $this->event_schedule_model->continue_registration($this->input->get('event_id'), UserAuth::isAuth() ? $this->data['logged_in']['user_id'] : null, 'register', 2);
// $this->data['event_schedule'] = $this->event_schedule_model->list_event_schedule($this->input->get('event_id'), 1, $this->data['include_archived_events']);
$this->data['event_attachment'] = $this->event_file_attachment_model->list_event_attachment($this->input->get('event_id'), $this->event_model->event_details_attachment_type($this->input->get('event_id')));
$this->data['event_speakers'] = $this->event_speaker_assignee_model->event_details(UserAuth::isAuth() ? $this->data['logged_in']['user_id'] : null, $this->input->get('event_id'));
$this->data['event_sponsors'] = $this->event_sponsor_assignee_model->event_details(UserAuth::isAuth() ? $this->data['logged_in']['user_id'] : null, $this->input->get('event_id'));
$this->data['event_status'] = $this->event_detailed_info();
$this->load_extra_files(array(
'notify' => true,
'bootbox' => true,
'ga' => true,
'moment' => true,
'ajax_helper' => true,
));
array_push($this->data['load_styles'], '<link href="'.auto_version(styles_bundle().'frontoffice/event_details.css').'" rel="stylesheet">');
//load laguages
array_push($this->data['load_scripts'], '<script type="text/javascript" nonce="'.($this->data['csp_nonce']).'">app.setLocale([], {currenturl : "'.current_url().'",baseurl : "'.base_url().'", timeout: '.Response::handleSessionTimeoutOnPageLoad('fo').'}, 2); const pcode= "'.Sso::getSubsriptionType().'";</script>');
array_push($this->data['load_scripts'], "<script src='".auto_version(app_bundle()."frontoffice/online.event.js")."'></script>");
array_push($this->data['load_scripts'], "<script src='".auto_version(app_bundle()."frontoffice/subscribe.js")."'></script>");
array_push($this->data['load_scripts'], "<script src='".auto_version(app_bundle()."frontoffice/jquery.translate.js")."'></script>");
array_push($this->data['load_scripts'], "<script src='".auto_version(app_bundle()."frontoffice/workshop.informer.js")."'></script>");
array_push($this->data['load_scripts'], "<script src='https://player.vimeo.com/api/player.js'></script>");
// array_push($this->data['load_scripts'], '<script type="text/javascript" nonce="'.($this->data['csp_nonce']).'">subscribe.event_pageview_counter('.$this->input->get('event_id').'); </script>');
$this->load->view('frontoffice_view', $this->data);
} else {
show_404();
}
}
}
// OTHER SAMPLE EVENT DETAILS CONTENT
public function cours_en_ligne()
{
$this->data['content'] = 'frontoffice/home/sample_event_details_view/cours_en_ligne_view';
$this->data['page_title'] = 'Event Details';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->data['load_styles'] = array(
'<link href="'.auto_version(styles_bundle().'frontoffice/event_details.css').'" rel="stylesheet">'
);
$this->load->view('frontoffice_view', $this->data);
}
public function cours_du_soir()
{
$this->data['content'] = 'frontoffice/home/sample_event_details_view/cours_du_soir_view';
$this->data['page_title'] = 'Cour du soir';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->data['load_styles'] = array(
'<link href="'.auto_version(styles_bundle().'frontoffice/event_details.css').'" rel="stylesheet">'
);
$this->data['load_scripts'] = array(
"<script src='".auto_version(app_bundle()."frontoffice/online.event.js")."'></script>",
"<script src='".auto_version(app_bundle()."frontoffice/workshop.informer.js")."'></script>"
);
$this->load->view('frontoffice_view', $this->data);
}
public function live_stream_view()
{
$this->data['content'] = 'frontoffice/home/livestream_view';
$this->data['page_title'] = 'Cour du soir';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->data['load_styles'] = array(
'<link href="'.auto_version(styles_bundle().'frontoffice/livestream.css').'" rel="stylesheet">'
);
$this->data['load_scripts'] = array(
"<script src='".auto_version(app_bundle()."frontoffice/livestream.video.js")."'></script>",
// "<script src='".auto_version(app_bundle()."frontoffice/workshop.informer.js")."'></script>"
);
$this->load->view('frontoffice_view', $this->data);
}
public function atelier_a_distance3($event_id = null)
{
$this->lang->load('frontoffice/subscribe', 'fr');
if (!UserAuth::isAuth() || $event_id == null)
redirect('home');
$event = $this->event_model->event_details($event_id);
// $ncp = $this->event_model->format_night_class_prices($event);
// $event = (object) array_merge((array) $event, (array)$ncp);
if((!isset($event) || is_null($event)))
redirect('home');
$event->event_start_month_name = $this->lang->line($event->event_start_month_name);
/** Check if user has current subscription on this video workshop */
$user_id = $this->session->userdata('logged_in')['user_id'];
$user_email = $this->session->userdata('logged_in')['email_address'];
if (Sso::isLoggedIn()) {
$loggedIn = UserAuth::auth();
$user_id = $loggedIn['user_id'];
$user_email = $loggedIn['email_address'];
}
//a rajouter mail pour acces
//$re = $this->event_registration_model->is_subscribed_in_atelier_distance($user_id, $event_id, $user_email);
$re = $this->event_registration_model->is_subscribed($user_id, $event_id, $user_email);
//if(!isset($re) || is_null($re))
//$re = $this->event_registration_model->is_subscribed($user_id, "47", $user_email);
if(!isset($re) || is_null($re))
redirect('home');
$date = isset($_GET["date"]) ? $_GET["date"] : date("Y-m-d H:i:s");
$videos = $this->event_video_model->get_videos_by_event_id_spec($event_id);
//print_r($videos);die;
$this->data['event_videos']['upcoming'] = array();
$this->data['event_videos']['replay'] = array();
$this->data['event_videos']['total_replay_duration'] = $this->event_video_model->total_replay_videos_duration_spec($videos);
$this->data['event_videos']['total_replay_videos'] = $this->event_video_model->total_replay_videos_spec($videos);
$this->data['total_videos_duration'] = $this->event_video_model->total_video_duration($videos);
$this->data["commencement_cours"] = $this->event_video_model->get_next_course_from_id_spec($videos)->live_video_start_date;
$this->data['total_videos'] = count($videos);
$current_date = false;
$past_videos = array();
foreach($videos as $video) {
if($video->live_video_end_date < $date) {
/** replay videos */
array_push($past_videos, $video);
} else {
/** ongoing or upcoming videos */
$video->duration = $this->event_video_model->format_video_duration($video->duration);
if(!$current_date) {
$current_date = true;
array_push($this->data['event_videos']['upcoming'], $video);
} else {
$uv = $this->data['event_videos']['upcoming'];
$is_inserted = false;
foreach($uv as $index => $value) {
if($value->live_video_start_date > $video->live_video_start_date) {
$this->data['event_videos']['upcoming'] = array_merge(array_slice($this->data['event_videos']['upcoming'],0, $index),array($video), array_slice($this->data['event_videos']['upcoming'], $index));
$is_inserted = true;
break;
}
}
if(!$is_inserted) {
array_push($this->data['event_videos']['upcoming'], $video);
}
}
}
}
if(count($past_videos) > 0) {
$this->data['event_videos']['total_replay_duration'] = $this->event_video_model->total_video_duration($past_videos);
$this->data['event_videos']['total_replay_videos'] = count($past_videos);
foreach($past_videos as $pv) {
$pv->duration = $this->event_video_model->format_video_duration($pv->duration);
array_push($this->data['event_videos']['replay'], $pv);
}
}
/** format date of first upcoming video */
if(count($this->data['event_videos']['upcoming']) > 0) {
$this->lang->load('frontoffice/subscribe', 'fr');
$u_video = $this->data['event_videos']['upcoming'][0];
$m = date('F',strtotime($u_video->live_video_start_date));
$d = date('d',strtotime($u_video->live_video_start_date));
$u_video = array_merge((array)$u_video, ['month' => $this->lang->line($m), 'day' => $d]);
$this->data['event_videos']['upcoming'][0] = (object)$u_video;
}
$this->data['event_details'] = $event;
if($date >= $event->start_date_time) {
$this->data['content'] = 'frontoffice/home/livestream_view';
$this->data['page_title'] = 'Cour du soir';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->data['load_styles'] = array(
'<link href="'.auto_version(styles_bundle().'frontoffice/livestream.css').'" rel="stylesheet">'
);
$this->data['load_scripts'] = array(
"<script src='".auto_version(app_bundle()."frontoffice/livestream.video.js")."'></script>",
// "<script src='".auto_version(app_bundle()."frontoffice/workshop.informer.js")."'></script>"
);
} else {
$this->data['content'] = 'frontoffice/home/streaming_link_view';
$this->data['page_title'] = 'Atelier a distance';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->data['load_styles'] = array(
'<link href="'.auto_version(styles_bundle().'frontoffice/atelier_distance.css').'" rel="stylesheet">',
'<link href="'.auto_version(styles_bundle().'frontoffice/event_details.css').'" rel="stylesheet">'
);
$this->data['load_scripts'] = array(
"<script src='".auto_version(app_bundle()."frontoffice/online.event.js")."'></script>",
"<script src='".auto_version(app_bundle()."frontoffice/workshop.informer.js")."'></script>"
);
}
$this->load->view('frontoffice_view', $this->data);
}
public function atelier_a_distance($event_id = null)
{
if($event_id == "311"){
return $this->atelier_a_distance3($event_id);
}
$this->lang->load('frontoffice/subscribe', 'fr');
//if (!UserAuth::isAuth() || $event_id == null)
// redirect('home');
$event = $this->event_model->event_details($event_id);
// $ncp = $this->event_model->format_night_class_prices($event);
// $event = (object) array_merge((array) $event, (array)$ncp);
//if((!isset($event) || is_null($event)) && $event->workshop_session != 'DISTANCE-PRESENTIEL' && $event->workshop_session != 'DISTANCE')
// redirect('home');
$event->event_start_month_name = $this->lang->line($event->event_start_month_name);
/** Check if user has current subscription on this video workshop */
//$user_id = $this->session->userdata('logged_in')['user_id'];
if (Sso::isLoggedIn()) {
$loggedIn = UserAuth::auth();
$user_id = $loggedIn['user_id'];
}
// $re = $this->event_registration_model->is_subscribed_in_atelier_distance($user_id, $event_id);
//$re = $this->event_registration_model->is_subscribed($user_id, $event_id);
//if(!isset($re) && is_null($re) && (($re->workshop_session != 'DISTANCE-PRESENTIEL' && $re->registration_type != 'soir-presentiel' ) || $re->workshop_session != 'DISTANCE'))
// redirect('home');
$videos = $this->event_video_model->get_videos_by_event_id($event_id);
$this->data['event_videos']['upcoming'] = array();
$this->data['event_videos']['replay'] = array();
$this->data['event_videos']['total_replay_duration'] = '0h0';
$this->data['event_videos']['total_replay_videos'] = 0;
$this->data['total_videos_duration'] = $this->event_video_model->total_video_duration($videos);
$this->data["commencement_cours"] = $this->event_video_model->get_next_course_from_id($event_id)["live_video_start_date"];
$this->data['total_videos'] = count($videos);
$current_date = false;
$past_videos = array();
foreach($videos as $video) {
if($video->live_video_end_date < date("Y-m-d H:i:s")) {
/** replay videos */
array_push($past_videos, $video);
} else {
/** ongoing or upcoming videos */
$video->duration = $this->event_video_model->format_video_duration($video->duration);
if(!$current_date) {
$current_date = true;
array_push($this->data['event_videos']['upcoming'], $video);
} else {
$uv = $this->data['event_videos']['upcoming'];
$is_inserted = false;
foreach($uv as $index => $value) {
if($value->live_video_start_date > $video->live_video_start_date) {
$this->data['event_videos']['upcoming'] = array_merge(array_slice($this->data['event_videos']['upcoming'],0, $index),array($video), array_slice($this->data['event_videos']['upcoming'], $index));
$is_inserted = true;
break;
}
}
if(!$is_inserted) {
array_push($this->data['event_videos']['upcoming'], $video);
}
}
}
}
if(count($past_videos) > 0) {
$this->data['event_videos']['total_replay_duration'] = $this->event_video_model->total_video_duration($past_videos);
$this->data['event_videos']['total_replay_videos'] = count($past_videos);
foreach($past_videos as $pv) {
$pv->duration = $this->event_video_model->format_video_duration($pv->duration);
array_push($this->data['event_videos']['replay'], $pv);
}
}
/** format date of first upcoming video */
if(count($this->data['event_videos']['upcoming']) > 0) {
$this->lang->load('frontoffice/subscribe', 'fr');
$u_video = $this->data['event_videos']['upcoming'][0];
$m = date('F',strtotime($u_video->live_video_start_date));
$d = date('d',strtotime($u_video->live_video_start_date));
$u_video = array_merge((array)$u_video, ['month' => $this->lang->line($m), 'day' => $d]);
$this->data['event_videos']['upcoming'][0] = (object)$u_video;
}
$this->data['event_details'] = $event;
if(date("Y-m-d H:i:s") >= $event->start_date_time) {
$this->data['content'] = 'frontoffice/home/livestream_view';
$this->data['page_title'] = 'Cour du soir';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->data['load_styles'] = array(
'<link href="'.auto_version(styles_bundle().'frontoffice/livestream.css').'" rel="stylesheet">'
);
$this->data['load_scripts'] = array(
"<script src='".auto_version(app_bundle()."frontoffice/livestream.video.js")."'></script>",
// "<script src='".auto_version(app_bundle()."frontoffice/workshop.informer.js")."'></script>"
);
} else {
$this->data['content'] = 'frontoffice/home/streaming_link_view';
$this->data['page_title'] = 'Atelier a distance';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->data['load_styles'] = array(
'<link href="'.auto_version(styles_bundle().'frontoffice/atelier_distance.css').'" rel="stylesheet">',
'<link href="'.auto_version(styles_bundle().'frontoffice/event_details.css').'" rel="stylesheet">'
);
$this->data['load_scripts'] = array(
"<script src='".auto_version(app_bundle()."frontoffice/online.event.js")."'></script>",
"<script src='".auto_version(app_bundle()."frontoffice/workshop.informer.js")."'></script>"
);
}
$this->load->view('frontoffice_view', $this->data);
}
public function atelier_a_distance2()
{
$this->data['content'] = 'frontoffice/home/atelier_a_distance_view';
$this->data['page_title'] = 'Atelier a distance';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->data['load_styles'] = array(
'<link href="'.auto_version(styles_bundle().'frontoffice/atelier_distance.css').'" rel="stylesheet">',
'<link href="'.auto_version(styles_bundle().'frontoffice/event_details.css').'" rel="stylesheet">'
);
$this->data['load_scripts'] = array(
"<script src='".auto_version(app_bundle()."frontoffice/online.event.js")."'></script>",
"<script src='".auto_version(app_bundle()."frontoffice/workshop.informer.js")."'></script>"
);
$this->load->view('frontoffice_view', $this->data);
}
public function contact()
{
$this->load->model('frontoffice_faq_model');
// $this->load->model('user_subscriber_model', '', true);
$this->data['content'] = 'frontoffice/home/contact_view';
$this->data['page_title'] = 'Contacter les ateliers du Company For Madagascar';
$this->data['page_description'] = "Contacter les ateliers du Company For Madagascar. Formulaire de contact.";
// $this->data['page_banner_bg'] = banner_bundle().'contact_banner.jpg';
$this->data['load_styles'] = array(
'<link href="'.auto_version(styles_bundle().'frontoffice/contactpage.css').'" rel="stylesheet">',
'<link href="' . auto_version(plugins_bundle() . 'floating-labels.css').'" rel="stylesheet">'
);
$client_session = $this->data['logged_in'];
$this->data['userdata'] = $client_session;
$this->load_extra_files(array(
'notify' => true,
'bootbox' => true,
// "ga" => true,
"select2" => true,
'form_validator' => true,
));
//load laguages
array_push($this->data['load_scripts'], '<script type="text/javascript" nonce="'.($this->data['csp_nonce']).'">app.setLocale([], {currenturl : "'.current_url().'",baseurl : "'.base_url().'", timeout: '.Response::handleSessionTimeoutOnPageLoad('fo').'}, 2);</script>');
array_push($this->data['load_scripts'], "<script src='".auto_version(app_bundle()."frontoffice/contact.js")."'></script>");
$this->data['natureofbusiness'] = $this->frontoffice_faq_model->natureofbusiness();
$this->lang->load('frontoffice/contact', 'fr');
$this->load->view('frontoffice_view', $this->data);
}
public function nous_contact()
{
$this->load->model('frontoffice_faq_model');
// $this->load->model('user_subscriber_model', '', true);
$this->data['content'] = 'frontoffice/home/nous_contact_view';
$this->data['page_title'] = 'Contact';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
// $this->data['page_banner_bg'] = banner_bundle().'contact_banner.jpg';
$this->data['load_styles'] = array(
'<link href="'.auto_version(styles_bundle().'frontoffice/contactpage.css').'" rel="stylesheet">',
'<link href="' . auto_version(plugins_bundle() . 'floating-labels.css').'" rel="stylesheet">'
);
// $client_session = $this->data['logged_in'];
// $this->data['userdata'] = $this->user_subscriber_model->myaccount($client_session['user_id']);
$this->load_extra_files(array(
'notify' => true,
'bootbox' => true,
// "ga" => true,
"select2" => true,
'form_validator' => true,
));
//load laguages
array_push($this->data['load_scripts'], '<script type="text/javascript" nonce="'.($this->data['csp_nonce']).'">app.setLocale([], {currenturl : "'.current_url().'",baseurl : "'.base_url().'", timeout: '.Response::handleSessionTimeoutOnPageLoad('fo').'}, 2);</script>');
array_push($this->data['load_scripts'], "<script src='".auto_version(app_bundle()."frontoffice/contact.js")."'></script>");
$this->data['natureofbusiness'] = $this->frontoffice_faq_model->natureofbusiness();
$this->lang->load('frontoffice/contact', 'fr');
$this->load->view('frontoffice_view', $this->data);
}
public function otp_verification() {
$this->data['content'] = 'payment/verify_otp';
$this->data['page_title'] = 'Confirmation de payment';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->data['load_styles'] = array(
'<link href="'.auto_version(styles_bundle().'frontoffice/bootstrap.min.css').'" rel="stylesheet">',
'<link href="'.auto_version(styles_bundle().'otp/otp_verification.css').'" rel="stylesheet">',
'<link href="' . auto_version(plugins_bundle() . 'floating-labels.css').'" rel="stylesheet">'
);
array_push($this->data['load_scripts'], "<script src='".auto_version(plugins_bundle()."jquery/jquery-2.2.3.min.js")."'></script>");
array_push($this->data['load_scripts'], "<script src='".auto_version(plugins_bundle()."bootstrap/notify_3.3.1/0.4.2/bootstrap-notify.min.js")."'></script>");
// array_push($this->data['load_scripts'], "<script src='https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.3/font/bootstrap-icons.css'></script>");
array_push($this->data['load_scripts'], "<script src='".auto_version(app_bundle()."frontoffice/payment.js")."'></script>");
$this->load->view('frontoffice_view', $this->data);
}
public function payment()
{
$this->load->model('user_subscriber_model', '', true);
$this->data['content'] = 'frontoffice/home/payment_view';
$this->data['page_title'] = 'Payment';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
// $this->data['page_banner_bg'] = banner_bundle().'contact_banner.jpg';
$this->data['load_styles'] = array(
'<link href="'.auto_version(styles_bundle().'frontoffice/payment.css').'" rel="stylesheet">',
'<link href="' . auto_version(plugins_bundle() . 'floating-labels.css').'" rel="stylesheet">'
);
// $client_session = $this->data['logged_in'];
// $this->data['userdata'] = $this->user_subscriber_model->myaccount($client_session['user_id']);
/**
* Get the event id from cookie set during booking
* If null means no booking
*/
$event = json_decode(get_cookie($this->config->item('sess_cookie_name').'_event_data'));
if ($event) {
$this->data['event_details'] = (array)$this->event_model->event_details($event->event_id);
$this->data['event_details'] = array_merge($this->data['event_details'], ["seats_reserved" => $event->seats_reserved]);
} else {
redirect(base_url("home"));
}
if($event->booking->workshop_session =='DISTANCE-PRESENTIEL') {
$ncp = json_decode($this->data['event_details']['night_class_prices']);
if($event->booking->session_type == 'soir-presentiel') {
$this->data['event_details']['discount_apply'] = $ncp->presentiel->discount_apply;
$this->data['event_details']['event_rate'] = $ncp->presentiel->rate;
} else {
$this->data['event_details']['discount_apply'] = $ncp->distance->discount_apply;
$this->data['event_details']['event_rate'] = $ncp->distance->rate;
}
}
$this->load_extra_files(array(
'notify' => true,
'bootbox' => true,
// "ga" => true,
"select2" => true,
'form_validator' => true,
));
// Stripe setup
// $stripePayment = new StripePayment();
// $stripePublicKey = $stripePayment->getPublicKey();
$this->data['event_details']['event_rate'] = empty($this->data['event_details']['event_rate']) ? 0 : $this->data['event_details']['event_rate'];
// Total amount calculation
if(UserAuth::isPremium() == true && $event->event_id == EVENT_ID) {
$this->data['event_details']['discount'] = 5;
$this->data['event_details']['subtotal_amount'] = ($this->data['event_details']['event_rate']-5) * $this->data['event_details']['seats_reserved'];
$this->data['event_details']['service_charge'] = 0;
$this->data['event_details']['total_amount'] = $this->data['event_details']['subtotal_amount'] + $this->data['event_details']['service_charge'];
} else {
$discount = 0;
if(UserAuth::isPremium()) {
$discount = $this->data['event_details']['discount_apply'];
// if($this->data['event_details']['discounted_price'] > 0) {
// $this->data['event_details']['event_rate'] = $this->data['event_details']['discounted_price'];
// }
}
$this->data['event_details']['discount'] = $discount;
$this->data['event_details']['subtotal_amount'] = ($this->data['event_details']['event_rate'] - $discount) * $this->data['event_details']['seats_reserved'];
$this->data['event_details']['service_charge'] = 0;
$this->data['event_details']['total_amount'] = $this->data['event_details']['subtotal_amount'] + $this->data['event_details']['service_charge'];
}
// Get user's subscriber data to prefill the form
$subscriber_query = $this->user_subscriber_model->getSubscribers(['user_id' => $this->session->userdata('logged_in')['user_id']]);
$this->data['subscriber_data'] = $subscriber_query ? $subscriber_query[0] : [];
// array_push($this->data['load_scripts'], '<script id="stripe-js" async src="https://js.stripe.com/v3/"></script>');
// array_push($this->data['load_scripts'], "<script>const stripePublicKey = '{$stripePublicKey}'</script>");
// array_push($this->data['load_scripts'], "<script src='".auto_version(plugins_bundle()."jquery/jquery-2.2.3.min.js")."'></script>");
// array_push($this->data['load_scripts'], "<script src='".auto_version(plugins_bundle()."mask/jquery.mask.min.js")."'></script>");
array_push($this->data['load_scripts'], "<script src='".auto_version(app_bundle()."frontoffice/payment.js")."'></script>");
$this->load->view('frontoffice_view', $this->data);
}
public function payment_success()
{
$this->data['content'] = 'frontoffice/home/payment_success_view';
$this->data['page_title'] = 'Payment Success';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
delete_cookie($this->config->item('sess_cookie_name').'_event_data');
$this->load->view('frontoffice_view', $this->data);
}
public function create_account_fo()
{
$this->data['content'] = 'frontoffice/create_account_view';
$this->data['page_title'] = 'Create Account';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->data['load_scripts'] = array(
"<script src='".auto_version(app_bundle()."frontoffice/authentication.js")."'></script>",
"<script type='text/javascript' nonce=\"{$this->data['csp_nonce']}\"> authentication.set_vars({baseurl : '".base_url()."'}); </script>",
);
$this->lang->load('frontoffice/create_account', 'fr');
$this->load->view('frontoffice_view', $this->data);
}
public function mentions_legales()
{
$this->data['content'] = 'frontoffice/home/mentions_legales_view';
$this->data['page_title'] = 'Mentions légales - Les ateliers du Company For Madagascar';
$this->data['page_description'] = "Mentions légales - Les ateliers du Company For Madagascar";
$this->load->model('personalization_model');
$new_banner = $this->personalization_model->upload_get_banner();
$white_label = $new_banner['description'];
$banner = $new_banner['image'];
$this->data['page_banner_bg'] = $banner;
// $this->data['page_banner_bg'] = banner_bundle().'mentions-légales.jpg';
$this->data['load_scripts'] = array("<script src='".auto_version(app_bundle()."frontoffice/legales.js")."'></script>");
$this->load->view('frontoffice_view', $this->data);
}
public function privacy_policy()
{
$this->data['content'] = 'frontoffice/home/privacy_policy_view';
$this->data['page_title'] = 'Politique de confidentialité';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->load->view('frontoffice_view', $this->data);
}
public function manage_cookies()
{
$this->data['content'] = 'frontoffice/home/manage_cookies_view';
$this->data['page_title'] = 'Gestion des cookies';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->load->view('frontoffice_view', $this->data);
}
public function general_conditions()
{
$this->data['content'] = 'frontoffice/home/general_conditions_view';
$this->data['page_title'] = 'Conditions générales';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->load->view('frontoffice_view', $this->data);
}
public function data_privacy()
{
$this->data['content'] = 'frontoffice/home/data_privacy_view';
$this->data['page_title'] = 'Protection des données';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
$this->load->model('personalization_model');
$new_banner = $this->personalization_model->upload_get_banner();
$white_label = $new_banner['description'];
$banner = $new_banner['image'];
$this->data['page_banner_bg'] = $banner;
// $this->data['page_banner_bg'] = banner_bundle().'mentions-légales.jpg';
$this->load->view('frontoffice_view', $this->data);
}
public function faq()
{
$this->load->model('frontoffice_faq_model');
$this->data['page_title'] = 'FAQ - Les ateliers du Company For Madagascar';
$this->data['page_description'] = "Foire aux questions - Les ateliers du Company For Madagascar";
$this->load->model('personalization_model');
$new_banner = $this->personalization_model->upload_get_banner();
$white_label = $new_banner['description'];
$banner = $new_banner['image'];
$this->data['page_banner_bg'] = $banner;
// $this->data['page_banner_bg'] = banner_bundle().'faq_banner.jpg';
$this->load_extra_files(array(
'easycomplete' => true,
'notify' => true,
'app' => true,
));
/*
* check if keyword is safe from xss scripts
* display results if safe, do not do anything otherwise
*/
$faq_search =false;
if (
(isset($_GET['word']) && !empty($_GET['word'])) &&
$this->security->xss_clean($_GET['word'], TRUE)
) {
/* Set keyword
'/^[a-z0-9 .\-]+$/i'*/
$faq_search['keyword'] = preg_replace('/<|>/','' ,$this->security->xss_clean(($this->input->get('word',TRUE))));
/* fetch results */
$faq_search['results'] = $this->frontoffice_faq_model->displaysearchfaq($faq_search['keyword']);
}
array_push($this->data['load_styles'], '<link href="https://use.fontawesome.com/releases/v5.13.0/css/all.css" rel="stylesheet">');
array_push($this->data['load_styles'], '<link href="'.auto_version(styles_bundle().'frontoffice/faqpage.css').'" rel="stylesheet">');
array_push($this->data['load_scripts'], '<script src="'.auto_version(app_bundle().'frontoffice/faq.js').'"></script>');
$this->data['faq_search'] = $faq_search;
$this->data['faq_cat'] = $this->frontoffice_faq_model->list_faq_cat();
$this->data['content'] = 'frontoffice/faq/faqpage';
$this->load->view('frontoffice_view', $this->data);
}
public function maintenance()
{
$this->load->model('personalization_model');
$new_banner = $this->personalization_model->upload_get_banner();
$white_label = $new_banner['description'];
$banner = (isset($new_banner['image']) && !empty($new_banner['image'])) ? $new_banner['image'] : '';
$this->data['page_title'] = 'Maintenance';
$this->data['page_description'] = "Retrouvez l'ensemble des ateliers organisés par la rédaction du Company For Madagascar.";
// $this->data['page_banner'] = images_bundle().'frontoffice/homepage/caroussel.png';
$this->data['page_banner_bg'] = $banner;
$this->data['page_banner_description'] = $white_label;
$this->load->view('maintenance_view', $this->data);
}
private function event_detailed_info()
{
$this->load->model('event_wait_list_model');
return array(
'online_event' => function($event_schedule, $event_details) {
$bostatus = (int) $event_schedule->back_office_status;
$fav = ((int) $event_schedule->is_favorite == 1) ? 'btn-favorite': '';
$redirectOfflineUser = (!UserAuth::isAuth() ||!UserAuth::isLoggedInAsSubscriber())? 'subscribe-btn-redirect': '';
$btnClass = 'btn btn-block btn-default-style btn-closed event-btn btn-online-event';
$btnText = '';
$btnDisabled = true;
// Event is Coming soon
if ($event_schedule->is_coming_soon == 'coming_soon' && $event_schedule->event_status === 'AVAILABLE' && ($bostatus == 2 || $bostatus ==1) ) {
$btnClass = "${fav} ${btnClass} disabled";
$btnDisabled = true;
$btnText = $this->lang->line('js')['btn']['coming_soon'];
}
// Event is AVAILABLE
else if ($event_schedule->is_coming_soon == '' && $event_schedule->event_status === 'AVAILABLE' && $bostatus == 2 ) {
$btnClass = "${fav} ${btnClass} ${redirectOfflineUser}";
$btnDisabled = false;
$btnText = $this->lang->line('js')['btn']['_book_online_event'];
}
// Event is FULL || COMPLETE
else if ($event_schedule->event_status === 'FULL' && ($bostatus == 2 || $bostatus == 3)) {
$btnClass = "${btnClass} disabled";
$btnDisabled = true;
$btnText = $this->lang->line('js')['btn']['_full'];
}
// Event is Cancelled
else if ($event_schedule->event_status === 'CANCEL') {
$btnClass = "${fav} ${btnClass} cancelled_event disabled";
$btnDisabled = true;
$btnText = $this->lang->line('js')['btn']['_cancelled'];
}
// Event is Closed
else if ($bostatus == 4) {
$btnClass = "${btnClass} disabled";
$btnDisabled = true;
$btnText = $this->lang->line('js')['btn']['_closed'];
}
// Event is Terminee
else if ($bostatus == 7) {
$btnClass = "${btnClass} disabled";
$btnDisabled = true;
$btnText = $this->lang->line('js')['btn']['_terminee'];
}
// Event is Archived
else {
$btnClass = "${btnClass} disabled";
$btnDisabled = true;
$btnText = $this->lang->line('js')['btn']['_archive'];
}
echo "<button
id='event_schedule_id".$event_schedule->event_schedule_id."'
class='${btnClass}'
".(($btnDisabled || $redirectOfflineUser) ? "" : "data-event_url='".$event_schedule->event_url."'")."
data-event-schedule-id='".$event_schedule->event_schedule_id."'
data-event-id='".$event_details->event_id."'
data-event-id='".$event_details->event_id."'
data-bostatus='".$bostatus."'
data-event-cat='".$event_schedule->event_category."'
role='button'
".($btnDisabled ? "disabled='disabled' data-btntype='disabled'": "")."
data-page='details'>
${btnText}
</button>";
// btn disabled btn-block btn-default-style btn-closed event-btn
// btn btn-block btn-default-style event-btn btn-online-event disabled
},
'button_status' => function ($event_schedule, $event_details, $allowed_to_book, $allowed_to_book_for_wl) {
$is_user_active = UserAuth::isAuth() ? true : false;
$event_url = !(!$is_user_active || !UserAuth::isLoggedInAsSubscriber()) && $event_schedule->event_url
? "data-event_url='".$event_schedule->event_url."'"
: "";
if (!isset($_GET['preview_event'])) {
$user_idd = $this->data['logged_in'] ? $this->data['logged_in']['user_id'] : null;
$booking_type = UserAuth::isLoggedInAsSubscriber()?
$this->event_registration_model->check_subscription($user_idd, $event_schedule->event_schedule_id): 0;
$subscribed_waitlist = 0;
$subscribed = 0;
$onClick = '';
$data_attrib = '';
$event_listener_class = '';
$attribs = "";
$disabledBtn = 'disabled';
$can_still_book = 0;
$showCancelBtn = 1;
$checkStats = array('2FULL', '3FULL', '2AVAILABLE', '3AVAILABLE');
$disbledbtns = array(
'bos1' => $this->lang->line('js')['btn']['coming_soon'],
'bos3' => $this->lang->line('js')['btn']['_full'],
'bos4' => $this->lang->line('js')['btn']['_closed'],
'bos7' => $this->lang->line('js')['btn']['_terminee'],
'bos8' => $this->lang->line('js')['btn']['_cancelled'],
);
$cancelBtnWithModify = "Date limite d'annulation de la réservation";
$fav = '';
if (in_array($event_schedule->back_office_status.$event_schedule->event_status, array('2FULL'))) {
if ($event_schedule->remaining_seat >= 0 && $event_schedule->quota_waiting_list_seat > 0) {
$book_waiting_list = 1;
} else {
//complete but bo status is open
$book_waiting_list = 0;
$event_schedule->back_office_status = 3;
}
}
//to make the button complete when when there are no remaining seats and waiting list seats
elseif (0 == $event_schedule->remaining_seat && 0 == $event_schedule->quota_waiting_list_seat && $event_schedule->back_office_status < 4 && $event_schedule->back_office_status > 1) {
$book_waiting_list = 0;
$event_schedule->back_office_status = 3;
} else {
$book_waiting_list = (in_array($event_schedule->back_office_status.$event_schedule->event_status, $checkStats) && $event_schedule->remaining_seat <= 0 && $event_schedule->quota_waiting_list_seat > 0 && $event_schedule->back_office_status < 3 && $event_schedule->back_office_status > 1) ? 1 : 0;
}
//if event is not closed and is open
if (in_array($event_schedule->back_office_status, [
BO_STAT['ouv'],
BO_STAT['ver']
]) || UserAuth::isLoggedInAsSubscriber()
) {
$subscribed = $this->event_registration_model->check_subscription($user_idd, $event_schedule->event_schedule_id);
if ($subscribed) {
$booking_type = 1; //Booked in normal registration
} else {
$subscribed_waitlist = $this->event_wait_list_model->check_subscription($user_idd, $event_schedule->event_schedule_id);
if ($subscribed_waitlist) {
$booking_type = 2; //booked in waiting list
}
}
}
if ((isset($disbledbtns['bos'.$event_schedule->back_office_status]) && !empty(isset($disbledbtns['bos'.$event_schedule->back_office_status]))) && $book_waiting_list == 0) {
if (!$is_user_active) { //check if user is logged in
$onClick = "";
$data_attrib = "data-event-id={$event_details->event_id}";
$event_listener_class = "subscribe-btn-redirect";
$disableBtn = 'disabled="disabled"';
if (
($event_schedule->event_status == 'CANCEL')
) {
$event_schedule->back_office_status = 8;
$cancelledClass = 'cancelled_event disabled';
$btnText = 'Annulé';
} else {
$cancelledClass = '';
$btnText = '';
}
} else {
$disableBtn = 'disabled="disabled"';
if (2 == $booking_type) {
$cancelBtnWithModify = "Date limite d'annulation d'inscription sur liste d'attente";
}
if (
($event_schedule->event_status == 'CANCEL')
) {
$event_schedule->back_office_status = 8;
$cancelledClass = 'cancelled_event disabled';
$btnText = 'Annulé';
} else {
$cancelledClass = '';
$btnText = '';
}
}
echo "<button ".$event_url." disabled='disabled' ".$onClick." $data_attrib id='event_schedule_id".$event_schedule->event_schedule_id
."' class='$event_listener_class btn disabled btn-block btn-default-style btn-closed event-btn ".$cancelledClass
."' data-event-schedule-id='".$event_schedule->event_schedule_id
."' data-event-id='".$event_details->event_id
."' data-bostatus='".$event_schedule->back_office_status
."' data-event-cat='".$event_schedule->event_category
."' role='button' data-page='details'data-btntype='disabled' ".'>'
.(($btnText == 'Annulé')?'Annulé': ($disbledbtns['bos'.$event_schedule->back_office_status])).'</button>';
if (1 == $event_schedule->back_office_status) {
echo start_date($event_schedule->reservation_start_date);
}
} elseif (($event_schedule->back_office_status == 2 && $book_waiting_list == 0 && $event_schedule->remaining_seat > 0) || 1 == $booking_type) {
$showCancelBtn = ($is_user_active) ? $this->show_cancel_btn_or_not($booking_type, $event_schedule->event_status, $event_schedule->remaining_seat) : 1;
$disableBtn = '';
$btnText = $this->lang->line('js')['btn']['_book'];
$btnType = '';
$onclick = '';
$btnClass = '';
$sched_text = 'Date limite de réservation';
$fav = '';
if (1 == $booking_type && $is_user_active) { //subscriber is registered
$can_still_book = $this->check_if_user_can_still_book($booking_type, $event_schedule->seats_per_subscriber, $subscribed, $event_schedule->remaining_seat);
if ($can_still_book > 0) {
if ('' != $event_details->event_favorite || null != $event_details->event_favorite) {
$fav = ' btn-favorite';
}else{
$fav = ' ';
}
if ($event_schedule->event_status != "FULL") {
$btnText = 'Ajouter des places à ma réservation';
$btnType = 'reg-modify';
$data_attrib = 'data-reg-type="'.(REG_TYPE['normal_reg'])
.'" data-action="'.SUBSCRIBE_ACTION['modify']
.'" data-process-type="'.PROCESS_TYPE['modify_reg']
.'" data-seat-feature="'.$event_schedule->seat_feature
.'" data-show-cancel-btn="'.$showCancelBtn.'"';
$event_listener_class = "register-or-modify";
$onclick = "";
$sched_text = 'Date limite de modification';
$cancelBtnWithModify = 'Date limite de modification de la réservation';
$disableBtn = '';
$btnclosed ='';
} else {
$disableBtn = 'disabled="disabled"';
$btnText = 'RÉSERVÉ';
$btnType = 'disabled';
$btnclosed ='btnclosed';
$fav = ' ';
}
} else {
if ('' != $event_details->event_favorite || null != $event_details->event_favorite) {
$fav = '';
}
$disableBtn = 'disabled="disabled"';
$btnText = isset($disbledbtns['bos'.$event_schedule->back_office_status]) ? $disbledbtns['bos'.$event_schedule->back_office_status] : 'Réservé';
$btnType = 'disabled';
$btnclosed ='btnclosed';
// $cancelBtnWithModify = "Date limite d'annulation d'inscription sur liste d'attente";
}
if (
('CANCEL' == $event_schedule->event_status && $event_schedule->back_office_status != 4) ||
($event_details->date_feature == 2 && $event_schedule->event_status == 'CANCEL')
) {
$event_schedule->back_office_status = 8;
$btnText = 'Annulé';
$cancelledClass = 'cancelled_event disabled';
$btnType = 'disabled';
} else {
$cancelledClass = '';
//$btnType = '';
}
if($btnType=='reg-book'){
$style = 'style="letter-spacing:4px;"';
}else{
$style = '';
}
echo '<button '.$event_url.' '.$style.' '.$onclick." $data_attrib id='event_schedule_id".$event_schedule->event_schedule_id."' class='$event_listener_class btn ".$btnType.' btn-block btn-default-style btn-closed '.$btnclosed.' event-btn modify-reservation '.$fav." {$cancelledClass}' data-event-cat='".$event_schedule->event_category."' data-event-schedule-id='".$event_schedule->event_schedule_id."' data-event-id='".$event_details->event_id."' data-bostatus='".$event_schedule->back_office_status."' data-btntype='".$btnType."' role='button' data-page='details' ".$disableBtn.' '.(($can_still_book > 0) ? '' : 'disabled').'>'.$btnText.'</button>';
} else {
$eventRate ="";
$paidEvent = "";
if($event_schedule->event_category == 'PAID_EVENT') {
$paidEvent='paid_btn';
$eventRate = $event_schedule->event_rate ? number_format($event_schedule->event_rate, 2, ',', '.') ."&euro;" : "";
}
if ($is_user_active) { //check if user is logged in
/* This code fragment is used to determine
whether a subscriber can book for more than 1 per event or not
*/
$data_attrib = 'data-reg-type="'.(REG_TYPE['normal_reg'])
.'" data-action="'.SUBSCRIBE_ACTION['register']
.'" data-process-type="'.PROCESS_TYPE['event_reg']
.'" data-seat-feature="'.$event_schedule->seat_feature
.'" data-show-cancel-btn="'.$showCancelBtn.'"';
$event_listener_class = "register-or-modify";
$onClick = "";
if (!$allowed_to_book) {
$event_listener_class = "not-allowed-to-book";
$onClick = "'";
$btnClass = 'btn-disabled';
}
/* END of code fragment*/
} else { //if user not logged in
$data_attrib = "data-event-id={$event_details->event_id}";
$event_listener_class = "subscribe-btn-redirect";
$onClick = "";
}
if ('' != $event_details->event_favorite || null != $event_details->event_favorite) {
if (
('CANCEL' == $event_schedule->event_status && $event_schedule->back_office_status != 4) ||
($event_details->date_feature == 2 && $event_schedule->event_status == 'CANCEL')
) {
$event_schedule->back_office_status = 8;
$btnText = 'Annulé';
$cancelledClass = 'cancelled_event disabled';
$btnType = 'disabled';
} else {
$cancelledClass = '';
$btnType = '';
}
echo '<button '.$event_url.' '.$onClick." id='event_schedule_id".$event_schedule->event_schedule_id."' $data_attrib data-event-schedule-id='".$event_schedule->event_schedule_id."' data-event-id='".$event_details->event_id."' class='$event_listener_class $paidEvent btn btn-default-style btn-block btn-book2 btn-register btn-favorite ".$btnClass.' '.$cancelledClass."' data-page='details'".$disableBtn." data-btntype='reg-book' data-bostatus='".$event_schedule->back_office_status."' ".$btnType." data-event-cat='".$event_schedule->event_category."'>".$btnText.' '.$eventRate.'</button> ';
} else {
$cancelledClass = '';
$btnType = '';
if (
('CANCEL' == $event_schedule->event_status && $event_schedule->back_office_status != 4) ||
($event_details->date_feature == 2 && $event_schedule->event_status == 'CANCEL')
) {
$event_schedule->back_office_status = 8;
$btnText = 'Annulé';
$cancelledClass = 'cancelled_event disabled';
$btnType = 'disabled';
}
echo '<button '.$event_url.' '.$onClick." $data_attrib id='event_schedule_id".$event_schedule->event_schedule_id."' data-event-schedule-id='".$event_schedule->event_schedule_id."' data-event-id='".$event_details->event_id."' data-event-cat='".$event_schedule->event_category."' class='$event_listener_class $paidEvent btn btn-default-style btn-block btn-book2 btn-register ".$btnClass.' '.$cancelledClass.' '.$btnType."' data-page='details' ".$disableBtn." data-btntype='reg-book' data-bostatus='".$event_schedule->back_office_status."' ".$btnType.'>'.$btnText.' '.$eventRate.'</button> ';
}
if (null != $event_schedule->reservation_end_date && '' != $event_schedule->reservation_end_date && 'CANCEL' != $event_schedule->event_status ) {
echo "<center class='start_date_text' id='res-date-".$event_schedule->event_schedule_id."'> ".$sched_text.' : <br>'.date_in_french($event_schedule->reservation_end_date).'<br></center>';
}
}
} elseif ($event_schedule->back_office_status == 3 || $book_waiting_list > 0 || $booking_type == 2) {
$disableBtn = '';
$btnText = $this->lang->line('js')['btn']['_bookwaitlist'];
$btnType = '';
$onclick = '';
$btnClass = '';
$sched_text = 'Date limite d\'inscription sur liste d\'attente';
if (2 == $booking_type && $is_user_active) { //subscriber is registered
$can_still_book = $this->check_if_user_can_still_book($booking_type, $event_schedule->quota_waiting_list_seat, $subscribed_waitlist, $event_schedule->seats_per_subscriber);
if ($can_still_book > 0) {
if ('' != $event_details->event_favorite || null != $event_details->event_favorite) {
$fav = ' btn-favorite';
}
$btnClass = 'modify-waitlistreservation '.$fav;
$disableBtn = '';
$btnText = "Ajouter des places sur liste d'attente";
$btnType = 'wl-modify';
$data_attrib = 'data-reg-type="'.(REG_TYPE['waitlist_reg'])
.'" data-action="'.SUBSCRIBE_ACTION['modify']
.'" data-process-type="'.PROCESS_TYPE['modify_wl_reg']
.'" data-seat-feature="'.$event_schedule->seat_feature
.'" data-show-cancel-btn="'.$showCancelBtn.'"';
$event_listener_class = "register-or-modify";
$onclick = "";
$cancelBtnWithModify = "Date limite de modification de l'inscription sur liste d'attente";
} else {
if ('' != $event_details->event_favorite || null != $event_details->event_favorite) {
$fav = ' ';
}
$btnClass = 'modify-reservation '.$fav;
$disableBtn = 'disabled="disabled"';
$btnText = isset($disbledbtns['bos'.$event_schedule->back_office_status]) ? $disbledbtns['bos'.$event_schedule->back_office_status] : "INSCRIT SUR LISTE D'ATTENTE";
$btnType = 'disabled';
$cancelBtnWithModify = "Date limite d'annulation d'inscription sur liste d'attente";
}
if (
('CANCEL' == $event_schedule->event_status && $event_schedule->back_office_status != 4) ||
($event_details->date_feature == 2 && $event_schedule->event_status == 'CANCEL')
) {
$event_schedule->back_office_status = 8;
$btnText = 'Annulé';
$cancelledClass = 'cancelled_event disabled';
$btnType = 'disabled';
} else {
$cancelledClass = '';
//$btnType = '';
}
echo '<button '.$event_url.' '.$onclick."$data_attrib id='event_schedule_id".$event_schedule->event_schedule_id."' class='$event_listener_class btn ".$btnType.' btn-block btn-default-style btn-closed event-btn '.$btnClass." {$cancelledClass}\" '
data-event-cat='".$event_schedule->event_category."' data-event-schedule-id='".$event_schedule->event_schedule_id."' data-event-id='".$event_details->event_id."' data-bostatus='".$event_schedule->back_office_status."' data-btntype='".$btnType."' href='#' role='button' data-page='details' ".(($can_still_book > 0) ? '' : 'disabled').' '.$disableBtn.' >'.$btnText.'</button> ';
} else {
if ($is_user_active) { //check if user is logged in
/* This code fragment is used to determine
whether a subscriber can book for waiting listmore than 1 per event or not
*/
$data_attrib = 'data-reg-type="'.(REG_TYPE['waitlist_reg'])
.'" data-action="'.SUBSCRIBE_ACTION['register']
.'" data-process-type="'.PROCESS_TYPE['waitlist_reg']
.'" data-seat-feature="'.$event_schedule->seat_feature
.'"data-event-cat="'.$event_schedule->event_category
.'" data-show-cancel-btn="'.$showCancelBtn.'"';
$event_listener_class = "register-or-modify";
$onClick = "";
if (!$allowed_to_book_for_wl) {
$event_listener_class = "not-allowed-to-book";
$onClick = "";
$btnClass = 'btn-disabled btn-reg-waitlist_detailsp';
} else {
$btnClass = 'btn-reg-waitlist_detailsp';
$disableBtn = '';
}
/* END of code fragment*/
} else { //if user not logged in
$data_attrib = "data-event-id={$event_details->event_id}";
$event_listener_class = "subscribe-btn-redirect";
$onClick = "";
if (!$allowed_to_book_for_wl) {
$event_listener_class = "not-allowed-to-book";
$onClick = "";
$btnClass = 'btn-disabled modify-reservation';
} else {
$btnClass = 'btn-reg-waitlist_detailsp';
$disableBtn = '';
}
}
if ('' != $event_details->event_favorite || null != $event_details->event_favorite) {
echo '<button '.$event_url.' '.$onClick." id='event_schedule_id".$event_schedule->event_schedule_id."' $data_attrib data-event-schedule-id='".$event_schedule->event_schedule_id."' data-event-cat='".$event_schedule->event_category."' data-event-id='".$event_details->event_id."' class='$event_listener_class btn btn-default-style btn-block modify-reservation btn-favorite ".$btnClass."' data-page='details' data-btntype='wl-register' data-bostatus='".$event_schedule->back_office_status."' ".$disableBtn.'>'.$btnText.'</button>';
} else {
$subscription = $this->User_subscription_model->get_subscription($this->data['logged_in']['user_id']);
if(!empty($subscription) && !is_null($subscription)) {
if(is_null($subscription->expirationDate) && is_null($subscription->transactionDateTime)) {
$disableBtn = 'disabled="disabled"';
$btnClass = 'btn-disabled btn-reg-waitlist_detailsp';
}
}
echo '<button '.$event_url.' '.$onClick." id='event_schedule_id".$event_schedule->event_schedule_id."' $data_attrib data-event-schedule-id='".$event_schedule->event_schedule_id."' data-event-cat='".$event_schedule->event_category."' data-event-id='".$event_details->event_id."' class='$event_listener_class btn btn-default-style btn-block modify-reservation ".$btnClass."' data-page='details' data-btntype='wl-register' data-bostatus='".$event_schedule->back_office_status."' ".$disableBtn.'>'.$btnText.'</button>';
}
if (null != $event_schedule->reservation_end_date && '' != $event_schedule->reservation_end_date && 'CANCEL' != $event_schedule->event_status) {
echo "<center class='start_date_text' id='res-date-".$event_schedule->event_schedule_id."'> ".$sched_text.' : <br>'.date_in_french($event_schedule->reservation_end_date).'<br></center>';
}
}
} else {
if (
('CANCEL' == $event_schedule->event_status && $event_schedule->back_office_status != 4) ||
($event_details->date_feature == 2 && $event_schedule->event_status == 'CANCEL')
) {
$event_schedule->back_office_status = 8;
$btnText = 'Annulé';
$cancelledClass = 'cancelled_event disabled';
$btnType = 'disabled';
echo "<button '.$event_url.' id='event_schedule_id".$event_schedule->event_schedule_id."' class='btn ".$btnType.' btn-block btn-default-style btn-closed event-btn '." {$cancelledClass}\" '
data-event-cat='".$event_schedule->event_category."' data-event-schedule-id='".$event_schedule->event_schedule_id."' data-event-id='".$event_details->event_id."' data-bostatus='".$event_schedule->back_office_status."' data-btntype='".$btnType."' href='#' role='button' data-page='details' ".(($can_still_book > 0) ? '' : 'disabled').' >'.$btnText.'</button> ';
}
}
//display cancel button when subscriber is registered
if ($booking_type && $is_user_active && $event_schedule->back_office_status > 1) {
if (1 == $booking_type) {
$btnClass = 'btn-cancel-registration';
} else {
$btnClass = 'btn-cancel-wl-registration';
}
/*Cancel button will be hidden once a seat is available for reservation*/
if (1 == $this->show_cancel_btn_or_not($booking_type, $event_schedule->event_status, $event_schedule->remaining_seat) && $event_schedule->event_status != 'CANCEL') {
$data_attrib =
'data-event-id="'.($event_details->event_id)
.'" data-event-schedule-id="'.$event_schedule->event_schedule_id
.'" data-reg-type="'.$booking_type.'"';
$event_listener_class = "cancel-reservation";
echo '<button '.$event_url.' '.($data_attrib).' id="event_cancel_registration'.$event_schedule->event_schedule_id.'" data-event-id="'.$event_details->event_id.'" data-event-cat="'.$event_schedule->event_category.'" data-seat-feature="'.$event_details->seat_feature.'" data-date-feature="'.$event_details->date_feature.'" data-is-multiple-reservation="'.$event_details->is_multiple_reservation.'" data-is-multiple-waitlist-reservation="'.$event_details->is_multiple_waitlist_reservation.'" class="'.($event_listener_class).' btn btn-default-style2 btn-block '.$btnClass.' " data-page="details">'.((1 == $booking_type) ? 'MODIFIER OU ANNULER MA RÉSERVATION' : 'MODIFIER OU ANNULER MON INSCRIPTION SUR LISTE DATTENTE').'</button>';
// echo '<button '.($data_attrib).' id="event_cancel_registration'.$event_schedule->event_schedule_id.'" data-event-id="'.$event_details->event_id.'" data-seat-feature="'.$event_details->seat_feature.'" data-date-feature="'.$event_details->date_feature.'" data-is-multiple-reservation="'.$event_details->is_multiple_reservation.'" data-is-multiple-waitlist-reservation="'.$event_details->is_multiple_waitlist_reservation.'" class="'.($event_listener_class).' btn btn-default-style2 btn-block '.$btnClass.' " data-page="details">'.((1 == $booking_type) ? 'ANNULER MA RÉSERVATION' : 'ANNULER MON INSCRIPTION SUR LISTE DATTENTE').'</button>';
if (null != $event_schedule->reservation_end_date && '' != $event_schedule->reservation_end_date && 'CANCEL' != $event_schedule->event_status) {
echo "<center class='start_date_text' id='res-date-".$event_schedule->event_schedule_id."'>".($cancelBtnWithModify).' : <br>'.date_in_french($event_schedule->reservation_end_date).'<br></center>';
}
}
}
return $booking_type;
} else {
$sched_text = 'Date limite de réservation';
$cancelBtnWithModify = "Date limite d'annulation de la réservation";
if ('' != $event_details->event_favorite || null != $event_details->event_favorite) {
$fav = ' btn-favorite';
} else {
$fav = '';
}
echo '<button data-event-cat="'.$event_schedule->event_category.'"' .$event_url.' id="event_schedule_id'.$event_schedule->event_schedule_id.'" data-event-schedule-id="'.$event_schedule->event_schedule_id.'" data-event-id="'.$event_details->event_id.'" class="btn btn-default-style btn-block btn-book2 btn-register '.$fav.'" data-page="details" data-btntype="reg-book" data-bostatus="2">Réserver</button>';
if (is_object($event_schedule)) {
if (null != $event_schedule->reservation_end_date && '' != $event_schedule->reservation_end_date && 'CANCEL' != $event_schedule->event_status ) {
echo "<center class='start_date_text' id='res-date-".$event_schedule->event_schedule_id."'> ".$sched_text.' : <br>'.date_in_french($event_schedule->reservation_end_date).'<br></center>';
}
}
}
},
'schedule_info' => function ($event_schedule, $event_details) {
$zero_hour_patt = '/00h00/';
if (
preg_match($zero_hour_patt, $event_schedule->start_date_hour) &&
preg_match($zero_hour_patt, $event_schedule->end_date_hour) ||
empty($event_schedule->start_date_hour) && empty($event_schedule->end_date_hour)
) {
$event_start_hour = '';
$event_end_hour = '';
} elseif (
!preg_match($zero_hour_patt, $event_schedule->start_date_hour) &&
preg_match($zero_hour_patt, $event_schedule->end_date_hour) ||
(!empty($event_schedule->start_date_hour) && empty($event_schedule->end_date_hour))
) {
$event_start_hour = ' à '.$event_schedule->start_date_hour;
$event_end_hour = '';
} elseif (
preg_match($zero_hour_patt, $event_schedule->start_date_hour) &&
!preg_match($zero_hour_patt, $event_schedule->end_date_hour) ||
empty($event_schedule->start_date_hour) && !empty($event_schedule->end_date_hour)
) {
$event_start_hour = '';
$event_end_hour = ' à '.$event_schedule->end_date_hour;
} elseif (
!preg_match($zero_hour_patt, $event_schedule->start_date_hour) &&
!preg_match($zero_hour_patt, $event_schedule->end_date_hour) ||
!empty($event_schedule->start_date_hour) && !empty($event_schedule->end_date_hour)
) {
if ($event_schedule->start_date != $event_schedule->end_date) {
$event_start_hour = ' à '.$event_schedule->start_date_hour;
$event_end_hour = ' à '.$event_schedule->end_date_hour;
} else {
$event_start_hour = ' de '.$event_schedule->start_date_hour;
$event_end_hour = ' à '.$event_schedule->end_date_hour;
}
}
$ev_scheddate = false;
if (0 == $event_schedule->end_day) {
$event_end_day = ' au '.$event_schedule->end_day.' ';
} else {
$event_end_day = '';
}
if ($event_schedule->start_date == $event_schedule->end_date || 0 == $event_schedule->end_date) {
// Le XX Septembre XXXX 8h00 jusq'au XX October XXXX 12h00
// Du 28 octobre au 29 octobre 2016 de 20h30 Ã 23h00
echo 'Le ';
translate_day_in_french($event_schedule->day);
echo ' ';
translate_date_in_french($event_schedule->start_date_day);
echo ' '.$event_start_hour;
echo ' '.$event_end_hour;
} else {
// Le 28 Septembre 1995 de 8h00 a 12h00
// Du 28 octobre 2016 de 20h30 Ã 22h30
if ($event_schedule->start_month == $event_schedule->end_month) {
echo ' '.$event_schedule->start_day.$event_end_day.' ';
translate_date_in_french($event_schedule->end_month);
echo ' '.$event_schedule->end_year;
// ." de ".$event_schedule->start_date_hour." Ã ".$event_schedule->end_date_hour;
} elseif ($event_schedule->start_year != $event_schedule->end_year) {
echo 'Du ';
strtolower(translate_day_in_french($event_schedule->day));
echo ' '.$event_schedule->start_day.' ';
translate_date_in_french($event_schedule->event_start_month_name);
echo ' '.$event_schedule->start_year;
echo ' '.$event_start_hour;
echo ' au ';
translate_day_in_french($event_schedule->endday);
echo ' '.$event_schedule->end_day.' ';
translate_date_in_french($event_schedule->end_month);
echo ' '.$event_schedule->end_year; //." de ".$event_schedule->start_date_hour." Ã ".$event_schedule->end_date_hour;
echo ' '.$event_end_hour;
} else {
echo 'Du ';
strtolower(translate_day_in_french($event_schedule->day));
echo ' '.$event_schedule->start_day.' ';
strtolower(translate_date_in_french($event_schedule->event_start_month_name));
echo " $event_start_hour";
echo ' au ';
strtolower(translate_day_in_french($event_schedule->endday));
echo ' '.$event_schedule->end_day.' ';
strtolower(translate_date_in_french($event_schedule->end_month));
echo " {$event_schedule->end_year} $event_end_hour";
$ev_scheddate = true;
echo ($ev_scheddate) ? '' : $event_start_hour.$event_end_hour;
}
}
},
);
}
/*This is for showing or hiding cancel button when seats open for reservation after waiting list*/
private function show_cancel_btn_or_not($booking_type, $event_status, $remaining_seat)
{
if (1 == $booking_type) { //normal registration
return 1;
} elseif (2 == $booking_type) { //waitinglist registration
if ('AVAILABLE' == $event_status && $remaining_seat > 0) {
//the subscriber is currently registered for waitinglist then suddenly seats are open for reservation
return 2;
}
return 1;
}
return 0;
}
private function check_if_user_can_still_book($reg_type = 0, $quota_seats = 0, $seats_reserved = 0, $remaining_seats = 0)
{
$seats_available = 0;
if (1 == $reg_type) {
//check if seats per subscriber caters the remaining seats
if ($quota_seats >= $seats_reserved && $remaining_seats > 0) {
if ($quota_seats == $seats_reserved) {
$seats_available = 0;
} else {
$seats_available = ($quota_seats > $seats_reserved) ? $quota_seats - $seats_reserved : $quota_seats;
$seats_available = ($remaining_seats >= $seats_available) ? $seats_available : $remaining_seats;
}
}
} elseif (2 == $reg_type) {
//check if quota_waiting_list_seat caters the seats_reserved
/*!note remaining seat here means seat_per_subscriber*/
$seats_per_subscriber = $remaining_seats;
if ($seats_per_subscriber >= $seats_reserved && $seats_per_subscriber > 0 && $quota_seats > 0) {
if ($seats_per_subscriber == $seats_reserved) {
$seats_available = 0;
} else {
$seats_available = ($seats_per_subscriber > $seats_reserved) ? $seats_per_subscriber - $seats_reserved : (($seats_per_subscriber > $quota_seats) ? $quota_seats : $seats_per_subscriber);
$seats_available = ($quota_seats >= $seats_available) ? $seats_available : $quota_seats;
}
}
}
return $seats_available;
}
private function set_event_cookie($event_id) {
delete_cookie($this->config->item('sess_cookie_name').'_eventpage');
$cookie_eventpage = array(
'name' => 'eventpage',
'value' => json_encode(array(
"event_link" => base_url('event_details?event_id='.$event_id)
)),
'expire' => 7200, // time() + (86400 * 30),
'prefix' => $this->config->item('sess_cookie_name').'_'
);
set_cookie($cookie_eventpage);
}
}