Skip to content
Snippets Groups Projects
Commit 29414605 authored by aydreeihn's avatar aydreeihn
Browse files

Feature/dept access export #3844

parents 26934f60 642dc711
No related branches found
No related tags found
No related merge requests found
......@@ -489,6 +489,15 @@ implements TemplateVariable, Searchable {
$this->flags &= ~$flag;
}
function export($dept, $criteria=null, $filename='') {
include_once(INCLUDE_DIR.'class.error.php');
$members = $dept->getMembers();
//Sort based on name formating
$members = Staff::nsort($members);
Export::departmentMembers($dept, $members, $filename);
}
/*----Static functions-------*/
static function getIdByName($name, $pid=null) {
$row = static::objects()
......
......@@ -239,7 +239,7 @@ class Export {
return false;
}
static function agents($agents, $filename='', $how='csv') {
static function agents($agents, $filename='', $how='csv') {
// Filename or stream to export agents to
$filename = $filename ?: sprintf('Agents-%s.csv',
......@@ -271,6 +271,40 @@ class Export {
exit;
}
static function departmentMembers($dept, $agents, $filename='', $how='csv') {
$primaryMembers = array();
foreach ($dept->getPrimaryMembers() as $agent) {
$primaryMembers[] = $agent->getId();
}
// Filename or stream to export depts' agents to
$filename = $filename ?: sprintf('%s-%s.csv', $dept->getName(),
strftime('%Y%m%d'));
Http::download($filename, "text/$how");
echo self::dumpQuery($agents, array(
'::getName' => 'Name',
'::getUsername' => 'Username',
2 => 'Access Type',
3 => 'Access Role',
),
$how,
array('modify' => function(&$record, $keys, $obj) use ($dept, $primaries, $primaryMembers) {
$role = $obj->getRole($dept);
if (array_search($obj->getId(), $primaryMembers, true) === false)
$type = 'Extended';
else {
$type = 'Primary';
}
$record[2] = $type;
$record[3] = $role->name;
return $record;
})
);
exit;
}
}
class ResultSetExporter {
......
......@@ -326,7 +326,17 @@ $info = Format::htmlchars(($errors && $_POST) ? $_POST : $info);
<?php echo sprintf(__('Agents who are primary members of %s'), __('this department')); ?>
</small></div>
</td>
</tr>
<td>
<?php
echo sprintf(
'<a class="no-pjax" href="departments.php?id=%d&a=export"</a>',
$dept->getId());
?>
<span class="action-button pull-right" data-placement="bottom" data-toggle="tooltip" title="<?php echo __('Export');?>">
<i class="icon-download-alt icon-fixed-width"></i>
</span>
</td>
</tr>
<?php
if (!count($dept->members)) { ?>
<tr><td colspan=2><em><?php
......
......@@ -130,7 +130,10 @@ if($_POST){
$page='departments.inc.php';
$tip_namespace = 'staff.department';
if($dept || ($_REQUEST['a'] && !strcasecmp($_REQUEST['a'],'add'))) {
if ($_REQUEST['a'] && $_REQUEST['a'] == 'export') {
if (!Dept::export($dept))
$errors['err'] = sprintf(__('Unable to export %s.'), __('Department'));
} elseif ($dept || ($_REQUEST['a'] && !strcasecmp($_REQUEST['a'],'add'))) {
$page='department.inc.php';
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment