public static function getJSONRecordsData(TS_User &$current_user, array $filter_ar = array()) { // set static variables self::$current_user = $current_user; self::setFilter($filter_ar); // get filtered record id's, and full records when applicable $filter_ar['is_in_dienst'] = 1; $records_id_ar = TS_DB_HRM_Employees::getFilteredIDs($filter_ar); if (!$records_id_ar) { return json_encode(array('data' => array())); } $records_ar = TS_DB_HRM_Employees::getFullRecords($records_id_ar); if (!$records_ar) { return json_encode(array('data' => array())); } // check for user rights $user_may_edit_employee_presence = $current_user->hasAccess('Personeel Vrij Planning', 'edit_employee_leaves'); // get presence values for selected period $presence_values_id_ar = TS_DB_HRM_PresencePlanning_EmployeePresenceValues::getFilteredIDs(self::$filter_ar); if ($presence_values_id_ar) { $presence_values_ar = TS_DB_HRM_PresencePlanning_EmployeePresenceValues::getFullRecords($presence_values_id_ar); } else { $presence_values_ar = array(); } // Process found leaves in dates table, to group by employee $employees_presence_values_ar = array(); foreach ($presence_values_ar as $tmp_presence_value) { $tmp_employee_id = $tmp_presence_value['employee_id']; $tmp_presence_value_date = $tmp_presence_value['presence_value_date']; $employees_presence_values_ar[$tmp_employee_id][$tmp_presence_value_date] = array('num_worked_hours' => $tmp_presence_value['num_worked_hours'], 'presence_value' => $tmp_presence_value['presence_value']); } //dd::show($employees_presence_values_ar); // build return data array $data_ar = array(); foreach ($records_ar as $record) { // init variables $record_id = $record['id']; $record_name = $record['voornaam'] . ' ' . $record['achternaam']; $optional_links_ar = array(); // build cells $column_data_ar = array(); $column_data_ar[] = (int) $record_id; $column_data_ar[] = (string) $record_name; $column_data_ar[] = (string) $record['function_group_description']; // start loop for workdays in selected month/year foreach (self::getWorkdays() as $workday_int) { $workday_date = date('Y-m-d', $workday_int); // determine current value for this employee and date $current_value = ''; if (!empty($employees_presence_values_ar[$record_id][$workday_date])) { if (!empty($employees_presence_values_ar[$record_id][$workday_date]['presence_value'])) { $current_value = $employees_presence_values_ar[$record_id][$workday_date]['presence_value']; } elseif (isset($employees_presence_values_ar[$record_id][$workday_date]['num_worked_hours'])) { $current_value = $employees_presence_values_ar[$record_id][$workday_date]['num_worked_hours']; } } // get presence cell value, and build cell if ($user_may_edit_employee_presence) { $tmp_cell_value = TS_Module_HRM_PresencePlanning_Tables_InlineEditing_PlanningEditing::getPresenceInput($record_id, $workday_date, $current_value); } else { $tmp_cell_value = $current_value; } $tmp_employee_day_span = HTML::Span($tmp_cell_value, '', 'small_rounded_container'); $tmp_employee_day_span->addStyle('background-color', TS_Module_HRM_PresencePlanning_Constants::getPresenceOptionColor($current_value)); $column_data_ar[] = (string) $tmp_employee_day_span; } $data_ar[] = $column_data_ar; } // return data in JSON format return json_encode(array('data' => $data_ar), JSON_HEX_QUOT | JSON_HEX_TAG); }
<?php include_once $_SERVER['DOCUMENT_ROOT'] . '/classes2/autoloadclasses.php'; restore_error_handler(); error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); $tristar = TS_TriStar::get(); $current_user = new TS_User(); if (!$current_user->hasAccess('Admin', 'test_scripts')) { die('Sorry, je hebt geen toegang tot deze pagina.'); } ?> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>[Test] Personeel Vrij Planning</title> <link rel="stylesheet" type="text/css" href="<?php echo TS_Module_HRM_PresencePlanning_Constants::MODULE_ROOT_PATH . 'css/mainstyles.css'; ?> "> </head><body style="font: 12px Verdana, Geneva, sans-serif;"><pre> <?php $filter_ar = array('month' => 9, 'year' => 2015); $result = TS_Module_HRM_PresencePlanning_Tables_PlanningTable::getJSONRecordsData($current_user, $filter_ar); dd::show($result); ?> </pre></body></html>