/** * Add artifact to artifact_date_reminder_processing table * * @param field_id: the field id * @param artifact_id: the artifact id * @param group_artifact_id: the tracker id * * @return nothing */ function addArtifactToDateReminderProcessing($field_id, $artifact_id, $group_artifact_id) { $art_field_fact = new ArtifactFieldFactory($this->at); if ($field_id != 0) { $sql = sprintf('SELECT reminder_id, field_id FROM artifact_date_reminder_settings' . ' WHERE group_artifact_id=%d' . ' AND field_id=%d', db_ei($group_artifact_id), db_ei($field_id)); } else { $sql = sprintf('SELECT reminder_id, field_id FROM artifact_date_reminder_settings' . ' WHERE group_artifact_id=%d', db_ei($group_artifact_id)); } $res = db_query($sql); if (db_numrows($res) > 0) { while ($rows = db_fetch_array($res)) { $reminder_id = $rows['reminder_id']; $fid = $rows['field_id']; $field = $art_field_fact->getFieldFromId($fid); $sql1 = sprintf('SELECT valueDate FROM artifact_field_value' . ' WHERE artifact_id=%d' . ' AND field_id=%d', db_ei($artifact_id), db_ei($fid)); $res1 = db_query($sql1); if (!$field->isStandardField()) { if (db_numrows($res1) > 0) { $valueDate = db_result($res1, 0, 'valueDate'); if ($valueDate != 0 && $valueDate != NULL) { //the date field is not special (value is stored in 'artifact_field_value' table) $ins = sprintf('INSERT INTO artifact_date_reminder_processing' . ' (reminder_id,artifact_id,field_id,group_artifact_id,notification_sent)' . ' VALUES(%d,%d,%d,%d,%d)', db_ei($reminder_id), db_ei($artifact_id), db_ei($fid), db_ei($group_artifact_id), 0); $result = db_query($ins); } } } else { //End Date $sql2 = sprintf('SELECT close_date FROM artifact' . ' WHERE artifact_id=%d' . ' AND group_artifact_id=%d', db_ei($artifact_id), db_ei($group_artifact_id)); $res2 = db_query($sql2); if (db_numrows($res2) > 0) { $close_date = db_result($res2, 0, 'close_date'); if ($close_date != 0 && $close_date != NULL) { $ins = sprintf('INSERT INTO artifact_date_reminder_processing' . ' (reminder_id,artifact_id,field_id,group_artifact_id,notification_sent)' . ' VALUES(%d,%d,%d,%d,%d)', db_ei($reminder_id), db_ei($artifact_id), db_ei($fid), db_ei($group_artifact_id), 0); $result = db_query($ins); } } } } } }
$GLOBALS['Response']->addFeedback('info', $Language->getText('tracker_admin_index', 'field_deleted')); } } require './field_usage.php'; break; case 'display_field_update': if (!user_isloggedin()) { exit_not_logged_in(); return; } if (!$ath->userIsAdmin()) { exit_permission_denied(); return; } $field_id = $request->getValidated('field_id', 'uint', 0); $field = $art_field_fact->getFieldFromId($field_id); if ($field) { $ath->adminHeader(array('title' => $Language->getText('tracker_admin_field_usage', 'tracker_admin') . $Language->getText('tracker_admin_index', 'modify_usage'), 'help' => 'tracker-v3.html#creation-and-modification-of-a-tracker-field-set')); echo "<H2>" . $Language->getText('tracker_import_admin', 'tracker') . ' \'<a href="/tracker/admin/?group_id=' . (int) $group_id . "&atid=" . (int) $atid . '">' . $hp->purify(SimpleSanitizer::unsanitize($ath->getName()), CODENDI_PURIFIER_CONVERT_HTML) . "</a>' " . $Language->getText('tracker_admin_index', 'modify_usage_for', $hp->purify(SimpleSanitizer::unsanitize($field->getLabel()), CODENDI_PURIFIER_CONVERT_HTML)) . "</H2>"; $ath->displayFieldUsageForm("field_update", $field->getID(), $field->getName(), $field->getDescription(), $field->getLabel(), $field->getDataType(), $field->getDefaultValue(), $field->getDisplayType(), $field->getDisplaySize(), $field->getPlace(), $field->getEmptyOk(), $field->getKeepHistory(), $field->isSpecial(), $field->getUseIt(), true, $field->getFieldSetID()); $ath->footer(array()); } break; case 'delete_tracker': if (!$ath->userIsAdmin()) { exit_permission_denied(); return; } if (!user_ismember($group_id, 'A')) { exit_permission_denied(); return;
/** * Send the notification mail, about an event * * @return boolean */ function handleNotification() { global $art_field_fact; $logger = new TrackerDateReminder_Logger_Prefix($this->logger, '[handleNotification]'); $logger->info("Start"); $group = ProjectManager::instance()->getProject($this->getGroupId()); $at = new ArtifactType($group, $this->getGroupArtifactId()); $art_field_fact = new ArtifactFieldFactory($at); $field = $art_field_fact->getFieldFromId($this->getFieldId()); $art = new Artifact($at, $this->getArtifactId(), false); $logger->info("tracker: " . $this->getGroupArtifactId()); $logger->info("artifact: " . $this->getArtifactId()); $sent = true; $week = date("W", $this->getDateValue()); $mail = new Mail(); $mail->setFrom($GLOBALS['sys_noreply']); $mail->setSubject("[" . $this->getTrackerName() . "] " . $GLOBALS['Language']->getText('plugin_tracker_date_reminder', 'reminder_mail_subject', array($field->getLabel(), date("j F Y", $this->getDateValue()), $art->getSummary()))); $body = "\n" . $GLOBALS['Language']->getText('plugin_tracker_date_reminder', 'reminder_mail_body_header', array($field->getLabel(), date("l j F Y", $this->getDateValue()), $week)) . "\n\n" . $GLOBALS['Language']->getText('plugin_tracker_date_reminder', 'reminder_mail_body_project', array($group->getPublicName())) . "\n" . $GLOBALS['Language']->getText('plugin_tracker_date_reminder', 'reminder_mail_body_tracker', array($this->getTrackerName())) . "\n" . $GLOBALS['Language']->getText('plugin_tracker_date_reminder', 'reminder_mail_body_art', array($art->getSummary())) . "\n" . $field->getLabel() . ": " . date("D j F Y", $this->getDateValue()) . "\n\n" . $GLOBALS['Language']->getText('plugin_tracker_date_reminder', 'reminder_mail_body_art_link') . "\n" . get_server_url() . "/tracker/?func=detail&aid=" . $this->getArtifactId() . "&atid=" . $this->getGroupArtifactId() . "&group_id=" . $this->getGroupId() . "\n\n______________________________________________________________________" . "\n" . $GLOBALS['Language']->getText('plugin_tracker_date_reminder', 'reminder_mail_footer') . "\n"; $mail->setBody($body); $allNotified = $this->getNotifiedPeople(); $logger->info("notify: " . implode(', ', $allNotified)); foreach ($allNotified as $notified) { $mail->setTo($notified); if (!$mail->send()) { $logger->error("faild to notify {$notified}"); $sent = false; } } $logger->info("End"); return $sent; }
function saveFromRequest(&$request) { //TODO: Valid the request switch ($request->get('direction_type')) { case 'source': // 1 source -> n targets $this->deleteRuleValueBySource($this->artifact_type->getId(), $request->get('source_field'), $request->get('value'), $request->get('target_field')); //get target values $art_field_fact = new ArtifactFieldFactory($this->artifact_type); $target_field = $art_field_fact->getFieldFromId($request->get('target_field')); $target_values = $target_field->getFieldPredefinedValues($this->artifact_type->getID()); while ($row = db_fetch_array($target_values)) { if ($request->exist('target_' . $request->get('source_field') . '_' . $request->get('target_field') . '_' . $row[0] . '_chk')) { $this->saveRuleValue($this->artifact_type->getId(), $request->get('source_field'), $request->get('value'), $request->get('target_field'), $row[0]); } } $GLOBALS['Response']->addFeedback('info', '<span class="feedback_field_dependencies">' . $GLOBALS['Language']->getText('tracker_field_dependencies', 'saved') . '</span>', CODENDI_PURIFIER_DISABLED); $this->displayRules($request->get('source_field'), $request->get('target_field'), $request->get('value'), false); break; case 'target': // n sources -> 1 target $this->deleteRuleValueByTarget($this->artifact_type->getId(), $request->get('source_field'), $request->get('target_field'), $request->get('value')); //get source values $art_field_fact = new ArtifactFieldFactory($this->artifact_type); $source_field =& $art_field_fact->getFieldFromId($request->get('source_field')); $source_values = $source_field->getFieldPredefinedValues($this->artifact_type->getID()); while ($row = db_fetch_array($source_values)) { if ($request->exist('source_' . $request->get('source_field') . '_' . $request->get('target_field') . '_' . $row[0] . '_chk')) { $this->saveRuleValue($this->artifact_type->getId(), $request->get('source_field'), $row[0], $request->get('target_field'), $request->get('value')); } } $GLOBALS['Response']->addFeedback('info', '<span class="feedback_field_dependencies">' . $GLOBALS['Language']->getText('tracker_field_dependencies', 'saved') . '</span>', CODENDI_PURIFIER_DISABLED); $this->displayRules($request->get('source_field'), $request->get('target_field'), false, $request->get('value')); break; default: $this->badRequest(); break; } }
/** * Return the name of a given object */ function permission_get_object_name($permission_type, $object_id) { global $Language, $group_id; $pm = ProjectManager::instance(); if ($permission_type == 'NEWS_READ') { return get_news_name_from_forum_id($object_id); } else { if ($permission_type == 'PACKAGE_READ') { return file_get_package_name_from_id($object_id); } else { if ($permission_type == 'RELEASE_READ') { return file_get_release_name_from_id($object_id); } else { if ($permission_type == 'DOCUMENT_READ') { return util_unconvert_htmlspecialchars(doc_get_title_from_id($object_id)); } else { if ($permission_type == 'DOCGROUP_READ') { return doc_get_docgroupname_from_id($object_id); } else { if ($permission_type == 'WIKI_READ') { return $Language->getText('project_admin_permissions', 'wiki'); } else { if ($permission_type == 'WIKIPAGE_READ') { #$wikipage= new WikiPage($object_id); #return $wikipage->getPagename(); return "{$object_id}"; } else { if ($permission_type == 'WIKIATTACHMENT_READ') { return $Language->getText('project_admin_permissions', 'wikiattachment'); } else { if (strpos($permission_type, 'TRACKER_ACCESS') === 0) { $group = $pm->getProject($group_id); $at = new ArtifactType($group, $object_id); return $at->getName(); } else { if (strpos($permission_type, 'TRACKER_FIELD') === 0) { $ret = "{$object_id}"; if ($group = $pm->getProject($group_id)) { $atid = permission_extract_atid($object_id); $at = new ArtifactType($group, $atid); $ret = $at->getName(); if ($ath = new ArtifactTypeHtml($group, $atid)) { if ($art_field_fact = new ArtifactFieldFactory($ath)) { $field_id = permission_extract_field_id($object_id); if ($field = $art_field_fact->getFieldFromId($field_id)) { $ret = $field->getName() . ' (' . $ret . ')'; } } } } return $ret; } else { if ($permission_type == 'TRACKER_ARTIFACT_ACCESS') { $ret = $object_id; $sql = "SELECT group_artifact_id FROM artifact WHERE artifact_id= " . db_ei($object_id); $result = db_query($sql); if (db_numrows($result) > 0) { $row = db_fetch_array($result); $atid = $row['group_artifact_id']; } $group = $pm->getProject($group_id); $at = new ArtifactType($group, $atid); $a = new Artifact($at, $object_id); return 'art #' . $a->getId() . ' - ' . util_unconvert_htmlspecialchars($a->getSummary()); } else { $em =& EventManager::instance(); $object_name = false; $em->processEvent('permission_get_object_name', array('permission_type' => $permission_type, 'object_id' => $object_id, 'object_name' => &$object_name)); return $object_name ? $object_name : $object_id; } } } } } } } } } } } }