/**
 * Populate $portal_objects with objects which aren't private
 *
 * @param Milestone $milestone
 * @param array $portal_objects
 * @param Portal $portal
 * @return null
 */
function discussions_handle_on_portal_milestone_objects(&$milestone, &$portal_objects, &$portal)
{
    if ($portal->getProjectPermissionValue('discussion') >= PROJECT_PERMISSION_ACCESS) {
        $portal_objects[lang('Discussions')] = Discussions::findByMilestone($milestone, STATE_VISIBLE, VISIBILITY_NORMAL);
        // used existing find method
    }
    // if
}
 /**
  * Return all milestones for a given portal project
  *
  * @param Portal $portal
  * @param Project $project
  * @return array
  */
 function findByPortalProject($portal, $project)
 {
     if ($portal->getProjectPermissionValue('milestone') >= PROJECT_PERMISSION_ACCESS) {
         return ProjectObjects::find(array('conditions' => array('project_id = ? AND type = ? AND state >= ? AND visibility >= ?', $project->getId(), 'Milestone', STATE_VISIBLE, VISIBILITY_NORMAL), 'order' => 'name'));
     }
     // if
     return null;
 }
 /**
  * Returns true if objects of this class can be created through portal
  *
  * @param Portal $portal
  * @param string $add_permission_name
  * @return boolean
  */
 function canAddViaPortal($portal, $add_permission_name = null)
 {
     return $portal->getProjectPermissionValue($add_permission_name) >= PROJECT_PERMISSION_CREATE;
 }