public function update()
 {
     $validator = new Planning_RequestValidator($this->planning_factory);
     if ($validator->isValid($this->request)) {
         $this->planning_factory->updatePlanning($this->request->get('planning_id'), PlanningParameters::fromArray($this->request->get('planning')));
         $this->redirect(array('group_id' => $this->request->get('group_id'), 'action' => 'index'));
     } else {
         $this->addFeedback('error', $GLOBALS['Language']->getText('plugin_agiledashboard', 'planning_all_fields_mandatory'));
         $this->redirect(array('group_id' => $this->group_id, 'planning_id' => $this->request->get('planning_id'), 'action' => 'edit'));
     }
 }
 public function import()
 {
     $this->checkUserIsAdmin();
     $xml = $this->request->get('xml_content')->agiledashboard;
     $xml_validator = new XML_RNGValidator();
     $rng_path = realpath(AGILEDASHBOARD_BASE_DIR . '/../www/resources/xml_project_agiledashboard.rng');
     $xml_validator->validate($xml, $rng_path);
     $xml_importer = new AgileDashboard_XMLImporter();
     $data = $xml_importer->toArray($xml, $this->request->get('mapping'));
     $validator = new Planning_RequestValidator($this->planning_factory, $this->kanban_factory);
     foreach ($data['plannings'] as $planning) {
         $request_params = array('planning' => $planning, 'group_id' => $this->group_id, 'planning_id' => '');
         $request = new Codendi_Request($request_params);
         if ($validator->isValid($request)) {
             $this->planning_factory->createPlanning($this->group_id, PlanningParameters::fromArray($planning));
         } else {
             throw new Exception('Planning is not valid: ' . print_r($planning, true));
         }
     }
 }