/**
  * 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;
    }
}
Example #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());
 }
Example #6
0
/**
 * 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;
}