public $user = null;␊ |
public $project = null;␊ |
public $show_full = false;␊ |
public $relation_types = null;␊ |
␊ |
public function initFields($extra=array())␊ |
{␊ |
|
or $this->user->hasPerm('IDF.project-member', $this->project)) {␊ |
$this->show_full = true;␊ |
}␊ |
$this->relation_types = $this->project->getRelationsFromConfig();␊ |
␊ |
$contentTemplate = $this->project->getConf()->getVal(␊ |
'labels_issue_template', IDF_Form_IssueTrackingConf::init_template␊ |
);␊ |
␊ |
$this->fields['summary'] = new Pluf_Form_Field_Varchar(␊ |
array('required' => true,␊ |
'label' => __('Summary'),␊ |
|
),␊ |
));␊ |
␊ |
$relation_types = $extra['project']->getRelationsFromConfig();␊ |
$this->fields['relation_type'] = new Pluf_Form_Field_Varchar(␊ |
array('required' => false,␊ |
'label' => __('This issue'),␊ |
'initial' => $relation_types[0],␊ |
'initial' => current($this->relation_types),␊ |
'widget_attrs' => array('size' => 15),␊ |
));␊ |
␊ |
|
return $this->cleaned_data['status'];␊ |
}␊ |
␊ |
function clean_relation_type()␊ |
{␊ |
$relation_type = trim($this->cleaned_data['relation_type']);␊ |
if (empty($relation_type))␊ |
return '';␊ |
␊ |
$found = false;␊ |
foreach ($this->relation_types as $type) {␊ |
if ($type == $relation_type) {␊ |
$found = true;␊ |
break;␊ |
}␊ |
}␊ |
if (!$found) {␊ |
throw new Pluf_Form_Invalid(__('You provided an invalid relation type.'));␊ |
}␊ |
return $relation_type;␊ |
}␊ |
␊ |
function clean_relation_issue()␊ |
{␊ |
$issues = trim($this->cleaned_data['relation_issue']);␊ |
if (empty($issues))␊ |
return '';␊ |
␊ |
$issue_ids = preg_split('/\s*,\s*/', $issues, -1, PREG_SPLIT_NO_EMPTY);␊ |
foreach ($issue_ids as $issue_id) {␊ |
if (!ctype_digit($issue_id) || (int)$issue_id < 1) {␊ |
throw new Pluf_Form_Invalid(sprintf(␊ |
__('The value "%s" is not a valid issue id.'), $issue_id␊ |
));␊ |
}␊ |
$issue = new IDF_Issue($issue_id);␊ |
if ($issue->id != $issue_id || $issue->project != $this->project->id) {␊ |
throw new Pluf_Form_Invalid(sprintf(␊ |
__('The issue "%s" does not exist.'), $issue_id␊ |
));␊ |
}␊ |
}␊ |
␊ |
return implode(', ', $issue_ids);␊ |
}␊ |
␊ |
/**␊ |
* Clean the attachments post failure.␊ |
*/␊ |
|
foreach ($tags as $tag) {␊ |
$issue->setAssoc($tag);␊ |
}␊ |
// add relations␊ |
$verb = $this->cleaned_data['relation_type'];␊ |
$other_verb = $this->relation_types[$verb];␊ |
$related_issues = preg_split('/\s*,\s*/', $this->cleaned_data['relation_issue'], -1, PREG_SPLIT_NO_EMPTY);␊ |
foreach ($related_issues as $related_issue_id) {␊ |
$related_issue = new IDF_Issue($related_issue_id);␊ |
$rel = new IDF_IssueRelation();␊ |
$rel->issue = $issue;␊ |
$rel->verb = $verb;␊ |
$rel->other_issue = $related_issue;␊ |
$rel->submitter = $this->user;␊ |
$rel->create();␊ |
␊ |
$other_rel = new IDF_IssueRelation();␊ |
$other_rel->issue = $related_issue;␊ |
$other_rel->verb = $other_verb;␊ |
$other_rel->other_issue = $issue;␊ |
$other_rel->submitter = $this->user;␊ |
$other_rel->create();␊ |
}␊ |
␊ |
// add the first comment␊ |
$comment = new IDF_IssueComment();␊ |
$comment->issue = $issue;␊ |