public function executeUpdate() { $jira = new sfJiraPlugin($this->getUser()->getProfile()->getJiraLogin(), $this->getUser()->getProfile()->getJiraPassword()); $aProjects = $jira->getProjects(); foreach ($aProjects as $project) { #var_dump( $project ); $c = new Criteria(); $c->add(ProjectPeer::USER_ID, $this->getUser()->getProfile()->getId()); $c->add(ProjectPeer::KEY, $project->key); $p = ProjectPeer::doSelectOne($c); $c = new Criteria(); $c->add(UserPeer::JIRA_LOGIN, $project->lead); $u = UserPeer::doSelectOne($c); if (empty($p)) { $p = new Project(); $p->setKey($project->key); $p->setLeadId(!empty($u) ? $u->getId() : null); $p->setUserId($this->getUser()->getProfile()->getId()); $p->setName($project->name); $p->setUpdated(date('r')); $p->save(); } $issues = $jira->getIssuesForProject($p->getKey()); foreach ($issues as $issue) { #die($p->getKey()); if ($issue->assignee == $this->getUser()->getProfile()->getJiraLogin()) { $c = new Criteria(); $c->add(TaskPeer::KEY, $issue->key); $t = TaskPeer::doSelectOne($c); if (empty($t)) { $c = new Criteria(); $c->add(UserPeer::JIRA_LOGIN, $issue->reporter); $u = UserPeer::doSelectOne($c); $t = new Task(); $t->setProjectId($p->getId()); $t->setTitle($issue->summary); $t->setDescription($issue->description); $t->setKey($issue->key); $t->setUpdated(date('r')); $t->setStatusId($issue->status); $t->setPriorityId($issue->priority); $t->setLeadId(!empty($u) ? $u->getId() : null); $t->save(); } } } } $this->redirect('@homepage'); return sfView::NONE; }
protected function processCreate(sfWebRequest $request, ProjectFormCustom $form) { $form->bind($request->getParameter($form->getName())); if ($form->isValid()) { $values = $form->getValues(); // Slugify name, and check if slug generated does not already exist and generate a new one if needed if (empty($values['name_slug'])) { $slug = MiscUtils::slugify($values['name']); } else { $slug = $values['name_slug']; } $size = 1; while (Doctrine_Core::getTable("Project")->checkSlugForProject(NULL, $slug, true)) { $slug = MiscUtils::slugify($values['name']) . substr(microtime(), -$size); $size++; } // Create the project into database $projectObject = new Project(); $projectObject->setName($values['name']); $projectObject->setDescription($values['description']); $projectObject->setUserId($values['user_id']); $projectObject->setCreatedAt($values['created_at']); $projectObject->setStatus($values['status']); $projectObject->setSecurityLevel($values['security_level']); $projectObject->setNameSlug($slug); $projectObject->save(); // Get the project's id $projectId = $projectObject->getId(); // Create a new relationship between projects, products and project groups for each checked form's product foreach ($values['product'] as $product) { $ptpObject = new ProjectToProduct(); $ptpObject->setProjectGroupId($values['group']); $ptpObject->setProjectId($projectId); $ptpObject->setProductId($product); $ptpObject->save(); } if ($request->hasParameter('_save_and_add')) { $this->getUser()->setFlash('notice', $notice . ' You can add another one below.'); $this->redirect('@project_new'); } else { $this->getUser()->setFlash('notice', $notice); $this->redirect(array('sf_route' => 'project_edit', 'sf_subject' => $projectObject)); } } else { $this->getUser()->setFlash('error', 'The item has not been saved due to some errors.', false); } }
$project->setLocationId(filter_var($_POST['location_id'], FILTER_SANITIZE_STRING)); $project->setLocation(filter_var($_POST['location'], FILTER_SANITIZE_STRING)); $project->setFromDate(filter_var($_POST['from_date'], FILTER_SANITIZE_STRING)); $project->setToDate(filter_var($_POST['to_date'], FILTER_SANITIZE_STRING)); if (!$project->getId()) { $auto = true; $logDetails = "Request created"; $project->setState('Pending Approval'); $initial = true; } else { $auto = false; $logDetails = "Request updated"; $initial = false; } $project->setUpdatedDate(date('Y-m-d')); $project->setUserId($user->getId()); $project->store(); $project->submitLog($logDetails, $user->getId()); // post to Google Groups $projectUser = new User($project->getUserId()); $message = '<strong>' . $project->getName() . "</strong><br>\n" . "https://london.hackspace.org.uk/storage/" . $project->getId() . "<br>\n" . "by <a href=\"https://london.hackspace.org.uk/members/member.php?id=" . $project->getUserId() . "\">" . htmlspecialchars($projectUser->getFullName()) . "</a><br>\n" . $project->outputDates() . "<br>\n" . $project->outputDuration() . ' ' . $project->outputLocation() . "<br>\n<br>\n" . nl2br(stripslashes($project->getDescription())) . "<br>\n<br>\n"; if ($auto && !$project->isShortTerm()) { $message .= "<strong>***If no one replies to this topic the request will be automatically approved within " . $project->automaticApprovalDuration() . " days.***</strong>"; } $project->submitMailingList($message, $initial); // is this a short term request? If so automatically approve it if ($project->isShortTerm()) { $project->setState('Approved'); $project->store(); // log the update $logmsg = 'Short term storage detected, status automatically changed to ' . $project->getState();