public function load()
 {
     parent::load();
     $model = new VirtualOrganization();
     $vos = $model->getindex();
     $scmodel = new SupportCenters();
     $scs = $scmodel->getindex();
     if (isset($_REQUEST["summary_attrs_showmember_resource"])) {
         $this->view->resource_ownerships = array();
         $ownmodel = new VOOwnedResources();
         $resource_ownerships = $ownmodel->getindex();
         $rmodel = new Resource();
         $rs = $rmodel->getindex();
         foreach ($this->vo_ids as $vo_id) {
             $resource_list = array();
             if (isset($resource_ownerships[$vo_id])) {
                 foreach ($resource_ownerships[$vo_id] as $resource_ownership) {
                     $resource = $rs[$resource_ownership->resource_id][0];
                     $resource_list[$resource->id] = $resource;
                 }
             }
             $this->view->resource_ownerships[$vo_id] = $resource_list;
         }
     }
     if (isset($_REQUEST["summary_attrs_showfield_of_science"])) {
         $vofsmodel = new VOFieldOfScience();
         $vofss = $vofsmodel->getindex();
         $this->view->field_of_science = array();
         foreach ($this->vo_ids as $vo_id) {
             $fs_for_vo = @$vofss[$vo_id];
             if ($fs_for_vo !== null) {
                 $ranks = array();
                 foreach ($fs_for_vo as $fs) {
                     $name = $fs->name;
                     $rank_id = $fs->rank_id;
                     if (!isset($ranks[$rank_id])) {
                         $ranks[$rank_id] = array();
                     }
                     $ranks[$rank_id][$name] = $fs;
                 }
                 ksort($ranks);
                 $this->view->field_of_science[$vo_id] = $ranks;
             }
         }
     }
     if (isset($_REQUEST["summary_attrs_showreporting_group"])) {
         $reportmodel = new VOReport();
         $reports = $reportmodel->getindex();
         $fqanmodel = new VOReportFQAN();
         $fqans = $fqanmodel->getindex();
         $contactmodel = new VOReportContact();
         $contacts = $contactmodel->getindex();
         $this->view->reports = array();
         foreach ($this->vo_ids as $vo_id) {
             $this->view->reports[$vo_id] = array();
             if (isset($reports[$vo_id])) {
                 foreach ($reports[$vo_id] as $report) {
                     $report->fqans = @$fqans[$report->id];
                     $report->contacts = @$contacts[$report->id];
                     $this->view->reports[$vo_id][] = $report;
                 }
             }
         }
     }
     if (isset($_REQUEST["summary_attrs_showparent_vo"])) {
         $model = new VOVO();
         $this->view->vovo = $model->getindex();
     }
     if (isset($_REQUEST["summary_attrs_showcontact"])) {
         $this->view->contacts = array();
         $cmodel = new VOContact();
         $contacts = $cmodel->getindex();
         //group by contact_type_id
         foreach ($this->vo_ids as $vo_id) {
             $types = array();
             if (isset($contacts[$vo_id])) {
                 foreach ($contacts[$vo_id] as $contact) {
                     if (!isset($types[$contact->contact_type])) {
                         $types[$contact->contact_type] = array();
                     }
                     $types[$contact->contact_type][] = $contact;
                 }
                 $this->view->contacts[$vo_id] = $types;
             }
         }
     }
     if (isset($_REQUEST["summary_attrs_showoasis"])) {
         $model = new VOOasisUser();
         $oasis_managers = $model->getindex($this->vo_ids);
         $grouped = array();
         foreach ($oasis_managers as $vo_id => $managers) {
             if (!isset($grouped[$vo_id])) {
                 $grouped[$vo_id] = array();
             }
             //group by contact_id
             foreach ($managers as $manager) {
                 $manager = (array) $manager;
                 $contactid = $manager["contact_id"];
                 if (!isset($grouped[$vo_id][$contactid])) {
                     $manager["dns"] = array($manager["dn"]);
                     $grouped[$vo_id][$contactid] = $manager;
                 } else {
                     $grouped[$vo_id][$contactid]["dns"][] = $manager["dn"];
                 }
             }
         }
         $this->view->oasis_managers = $grouped;
     }
     $this->view->vos = array();
     foreach ($this->vo_ids as $vo_id) {
         $vo = $vos[$vo_id][0];
         //lookup support center
         $vo->sc = $scs[$vo->sc_id][0];
         $this->view->vos[$vo_id] = $vo;
         //parse oasis_repo_urls
         if (!is_null($vo->oasis_repo_urls)) {
             $vo->oasis_repo_urls = explode("|", $vo->oasis_repo_urls, -1);
         }
     }
     $this->setpagetitle(self::default_title());
 }
 public function dosearch($type, $max, $q, $basic)
 {
     //search in oim
     $model = new OIMSearch();
     $recs = array();
     if ($type == "all" || $type == "resource") {
         foreach ($model->search_resource($q) as $rec) {
             $rec->type = "resource";
             if (!$basic) {
                 //pull resource for each resource (and group by contact type)
                 $rcmodel = new ResourceContact();
                 $contacts = $rcmodel->get(array("resource_id" => $rec->id));
                 $rec->contacts = array();
                 foreach ($contacts as $contact) {
                     if (!isset($rec->contacts[$contact->contact_type])) {
                         $rec->contacts[$contact->contact_type] = array();
                     }
                     $rec->contacts[$contact->contact_type][] = $contact;
                 }
             }
             $recs[] = $rec;
         }
     }
     if (count($recs) > $max) {
         return $recs;
     }
     if ($type == "all" || $type == "resource_group") {
         foreach ($model->search_resourcegroup($q) as $rec) {
             $rec->type = "resource_group";
             $recs[] = $rec;
         }
     }
     if (count($recs) > $max) {
         return $recs;
     }
     if ($type == "all" || $type == "site") {
         foreach ($model->search_site($q) as $rec) {
             $rec->type = "site";
             $recs[] = $rec;
         }
     }
     if (count($recs) > $max) {
         return $recs;
     }
     if ($type == "all" || $type == "facility") {
         foreach ($model->search_facility($q) as $rec) {
             $rec->type = "facility";
             $recs[] = $rec;
         }
     }
     if (count($recs) > $max) {
         return $recs;
     }
     if ($type == "all" || $type == "vo") {
         foreach ($model->search_vo($q) as $rec) {
             $rec->type = "vo";
             if (!$basic) {
                 $vomodel = new VOContact();
                 $contacts = $vomodel->get(array("vo_id" => $rec->id));
                 $rec->contacts = array();
                 foreach ($contacts as $contact) {
                     if (!isset($rec->contacts[$contact->contact_type])) {
                         $rec->contacts[$contact->contact_type] = array();
                     }
                     $rec->contacts[$contact->contact_type][] = $contact;
                 }
             }
             $recs[] = $rec;
         }
     }
     if (count($recs) > $max) {
         return $recs;
     }
     if ($type == "all" || $type == "sc") {
         foreach ($model->search_sc($q) as $rec) {
             $rec->type = "sc";
             if (!$basic) {
                 $scmodel = new SupportCenterContact();
                 $contacts = $scmodel->get(array("sc_id" => $rec->id));
                 $rec->contacts = array();
                 foreach ($contacts as $contact) {
                     if (!isset($rec->contacts[$contact->contact_type])) {
                         $rec->contacts[$contact->contact_type] = array();
                     }
                     $rec->contacts[$contact->contact_type][] = $contact;
                 }
             }
             $recs[] = $rec;
         }
     }
     if (count($recs) > $max) {
         return $recs;
     }
     if ($type == "all" || $type == "project") {
         foreach ($model->search_project($q) as $rec) {
             $rec->type = "project";
             $recs[] = $rec;
         }
     }
     if (count($recs) > $max) {
         return $recs;
     }
     //contact information is only for non-guest
     if (!user()->isGuest()) {
         if ($type == "all" || $type == "contact") {
             foreach ($model->search_contact($q) as $rec) {
                 $rec->type = "contact";
                 $recs[] = $rec;
             }
         }
     }
     //search goc ticket
     if (!$basic) {
         if ($type == "all" || $type == "gocticket") {
             $xml = new SimpleXMLElement(file_get_contents(config()->gocticket_url . "/rest/search?q=" . urlencode($q)));
             $sorted = array();
             foreach ($xml->Tickets->Ticket as $ticket) {
                 $ticket->type = "gocticket";
                 $ticket_id = (int) $ticket->ID;
                 $sorted[$ticket_id] = $ticket;
             }
             krsort($sorted);
             foreach ($sorted as $ticket) {
                 $recs[] = $ticket;
             }
         }
     }
     return $recs;
 }