Cannot save/load scheduler data since last modif

Hello,
I Cannot save/load scheduler data since last modifications. Probably a mapping probelm
PLease can somewone help me !

my init function

function init(){

	//window.resizeTo(950,700)
	//modSchedHeight();

	//===============
	// CONFIG
	//===============
	
	scheduler.locale.labels.timeline_tab = "Jour";	
	scheduler.locale.labels.workweek_tab = "Semaine";	

	scheduler.config.click_create = false;
	scheduler.config.dblclick_create = false;
	scheduler.config.xml_date="%Y-%m-%d %H:%i";
	scheduler.xy.editor_width = 0; //disable editor's auto-size

	var is_admin = <?php echo json_encode(is_admin()) ; ?>;

	if (is_admin){
		scheduler.config.details_on_create=true;
		scheduler.config.details_on_dblclick=true;
		scheduler.config.details_on_click=true;
	}else{			
		scheduler.config.details_on_create=false;
		scheduler.config.details_on_dblclick=false;
		scheduler.config.details_on_click=false;

		scheduler.config.readonly_form = true;
	}
			
	//scheduler.config.details_on_click=true;
	//scheduler.config.quick_info_detached = true;		
	
	
	// scheduler.config.first_hour = 6
	// scheduler.config.last_hour = 23

	//===============
	//Data loading
	//===============

	var planning = <?php echo json_encode($planning) ; ?>;		
	var phases = <?php echo json_encode($phases) ; ?>;		
	var users = <?php echo json_encode($users) ; ?>;


	scheduler.serverList("planning",planning);				
	scheduler.serverList("userslist",users);
	scheduler.serverList("phase_id",phases);

	//console.log(phases);

	//===============
	//Configuration
	//===============	
	scheduler.createTimelineView({
		section_autoheight: false,
		name:	"timeline",
		x_unit:	"minute",
		x_date:	"%H:%i",
		x_step:	30,
		x_size: 24,
		x_start: 16,
		x_length:	48,
		y_unit: scheduler.serverList("planning"),
		y_property:	"section_id",
		render: "tree",
		folder_dy:20,
		dy:60
	});

	scheduler.createTimelineView({
		section_autoheight: false,
		name:	"workweek",
		x_unit:	"day",
		x_date:	"Week #%W",
		x_step:	  1,
		x_size:   12,
		x_start:  0,
		x_length: 12,
		y_unit: scheduler.serverList("planning"),
		y_property:	"section_id",
		render: "tree",
		folder_dy:20,
		dy:60
		/*,
		second_scale: { // adding such object to createTimelineView parameters enables second header
 		   x_unit: "day", // size of unit which should be used for second scale
    		x_date: "%F %d" // would be translated to "July 01" for example
		}*/
	});

	


	//===============
	// VUE WEEK
	//===============	

	scheduler.attachEvent("onTemplatesReady",function(){
		//work week
		scheduler.date.workweek_start = scheduler.date.week_start;
		scheduler.templates.workweek_date = scheduler.templates.week_date;
		scheduler.templates.workweek_scale_date = scheduler.templates.week_scale_date;
		scheduler.date.add_workweek=function(date,inc){ return scheduler.date.add(date,inc*7,"day"); }
		scheduler.date.get_workweek_end=function(date){ return scheduler.date.add(date,5,"day"); }
	});

	//===============
	// FONCTIONS
	//===============
	
	function getPhaseLabelById(id){

		var res = "";
		for (var i = 0; i < phases.length; i++) {
			
			if (phases[i]["id"] == id) {
				res = phases[i]["label"];
			}
		}		
		return res;			
	}

	function getPhaseIdByLabel(label){
		
		var res = 0;
		for (var i = 0; i < phases.length; i++) {
			
			if (phases[i]["label"] ==label) {
				res = phases[i]["id"];
			}
		}		
		return res;
	}

	function updateSecondList(){			

	    var newList = getUserListByKey(this.value);
	    var html='';
	    for (var i=0; i < newList.length; i++) {
				var k= newList[i]["key"];
				var v=newList[i]["label"];
				html +=	'<option value="'+k+'">'+v+'</option>';
		};

	    $('div.dhx_cal_ltext select:last').html(html);		  
	    return true;
	}


	
	function getChildrenByProjectId(key){
		var i=0;
		var planning = scheduler.serverList("planning");
		for (var i = 0; i < planning.length; i++) {
			if (planning[i]["key"]==key){
				return planning[i]["children"];					 
			}
		}
		
	}	

	function getPlanningByProjectId(key){
		var i=0;
		var result = new Array();
		var planning = scheduler.serverList("planning");
		for (var i = 0; i < planning.length; i++) {
			if (planning[i]["key"]==key){
				result[0] = planning[i];					 
				return result;
			}
		}
		
	}


	function getUserListByKey(key){
		var planning = scheduler.serverList("planning");
		for(var i=0;i<planning.length;i++){
			if (planning[i]["key"]==key){
				return planning[i]["children"];
			}
		}
	}

	function is_mantis_event(event){
		// var res = false;
		// if (event.start_field_id){
		// 	res = event.start_field_id > 0 ;
		// }
		// if (event.end_field_id){
		// 	res = res || event.end_field_id > 0 ;
		// }
		// return res;
		return (event != null) && ((event.start_field_id != null && event.start_field_id > 0) || (event.end_field_id != null && event.end_field_id > 0));
		// return (event.start_field_id > 0 || event.end_field_id > 0);
	}

	

	//===============
	// INIT
	//===============
	scheduler.init('scheduler_here',new Date(),"timeline");				
	scheduler.load("events.php");
	var dp = new dataProcessor("events.php");
	dp.init(scheduler);

	//===============
	// EVENTS
	//===============	
	scheduler.attachEvent("onEventSave",function(id,data,is_new_event){
		console.log(id);
		console.log(data);
		return true;
	})
	
	// scheduler.attachEvent("onBeforeEventDelete", function(event_id,event_object){

// if (is_mantis_event(event_object)){
// return false;
// }
// });

	// function displayUsersSections(ev){
	// 	if (ev.projet_id != null){

// var newList = getUserListByKey(ev.projet_id);
// var html=’’;
// for (var i=0; i < newList.length; i++) {
// var k= newList[i][“key”];
// var v=newList[i][“label”];
// if (ev.key == k){
// html += ‘’+v+’’;
// }else{
// html += ‘’+v+’’;
// }
// };

	// 	    $('div.dhx_cal_ltext select:last').html(html);	
 //       		//scheduler.updateCollection("firstUsers", newList);

// }
// }

	function hideSection(sectionIndex){
	    var section = document.getElementById(scheduler.config.lightbox.sections[sectionIndex].id);	      
	     //console.log(section);
	     $(section).parent().hide();
	    // section.style.display="none";		     
	    // section.nextSibling.style.display="none";
	        
	    // section.style.display="block";
	    // section.nextSibling.style.display="block";
	      
	    scheduler.setLightboxSize();
	};
		
	scheduler.attachEvent("onBeforeDrag", function (event_id, mode, native_event_object){
		//allow edit operations only for admin 
	    if (!is_admin){ return false;}
	    var ev = scheduler.getEvent(event_id); 
	    if (is_mantis_event(ev)){
	    	return false;
	    }
	    
	    return true;
	});
	//allow edit operations only for admin 
	if (!is_admin){
		//scheduler.attachEvent("onBeforeDrag",function(){return false;});
		scheduler.attachEvent("onClick",function(){return false;});
		scheduler.attachEvent("onDblClick",function(){return false;});

	}	

	

	var parent_onchange = function(event) {
		var new_child_options = getChildrenByProjectId(this.value);
		update_select_options(scheduler.formSection('userselect').control, new_child_options);
	};
	
	var update_select_options = function(select, options) { // helper function
		select.options.length = 0;
		for (var i=0; i<options.length; i++) {
			var option = options[i];
			select[i] = new Option(option.label, option.key);
		}
	};

	scheduler.attachEvent("onBeforeLightbox", function(id){
		var ev = scheduler.getEvent(id);
		//console.log(ev);
		if (!ev.child_id) {
			var planning = scheduler.serverList("planning");
			var parent_id = ev.parent_id||planning[0].key;
			//console.log(parent_id);
			var new_child_options = getChildrenByProjectId(parent_id);
			//console.log(new_child_options);
			update_select_options(scheduler.formSection('userselect').control, new_child_options);
		}
		return true;
	});

	// scheduler.attachEvent("onLightbox", function (event_id){

// var ev = scheduler.getEvent(event_id);

// displayUsersSections(ev);
// if (is_mantis_event(ev)){
// hideSection(1);//phases
// hideSection(2);//projets
// hideSection(3);//users
// }
// return true;
// });

// scheduler.attachEvent(“onAfterLightbox”, function (){
// // scheduler.resetLightbox();
// // showSection(1);//phases
// // showSection(2);//projets
// // showSection(3);//users

// });

	scheduler.templates.event_class=function(start, end, event){ 
		//console.log(event);	
		var res = phases[0]["label"];
		if (event.phase_id != null){    		
			res = getPhaseLabelById(event.phase_id);    			
		}
		
		return res;
	 }

	

	
	//===============
	// LIGHTBOX
	//===============
	scheduler.locale.labels.section_userselect = "Users";		
	scheduler.locale.labels.section_projetselect = "Projets";
	scheduler.locale.labels.section_description = "Description";
	scheduler.locale.labels.section_details = "Details";
	scheduler.locale.labels.section_phases = "Phase";

	scheduler.config.lightbox.sections=[	
		{name:"description", height:100, map_to:"text", type:"textarea" , focus:true},			
		//{name:"details", height:20, type:"textarea", map_to:"details", focus:true },
		{name:"phases", height:23, type:"select", options:scheduler.serverList("phase_id"), map_to:"phase_id" }, 
		// {name:"projetselect", height:23, type:"select", options: scheduler.serverList("planning") , map_to:"projet_id" ,onchange:updateSecondList}, 
		{name:"projetselect", height:23, type:"select", options: scheduler.serverList("planning") , map_to:"projet_id" ,onchange:parent_onchange}, 
		{name:"userselect", height:23, type:"select", options:scheduler.serverList("userslist") , map_to:"section_id"}, 
		{name:"time", height:72, type:"time", map_to:"auto"}
	];

	

	$('#selectedProject').on('change',function(){
		var index = this.value;
		// console.log(index);
		// console.log(scheduler.serverList("planning"));
		if (index != "all"){
			var newPlanning = getPlanningByProjectId(index);
			//var newUsers = getUsersForProject(index);
		}
		else {
			//all users and all planning
			newPlanning = scheduler.serverList("planning");
			newUsers = users;
		}

		scheduler.updateCollection("planning", newPlanning);
		//scheduler.updateCollection("key", newUsers);
		scheduler.updateCollection("y_unit", newPlanning);
		// scheduler.clearAll();
			// scheduler.setCurrentView();
				
	});

my event.php file content
$scheduler = new SchedulerConnector($res, $dbtype);
$scheduler->enable_log(“log.txt”,true);

$cross = new CrossOptionsConnector($res, $dbtype);
$cross->dynamic_loading(true);
$cross->options->render_table("phase","id","id(value),label(label), color, background-color");	
$scheduler->set_options("phase_id", $cross->options);



$list = new OptionsConnector($res, $dbtype);
$list->dynamic_loading(true);
$list->render_array($users, "key",  "key, user_id,projet_id,label");	
$scheduler->set_options("userlist", $list);

if (is_admin()!=1){
	$scheduler->access->deny("insert");
	$scheduler->access->deny("update");
	$scheduler->access->deny("delete");
}




function is_mantis_bug_deleted($data){
	//interdiction de supprimer les events mantis depuis le planning
	LogMaster::log("suppression event debut"); 		
	LogMaster::log($data);
	LogMaster::log($data->get_value('event_id'));   
	LogMaster::log($data->get_value('start_field_id'));   
	LogMaster::log($data->get_value('end_field_id'));   
	
	LogMaster::log("suppression event fin"); 
	if ($data->get_value('start_field_id') > 0 || $data->get_value('end_field_id') > 0){
		$scheduler->access->deny("delete");
	}
}

function is_mantis_bug_updated($data){    	
	
	LogMaster::log("is_mantis_bug_updated"); 
	LogMaster::log($data->get_value('event_id'));    	
	// LogMaster::log($data->get_value('event_name'));    	
	// LogMaster::log($data->get_value('bug_id'));
	// LogMaster::log($data->get_value('bug_text_id'));
	// LogMaster::log($data->get_value('start_field_id'));    	
	// LogMaster::log($data->get_value('end_field_id'));

	if ($data->get_value('start_field_id') > 0 || $data->get_value('end_field_id') > 0){    	
		
		$description	= $data->get_value('event_name');
		$bug_id 		= $data->get_value('bug_id');
		$field_id_start = $data->get_value('start_field_id');
		$field_id_end 	= $data->get_value('end_field_id');
		$start_date		= $data->get_value('start_date');
		$end_date		= $data->get_value('end_date');
		$value_start 	= strtotime($data->get_value('start_date'));
		$value_end 		= strtotime($data->get_value('end_date'));
		$bug_text_id 	= $data->get_value('bug_text_id');
		$step			= $data->get_value('step');
		
		if (strcmp($step,"to_deliver") == 0) {
			LogMaster::log("duree modifie");
			$value_start = $value_end - $value_start;
			$value_start = $value_start/3600;
		}

		$query_start = "UPDATE  mantis_custom_field_string_table  SET value='$value_start'	WHERE field_id=$field_id_start AND bug_id=$bug_id";
		$query_end   = "UPDATE  mantis_custom_field_string_table  SET value='$value_end'	WHERE field_id=$field_id_end AND bug_id=$bug_id";
		$query_text  = "UPDATE  mantis_bug_text_table  SET description='$description'	WHERE id=$bug_text_id";
	
		mysql_query($query_start);
		mysql_query($query_end);
		mysql_query($query_text);

		// $bug = array(
		// 	'bug_id'			=> $data->get_value('bug_id'),
		// 	'start_field_id'	=> $data->get_value('start_field_id'),
		// 	'end_field_id'		=> $data->get_value('end_field_id'),
		// 	'start_date'		=> $data->get_value('start_date'),
		// 	'end_date'			=> $data->get_value('end_date'),
		// );
		// $status = update_mantis_bug($bug);		

		return false;
	}
}	 
$scheduler->event->attach("beforeUpdate","is_mantis_bug_updated");
$scheduler->event->attach("beforeDelete","is_mantis_bug_deleted");
//$scheduler->sql->attach("Update","Update mantis_custom_field_string_table set value='{value}' where field_id={field_id} AND bug_id={bug_id}");

$scheduler->render_table("events_ms","event_id","start_date,end_date,event_name,projet_id,user_id,section_id,phase_id,bug_id,bug_text_id,step,start_field_id,end_field_id");

Client side looks valid, but it is quite complex, so maybe I’m missing something.
Do you have working demo, where issue can be checked?

I attach a scan of my scheduler below.
When I save, it nothing happen.
Thanks!


Finally I find out my error.
I inverse some include php files.

Thanks for your attention !