datagen = new FlatViewDataGenerator($users, $evals, $links); $this->selectcat = $selectcat; $this->limit_enabled = $limit_enabled; $this->offset = $offset; if (isset ($addparams)) { $this->set_additional_parameters($addparams); } } /** * Display the graph of the total results of all students * */ function display_graph() { include_once(api_get_path(LIBRARY_PATH).'pchart/pData.class.php'); include_once(api_get_path(LIBRARY_PATH).'pchart/pChart.class.php'); include_once(api_get_path(LIBRARY_PATH).'pchart/pCache.class.php'); //echo '
';
		$header_name = $this->datagen->get_header_names();
		$total_users = $this->datagen->get_total_users_count();
		$img_file = '';
		
		if ($this->datagen->get_total_items_count()>0 && $total_users > 0 ) {				
			array_shift($header_name); 
			array_shift($header_name);
			array_pop($header_name);			
			$user_results = ($this->datagen->get_data_to_graph());				
			$pre_result = $new_result = array();
			$DataSet = new pData;
			//filling the Dataset			
			foreach($user_results as $result) {
				for($i=0; $i< count($header_name); $i++) {
					$pre_result[$i+3]+=$result[$i+1];				
				}			
			}

			$i=1;
			$show_draw = false;
			if ($total_users>0) {
				foreach($pre_result as $res) {			 
					$total =  $res / ($total_users*100);
					if ($total != 0)
						$show_draw  = true; 					
					$DataSet->AddPoint($total,"Serie".$i);					
					$DataSet->SetSerieName($header_name[$i-1],"Serie".$i);
					// Dataset definition   		  
					$DataSet->AddAllSeries();  
					$DataSet->SetAbsciseLabelSerie(); 
					$i++; 	
				}
			}			
			//print_r($pre_result); print_r($header_name);			
				
			// Cache definition   
			$Cache = new pCache();
			// the graph id
			$gradebook_id = intval($_GET['selectcat']);			
			$graph_id = api_get_user_id().'AverageResultsVsResource'.$gradebook_id.api_get_course_id();
			$data = $DataSet->GetData();
		
			
			if ($show_draw) {				
				if ($Cache->IsInCache($graph_id, $DataSet->GetData())) {
				//if (0) {
					//if we already created the img
					//echo 'in cache';
					$img_file = $Cache->GetHash($graph_id,$DataSet->GetData());			
				} else  {		  
					// if the image does not exist in the archive/ folder
					
					// Initialise the graph  
					$Test = new pChart(760,360); 
				
					//which schema of color will be used
					$quant_resources = count($data[0])-1;					
					// Adding the color schemma
					if ($quant_resources < 8) {
						$Test->loadColorPalette(api_get_path(LIBRARY_PATH)."pchart/palette/reduced.txt");	
					} else {
						$Test->loadColorPalette(api_get_path(LIBRARY_PATH)."pchart/palette/default.txt");
					}					
					
					// set font of the axes 
					$Test->setFontProperties(api_get_path(LIBRARY_PATH)."pchart/fonts/tahoma.ttf",8);  
					$Test->setGraphArea(50,30,610,300);
					  
					$Test->drawFilledRoundedRectangle(7,7,780,330,5,240,240,240);  
					//$Test->drawRoundedRectangle(5,5,790,330,5,230,230,230);
					
					//background color area & stripe or not					
					$Test->drawGraphArea(255,255,255,TRUE);		
					$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_START0,150,150,150,TRUE,0,1, FALSE);
					
					//background grid     
					$Test->drawGrid(4,TRUE,230,230,230,50);  
					 
					// Draw the 0 line  
					//$Test->setFontProperties(api_get_path(LIBRARY_PATH)."pchart/fonts/tahoma.ttf",6);  
					//$Test->drawTreshold(0,143,55,72,TRUE,TRUE);  
					 
					// Draw the bar graph  
					$Test->drawBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE);  
					 
					//Set legend properties: width, height and text color and font
					$Test->setFontProperties(api_get_path(LIBRARY_PATH)."pchart/fonts/tahoma.ttf",9);  
					$Test->drawLegend(620, 70,$DataSet->GetDataDescription(),255,255,255);
					
					//Set title properties  
					$Test->setFontProperties(api_get_path(LIBRARY_PATH)."pchart/fonts/tahoma.ttf",10);  
					$Test->drawTitle(50,22,get_lang('AverageResultsVsResource'),50,50,80,620);
					
					//------------------						
					//echo 'not in cache';			
					$Cache->WriteToCache($graph_id,$DataSet->GetData(),$Test);						
					ob_start();
					$Test->Stroke();
					ob_end_clean();				
					$img_file = $Cache->GetHash($graph_id,$DataSet->GetData());
				}
			}		
		}
		return api_get_path(WEB_ARCHIVE_PATH).$img_file;
		//return '
'; } function display_graph_by_resource() { include_once(api_get_path(LIBRARY_PATH).'pchart/pData.class.php'); include_once(api_get_path(LIBRARY_PATH).'pchart/pChart.class.php'); include_once(api_get_path(LIBRARY_PATH).'pchart/pCache.class.php'); $header_name = $this->datagen->get_header_names(); $total_users = $this->datagen->get_total_users_count(); $img_file = ''; if ($this->datagen->get_total_items_count()>0 && $total_users > 0 ) { array_shift($header_name); array_shift($header_name); $displayscore= ScoreDisplay :: instance(); $customdisplays = $displayscore->get_custom_score_display_settings(); if (is_array($customdisplays) && count(($customdisplays))) { $user_results = ($this->datagen->get_data_to_graph2()); $pre_result = $new_result = array(); $DataSet = new pData; //filling the Dataset foreach($user_results as $result) { //print_r($result); for($i=0; $i< count($header_name); $i++) { $pre_result[$i+3][]=$result[$i+1]; $pre_result_pie[$i+3][] = $result[$i+1][0]; } } /*$display_list = array(); foreach( $customdisplays as $display) { $display_list[] = $display['display']; } */ $i=0; $show_draw = false; $resource_list = array(); $pre_result2 = array(); //print_r($pre_result); exit; foreach($pre_result as $key=>$res_array) { rsort($res_array); $pre_result2[] = $res_array; } //print_r($pre_result2); if ($total_users>0) { foreach($pre_result2 as $key=>$res_array) { //$resource_list //$total = $res / ($total_users*100); // mayor a menor $key_list = array(); foreach($res_array as $user_result) { $resource_list[$key][$user_result[1]]+=1; $key_list[] = $user_result[1]; } //@todo when a display custom does not exist the order of the color does not match //filling all the answer that are not responded with 0 foreach($customdisplays as $display) { if (!in_array($display['display'], $key_list)) $resource_list[$key][$display['display']]=0; } $i++; } } //print_r($customdisplays); //print_r($resource_list); exit; $i = 1; $j = 0; // here----------------------------------- //print_r($resource_list); foreach($resource_list as $key=>$resource) { $new_resource_list = $new_resource_list_name = array(); $DataSet = new pData; foreach($resource as $name=>$cant) { //$new_resource_list[]=$cant; //$new_resource_list_name[]=$name; $DataSet->AddPoint($cant,"Serie".$j); $DataSet->SetSerieName(strip_tags($name),"Serie".$j); $j++; } //print_r($pre_result); print_r($header_name); // Dataset definition $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie(''); $DataSet->SetXAxisName(get_lang('GradebookSkillsRanking')); $DataSet->SetYAxisName(get_lang('Students')); $show_draw = true; // Cache definition $Cache = new pCache(); // the graph id $gradebook_id = intval($_GET['selectcat']); $graph_id = api_get_user_id().'ByResource'.$gradebook_id.api_get_course_id(); if ($show_draw) { if ($Cache->IsInCache($graph_id, $DataSet->GetData())) { //if (0) { //if we already created the img we get the img file id //echo 'in cache'; $img_file = $Cache->GetHash($graph_id,$DataSet->GetData()); } else { // if the image does not exist in the archive/ folder // Initialise the graph $chart_size_w= 480; $chart_size_h= 250; $Test = new pChart($chart_size_w,$chart_size_h); // Adding the color schemma $Test->loadColorPalette(api_get_path(LIBRARY_PATH)."pchart/palette/hard_blue.txt"); // set font of the axes $Test->setFontProperties(api_get_path(LIBRARY_PATH)."pchart/fonts/tahoma.ttf",8); $area_graph_w = $chart_size_w-130; $Test->setGraphArea(50,30,$area_graph_w ,$chart_size_h-50); $Test->drawFilledRoundedRectangle(5,5,$chart_size_w-1,$chart_size_h-20,5,240,240,240); //$Test->drawRoundedRectangle(5,5,790,330,5,230,230,230); //background color area & stripe or not $Test->drawGraphArea(255,255,255,TRUE); //print_r($DataSet->GetData()); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_START0,150,150,150,TRUE,0,1, FALSE); //background grid $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line //$Test->setFontProperties(api_get_path(LIBRARY_PATH)."pchart/fonts/tahoma.ttf",6); //$Test->drawTreshold(0,143,55,72,TRUE,TRUE); // Draw the bar graph $Test->drawBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE); //Set legend properties: width, height and text color and font $Test->setFontProperties(api_get_path(LIBRARY_PATH)."pchart/fonts/tahoma.ttf",9); $Test->drawLegend($area_graph_w+10, 70,$DataSet->GetDataDescription(),255,255,255); //Set title properties $Test->setFontProperties(api_get_path(LIBRARY_PATH)."pchart/fonts/tahoma.ttf",10); $Test->drawTitle(50,22,$header_name[$i-1],50,50,80,$chart_size_w-50); //------------------ //echo 'not in cache'; $Cache->WriteToCache($graph_id,$DataSet->GetData(),$Test); ob_start(); $Test->Stroke(); ob_end_clean(); $img_file = $Cache->GetHash($graph_id,$DataSet->GetData()); } echo ''; if ($i % 2 == 0 && $i!=0) { echo '
'; } $i++; } } //end foreach } else { echo get_lang('ToViewGraphScoreRuleMustBeEnabled'); } // Pie charts /* $show_draw = false; $resource_list = array(); //print_r($pre_result_pie); if ($total_users>0) { foreach($pre_result_pie as $key=>$res_array) { //$resource_list foreach($res_array as $user_result) { $total+= $user_result / ($total_users*100); } echo $total; //echo $total = $res / ($total_users*100); echo '
'; //$DataSet->AddPoint($total,"Serie".$i); //$DataSet->SetSerieName($header_name[$i-1],"Serie".$i); } } //here-------------- foreach($resource_list as $key=>$resource) { $new_resource_list = $new_resource_list_name = array(); foreach($resource as $name=>$cant) { $new_resource_list[]=$cant; $new_resource_list_name[]=$name; } //Pie chart $DataSet = new pData; $DataSet->AddPoint($new_resource_list,"Serie1"); $DataSet->AddPoint($new_resource_list_name,"Serie2"); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie("Serie2"); $Test = new pChart(400,300); $Test->loadColorPalette(api_get_path(LIBRARY_PATH)."pchart/palette/soft_tones.txt"); // background //$Test->drawFilledRoundedRectangle(7,7,293,193,5,240,240,240); // border color $Test->drawRoundedRectangle(5,5,295,195,5,230,230,230); // This will draw a shadow under the pie chart //$Test->drawFilledCircle(122,102,70,200,200,200); //Draw the pie chart $Test->setFontProperties(api_get_path(LIBRARY_PATH)."pchart/fonts/tahoma.ttf",8); $Test->drawBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE); $tmp_path = api_get_path(SYS_ARCHIVE_PATH); $Test->drawBasicPieGraph($DataSet->GetData(),$DataSet->GetDataDescription(),120,100,70,PIE_PERCENTAGE,255,255,218); $Test->drawPieLegend(230,15,$DataSet->GetData(),$DataSet->GetDataDescription(),250,250,250); $user_id = api_get_user_id(); $img_file_generated_name = $key.uniqid('').'gradebook.png'; $Test->Render($tmp_path.$img_file_generated_name); chmod($tmp_path.$img_file_generated_name, 0777); if ($i % 2 == 0 && $i!= 0) { echo '
'; } echo ''; } */ } } /** * Function used by SortableTable to get total number of items in the table */ function get_total_number_of_items () { return $this->datagen->get_total_users_count(); } /** * Function used by SortableTable to generate the data to display */ function get_table_data ($from = 1) { // create page navigation if needed $totalitems = $this->datagen->get_total_items_count(); if ($this->limit_enabled && $totalitems > LIMIT) { $selectlimit = LIMIT; } else { $selectlimit = $totalitems; } if ($this->limit_enabled && $totalitems > LIMIT) { $calcprevious = LIMIT; $header .= '
' .'' .'' .''; // previous X $header .= ''; // 'glue' $header .= ''; // next X $calcnext = (($this->offset+(2*LIMIT)) > $totalitems) ? ($totalitems-(LIMIT+$this->offset)) : LIMIT; $header .= ''; $header .= '
'; if ($this->offset >= LIMIT) { $header .= '' .''.get_lang('Previous').'/' .get_lang('Previous').' '.$calcprevious . ' ' . get_lang('Evaluations') .''; } else { $header .= ''.get_lang('Previous').' ' . get_lang('Evaluations').'/'.get_lang('Previous').' ' . get_lang('Evaluations'); } $header .= ''; if ($calcnext > 0) { $header .= '' .get_lang('Next').' '.$calcnext . ' '.get_lang('Evaluations') .''.get_lang('Next').'/' .''; } else { $header .= get_lang('Next').' '.get_lang('Evaluations').''.get_lang('Next').'/'; } $header .= '
'; echo $header; } // retrieve sorting type $users_sorting = ($this->column == 0 ? FlatViewDataGenerator :: FVDG_SORT_LASTNAME : FlatViewDataGenerator :: FVDG_SORT_FIRSTNAME); if ($this->direction == 'DESC') { $users_sorting |= FlatViewDataGenerator :: FVDG_SORT_DESC; } else { $users_sorting |= FlatViewDataGenerator :: FVDG_SORT_ASC; } // step 1: generate columns: evaluations and links $header_names = $this->datagen->get_header_names($this->offset, $selectlimit); $column = 0; $this->set_header($column++, $header_names[0]); $this->set_header($column++, $header_names[1]); while ($column < count($header_names)) { $this->set_header($column, $header_names[$column], false); $column++; } //$this->set_header($column++, get_lang('Total')); // step 2: generate rows: students $data_array = $this->datagen->get_data($users_sorting, $from, $this->per_page, $this->offset, $selectlimit); $table_data = array(); foreach ($data_array as $user_row) { $table_row = array (); $count = 0; $table_row[]= $this->build_name_link($user_row[$count++], $user_row[$count++]); $table_row[]= $user_row[$count++]; while ($count < count($user_row)) { $table_row[] = $user_row[$count++]; } $table_data[]= $table_row; } return $table_data; } // Other functions private function build_name_link ($user_id, $lastname) { return ''.$lastname.''; } }