コード例 #1
0
 /**
  * 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);
                     }
                 }
             }
         }
     }
 }
コード例 #2
0
ファイル: index.php プロジェクト: pombredanne/tuleap
             $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;
コード例 #3
0
 /**
  * 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;
 }
コード例 #4
0
 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;
     }
 }
コード例 #5
0
ファイル: permissions.php プロジェクト: pombredanne/tuleap
/**
 * 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;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}