function endItem() { if ($this->_is_item_finished !== TRUE) { if ($this->_item_obj != NULL) { // instance was not closed, close it now! if ($this->_is_item_instance) { $this->_is_item_instance = FALSE; } // if not item instance, create one if (is_empty_array($this->_instance_item_obj_rs)) { $this->startItemInstance(); $this->endItemInstance(); } // The item is finished, no more additions are allowed, until the // startItem method is called again. $this->_is_item_finished = TRUE; $item_vars = $this->__getItemHTTPVars($this->_item_obj); $item_vars['trial_run'] = $this->_cfg_is_trial_run ? 'true' : 'false'; $item_vars['confirmed'] = $this->_cfg_ignore_duplicate_title ? 'true' : 'false'; $item_r = array(s_item_type => $this->_item_obj->getItemType(), owner_id => $this->getOwner(), title => $this->_item_obj->getTitle()); $instance_valid = FALSE; $errors = array(); $return_val = handle_item_insert($item_r, $item_vars, $errors); if ($return_val === TRUE) { // store item id for later use if ($this->_cfg_is_trial_run !== TRUE && is_numeric($item_r['item_id'])) { $this->_item_id_list_r[] = $item_r['item_id']; } for ($i = 0; $i < count($this->_instance_item_obj_rs); $i++) { $instanceObj = $this->_instance_item_obj_rs[$i]; // if status type is to be overriden, do it here! if ($this->_cfg_override_status_type) { $status_type_r = $this->_cfg_default_status_type_r; } else { $status_type_r = fetch_status_type_r($instanceObj->getStatusType()); // if illegal type, then override by default. if ($status_type_r['closed_ind'] == 'Y') { $status_type_r = $this->_cfg_default_status_type_r; } } $item_r['owner_id'] = $instanceObj->getOwnerID(); $item_r['s_status_type'] = $status_type_r['s_status_type']; $instance_vars = $this->__getItemHTTPVars($instanceObj); // we are missing instance attributes if already set in item $instance_vars = array_merge($instance_vars, $item_vars); $return_val = handle_item_instance_insert($item_r, $status_type_r, $item_vars, $errors); if ($return_val !== FALSE) { $item_r['instance_no'] = $this->_cfg_is_trial_run ? $i + 1 : $item_r['instance_no']; //$instanceObj->setInstanceNo($this->_cfg_is_trial_run?$i+1:$item_r['instance_no']); $this->__listing_item_import_result_row($item_r, $status_type_r, $instance_vars, NULL); // indicates at least one instance inserted. $instance_valid = TRUE; } else { $item_r['instance_no'] = $this->_cfg_is_trial_run ? $i + 1 : $item_r['instance_no']; //$instanceObj->setInstanceNo($this->_cfg_is_trial_run?$i+1:$item_r['instance_no']); $this->__listing_item_import_result_row($item_r, $status_type_r, $instance_vars, $errors); } } } else { $this->__listing_item_import_result_row($item_r, NULL, $item_vars, $errors); } $this->_item_obj = NULL; // end of parent item. return TRUE; } else { $this->_item_obj = NULL; $this->addError('endItem', get_opendb_lang_var('undefined_error')); return FALSE; } } else { // if($this->_is_item_finished !== TRUE) return FALSE; } }
/** * A simple field mask parser, which only supports 'if' and 'switch' and config_var_key(...) * config_var_value(...) */ function _expand_field_mask(&$values_rs, $mask, &$mask_element_rs, $config_var_rs = NULL) { // If no parsed mask elements, then return $mask. if (is_empty_array($mask_element_rs)) { // Only return mask if there is something to return. if (strlen($mask) > 0) { return $mask; } else { return NULL; } } for ($i = 0; $i < count($mask_element_rs); $i++) { // no array set, or simple attribute variable 's_attribute_type.option' not set. if (is_not_empty_array($mask_element_rs[$i]) && !isset($mask_element_rs[$i]['s_attribute_type']) && !isset($mask_element_rs[$i]['option'])) { // Replace the array index. switch ($mask_element_rs[$i]['type']) { case 'ifdef': // ifdef(s_attribute_type, "if_mask"[, "else_mask"]) if (isset($values_rs[$mask_element_rs[$i]['varname']])) { $value = $this->_expand_field_mask($values_rs, $mask_element_rs[$i]['if_mask'], $mask_element_rs[$i]['if_mask_elements'], $config_var_rs); } else { if (strlen($mask_element_rs[$i]['else_mask']) > 0) { $value = $this->_expand_field_mask($values_rs, $mask_element_rs[$i]['else_mask'], $mask_element_rs[$i]['else_mask_elements'], $config_var_rs); } else { $value = NULL; } } break; case 'if': // if(varname[<|<=|>=|>|==|!=]value, "if_mask"[, "else_mask"]) $value = $values_rs[$mask_element_rs[$i]['varname']]; // The attribute is defined, so now lets do the comparison. if (!empty($value)) { if ($this->_test_if_condition($value, $mask_element_rs[$i]['op'], $mask_element_rs[$i]['value'])) { $value = $this->_expand_field_mask($values_rs, $mask_element_rs[$i]['if_mask'], $mask_element_rs[$i]['if_mask_elements'], $config_var_rs); } else { if (strlen($mask_element_rs[$i]['else_mask']) > 0) { $value = $this->_expand_field_mask($values_rs, $mask_element_rs[$i]['else_mask'], $mask_element_rs[$i]['else_mask_elements'], $config_var_rs); } else { $value = NULL; } } } else { $value = NULL; } break; case 'switch': $value = $values_rs[$mask_element_rs[$i]['varname']]; // The attribute is defined, so now lets do the comparison. if (!empty($value)) { if (is_not_empty_array($mask_element_rs[$i]['cases'])) { for ($j = 0; $j < count($mask_element_rs[$i]['cases']); $j++) { // if a match. if (strcmp($value, $mask_element_rs[$i]['cases'][$j]['case']) === 0) { $value = $this->_expand_field_mask($values_rs, $mask_element_rs[$i]['cases'][$j]['result']['mask'], $mask_element_rs[$i]['cases'][$j]['result']['mask_elements'], $config_var_rs); break 2; // break out of switch } } } if (is_not_empty_array($mask_element_rs[$i]['default_case'])) { $value = $this->_expand_field_mask($values_rs, $mask_element_rs[$i]['default_case']['mask'], $mask_element_rs[$i]['cases']['default_case']['mask_elements'], $config_var_rs); } } else { $value = NULL; } break; case 'config_var_key': // config_var_key(name, value) if (is_not_empty_array($config_var_rs) && is_array($config_var_rs[$mask_element_rs[$i]['name']])) { if (is_array($mask_element_rs[$i]['value'])) { $srchValue = $this->_expand_field_mask($values_rs, $mask_element_rs[$i]['value']['mask'], $mask_element_rs[$i]['value']['elements'], $config_var_rs); } else { $srchValue = $mask_element_rs[$i]['value']; } $tmpValue = array_search2($srchValue, $config_var_rs[$mask_element_rs[$i]['name']]); if ($tmpValue !== FALSE) { $value = $tmpValue; } else { $value = ''; } } else { $value = ''; } break; case 'config_var_value': // config_var_value(name, keyid) if (is_not_empty_array($config_var_rs) && is_array($config_var_rs[$mask_element_rs[$i]['name']])) { if (is_array($mask_element_rs[$i]['key'])) { $srchKey = $this->_expand_field_mask($values_rs, $mask_element_rs[$i]['key']['mask'], $mask_element_rs[$i]['key']['elements'], $config_var_rs); } else { $srchKey = $mask_element_rs[$i]['key']; } if (isset($config_var_rs[$mask_element_rs[$i]['name']][$srchKey])) { $value = $config_var_rs[$mask_element_rs[$i]['name']][$srchKey]; } else { $value = ''; } } else { $value = ''; } break; default: // No valid function specified, so set to empty. $value = ''; } } else { // in the case of this function, all {variables} are not actually s_attribute_type references, but // references to key's in the $values_rs array, thus we ignore the 'option' and assume 'value' in // every case. if (is_array($mask_element_rs[$i]) && isset($mask_element_rs[$i]['s_attribute_type']) && isset($mask_element_rs[$i]['option'])) { $value = ifempty($values_rs[$mask_element_rs[$i]['s_attribute_type']], $values_rs[strtolower($mask_element_rs[$i]['s_attribute_type'])]); } else { $value = $values_rs[$mask_element_rs[$i]]; } } // Replace the array index. $mask = str_replace('{' . $i . '}', $value, $mask); } // Now return expanded subject. return $mask; }
} else { $page_title = get_opendb_lang_var('my_history'); if (is_numeric($listingObject->getItemsPerPage())) { $listingObject->setTotalItems(fetch_my_history_item_cnt(get_opendb_session_var('user_id'))); if ($listingObject->getTotalItemCount() > 0) { $result = fetch_my_history_item_rs(get_opendb_session_var('user_id'), $listingObject->getCurrentOrderBy(), $listingObject->getCurrentSortOrder(), $listingObject->getStartIndex(), $listingObject->getItemsPerPage()); } } else { $result = fetch_my_history_item_rs(get_opendb_session_var('user_id'), $listingObject->getCurrentOrderBy(), $listingObject->getCurrentSortOrder()); } } } else { if (get_opendb_config_var('borrow', 'reserve_basket') !== FALSE && ($HTTP_VARS['op'] == 'my_reserve_basket' || $HTTP_VARS['op'] == 'update_my_reserve_basket' || $HTTP_VARS['op'] == 'delete_from_my_reserve_basket')) { if ($HTTP_VARS['op'] == 'update_my_reserve_basket' || $HTTP_VARS['op'] == 'delete_from_my_reserve_basket') { // We might be reserving a single item only - item_display.php would initiate this operation if (is_empty_array($HTTP_VARS['item_id_instance_no']) && is_numeric($HTTP_VARS['item_id']) && is_numeric($HTTP_VARS['instance_no'])) { // Set it up so it looks as if an item was previously checked, but has now been unchecked! - called from item_display.php if ($HTTP_VARS['op'] == 'delete_from_my_reserve_basket') { $sequence_number = fetch_borrowed_item_seq_no($HTTP_VARS['item_id'], $HTTP_VARS['instance_no'], 'T', get_opendb_session_var('user_id')); if ($sequence_number !== FALSE) { delete_cart_item($sequence_number); } } else { if (!is_item_in_reserve_basket($HTTP_VARS['item_id'], $HTTP_VARS['instance_no'], get_opendb_session_var('user_id'))) { // else add item to session array. insert_cart_item($HTTP_VARS['item_id'], $HTTP_VARS['instance_no'], get_opendb_session_var('user_id')); } } } else { if ($HTTP_VARS['op'] == 'update_my_reserve_basket' && is_not_empty_array($HTTP_VARS['item_id_instance_no'])) { // initiated from listings.php page!
if (strlen($HTTP_VARS['s_field_type']['TITLE']) == 0 || !is_exists_attribute_type($HTTP_VARS['s_field_type']['TITLE'])) { $missing_s_field_types[] = 'TITLE'; } if (strlen($HTTP_VARS['s_field_type']['STATUSCMNT']) == 0 || !is_exists_attribute_type($HTTP_VARS['s_field_type']['STATUSCMNT'])) { $missing_s_field_types[] = 'STATUSCMNT'; } if (strlen($HTTP_VARS['s_field_type']['STATUSTYPE']) == 0 || !is_exists_attribute_type($HTTP_VARS['s_field_type']['STATUSTYPE'])) { $missing_s_field_types[] = 'STATUSTYPE'; } if (strlen($HTTP_VARS['s_field_type']['CATEGORY']) == 0 || !is_exists_attribute_type($HTTP_VARS['s_field_type']['CATEGORY'])) { $missing_s_field_types[] = 'CATEGORY'; } if (get_opendb_config_var('borrow', 'enable') !== FALSE && get_opendb_config_var('borrow', 'duration_support') !== FALSE && (strlen($HTTP_VARS['s_field_type']['DURATION']) == 0 || !is_exists_attribute_type($HTTP_VARS['s_field_type']['DURATION']))) { $missing_s_field_types[] = 'DURATION'; } if (is_empty_array($missing_s_field_types)) { if (insert_s_item_type($HTTP_VARS['s_item_type'], $HTTP_VARS['order_no'], $HTTP_VARS['description'], $HTTP_VARS['image'])) { //Insert required system s_attribute_type's. insert_s_item_attribute_type($HTTP_VARS['s_item_type'], $HTTP_VARS['s_field_type']['TITLE'], '1', NULL, 'N', 'Y', 'N', 'N'); insert_s_item_attribute_type($HTTP_VARS['s_item_type'], $HTTP_VARS['s_field_type']['CATEGORY'], '10', NULL, 'N', 'N', 'N', 'N'); if (get_opendb_config_var('borrow', 'enable') !== FALSE && get_opendb_config_var('borrow', 'duration_support') !== FALSE) { insert_s_item_attribute_type($HTTP_VARS['s_item_type'], $HTTP_VARS['s_field_type']['DURATION'], '200', NULL, 'N', 'N', 'N', 'N'); } insert_s_item_attribute_type($HTTP_VARS['s_item_type'], $HTTP_VARS['s_field_type']['STATUSTYPE'], '254', NULL, 'N', 'N', 'N', 'N'); insert_s_item_attribute_type($HTTP_VARS['s_item_type'], $HTTP_VARS['s_field_type']['STATUSCMNT'], '255', NULL, 'N', 'N', 'N', 'N'); // Load the edit_types form now. $HTTP_VARS['op'] = 'edit_types'; } else { $errors[] = array('error' => 'Item Type (' . $HTTP_VARS['s_item_type'] . ') not inserted.', 'detail' => db_error()); } } else {