private function createRoadmaps(Roadmap $roadmap) { $places = $roadmap->getRemainingPlaces(); $from = $roadmap->getLastPlace(); $selections = []; foreach ($places as $selection) { $selections[] = ["distance" => Distance::between($from->point, $selection->point), "place" => $selection]; } usort($selections, function ($a, $b) { return $a["distance"] <=> $b["distance"]; }); $selections = $this->selection->select($selections); $roadmaps = []; foreach ($selections as $i => $selection) { $currentRoadmap = $roadmap; if ($i != count($selections) - 1) { $currentRoadmap = clone $roadmap; } $currentRoadmap->addPlace($selection["place"]); $roadmaps[] = $currentRoadmap; } return $roadmaps; }
$lang_file = BASE_DIR . '/modules/roadmap/lang/' . $_SESSION['user_language'] . '.txt'; $AVE_Template->config_load($lang_file); switch ($_REQUEST['action']) { case 'show_p': default: $roadmap->roadmapProjectShow($tpl_dir); break; case 'show_t': $roadmap->roadmapTaskShow($tpl_dir, $_REQUEST['pid'], $_REQUEST['closed']); break; } define('MODULE_SITE', 'Карта проектов'); } if (defined('ACP') && !empty($_REQUEST['moduleaction'])) { require_once BASE_DIR . '/modules/roadmap/class.roadmap.php'; $roadmap = new Roadmap(); $tpl_dir = BASE_DIR . '/modules/roadmap/templates/'; $lang_file = BASE_DIR . '/modules/roadmap/lang/' . $_SESSION['user_language'] . '.txt'; $AVE_Template->config_load($lang_file); switch ($_REQUEST['moduleaction']) { case '1': $roadmap->roadmapProjectList($tpl_dir); break; case 'edit_project': $roadmap->roadmapProjectEdit($tpl_dir, $_REQUEST['id']); break; case 'new_project': $roadmap->roadmapProjectNew($tpl_dir); break; case 'del_project': $roadmap->roadmapProjectDelete($_REQUEST['id']);
public function executeCreate(sfWebRequest $request) { $this->forward404Unless($request->isXmlHttpRequest()); $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT)); $to_step = $request->getParameter('to_step', 0); if ($request->getParameter('roadmap_id')) { $roadmap = RoadmapTable::getInstance()->find($request->getParameter('roadmap_id')); $this->forward404Unless(is_object($roadmap)); } else { $roadmap = new Roadmap(); } if ($to_step == 3) { // Finishing (from 2) $roadmap_decisions = json_decode($request->getParameter('roadmap_decisions', '{}')); foreach ($roadmap_decisions as $roadmap_decision) { if (DecisionTable::getInstance()->getDecisionForUser($this->getUser()->getGuardUser(), $roadmap_decision)) { $roadmap->addDecision($roadmap_decision); } } $roadmap->RoadmapDecision->save(); /** @var sfWebResponse $response */ $response = $this->getResponse(); $response->setStatusCode(200); $response->setContentType('text/json'); return $this->renderText(json_encode(array('status' => 'success'))); } elseif ($to_step == 2) { // From 1 to 2 $form = new RoadmapCreateFirstStepForm($roadmap); $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName())); if ($form->isValid()) { $form->save(); $decisions = DecisionTable::getInstance()->getForUser($this->getUser()->getGuardUser(), true); /** @var sfWebResponse $response */ $response = $this->getResponse(); $response->setStatusCode(200, 'success'); $response->setContentType('text/json'); return $this->renderText(json_encode(array('status' => 'success', 'roadmap' => $roadmap->getRowData(), 'folder' => $roadmap->getFolder()->getRowData(), 'html' => $this->getPartial('form_new_2', array('roadmap' => $roadmap, 'decisions' => $decisions))))); } else { $response = $this->getResponse(); $response->setStatusCode(200); $response->setContentType('text/json'); return $this->renderText(json_encode(array('status' => 'validation_error', 'html' => $this->getPartial('form_new', array('form' => $form))))); } } elseif ($to_step == 1) { // From 2 to 1 $form = new RoadmapCreateFirstStepForm($roadmap); return $this->renderPartial('form_new', array('form' => $form)); } }
/** * @param PHPPowerPoint_Slide $currentSlide * @param Decision $decision */ private function buildSlide(PHPPowerPoint_Slide $currentSlide, Decision $decision) { // Title $shape = $currentSlide->createRichTextShape(); $shape->setHeight(30); $shape->setWidth(600); $shape->setOffsetX(180); $shape->setOffsetY(50); $shape->createText($decision->getName()); $shape->getAlignment()->setHorizontal(PHPPowerPoint_Style_Alignment::HORIZONTAL_CENTER); // Other info $shape = $currentSlide->createRichTextShape(); $shape->setHeight(500); $shape->setWidth(920); $shape->setOffsetX(20); $shape->setOffsetY(80); $shape->getAlignment()->setHorizontal(PHPPowerPoint_Style_Alignment::HORIZONTAL_LEFT); $textRun = $shape->createTextRun('Start/End date'); $textRun->getFont()->setBold(true); $shape->createTextRun(': '); if ($decision->getStartDate()) { $shape->createTextRun(DateTime::createFromFormat('Y-m-d H:i:s', $decision->getStartDate())->format('j M Y')); } else { $textRun = $shape->createTextRun('not set'); $textRun->getFont()->setItalic(true); } $shape->createTextRun(' - '); if ($decision->getEndDate()) { $shape->createTextRun(DateTime::createFromFormat('Y-m-d H:i:s', $decision->getEndDate())->format('j M Y')); } else { $textRun = $shape->createTextRun('not set'); $textRun->getFont()->setItalic(true); } $shape->createBreak(); $textRun = $shape->createTextRun('Status'); $textRun->getFont()->setBold(true); $shape->createTextRun(': ' . $decision->getStatus()); $shape->createBreak(); $tags = array(); foreach ($decision->getTagDecision() as $tag_decision) { $tags[] = $tag_decision->getTag()->getName(); } $textRun = $shape->createTextRun('Tags'); $textRun->getFont()->setBold(true); $shape->createTextRun(': ' . implode(', ', $tags)); $shape->createBreak(); $shape->createBreak(); $shape->createTextRun(strip_tags($decision->getObjective())); if ($this->roadmap->getShowReleases() && count($decision->getProjectRelease())) { $shape->createBreak(); $shape->createBreak(); $textRun = $shape->createTextRun('Releases'); $textRun->getFont()->setSize(14); $shape->createBreak(); foreach ($decision->getProjectRelease() as $project_release) { /** @var ProjectRelease $project_release */ $textRun = $shape->createTextRun(' ' . $project_release->getName()); $textRun->getFont()->setSize(12); $shape->createBreak(); if ($this->roadmap->getShowItems()) { foreach ($project_release->getProjectReleaseAlternative() as $project_release_alternative) { /** @var ProjectReleaseAlternative $project_release_alternative */ $shape->createTextRun(' ' . $project_release_alternative->getAlternative()->getName()); $shape->createBreak(); } } } } if ($this->roadmap->getShowDependencies()) { $alternative_relations_text = ''; $alternative_relations = array(); $related_decisions = array(); foreach ($decision->getAlternative() as $alternative) { /** @var $alternative Alternative */ if (count($alternative->getAlternativeRelation())) { $alternative_relations[$alternative->getId()]['alternative'] = $alternative; foreach ($alternative->getAlternativeRelation() as $relation) { /** @var $relation AlternativeRelation */ $related_decisions[$relation->getAlternativeTo()->getDecisionId()] = $relation->getAlternativeTo()->getDecision()->getName(); $alternative_relations[$alternative->getId()]['relations'][$relation->getAlternativeTo()->getDecisionId()]['decision'] = $relation->getAlternativeTo()->getDecision(); $alternative_relations[$alternative->getId()]['relations'][$relation->getAlternativeTo()->getDecisionId()]['linked_alternatives'][] = $relation->getAlternativeTo(); } } } if (count($alternative_relations)) { $shape->createBreak(); $shape->createTextRun('This project has dependency to project(s) ' . implode(', ', $related_decisions))->getFont()->setBold(true); foreach ($alternative_relations as $alternative_relation) { foreach ($alternative_relation['relations'] as $relation) { $temp_linked_alternatives = array(); foreach ($relation['linked_alternatives'] as $linked_alternative) { $temp_linked_alternatives[] .= $linked_alternative->getName(); } $shape->createBreak(); $shape->createTextRun(' - ' . $alternative_relation['alternative']->getName() . " has dependency to " . implode(', ', $temp_linked_alternatives) . " in project " . $relation['decision']->getName()); } } } } }