/**
 * Populate $objects with object that $user can see
 *
 * @param Milestone $milestone
 * @param array $objects
 * @param User $user
 * @return null
 */
function tickets_handle_on_milestone_objects(&$milestone, &$objects, &$user)
{
    if ($user->getProjectPermission('ticket', $milestone->getProject()) >= PROJECT_PERMISSION_ACCESS) {
        $objects[lang('Tickets')] = Tickets::findByMilestone($milestone, STATE_VISIBLE, $user->getVisibility());
    }
    // if
}
/**
 * Populate $portal_objects with objects which aren't private
 *
 * @param Milestone $milestone
 * @param array $portal_objects
 * @param Portal $portal
 * @return null
 */
function tickets_handle_on_portal_milestone_objects(&$milestone, &$portal_objects, &$portal)
{
    if ($portal->getProjectPermissionValue('ticket') >= PROJECT_PERMISSION_ACCESS) {
        $portal_objects[lang('Tickets')] = Tickets::findByMilestone($milestone, STATE_VISIBLE, VISIBILITY_NORMAL);
        // used existing find method
    }
    // if
}
/**
 * Populate $objects with objects that are in $visibility domain
 *
 * @param Milestone $milestone
 * @param array $objects
 * @param integer $visibility
 * @return null
 */
function tickets_handle_on_milestone_objects_by_visibility(&$milestone, &$objects, $visibility)
{
    $objects[lang('Tickets')] = Tickets::findByMilestone($milestone, STATE_VISIBLE, $visibility);
}