<?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() 
 
 |