public static function fetchByActivator(Connection $conn, Project $project, $activator, Entity $entity) { $data = $conn->fetchAssoc('SELECT r.*, m.`id` AS `milestone_id`, m.`name` AS `milestone_name`, m.`description` AS `milestone_description`, m.`displayOrder` AS `milestone_displayOrder`, ' . 'm.`type` AS `milestone_type`, m.`entityType` AS `milestone_entityType`, m.`deadline` AS `milestone_deadline` ' . 'FROM `' . MilestoneTables::MILESTONE_RULE_TBL . '` r ' . 'INNER JOIN `' . MilestoneTables::MILESTONE_TBL . '` m ON m.`id` = r.`milestoneId` ' . 'WHERE r.`activator` = :activator AND r.`projectId` = :projectId AND m.`entityType` = :entityType', [':activator' => $activator, ':projectId' => $project->getId(), ':entityType' => $entity->getType()]); if (empty($data)) { return false; } $item = self::fromArray($data); $item->project = $project; $item->milestone = Milestone::fromArray($data, 'milestone'); $item->milestone->setProject($project); return $item; }
public static function populateEntities(Connection $conn, Entity $newEntity, Project $project) { $conn->insert(MilestoneTables::MILESTONE_PROGRESS_TBL, ['entityId' => $newEntity->getId(), 'completedNum' => 0]); $milestones = $conn->fetchAll('SELECT `id` FROM `' . MilestoneTables::MILESTONE_TBL . '` WHERE `projectId` = :projectId AND `entityType` = :entityType', [':projectId' => $project->getId(), ':entityType' => $newEntity->getType()]); if (sizeof($milestones) > 0) { $stmt = $conn->prepare('INSERT INTO `' . MilestoneTables::MILESTONE_STATUS_TBL . '` (`entityId`, `milestoneId`, `progress`) VALUES(:entityId, :milestoneId, 0)'); foreach ($milestones as $milestone) { $stmt->bindValue(':entityId', $newEntity->getId()); $stmt->bindValue(':milestoneId', $milestone['id']); $stmt->execute(); } } }
private function isAllowedForArea(Entity $entity, MembershipEntityInterface $who, $editable = false) { if ($entity->getType() == 'Area') { if (!$editable || $this->settings->get(MilestoneSettings::AREA_CAN_UPDATE_OWN_PROGRESS)->getValue()) { return $who->getEntity()->getId() == $entity->getId(); } } return false; }