Exemplo n.º 1
0
 function loadWorkflowPools()
 {
     module_load_include('php', 'apiary_project', 'workflow/include/class.Object_Pool');
     $this->object_pool = new Object_Pool($this->object_pool_id);
     $specimens = array();
     $images = array();
     $rois = array();
     $specimen_pids = array();
     $image_pids = array();
     $roi_pids = array();
     $queued_image_pids = array();
     $queued_roi_pids = array();
     $workflow_pids = array();
     $workflow_dom = new DOMDocument('1.0', 'iso-8859-1');
     $workflowElement = $workflow_dom->createElement('workflow', '');
     //rootElement
     $workflow_dom->appendChild($workflowElement);
     //$time_start = $this->microtime_float();
     include_once drupal_get_path('module', 'apiary_project') . '/workflow/include/search.php';
     $solr_search = new search();
     foreach ($this->object_pool->object_pool_pids as $pid) {
         switch ($pid) {
             case strpos($pid, 'ap-specimen:') > -1:
                 $specimenElement = $workflow_dom->createElement("specimen");
                 $specimen_pidElement = $workflow_dom->createElement("pid", $pid);
                 $specimenElement->appendChild($specimen_pidElement);
                 array_push($specimen_pids, $pid);
                 array_push($workflow_pids, $pid);
                 $specimen['pid'] = $pid;
                 if ($this->fill_fedora) {
                     $specimenMetadata = AP_Specimen::getspecimenMetadata_record($pid);
                     $specimen['specimenMetadata'] = $specimenMetadata;
                 }
                 $specimen_images = AP_Specimen::getImageListForSpecimen($pid);
                 //$specimen['images'] = $specimen_images;
                 if (sizeOf($specimen_images) > 0) {
                     foreach ($specimen_images as $image_pid) {
                         $image = array();
                         $image['pid'] = $image_pid;
                         $imageElement = $workflow_dom->createElement("image");
                         $image_pidElement = $workflow_dom->createElement("pid", $image_pid);
                         $imageElement->appendChild($image_pidElement);
                         $this->addSolrIndexItems($solr_search, $image_pid, $workflow_dom, $imageElement);
                         if ($this->canAnalyzeSpecimen || $this->canQC) {
                             array_push($image_pids, $image_pid);
                             array_push($workflow_pids, $image_pid);
                         }
                         $specimen_image_rois = AP_Image::getROIListForImage($image_pid);
                         $image['rois'] = $specimen_image_rois;
                         $specimen['rois'] .= $specimen_image_rois;
                         if (sizeOf($specimen_image_rois) > 0) {
                             foreach ($specimen_image_rois as $roi_pid) {
                                 $roiElement = $workflow_dom->createElement("roi");
                                 $roi_pidElement = $workflow_dom->createElement("pid", $roi_pid);
                                 $roiElement->appendChild($roi_pidElement);
                                 $this->addSolrIndexItems($solr_search, $roi_pid, $workflow_dom, $roiElement);
                                 array_push($roi_pids, $roi_pid);
                                 array_push($workflow_pids, $roi_pid);
                                 $imageElement->appendChild($roiElement);
                             }
                         }
                         // $specimen['images'] .= $specimen_images;
                         $specimenElement->appendChild($imageElement);
                     }
                 }
                 array_push($specimens, $specimen);
                 $workflowElement->appendChild($specimenElement);
                 break;
             case strpos($pid, 'ap-image:') > -1:
                 //see if already loaded
                 array_push($image_pids, $pid);
                 array_push($workflow_pids, $pid);
                 break;
             case strpos($pid, 'ap-roi:') > -1:
                 //see if already loaded
                 array_push($roi_pids, $pid);
                 array_push($workflow_pids, $pid);
                 break;
         }
     }
     //echo "Session_ID = ".$_SESSION['apiary_session_id']."<br>\n";
     //echo $workflow_dom->saveXML()."<br>\n";
     //$time_end = $this->microtime_float();
     //$time = $time_end - $time_start;
     //echo "Did it in $time seconds\n";
     $this->workflow_dom = $workflow_dom;
     //echo $workflow_dom->saveXML();
     $this->specimens = $specimens;
     $this->specimen_pids = $specimen_pids;
     $this->image_pids = $image_pids;
     //$this->queued_image_pids = $queued_image_pids;
     $this->roi_pids = $roi_pids;
     //$this->queued_roi_pids = $queued_roi_pids;
     $this->workflow_pool = $workflow_pids;
 }