public function fetchCriteria(Tracker_Report_Criteria $criteria) { $trackerId = $this->tracker->getId(); $html = ''; $html .= '<label for="' . $this->id . '_' . $trackerId . '" title="#' . $trackerId . '">' . $this->tracker->getName() . '</label>'; $html .= <<<MARKUP <div class="tracker_report_criteria"> <input type="hidden" name="artifact_criteria[{$trackerId}]"> <select id="tracker_report_criteria_adv_{$trackerId}" multiple="multiple" size="7" name="artifact_criteria[{$trackerId}][]"> MARKUP; $anySelected = ' selected="selected"'; $options = ''; // <option value="100">None</option> foreach ($this->artifacts as $artifact) { $artifactId = $artifact->getId(); if ($artifact->isSelected) { $anySelected = ''; $selected = ' selected="selected"'; } else { $selected = ''; } $options .= '<option' . $selected . ' value="' . $artifactId . '">' . $artifact->getTitle() . '</option>'; } $html .= '<option' . $anySelected . ' value="">Any</option>'; $html .= $options; $html .= <<<MARKUP </select> </input> </div> MARKUP; /* <option style="" value="571">New</option> */ return $html; }
public function updateArtifacts(PFUser $user, Codendi_Request $request) { if ($this->tracker->userIsAdmin($user)) { $masschange_aids = $request->get('masschange_aids'); if (empty($masschange_aids)) { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_masschange_detail', 'no_items_selected')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->tracker->getId()); } $unsubscribe = $request->get('masschange-unsubscribe-option'); if ($unsubscribe) { $this->unsubscribeUserFromEachArtifactNotification($user, $request, $masschange_aids); } $send_notifications = $this->getSendNotificationsFromRequest($request); $masschange_data = $request->get('artifact'); if (!$unsubscribe && empty($masschange_data)) { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_masschange_detail', 'no_items_selected')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->tracker->getId()); } $comment = $request->get('artifact_masschange_followup_comment'); $masschange_values_extractor = new Tracker_MasschangeDataValueExtractor(); $new_fields_data = $masschange_values_extractor->getNewValues($masschange_data); if (count($new_fields_data) > 0 || $comment !== '') { $comment_format = $request->get('comment_formatmass_change'); $this->tracker->updateArtifactsMasschange($user, $masschange_aids, $new_fields_data, $comment, $send_notifications, $comment_format); } $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->tracker->getId()); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_tracker_admin', 'access_denied')); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?tracker=' . $this->tracker_report->getId()); } }
/** * @return array */ public function getFieldsData(SimpleXMLElement $xml_field_change) { $data = array(); if (!$xml_field_change->field_change) { return $data; } foreach ($xml_field_change->field_change as $field_change) { $field = $this->formelement_factory->getUsedFieldByName($this->tracker->getId(), (string) $field_change['field_name']); if ($field) { $this->appendValidValue($data, $field, $field_change); } else { $this->logger->debug("Skipped unknown/unused field " . (string) $field_change['field_name']); } } return $data; }
/** * Get all mappings defined for the cardwall on top of a tracker * * @param Tracker $tracker The tracker * @param array $columns array of Cardwall_Column * * @return array of Cardwall_OnTop_Config_TrackerMapping */ public function getMappings(Tracker $tracker, Cardwall_OnTop_Config_ColumnCollection $columns) { $mappings = array(); foreach ($this->dao->searchMappingFields($tracker->getId()) as $row) { $this->instantiateMappingFromRow($tracker, $mappings, $row, $columns); } return $mappings; }
public function __construct(Tracker $tracker, array $stored_ugroups_permissions, PermissionsManager $permissions_manager) { $this->group_id = $tracker->getGroupId(); $this->atid = $tracker->getId(); $this->tracker = $tracker; $this->stored_ugroups_permissions = $stored_ugroups_permissions; $this->permissions_manager = $permissions_manager; }
private function getFieldByName(Tracker $tracker, $field_name) { $field = $this->formelement_factory->getUsedFieldByName($tracker->getId(), $field_name); if (!$field) { throw new Tracker_FormElement_InvalidFieldException("Field {$field_name} does not exist in the tracker"); } return $field; }
/** * @return Cardwall_OnTop_Config_ColumnCollection */ private function getColumnsFromDao(Tracker $tracker) { $columns = new Cardwall_OnTop_Config_ColumnFreestyleCollection(); foreach ($this->dao->searchColumnsByTrackerId($tracker->getId()) as $row) { list($bgcolor, $fgcolor) = $this->getColumnColorsFromRow($row); $columns[] = new Cardwall_Column($row['id'], $row['label'], $bgcolor, $fgcolor); } return $columns; }
/** * @return array of Tracker */ public function getChildren(Tracker $tracker) { $dar = $this->dao->getChildren($tracker->getId()); $children = array(); foreach ($dar as $row) { $children[] = $this->tracker_factory->getTrackerById($row['child_id']); } return $children; }
/** * @return ProjectUGroup[] */ public function getListOfInvolvedStaticUgroups(Tracker $template_tracker) { $project = $template_tracker->getProject(); $ugroups = array(); foreach ($this->permissions_dao->getAuthorizedStaticUgroupIds($template_tracker->getId()) as $id) { $ugroups[] = $this->ugroup_manager->getUGroup($project, $id); } return $ugroups; }
public function getTrackerMapping(Tracker $tracker) { $tracker_id = $tracker->getId(); $mapping_data = array($tracker_id => array('properties' => array('id' => array('type' => 'integer'), 'group_id' => array('type' => 'integer'), 'tracker_id' => array('type' => 'integer'), 'last_changeset_id' => array('type' => 'integer'), ElasticSearch_1_2_ArtifactPropertiesExtractor::LAST_UPDATE_PROPERTY => array('type' => 'date', 'format' => 'date_time_no_millis'), 'followup_comments' => array('properties' => array('user_id' => array('type' => 'integer'), 'date_added' => array('type' => 'date', 'format' => 'date_time_no_millis'), 'comment' => array('type' => 'string')))))); $this->addStandardTrackerPermissionsMetadata($mapping_data[$tracker_id]['properties']); $this->addStandardArtifactPermissionsMetadata($mapping_data[$tracker_id]['properties']); $this->artifact_properties_extractor->extractTrackerFields($tracker, $mapping_data); return $mapping_data; }
private function getMappingFieldValuesIndexedByTracker(Tracker $tracker) { $mappings = array(); foreach ($this->dao->searchMappingFieldValues($tracker->getId()) as $row) { $field = $this->element_factory->getFieldById($row['field_id']); $value = $field->getListValueById($row['value_id']); $mappings[$row['tracker_id']][$row['field_id']][$row['value_id']] = new Cardwall_OnTop_Config_ValueMapping($value, $row['column_id']); } return $mappings; }
public function export(Tracker $tracker, SimpleXMLElement $xml_content, PFUser $user, ZipArchive $archive) { $artifacts_node = $xml_content->addChild('artifacts'); $all_artifacts = $this->artifact_factory->getArtifactsByTrackerId($tracker->getId()); $this->checkThreshold(count($all_artifacts)); foreach ($all_artifacts as $artifact) { $artifact->exportToXML($artifacts_node, $user, $archive); } $this->rng_validator->validate($artifacts_node, realpath(dirname(TRACKER_BASE_DIR) . self::ARTIFACTS_RNG_PATH)); }
private function getMatchingIdsForTopBacklog(Planning_VirtualTopMilestone $milestone, Tracker $backlog_tracker, PFUser $user) { $strategy_unassigned = $this->strategy_factory->getSelfBacklogStrategy($milestone); $backlog_items = $this->backlog_item_collection_factory->getUnassignedOpenCollection($user, $milestone, $strategy_unassigned, false); foreach ($backlog_items as $backlog_item) { if ($backlog_item->getArtifact()->getTrackerId() == $backlog_tracker->getId()) { $this->backlog_ids[$backlog_item->getArtifact()->getId()] = true; } } return $this->backlog_ids; }
private function checkPermissionValidity(Tracker_Permission_PermissionRequest $request, Tracker $tracker) { if ($request->containsPermissionType(Tracker_Permission_Command::PERMISSION_ASSIGNEE) != null && $tracker->getContributorField() === null) { $GLOBALS['Response']->addFeedback(Feedback::ERROR, $GLOBALS['Language']->getText('plugin_tracker_admin_permissions', 'no_assignee_semantic', array(TRACKER_BASE_URL . '/?' . http_build_query(array('func' => 'admin-semantic', 'tracker' => $tracker->getId())), $GLOBALS['Language']->getText('plugin_tracker_admin_semantic', 'contributor_label'))), CODENDI_PURIFIER_DISABLED); return false; } if ($request->getPermissionType(ProjectUGroup::PROJECT_ADMIN)) { return false; } return true; }
private function getParentTrackersAndStopAtGivenTracker(Tracker $tracker, Tracker $stop) { $hierarchy = array(); while (($parent = $this->hierarchy_factory->getParent($tracker)) && $parent != $stop) { $hierarchy[$parent->getId()] = $tracker; $tracker = $parent; } if ($parent == $stop) { $hierarchy[$stop->getId()] = $tracker; return $hierarchy; } }
public function getPossibleArtifactParents(Tracker $parent_tracker, PFUser $user, $limit, $offset) { $label = ''; $possible_parents = array(); $display_selector = true; EventManager::instance()->processEvent(TRACKER_EVENT_ARTIFACT_PARENTS_SELECTOR, array('user' => $user, 'parent_tracker' => $parent_tracker, 'possible_parents' => &$possible_parents, 'label' => &$label, 'display_selector' => &$display_selector)); if (!$possible_parents) { $label = $GLOBALS['Language']->getText('plugin_tracker_artifact', 'formelement_artifactlink_open_parent', array($parent_tracker->getName())); $possible_parents = $this->artifact_factory->getPaginatedPossibleParentArtifactsUserCanView($user, $parent_tracker->getId(), $limit, $offset); } return array($label, $possible_parents, $display_selector); }
public function update(Tracker $tracker, SimpleXMLElement $artifact_xml, array $submitted_values, PFUser $user, $submitted_on) { $artifact_xml->changeset->submitted_on = date('c', $submitted_on); $artifact_xml->changeset->submitted_by = $user->getId(); foreach ($artifact_xml->changeset->field_change as $field_change) { $field_name = (string) $field_change['field_name']; $field = $this->formelement_factory->getUsedFieldByNameForUser($tracker->getId(), $field_name, $user); if ($field && isset($submitted_values[$field->getId()])) { $submitted_value = $submitted_values[$field->getId()]; $this->visitor->update($field_change, $field, $submitted_value); } } }
private function getUGroupList(Tracker $tracker) { $ugroup_list = array(); $ugroups_permissions = plugin_tracker_permission_get_tracker_ugroups_permissions($tracker->getGroupId(), $tracker->getId()); ksort($ugroups_permissions); reset($ugroups_permissions); foreach ($ugroups_permissions as $ugroup_permissions) { $ugroup = $ugroup_permissions['ugroup']; $permissions = $ugroup_permissions['permissions']; if ($ugroup['id'] != ProjectUGroup::PROJECT_ADMIN) { $ugroup_list[] = new Tracker_Permission_PermissionUgroupPresenter($ugroup['id'], $ugroup['name'], isset($ugroup['link']) ? $ugroup['link'] : '', $this->getPermissionTypeList($ugroup['id'], $permissions)); } } return $ugroup_list; }
/** * @param Boolean $user_can_read_workdlow_field * * @return array { 'dates' => [...], 'lists' => [...] } */ public function exportToSOAP($user_can_read_workdlow_field) { $soap = array('dates' => array(), 'lists' => array()); if ($user_can_read_workdlow_field) { foreach ($this->getAllListRulesByTrackerWithOrder($this->tracker->getId()) as $rule) { $soap['lists'][] = $rule->exportToSOAP(); } foreach ($this->getAllDateRulesByTrackerId($this->tracker->getId()) as $rule) { $export = $rule->exportToSOAP(); if ($export) { $soap['dates'][] = $rule->exportToSOAP(); } } } return $soap; }
/** * Load an instance of a Tracker_Semantic_Status * * @param Tracker $tracker the tracker * * @return Tracker_Semantic_Status */ public static function load(Tracker $tracker) { if (!isset(self::$_instances[$tracker->getId()])) { $field_id = null; $open_values = array(); $dao = new Tracker_Semantic_StatusDao(); foreach ($dao->searchByTrackerId($tracker->getId()) as $row) { $field_id = $row['field_id']; $open_values[] = $row['open_value_id']; } if (!$open_values) { $open_values[] = 100; } $fef = Tracker_FormElementFactory::instance(); $field = $fef->getFieldById($field_id); self::$_instances[$tracker->getId()] = new Tracker_Semantic_Status($tracker, $field, $open_values); } return self::$_instances[$tracker->getId()]; }
public function setTracker(Tracker $tracker) { $this->tracker = $tracker; $this->tracker_id = $tracker->getId(); }
private function mappingExists(Tracker $tracker) { return count($this->client->getMapping((string) $tracker->getId())) > 0; }
/** * Returns all the Planning that use given tracker as backlog tracker * * Given: * Epic -> Product * Epic -> Release * Story -> Sprint * When getPlanningsByBacklogTracker(Epic) -> [Product, Release] * When getPlanningsByBacklogTracker(Story) -> [Sprint] * * @param Tracker $backlog_tracker * * @return Planning */ public function getPlanningsByBacklogTracker(Tracker $backlog_tracker) { $plannings = array(); foreach ($this->dao->searchByBacklogTrackerId($backlog_tracker->getId()) as $planning) { $p = new Planning($planning['id'], $planning['name'], $planning['group_id'], $planning['backlog_title'], $planning['plan_title'], array($backlog_tracker->getId()), $planning['planning_tracker_id']); $p->setBacklogTrackers(array($backlog_tracker)); $p->setPlanningTracker($this->getPlanningTracker($p)); $plannings[] = $p; } return $plannings; }
/** * Load an instance of a Tracker_Semantic_Contributor * * @param Tracker $tracker * * @return Tracker_Semantic_Contributor */ public static function load(Tracker $tracker) { $field_id = null; $dao = new Tracker_Semantic_ContributorDao(); if ($row = $dao->searchByTrackerId($tracker->getId())->getRow()) { $field_id = $row['field_id']; } $field = null; if ($field_id) { $field = Tracker_FormElementFactory::instance()->getFieldById($field_id); } return new Tracker_Semantic_Contributor($tracker, $field); }
public function queueTrackerReindexation(Tracker $tracker) { $project_id = $tracker->getGroupId(); if ($this->plugin->isAllowed($project_id)) { $this->system_event_manager->createEvent(SystemEvent_FULLTEXTSEARCH_TRACKER_REINDEX::NAME, $this->implodeParams(array($tracker->getId())), SystemEvent::PRIORITY_LOW, SystemEvent::OWNER_APP); } }
/** * Get the url to this semantic * * @return string url (for html) */ public function getUrl() { $query = http_build_query(array('tracker' => $this->tracker->getId(), 'func' => 'admin-semantic', 'semantic' => $this->getShortName())); return TRACKER_BASE_URL . '/?' . $query; }
/** @return Tracker_Artifact */ private function createArtifact(PFUser $user, Tracker $tracker, $title, $body) { $this->logger->debug("Receiving new artifact from " . $user->getUserName()); if (!$tracker->userCanSubmitArtifact($user)) { $this->logger->info("User " . $user->getUnixName() . " has no right to create an artifact in tracker #" . $tracker->getId()); $this->notifier->sendErrorMailInsufficientPermissionCreation($user->getEmail(), $title); return; } $title_field = $tracker->getTitleField(); $description_field = $tracker->getDescriptionField(); if (!$title_field || !$description_field) { throw new Tracker_Artifact_MailGateway_TrackerMissingSemanticException(); } $field_data = array($title_field->getId() => $title, $description_field->getId() => $body); UserManager::instance()->setCurrentUser($user); return $this->artifact_factory->createArtifact($tracker, $field_data, $user, ''); }
protected function getTrackerChildrenFromHierarchy(Tracker $tracker) { return $this->getHierarchyFactory()->getChildren($tracker->getId()); }
public static function showEditForm(Tracker $tracker) { $tpl = array(); $tpl['TRACKER_TYPE'] = $tracker->trackerType(); $form = new PHPWS_Form('tracker'); $form->addHidden('module', 'analytics'); $form->addHidden('command', 'save_tracker'); $form->addSubmit('submit', dgettext('analytics', 'Save Tracker')); if (isset($_REQUEST['tracker'])) { $form->addHidden('tracker', $_REQUEST['tracker']); } if ($tracker->getId() > 0) { $form->addHidden('tracker_id', $tracker->getId()); } $form->addText('name', $tracker->getName()); $form->setLabel('name', dgettext('analytics', 'Friendly Name')); $form->setRequired('name'); $form->addCheck('active', 1); $form->setMatch('active', $tracker->isActive()); $form->setLabel('active', dgettext('analytics', 'Currently Active')); $form->addCheck('disable_if_logged', 1); $form->setMatch('disable_if_logged', $tracker->getDisableIfLogged()); $form->setLabel('disable_if_logged', dgettext('analytics', 'Disable Analytics if a user is logged in')); $tracker->addForm($form); $tpl = array_merge($tpl, $form->getTemplate()); $tpl['TRACKER_FORM'] = PHPWS_Template::process($tpl, 'analytics', $tracker->getFormTemplate()); return PHPWS_Template::process($tpl, 'analytics', 'edit.tpl'); }
private function getArtifactDataFromSoapRequest(Tracker $tracker, $values, Tracker_Artifact $artifact = null) { $fields_data = array(); foreach ($values as $field_value) { // field are identified by name, we need to retrieve the field id if ($field_value->field_name) { $field = $this->formelement_factory->getUsedFieldByName($tracker->getId(), $field_value->field_name); if ($field) { $field_data = $field->getFieldDataFromSoapValue($field_value, $artifact); if ($field_data !== null) { // $field_value is an object: SOAP must cast it in ArtifactFieldValue if (isset($fields_data[$field->getId()])) { if (!is_array($fields_data[$field->getId()])) { $fields_data[$field->getId()] = array($fields_data[$field->getId()]); } $fields_data[$field->getId()][] = $field_data; } else { $fields_data[$field->getId()] = $field_data; } } else { throw new SoapFault(update_artifact_fault, 'Unknown value ' . print_r($field_value->field_value, true) . ' for field: ' . $field_value->field_name); } } else { throw new SoapFault(update_artifact_fault, 'Unknown field: ' . $field_value->field_name); } } } return $fields_data; }