| 
<?php
 public static function foo() {
 }
 
 /**
 * Adds a new issue.
 *
 * Returns the new issue id.
 *
 * @param string  $title             Title of the new issue.
 * @param string  $description       The description of the issue.
 * @param string  $reporter          Asset id of the reporter.
 * @param integer $projectid         Id of the project that the issue belongs to.
 * @param array   $tags              Array of tags.
 * @param string  $status            The status of the issue.
 * @param string  $assignedTo        The asset id of the user that the issue is
 *                                   assigned to.
 * @param string  $reportedDate      If set then this date will be used instead of the
 *                                   current date and time.
 * @param integer $reportedMilestone Reported milestone.
 *
 * @return integer
 * @throws ChannelException If there is an error.
 *
 * @api            write
 * @api-permission public
 */
 public static function addIssue(
 $title,
 $description,
 $reporter=NULL,
 $projectid=NULL,
 array $tags=array(),
 $status=NULL,
 $assignedTo=NULL,
 $reportedDate=NULL,
 $reportedMilestone=NULL
 ) {
 // Get current projectid if not specified.
 if ($projectid === NULL) {
 Channels::includeSystem('Project');
 $projectid = Project::getCurrentProjectId();
 Channels::modifyBasket('project', $projectid);
 }
 
 Channels::includeSystem('SquizRoadmap');
 Channels::includeSystem('Permission');
 if (Permission::hasPermission($projectid, 'ideas.contribute') === FALSE) {
 throw new ChannelException(_('You do not have permission to contribute idea'));
 }
 
 if ($assignedTo !== NULL) {
 if (Permission::hasPermission($projectid, 'ideas.edit.details') === FALSE) {
 throw new ChannelException(_('You do not have permission to assign user to idea'));
 }
 
 if (SquizRoadmap::isVisibleProject($projectid, $assignedTo) === FALSE) {
 throw new ChannelException(_('Assigned to user does not have access to issue project.'));
 }
 }
 
 // Get current user id if not specified.
 if ($reporter === NULL) {
 Channels::includeSystem('User');
 $reporter = User::getCurrentUserid();
 Channels::modifyBasket('reporter', $reporter);
 }
 
 if (SquizRoadmap::isVisibleProject($projectid, $reporter) === FALSE) {
 throw new ChannelException(_('Contributed by user does not have access to issue project.'));
 }
 
 // Make sure status is valid.
 Channels::includeSystem('SquizRoadmap');
 Channels::includeSystem('SquizRoadmapStatus');
 if ($status === NULL) {
 $statuses = SquizRoadmapStatus::getStatus($projectid);
 if (empty($statuses) === TRUE) {
 throw new ChannelException(_('No defined statuses in project'));
 }
 
 $status = $statuses[0]['status'];
 Channels::modifyBasket('status', $status);
 } else if (SquizRoadmapStatus::isValidStatus($projectid, $status) === FALSE) {
 throw new ChannelException(sprintf(_('Invalid status: %s'), $status));
 }
 
 $issueid = DAL::seqNextVal('sq_rdm_issue_seq');
 Channels::addToBasket('issueid', $issueid);
 
 if ($reportedDate === NULL) {
 include_once 'Libs/String/String.inc';
 $reportedDate = String::tsIso8601(time());
 Channels::modifyBasket('reportedDate', $reportedDate);
 }
 
 $title = trim($title);
 Channels::modifyBasket('title', $title);
 if (empty($title) === TRUE) {
 throw new ChannelException(_('Title cannot be empty'));
 }
 
 $description = SquizRoadmap::stripTags(trim($description));
 Channels::modifyBasket('description', $description);
 if (empty($description) === TRUE) {
 throw new ChannelException(_('Description cannot be empty'));
 }
 
 try {
 DAL::beginTransaction();
 
 $query = DAL::getDALQuery('SquizRoadmapIssue', 'addIssue');
 DAL::executeQuery($query);
 
 // Add tags for the new issue.
 SquizRoadmapIssue::addIssueTags($issueid, $tags);
 
 // Add reporter and assignee to watch list.
 SquizRoadmapIssue::addIssueWatch($issueid, $reporter);
 
 if ($assignedTo !== NULL) {
 SquizRoadmapIssue::addIssueWatch($issueid, $assignedTo);
 }
 
 SquizRoadmapIssue::clearIssueCache($issueid);
 
 DAL::commit();
 } catch (Exception $e) {
 DAL::rollBack();
 throw new ChannelException($e->getMessage());
 }//end try
 
 if ($something === NULL) {
 if ($bar !== NULL) {
 }
 }
 
 return $issueid;
 
 }//end addIssue()
 
 /**
 * Adds a new issue.
 *
 * Returns the new issue id.
 *
 * @param string  $title             Title of the new issue.
 * @param string  $description       The description of the issue.
 * @param string  $reporter          Asset id of the reporter.
 * @param integer $projectid         Id of the project that the issue belongs to.
 * @param array   $tags              Array of tags.
 * @param string  $status            The status of the issue.
 * @param string  $assignedTo        The asset id of the user that the issue is
 *                                   assigned to.
 * @param string  $reportedDate      If set then this date will be used instead of the
 *                                   current date and time.
 * @param integer $reportedMilestone Reported milestone.
 *
 * @return integer
 * @throws ChannelException If there is an error.
 *
 */
 public static function addIssue(
 $title,
 $description,
 $reporter=NULL,
 $projectid=NULL,
 array $tags=array(),
 $status=NULL,
 $assignedTo=NULL,
 $reportedDate=NULL,
 $reportedMilestone=NULL
 ) {
 // Get current projectid if not specified.
 if ($projectid === NULL) {
 Channels::includeSystem('Project');
 $projectid = Project::getCurrentProjectId();
 Channels::modifyBasket('project', $projectid);
 }
 
 }//end addIssue()
 
 |