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(); } } }