예제 #1
0
 /**
  * Returns HTML form bundle for location contents
  *
  * @param HTTPRequest $po_request The current request
  * @param string $ps_form_name
  * @param string $ps_placement_code
  * @param array $pa_bundle_settings
  * @param array $pa_options Array of options. Options include:
  *			None yet.
  *
  * @return string Rendered HTML bundle
  */
 public function getLocationContentsHTMLFormBundle($po_request, $ps_form_name, $ps_placement_code, $pa_bundle_settings = null, $pa_options = null)
 {
     require_once __CA_MODELS_DIR__ . "/ca_movements.php";
     require_once __CA_MODELS_DIR__ . "/ca_movements_x_objects.php";
     require_once __CA_MODELS_DIR__ . "/ca_objects_x_storage_locations.php";
     global $g_ui_locale;
     $o_view = new View($po_request, $po_request->getViewsDirectoryPath() . '/bundles/');
     if (!is_array($pa_options)) {
         $pa_options = array();
     }
     $vs_display_template = caGetOption('displayTemplate', $pa_bundle_settings, _t('No template defined'));
     $o_view->setVar('id_prefix', $ps_form_name);
     $o_view->setVar('placement_code', $ps_placement_code);
     // pass placement code
     $o_view->setVar('settings', $pa_bundle_settings);
     $o_view->setVar('add_label', isset($pa_bundle_settings['add_label'][$g_ui_locale]) ? $pa_bundle_settings['add_label'][$g_ui_locale] : null);
     $o_view->setVar('t_subject', $this);
     $o_view->setVar('mode', $vs_mode = caGetOption('locationTrackingMode', $pa_bundle_settings, 'ca_movements'));
     switch ($vs_mode) {
         case 'ca_storage_locations':
             // Get current storage locations
             $o_view->setVar('t_subject_rel', new ca_objects_x_storage_locations());
             // Get current objects for location
             $va_object_ids = $this->getRelatedItems('ca_objects', array('idsOnly' => true));
             if (is_array($va_object_ids) && sizeof($va_object_ids)) {
                 // check each object for current location
                 // ... then get the list of objects for which the *current* movement is one of ours
                 $t_object = new ca_objects();
                 $va_current_locations_ids = $t_object->getRelatedItems('ca_storage_locations', array('idsOnly' => false, 'showCurrentOnly' => true, 'row_ids' => $va_object_ids));
                 $va_object_rels = array();
                 foreach ($va_current_locations_ids as $vn_relation_id => $va_location_info) {
                     if ($va_location_info['location_id'] == $this->getPrimaryKey()) {
                         $va_object_rels[] = $vn_relation_id;
                     }
                 }
                 $o_view->setVar('qr_result', sizeof($va_object_rels) ? caMakeSearchResult('ca_objects_x_storage_locations', $va_object_rels) : null);
             }
             break;
         case 'ca_movements':
         default:
             // Get current movements for location
             $va_movement_ids = $this->getRelatedItems('ca_movements', array('idsOnly' => true));
             if (is_array($va_movement_ids) && sizeof($va_movement_ids)) {
                 // get list of objects on these movements...
                 $t_movement = new ca_movements();
                 $va_object_ids = $t_movement->getRelatedItems('ca_objects', array('idsOnly' => true, 'showCurrentOnly' => true, 'row_ids' => $va_movement_ids));
                 // ... then get the list of objects for which the *current* movement is one of ours
                 $t_object = new ca_objects();
                 $va_current_movement_ids = $t_object->getRelatedItems('ca_movements', array('idsOnly' => false, 'showCurrentOnly' => true, 'row_ids' => $va_object_ids));
                 $va_movement_rels = array();
                 foreach ($va_current_movement_ids as $vn_relation_id => $va_movement_info) {
                     if (in_array($va_movement_info['movement_id'], $va_movement_ids)) {
                         $va_movement_rels[] = $vn_relation_id;
                     }
                 }
                 $o_view->setVar('qr_result', sizeof($va_movement_rels) ? caMakeSearchResult('ca_movements_x_objects', $va_movement_rels) : null);
             }
             $o_view->setVar('t_subject_rel', new ca_movements_x_objects());
             break;
     }
     return $o_view->render('ca_storage_locations_contents.php');
 }