/** * Renumbers the order of the attachments * * @param string $page_name * @param Project $project * @return void */ function reorder($page_name, Project $project) { $page_attachments = PageAttachments::getAttachmentsByPageNameAndProject($page_name, $project); $order = 0; if (is_array($page_attachments) && count($page_attachments)) { foreach ($page_attachments as $page_attachment) { $order++; $page_attachment->setOrder($order); $page_attachment->save(); } // foreach } // if }
/** * Edit project * * @param void * @return null */ function edit() { $project = Projects::findById(get_id()); if (!$project instanceof Project) { flash_error(lang('project dnx')); $this->redirectTo('dashboard', 'index'); } // if if (!$project->canEdit(logged_user())) { flash_error(lang('no access permissions')); $this->redirectToReferer(get_url('dashboard', 'index')); } // if if (plugin_active('files')) { $this->addHelper('files', 'files'); } if (plugin_active('tickets')) { $this->addHelper('tickets', 'tickets'); } // TODO find a more elegant solution for this parameter $page_name = 'project_overview'; $this->setTemplate('add_project'); $this->setLayout('project_website'); $this->setSidebar(get_template_path('textile_help_sidebar')); $project_data = array_var($_POST, 'project'); if (!is_array($project_data)) { $project_data = array('name' => $project->getName(), 'parent_id' => $project->getParentId(), 'priority' => $project->getPriority(), 'description' => $project->getDescription(), 'show_description_in_overview' => $project->getShowDescriptionInOverview()); // array } // if $page_attachments = PageAttachments::getAttachmentsByPageNameAndProject($page_name, $project); $redirect_to = urldecode(array_var($_GET, 'redirect_to')); tpl_assign('project', $project); tpl_assign('project_data', $project_data); tpl_assign('page_attachments', $page_attachments); tpl_assign('redirect_to', $redirect_to); if (is_array(array_var($_POST, 'project'))) { $project->setFromAttributes($project_data); try { DB::beginWork(); $project->save(); ApplicationLogs::createLog($project, null, ApplicationLogs::ACTION_EDIT, false, true); $page_attachments = array_var($project_data, 'page_attachments'); if (is_array($page_attachments)) { foreach ($page_attachments as $id => $page_attachment_data) { $page_attachment = PageAttachments::findById($id); if (array_var($page_attachment_data, 'delete') == "checked") { $page_attachment->delete(); } else { $page_attachment->setFromAttributes($page_attachment_data); $page_attachment->save(); } // if } // foreach PageAttachments::reorder($page_name, $project); } // if DB::commit(); flash_success(lang('success edit project', $project->getName())); if (trim($redirect_to) == '' || !is_valid_url($redirect_to)) { $redirect_to = $project->getSettingsUrl(); } // if $this->redirectToUrl($redirect_to); } catch (Exception $e) { DB::rollback(); tpl_assign('error', $e); } // try } // if }