/** * Build the body of csv file * * @param array $users * */ private function buildCsvBody($users) { $csv_body = ""; $hp = Codendi_HTMLPurifier::instance(); foreach ($users as $user) { $documents_body = array('user_id' => $user['user_id'], 'login_name' => $hp->purify($user['user_name']), 'real_name' => $hp->purify($user['realname']), 'member_of' => $user['member_of'], 'admin_of' => $user['admin_of'], 'status' => $this->getUserStatus($user['status'])); $csv_body .= build_csv_record($this->col_list, $documents_body) . "\n"; } return $csv_body; }
$eol = "\n"; $name = 'export_user_groups_' . $project->getUnixName() . '.csv'; header('Content-Disposition: filename=' . $name); header('Content-Type: text/csv'); echo build_csv_header($col_list, $lbl_list) . $eol; $ugs = ugroup_db_get_existing_ugroups($group_id, array($GLOBALS['UGROUP_PROJECT_MEMBERS'], $GLOBALS['UGROUP_PROJECT_ADMIN'])); while ($ugrp = db_fetch_array($ugs)) { if ($ugrp['ugroup_id'] <= 100) { $sqlUsers = ugroup_db_get_dynamic_members($ugrp['ugroup_id'], false, $group_id); } else { $sqlUsers = ugroup_db_get_members($ugrp['ugroup_id']); } $users = db_query($sqlUsers); while ($user = db_fetch_array($users)) { $r = array('group' => util_translate_name_ugroup($ugrp['name']), 'username' => $user['user_name'], 'realname' => $um->getUserById($user['user_id'])->getRealname()); echo build_csv_record($col_list, $r) . $eol; } } break; case 'user_groups_format': echo '<h3>' . $Language->getText('project_export_user_groups', 'exp_format') . '</h3>'; echo '<p>' . $Language->getText('project_export_user_groups', 'exp_format_msg') . '</p>'; // Pick-up a random project member $sqlUsers = ugroup_db_get_dynamic_members($GLOBALS['UGROUP_PROJECT_MEMBERS'], false, $group_id); $users = db_query($sqlUsers); $uRow = db_fetch_array($users); $user = $um->getUserById($uRow['user_id']); $dsc_list = array('group' => $GLOBALS['Language']->getText('project_export_user_groups', 'user_group_desc'), 'username' => $GLOBALS['Language']->getText('project_export_user_groups', 'user_username_desc', array($GLOBALS['sys_name'])), 'realname' => $GLOBALS['Language']->getText('project_export_user_groups', 'user_realname_desc')); $record = array('group' => util_translate_name_ugroup('project_members'), 'username' => $user->getName(), 'realname' => $user->getRealName()); display_exported_fields($col_list, $lbl_list, $dsc_list, $record); break;
/** * @param $log Array * @param $project Project */ function export_plugin_logs($log, $project) { $eol = "\n"; $result = db_query($log['sql']); $rows = db_numrows($result); if ($result && $rows > 0) { $arr = db_fetch_array($result); if (isset($arr['type'])) { $col_list = array('time', 'type', 'user', 'email', 'title', 'local_time'); $plugin_title = array('time' => $log['title'], 'type' => '', 'user' => '', 'email' => '', 'title' => '', 'local_time' => ''); $lbl_list = array('time' => $GLOBALS['Language']->getText('project_export_access_logs_export', 'time'), 'type' => $GLOBALS['Language']->getText('project_admin_utils', 'action'), 'user' => $GLOBALS['Language']->getText('project_export_access_logs_export', 'user'), 'email' => $GLOBALS['Language']->getText('project_export_access_logs_export', 'email'), 'title' => $log['field'], 'local_time' => $GLOBALS['Language']->getText('project_export_access_logs_export', 'local_time')); } else { $col_list = array('time', 'user', 'email', 'title', 'local_time'); $plugin_title = array('time' => $log['title'], 'user' => '', 'email' => '', 'title' => '', 'local_time' => ''); $lbl_list = array('time' => $GLOBALS['Language']->getText('project_export_access_logs_export', 'time'), 'user' => $GLOBALS['Language']->getText('project_export_access_logs_export', 'user'), 'email' => $GLOBALS['Language']->getText('project_export_access_logs_export', 'email'), 'title' => $log['field'], 'local_time' => $GLOBALS['Language']->getText('project_export_access_logs_export', 'local_time')); } // Build csv for plugins logs echo build_csv_header($col_list, $plugin_title) . $eol; echo build_csv_header($col_list, $lbl_list) . $eol; do { prepare_access_logs_record($project->getGroupId(), $arr); echo build_csv_record($col_list, $arr) . $eol; } while ($arr = db_fetch_array($result)); echo build_csv_header($col_list, array()) . $eol; } }
/** * Export muc logs of project $group_id * using monitoring openfire's plugin */ function export_muc_logs() { $request = HTTPRequest::instance(); $group_id = $request->get('group_id'); $pm = ProjectManager::instance(); $project = $pm->getProject($group_id); $any = $GLOBALS['Language']->getText('global', 'any'); if ($request->exist('log_start_date')) { $start_date = $request->get('log_start_date'); if ($start_date == '') { $start_date = $any; } } else { $week_ago = mktime(0, 0, 0, date("m"), date("d") - 7, date("Y")); $start_date = date("Y-m-d", $week_ago); } $end_date = $request->get('log_end_date'); if ($end_date == '') { $end_date = $any; } $mclm = IMMucLogManager::getMucLogManagerInstance(); $conversations = null; try { if ($start_date == $any && $end_date == $any) { $conversations = $mclm->getLogsByGroupName($project->getUnixName(true)); } elseif ($start_date == $any && $end_date != $any) { $conversations = $mclm->getLogsByGroupNameBeforeDate($project->getUnixName(true), $end_date); } elseif ($start_date != $any && $end_date == $any) { $conversations = $mclm->getLogsByGroupNameAfterDate($project->getUnixName(true), $start_date); } else { $conversations = $mclm->getLogsByGroupNameBetweenDates($project->getUnixName(true), $start_date, $end_date); } } catch (Exception $e) { echo $e->getMessage(); } $eol = "\n"; $col_list = array('date', 'nickname', 'message'); $lbl_list = array('date' => $GLOBALS['Language']->getText('plugin_im', 'muc_logs_time'), 'nickname' => $GLOBALS['Language']->getText('plugin_im', 'muc_logs_user'), 'message' => $GLOBALS['Language']->getText('plugin_im', 'muc_logs_message')); $purifier = Codendi_HTMLPurifier::instance(); $uh = new UserHelper(); $file_name = 'muc_logs_' . $project->getUnixName(); header('Content-Type: text/csv'); header('Content-Disposition: filename=' . $file_name . '.csv'); if (!$conversations || sizeof($conversations) == 0) { echo $GLOBALS['Language']->getText('plugin_im', 'no_muc_logs'); } else { // Build CSV header foreach ($lbl_list as $k => $v) { $lbl_list[$k] = SimpleSanitizer::unsanitize($v); } echo build_csv_header($col_list, $lbl_list) . $eol; // Build CSV content foreach ($conversations as $conv) { $time = format_date(util_get_user_preferences_export_datefmt(), $conv->getTimestamp()); if ($conv->getNickname() != null) { $nick = $conv->getNickname(); } else { $nick = ''; } $message = $conv->getMessage(); echo build_csv_record($col_list, array('date' => $time, 'nickname' => $nick, 'message' => $message)) . $eol; } } }
/** * Display screen showing the allowed input format of the CSV files * * */ function displayShowFormat() { global $Language; // project_export_utils is using $at instead of $ath $at = $this->ath; $this->ath->header(array('title' => $Language->getText('tracker_import', 'art_import') . ' ' . $this->ath->getID() . ' - ' . $this->ath->getName(), 'pagename' => 'tracker', 'atid' => $this->ath->getID(), 'sectionvals' => array($this->group->getPublicName()), 'help' => 'tracker-v3.html#tracker-artifact-import')); echo '<div id="tracker_toolbar_clear"></div>' . PHP_EOL; $sql = $this->ath->buildExportQuery($fields, $col_list, $this->lbl_list, $this->dsc_list, $select, $from, $where, $multiple_queries, $all_queries); //we need only one single record $sql .= " LIMIT 1"; //get all mandatory fields $mand_list = $this->mandatoryFields(); // Add the 2 fields that we build ourselves for user convenience // - All follow-up comments // - Dependencies $col_list[] = 'follow_ups'; $col_list[] = 'is_dependent_on'; $col_list[] = 'add_cc'; $col_list[] = 'cc_comment'; $eol = "\n"; $result = db_query($sql); $rows = db_numrows($result); echo '<h3>' . $Language->getText('tracker_import', 'format_hdr'), '</h3>'; echo '<p>' . $Language->getText('tracker_import', 'format_msg'), '<p>'; if ($rows > 0) { $record = pick_a_record_at_random($result, $rows, $col_list); } else { $record = $this->ath->buildDefaultRecord(); } prepare_artifact_record($at, $fields, $this->ath->getId(), $record, 'csv'); $hp = Codendi_HTMLPurifier::instance(); foreach ($record as $k => $v) { //We should know the type of each field because some are sanitized, others htmlspecialcharized... $record[$k] = $hp->purify($v, CODENDI_PURIFIER_CONVERT_HTML); } display_exported_fields($col_list, $this->lbl_list, $this->dsc_list, $record, $mand_list); echo '<br><br><h4>' . $Language->getText('tracker_import', 'sample_cvs_file') . '</h4>'; echo build_csv_header($col_list, $this->lbl_list); echo '<br>'; echo build_csv_record($col_list, $record); $this->ath->footer(array()); }
/** * Display the retrieved reult set * * @param Integer $group_id Id of the project * @param Array $res Contains the retrieved results * @param Boolean $export Switch CSV export mode or HTML display * @param unknown_type $i Line number indicator * * @return string html */ function displayProjectHistoryResults($group_id, $res, $export = false, &$i = 1) { global $Language; $html = ''; $hp = Codendi_HTMLPurifier::instance(); while ($row = $res['history']->getRow()) { $field = $row['field_name']; // see if there are any arguments after the message key // format is "msg_key ## arg1||arg2||... // If msg_key cannot be found in the localized message // catalog then display the msg has is because this is very // likely a legacy message (pre-localization version) if (strpos($field, " %% ") !== false) { list($msg_key, $args) = explode(" %% ", $field); if ($args) { $arr_args = explode('||', $args); } } else { $msg_key = $field; $arr_args = ""; } $msg = $Language->getText('project_admin_utils', $msg_key, $arr_args); if (!(strpos($msg, "*** Unkown msg") === false)) { $msg = $field; } if (!$export) { $html .= '<TR class="' . html_get_alt_row_color($i++) . '"><TD>' . $hp->purify($msg, CODENDI_PURIFIER_BASIC, $group_id) . '</TD><TD>'; } $val = $row['old_value']; //Translate dynamic ugroup name for permission entries if (strstr($msg_key, "perm_granted_for_") || strstr($msg_key, "perm_reset_for_") || strstr($msg_key, "membership_request_updated")) { $ugroupList = explode(",", $val); $val = ''; foreach ($ugroupList as $ugroup) { if ($val) { $val .= ', '; } $val .= util_translate_name_ugroup($ugroup); } } else { if ($msg_key == "group_type") { $template =& TemplateSingleton::instance(); $val = $template->getLabel($val); } } if ($export) { $documents_body = array('event' => $hp->purify($msg, CODENDI_PURIFIER_BASIC, $group_id), 'val' => $hp->purify($val), 'date' => format_date($GLOBALS['Language']->getText('system', 'datefmt'), $row['date']), 'by' => UserHelper::instance()->getDisplayNameFromUserName($row['user_name'])); $html .= build_csv_record(array('event', 'val', 'date', 'by'), $documents_body) . "\n"; } else { $html .= $hp->purify($val); $user = UserManager::instance()->getUserByUserName($row['user_name']); $html .= '</TD><TD>' . format_date($GLOBALS['Language']->getText('system', 'datefmt'), $row['date']) . '</TD><TD>' . UserHelper::instance()->getLinkOnUser($user) . '</TD></TR>'; } } return $html; }