Author: Chuck Hagenbuch (chuck@horde.org)
Inheritance: extends Horde_Form
Ejemplo n.º 1
0
 public function download(Horde_Variables $vars)
 {
     global $notification, $injector;
     switch ($vars->actionID) {
         case 'export':
             // 'export' used from Ajax view
             $ids = split(',', $vars->s);
             if (!is_array($ids)) {
                 $notification->push(_("No time slices were submitted"), 'horde.error');
                 return false;
             }
             try {
                 $hours = $injector->getInstance('Hermes_Driver')->getHours(array('id' => $ids));
             } catch (Hermes_Exception $e) {
                 $notification->push($e->getMessage(), 'horde.error');
                 return false;
             }
             $exportHours = Hermes::makeExportHours($hours);
             $this->_doExport($vars->f, $exportHours);
             if ($vars->m) {
                 $injector->getInstance('Hermes_Driver')->markAs('exported', $hours);
             }
             break;
         case 'search_export':
             // Called from Basic view.
             if (!($searchVars = $GLOBALS['session']->get('hermes', 'search_criteria'))) {
                 $notification->push(_("No time slices were submitted"), 'horde.error');
                 return false;
             }
             $searchForm = new Hermes_Form_Search($searchVars);
             $criteria = $searchForm->getSearchCriteria($searchVars);
             if (is_null($criteria)) {
                 $notification->push(_("No time slices were submitted"), 'horde.error');
                 return false;
             }
             $form = new Hermes_Form_Export($vars);
             $form->validate($vars);
             if (!$form->isValid()) {
                 return false;
             }
             $form->getInfo($vars, $info);
             try {
                 $hours = $injector->getInstance('Hermes_Driver')->getHours($criteria);
             } catch (Hermes_Exception $e) {
                 $notification->push($e, 'horde.error');
                 return false;
             }
             $exportHours = Hermes::makeExportHours($hours);
             $this->_doExport($info['format'], $exportHours);
             if (!empty($info['mark_exported']) && $info['mark_exported'] == 'yes' && $GLOBALS['perms']->hasPermission('hermes:review', $GLOBALS['registry']->getAuth(), Horde_Perms::EDIT)) {
                 $injector->getInstance('Hermes_Driver')->markAs('exported', $hours);
             }
     }
     $GLOBALS['notification']->push(_("Export complete."), 'horde.success');
     return true;
 }
Ejemplo n.º 2
0
            $session->set('hermes', 'search_criteria', $vars);
        }
        break;
    case 'hermes_form_export':
        try {
            $vars->set('actionID', 'search_export');
            $registry->callAppMethod('hermes', 'download', array('args' => array($vars)));
        } catch (Horde_Exception $e) {
            $notification->push($e->getMessage(), 'horde.error');
        }
}
$title = _("Search for Time");
if (!($searchVars = $session->get('hermes', 'search_criteria'))) {
    $searchVars = $vars;
}
$form = new Hermes_Form_Search($searchVars);
$page_output->header(array('title' => $title));
$notification->notify(array('listeners' => 'status'));
$form->renderActive(new Horde_Form_Renderer(), $searchVars, Horde::url('search.php'), 'post');
echo '<br />';
if ($session->exists('hermes', 'search_criteria')) {
    echo Hermes::tabs();
    if (is_null($criteria)) {
        $criteria = $form->getSearchCriteria($searchVars);
    }
    $table = new Hermes_Table('results', $vars, array('title' => _("Search Results"), 'name' => 'hermes/hours', 'params' => $criteria));
    $template = new Horde_Template();
    $template->setOption('gettext', true);
    $template->set('postUrl', Horde::url('time.php', false, -1));
    $template->set('sessionId', Horde_Util::formInput());
    $template->set('table', $table->render());