Example #1
0
 public function timeshift()
 {
     $flash = Flash::Instance();
     if (!isModuleAdmin() && !in_array(EGS_USERNAME, Project::getProjectManagers($this->_data['id']))) {
         $flash->addError('You must be a project manager or module admin to time-shift projects.');
         sendBack();
     }
     if (isset($this->_data['shift'])) {
         if (!is_numeric($this->_data['weeks'])) {
             $flash->addError('Must be numeric');
         } else {
             if (floor($this->_data['weeks']) != $this->_data['weeks']) {
                 $flash->addError('Must be whole number of weeks');
             }
         }
         if ($flash->hasErrors()) {
             $this->view->set('weeks', $this->_data['weeks']);
         } else {
             $db = DB::Instance();
             $db->StartTrans();
             // Shift project
             $db->Execute("\n\t\t\t\t\tUPDATE\n\t\t\t\t\t\tprojects\n\t\t\t\t\tSET\n\t\t\t\t\t\tstart_date = start_date + '" . $this->_data['weeks'] . " weeks'::interval,\n\t\t\t\t\t\tend_date = end_date + '" . $this->_data['weeks'] . " weeks'::interval\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tid = " . $db->qstr($this->_data['id']) . "\n\t\t\t\t");
             // Shift tasks
             $db->Execute("\n\t\t\t\t\tUPDATE\n\t\t\t\t\t\ttasks\n\t\t\t\t\tSET\n\t\t\t\t\t\tstart_date = start_date + '" . $this->_data['weeks'] . " weeks'::interval,\n\t\t\t\t\t\tend_date = end_date + '" . $this->_data['weeks'] . " weeks'::interval\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tproject_id = " . $db->qstr($this->_data['id']) . "\n\t\t\t\t");
             $db->CompleteTrans();
             $flash->addMessage('Project shifted by ' . $this->_data['weeks'] . ' weeks.');
             sendBack();
         }
     }
 }