/php/reporting/blocks/weblcms_assignment_user_information_reporting_block.class.php
PHP | 138 lines | 112 code | 18 blank | 8 comment | 6 complexity | 42ae891038db4873593e070240950ce7 MD5 | raw file
- <?php
- namespace application\weblcms;
-
- use common\libraries\Application;
- use common\libraries\Request;
- use common\libraries\DatetimeUtilities;
- use common\libraries\Utilities;
- use common\libraries\Redirect;
- use common\libraries\Translation;
- use common\libraries\Path;
- use common\libraries\PatternMatchCondition;
- use reporting\ReportingFormatter;
- use reporting\ReportingData;
- use common\libraries\EqualityCondition;
- use user\UserDataManager;
- use common\libraries\AndCondition;
- use application\weblcms\tool\assignment\AssignmentTool;
- use repository\content_object\assignment\Assignment;
- use group\GroupDataManager;
- use common\libraries\InCondition;
-
- require_once dirname(__FILE__) . '/../weblcms_tool_reporting_block.class.php';
- require_once Path :: get_reporting_path() . '/lib/reporting_data.class.php';
-
- /**
- * @package application.weblcms.php.reporting.blocks
- *
- * Reporting block displaying information about the assignment and the user
- *
- * @author Joris Willems <joris.willems@gmail.com>
- * @author Alexander Van Paemel
- */
- class WeblcmsAssignmentUserInformationReportingBlock extends WeblcmsToolReportingBlock
- {
-
- public function count_data()
- {
- $reporting_data = new ReportingData();
-
- $publication_id = $this->get_pid();
- $course_id = $this->get_course_id();
- $submitter_type = Request :: get(AssignmentTool :: PARAM_SUBMITTER_TYPE);
- $target_id = Request :: get(AssignmentTool :: PARAM_TARGET_ID);
-
- if($submitter_type == WeblcmsAssignmentSubmissionsTracker :: SUBMITTER_TYPE_USER)
- {
- $reporting_data->set_categories(array(Translation :: get('Title'), Translation :: get('Course'),
- Translation :: get('User'), Translation :: get('AverageScore')));
- }
- else
- {
- $reporting_data->set_categories(array(Translation :: get('Title'), Translation :: get('Course'),
- Translation :: get('Group'), Translation :: get('AverageScore')));
- }
-
- $weblcms_data_manager = WeblcmsDataManager :: get_instance();
- $publication = $weblcms_data_manager->retrieve_content_object_publication($publication_id);
- $condition = new EqualityCondition(Course :: PROPERTY_ID, $course_id);
- $courses_resultset = $weblcms_data_manager->retrieve_courses($condition);
- $course = $courses_resultset->next_result();
- $assignment = $publication->get_content_object();
-
- $params = array();
- $params[Application :: PARAM_ACTION] = WeblcmsManager :: ACTION_VIEW_COURSE;
- $params[Application :: PARAM_APPLICATION] = WeblcmsManager :: APPLICATION_NAME;
- $params[WeblcmsManager :: PARAM_COURSE] = $course_id;
- $params[WeblcmsManager :: PARAM_TOOL] = Assignment :: get_type_name();
- $params[WeblcmsManager :: PARAM_PUBLICATION] = $publication_id;
- $params[WeblcmsManager :: PARAM_TOOL_ACTION] = Tool :: ACTION_VIEW;
- $url_title = Redirect :: get_url($params);
-
- $reporting_data->set_rows(array(Translation :: get('Details')));
- $reporting_data->add_data_category_row(Translation :: get('Title'), Translation :: get('Details'), '<a href="' . $url_title . '">' . $assignment->get_title() . '</a>');
- $reporting_data->add_data_category_row(Translation :: get('Course'), Translation :: get('Details'), $course->get_name());
-
- if($submitter_type == WeblcmsAssignmentSubmissionsTracker :: SUBMITTER_TYPE_USER)
- {
- $user_data_manager = UserDataManager :: get_instance();
- $user = $user_data_manager->retrieve_user($target_id);
- $reporting_data->add_data_category_row(Translation :: get('User'), Translation :: get('Details'), $user->get_fullname());
- }
- else
- {
- if($submitter_type == WeblcmsAssignmentSubmissionsTracker :: SUBMITTER_TYPE_COURSE_GROUP)
- {
- $group = $weblcms_data_manager->retrieve_course_group($target_id);
- }
- else
- {
- $group_data_manager = GroupDataManager :: get_instance();
- $group = $group_data_manager->retrieve_group($target_id);
- }
- $reporting_data->add_data_category_row(Translation :: get('Group'), Translation :: get('Details'), $group->get_name());
- }
-
- $submissions_tracker = new WeblcmsAssignmentSubmissionsTracker();
- $conditions = array();
- $conditions[] = new EqualityCondition(WeblcmsAssignmentSubmissionsTracker :: PROPERTY_PUBLICATION_ID, $publication_id);
- $conditions[] = new EqualityCondition(WeblcmsAssignmentSubmissionsTracker :: PROPERTY_SUBMITTER_TYPE, $submitter_type);
- $conditions[] = new EqualityCondition(WeblcmsAssignmentSubmissionsTracker :: PROPERTY_SUBMITTER_ID, $target_id);
- $condition = new AndCondition($conditions);
- $submissions = $submissions_tracker->retrieve_tracker_items($condition);
-
- $submission_ids = array();
- foreach($submissions as $submission)
- {
- $submission_ids[] = $submission->get_id();
- }
-
- $score_tracker = new WeblcmsSubmissionScoreTracker();
- $condition = new InCondition(WeblcmsSubmissionScoreTracker :: PROPERTY_SUBMISSION_ID, $submission_ids);
- $scores = $score_tracker->retrieve_tracker_items($condition);
-
- $avg_score = 0;
- foreach($scores as $score)
- {
- $avg_score += $score->get_score();
- }
- $avg_score = number_format($avg_score / count($scores), 2) . '%';
-
- $reporting_data->add_data_category_row(Translation :: get('AverageScore'), Translation :: get('Details'), $avg_score);
-
- return $reporting_data;
- }
-
- public function retrieve_data()
- {
- return $this->count_data();
- }
-
- public function get_available_displaymodes()
- {
- $modes = array();
- $modes[ReportingFormatter :: DISPLAY_TABLE] = Translation :: get('Table');
- return $modes;
- }
- }
- ?>