Пример #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;
 }