/**
  * Export user list in csv format
  *
  * @param String $user_name_search
  * @param String $current_sort_header
  * @param String $sort_order
  *
  */
 public function exportUserList($user_name_search, $current_sort_header, $sort_order, $status_values)
 {
     global $Language;
     header('Content-Type: text/csv');
     header('Content-Disposition:attachment; filename=users_list.csv');
     $eol = "\n";
     $documents_title = array('user_id' => $Language->getText('admin_userlist', 'id_user'), 'login_name' => $Language->getText('include_user_home', 'login_name'), 'real_name' => $Language->getText('include_user_home', 'real_name'), 'member_of' => $Language->getText('admin_userlist', 'member_of'), 'admin_of' => $Language->getText('admin_userlist', 'admin_of'), 'status' => $Language->getText('admin_userlist', 'status'));
     echo build_csv_header($this->col_list, $documents_title) . $eol;
     $dao = new UserDao(CodendiDataAccess::instance());
     $result = $dao->listAllUsers($user_name_search, 0, 0, $current_sort_header, $sort_order, $status_values);
     $users = $result['users'];
     echo $this->buildCsvBody($users);
 }
}
$vExport = new Valid_WhiteList('export', array('user_groups', 'user_groups_format'));
$vExport->required();
if ($request->valid($vExport)) {
    $export = $request->get('export');
    $col_list = array('group', 'username', 'realname');
    $lbl_list = array('group' => $GLOBALS['Language']->getText('project_export_user_groups', 'user_group'), 'username' => $GLOBALS['Language']->getText('project_export_user_groups', 'user_username', array($GLOBALS['sys_name'])), 'realname' => $GLOBALS['Language']->getText('project_export_user_groups', 'user_realname'));
    $um = UserManager::instance();
    switch ($export) {
        case 'user_groups':
            $sep = get_csv_separator();
            $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':
/**
 * @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;
    }
}
Exemple #4
0
 /**
  * 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());
 }
/**
 * Export project history to a csv file
 *
 * @param Integer $group_id     Id of the project
 * @param String  $event        Events category used to filter results
 * @param String  $subEventsBox Event used to filter results
 * @param String  $value        Value used to filter results
 * @param Integer $startDate    Start date used to filter results
 * @param Integer $endDate      End date used to filter results
 * @param String  $by           User name used to filter results
 *
 * @return void
 */
function export_grouphistory($group_id, $event = null, $subEventsBox = null, $value = null, $startDate = null, $endDate = null, $by = null)
{
    global $Language;
    header('Content-Type: text/csv');
    header('Content-Disposition: filename=project_history.csv');
    $eol = "\n";
    $col_list = array('event', 'val', 'date', 'by');
    $documents_title = array('event' => $Language->getText('project_admin_utils', 'event'), 'val' => $Language->getText('project_admin_utils', 'val'), 'date' => $Language->getText('project_admin_utils', 'date'), 'by' => $Language->getText('global', 'by'));
    echo build_csv_header($col_list, $documents_title) . $eol;
    $dao = new ProjectHistoryDao(CodendiDataAccess::instance());
    $history_filter = build_grouphistory_filter($event, $subEventsBox, $value, $startDate, $endDate, $by);
    $res = $dao->groupGetHistory(0, 0, $group_id, $history_filter);
    if ($res['numrows'] > 0) {
        echo displayProjectHistoryResults($group_id, $res, true);
    }
    echo build_csv_header($col_list, array()) . $eol;
}