PageRenderTime 23ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/plugins/idProjectManagementPlugin/modules/idProject/actions/actions.class.php

https://github.com/dada888/phpcollab3
PHP | 291 lines | 178 code | 47 blank | 66 comment | 11 complexity | 1239626f68dfdaad544ce31d6a3394f0 MD5 | raw file
  1. <?php
  2. /**
  3. * This file is part of the phpCollab3 package.
  4. * (c) 2009 Ideato s.r.l. <phpcollab@ideato.it>
  5. *
  6. * For the full copyright and license information, please view the LICENSE
  7. * file that was distributed with this source code.
  8. *
  9. * idProject actions.
  10. *
  11. * @package phpCollab3
  12. * @subpackage idProjectManagementPlugin Modules
  13. */
  14. /**
  15. * idProject actions.
  16. *
  17. * @package phpCollab3
  18. * @subpackage idProjectManagementPlugin Modules
  19. * @author Filippo (p16) De Santis <fd@ideato.it>
  20. */
  21. class idProjectActions extends sfActions
  22. {
  23. private function validateStaffForm(sfWebRequest $request)
  24. {
  25. $this->forward404Unless($this->project = Doctrine::getTable('Project')->find(array($request->getParameter('id'))), sprintf('Object project does not exist (%s).', array($request->getParameter('id'))));
  26. $form = new ProjectFormOnlyMembers($this->project);
  27. $form->bind($request->getParameter($form->getName()));
  28. if ($form->isValid())
  29. {
  30. $this->getUser()->setFlash('notice', 'Project staff updated successfully');
  31. $form->save();
  32. }
  33. return $form;
  34. }
  35. /**
  36. * Executes show action
  37. *
  38. * @param sfWebRequest $request
  39. */
  40. public function executeShow(sfWebRequest $request)
  41. {
  42. $this->forward404Unless($this->getUser()->isMyProject($request->getParameter('id')));
  43. $this->project = Doctrine::getTable('Project')->getProjectMilestonesAndUsers($request->getParameter('id'));
  44. $this->recent_activities = $this->recent_activities = Doctrine::getTable('EventLog')->retrieveEventsOfTheLastDaysByProjectsIds(3, array($request->getParameter('id')), 'LogDecorator');
  45. }
  46. /**
  47. * Executes roadmap action
  48. *
  49. * @param sfWebRequest $request
  50. */
  51. public function executeRoadmap(sfWebRequest $request)
  52. {
  53. $this->forward404Unless($this->getUser()->isMyProject($request->getParameter('id')));
  54. $this->forward404Unless($this->project = Doctrine::getTable('Project')->getProjectRelatedMilestonesAndIssues($request->getParameter('id')));
  55. }
  56. /**
  57. * Executes index action
  58. *
  59. * @param sfWebRequest $request
  60. */
  61. public function executeIndex(sfWebRequest $request)
  62. {
  63. $q = null;
  64. if ($request->hasParameter('project_filters'))
  65. {
  66. $form = new ProjectFormFilter();
  67. $project_filters = $request->getParameter('project_filters');
  68. $form->bind($project_filters);
  69. if ($form->isValid())
  70. {
  71. $q = $this->getUser()->getQueryForMyProjects();
  72. $from_date = null;
  73. if(!empty($project_filters['created_at']['year']))
  74. {
  75. $from_date = date('Y-m-d H:i:s', strtotime($project_filters['created_at']['year']."-".$project_filters['created_at']['month']."-".$project_filters['created_at']['day']));
  76. }
  77. !empty($project_filters['name']) ? $q->where('name LIKE ?', "%".$project_filters['name']."%") : null;
  78. !is_null($from_date) ? $q->andWhere("created_at > '".$from_date."'") : null;
  79. }
  80. }
  81. $this->project_list = $this->getUser()->getMyProjects($q);
  82. }
  83. /**
  84. * Executes new action
  85. *
  86. * @param sfWebRequest $request
  87. */
  88. public function executeNew(sfWebRequest $request)
  89. {
  90. $this->forwardUnless(($this->getUser()->isAdmin()), sfConfig::get('sf_secure_module'), sfConfig::get('sf_secure_action'));
  91. $this->form = new idProjectForm();
  92. $this->form->setDefault('starting_date', date('Y-m-d H:i:s', time()));
  93. }
  94. /**
  95. * Executes create action
  96. *
  97. * @param sfWebRequest $request
  98. */
  99. public function executeCreate(sfWebRequest $request)
  100. {
  101. $this->forward404Unless($request->isMethod('post'));
  102. $this->form = new idProjectForm();
  103. $this->processForm($request, $this->form);
  104. $this->setTemplate('new');
  105. }
  106. /**
  107. * Executes edit action
  108. *
  109. * @param sfWebRequest $request
  110. */
  111. public function executeEdit(sfWebRequest $request)
  112. {
  113. $this->forwardUnless(($this->getUser()->isAdmin()), sfConfig::get('sf_secure_module'), sfConfig::get('sf_secure_action'));
  114. $this->forward404Unless($this->project = Doctrine::getTable('Project')->find(array($request->getParameter('id'))), sprintf('Object project does not exist (%s).', array($request->getParameter('id'))));
  115. $this->form = new idProjectForm($this->project);
  116. }
  117. /**
  118. * Executes update action
  119. *
  120. * @param sfWebRequest $request
  121. */
  122. public function executeUpdate(sfWebRequest $request)
  123. {
  124. $this->forward404Unless($request->isMethod('post') || $request->isMethod('put'));
  125. $this->forward404Unless($this->project = Doctrine::getTable('Project')->find(array($request->getParameter('id'))), sprintf('Object project does not exist (%s).', array($request->getParameter('id'))));
  126. $this->form = new idProjectForm($this->project);
  127. $this->processForm($request, $this->form);
  128. $this->setTemplate('edit');
  129. }
  130. /**
  131. * Executes delete action
  132. *
  133. * @param sfWebRequest $request
  134. */
  135. public function executeDelete(sfWebRequest $request)
  136. {
  137. $this->forwardUnless(($this->getUser()->isAdmin()), sfConfig::get('sf_secure_module'), sfConfig::get('sf_secure_action'));
  138. $request->checkCSRFProtection();
  139. $this->forward404Unless($project = Doctrine::getTable('Project')->find(array($request->getParameter('id'))), sprintf('Object project does not exist (%s).', array($request->getParameter('id'))));
  140. $project->delete();
  141. $this->getUser()->setFlash('notice', 'Project dleted successfully');
  142. $this->redirect('idProject/index');
  143. }
  144. public function executeStaffList(sfWebRequest $request)
  145. {
  146. $this->forward404Unless($this->project = Doctrine::getTable('Project')->find(array($request->getParameter('id'))), sprintf('Object project does not exist (%s).', array($request->getParameter('id'))));
  147. $this->form = new ProjectFormOnlyMembers($this->project);
  148. }
  149. public function executeUpdateStaffList(sfWebRequest $request)
  150. {
  151. $this->form = $this->validateStaffForm($request);
  152. $this->setTemplate('staffList');
  153. }
  154. public function executeSettings(sfWebRequest $request)
  155. {
  156. $this->forward404Unless($this->project = Doctrine::getTable('Project')
  157. ->find($request->getParameter('id')));
  158. $this->form_overview = new ProjectFormOnlyTitleAndDescription($this->project);
  159. $this->form_staff = new ProjectFormOnlyMembers($this->project);
  160. $this->form_tracker = new ProjectFormOnlyTrackers($this->project);
  161. $this->forms_projectuser = ProjectUserForm::generateFormsForProject($this->project);
  162. }
  163. public function executeUpdateTitleAndDescription(sfWebRequest $request)
  164. {
  165. $this->forward404Unless($this->project = Doctrine::getTable('Project')->find(array($request->getParameter('id'))), sprintf('Object project does not exist (%s).', array($request->getParameter('id'))));
  166. $this->form_staff = new ProjectFormOnlyMembers($this->project);
  167. $this->form_tracker = new ProjectFormOnlyTrackers($this->project);
  168. $this->forms_projectuser = ProjectUserForm::generateFormsForProject($this->project);
  169. $this->form_overview = new ProjectFormOnlyTitleAndDescription($this->project);
  170. $this->form_overview->bind($request->getParameter($this->form_overview->getName()));
  171. if ($this->form_overview->isValid())
  172. {
  173. $this->form_overview->save();
  174. $this->getUser()->setFlash('notice', 'Project overview updated successfully');
  175. }
  176. $this->setTemplate('settings');
  177. }
  178. public function executeUpdateTrackers(sfWebRequest $request)
  179. {
  180. $this->forward404Unless($this->project = Doctrine::getTable('Project')->find(array($request->getParameter('id'))), sprintf('Object project does not exist (%s).', array($request->getParameter('id'))));
  181. $this->form_staff = new ProjectFormOnlyMembers($this->project);
  182. $this->form_overview = new ProjectFormOnlyTitleAndDescription($this->project);
  183. $this->form_tracker = new ProjectFormOnlyTrackers($this->project);
  184. $this->forms_projectuser = ProjectUserForm::generateFormsForProject($this->project);
  185. $this->form_tracker->bind($request->getParameter($this->form_tracker->getName()));
  186. if ($this->form_tracker->isValid())
  187. {
  188. $this->form_tracker->save();
  189. $this->getUser()->setFlash('notice', 'Project trackers updated successfully');
  190. }
  191. $this->setTemplate('settings');
  192. }
  193. public function executeUpdateSettingsStaffList(sfWebRequest $request)
  194. {
  195. $this->form_staff = $this->validateStaffForm($request);
  196. $this->form_overview = new ProjectFormOnlyTitleAndDescription($this->project);
  197. $this->form_tracker = new ProjectFormOnlyTrackers($this->project);
  198. $this->forms_projectuser = ProjectUserForm::generateFormsForProject($this->project);
  199. $this->setTemplate('settings');
  200. }
  201. public function executeUpdateSettingsProjectUserRoleList(sfWebRequest $request)
  202. {
  203. $this->forward404Unless($this->project = Doctrine::getTable('Project')->find(array($request->getParameter('id'))), sprintf('Object project does not exist (%s).', array($request->getParameter('id'))));
  204. if(!$request->hasParameter('user_id') ||
  205. !($project_user = Doctrine::getTable('ProjectUser')->findOneByProjectIdAndUserId($this->project->id, $request->getParameter('user_id'))))
  206. {
  207. $this->getUser()->setFlash('error', 'Error submitting the project user role form.');
  208. $this->redirect('@project_settings?id='.$this->project->id);
  209. }
  210. $form = new ProjectUserForm($project_user);
  211. $form->bind($request->getParameter($form->getName()));
  212. if ($form->isValid())
  213. {
  214. $form->save();
  215. $this->getUser()->setFlash('notice', 'Modification applied with success');
  216. }
  217. else
  218. {
  219. $this->getUser()->setFlash('error', 'There are errors in the form submitted');
  220. }
  221. $this->redirect('@project_settings?id='.$this->project->id);
  222. }
  223. /**
  224. * checks if the form is valid and redirect to the right page
  225. *
  226. * @access protected
  227. * @param sfWebRequest $request
  228. * @param sfForm $form
  229. */
  230. protected function processForm(sfWebRequest $request, sfForm $form)
  231. {
  232. $form->bind($request->getParameter($form->getName()));
  233. if ($form->isValid())
  234. {
  235. $project = $form->save();
  236. if (!$this->getUser()->isAdmin())
  237. {
  238. $project->users[0] = $this->getUser()->getGuardUser();
  239. $project->save();
  240. }
  241. $this->redirect('@show_project?id='.$project->getId());
  242. }
  243. }
  244. }