/** * Pre-process one item's textual data and store timespans in DateSearchDates table */ private function _preProcessItem($item_id) { $db = get_db(); if ($item_id) { $sql = "delete from `{$db->DateSearchDates}` where item_id={$item_id}"; $db->query($sql); $text = false; $searchAllFields = (int) (bool) get_option('date_search_search_all_fields'); if ($searchAllFields) { $text = $db->fetchOne("select text from `{$db->SearchTexts}` where record_type='Item' and record_id={$item_id}"); $text = $text ? $text : ""; $text .= SELF::_relationshipCommentText($item_id); $text = $text ? $text : false; } else { # !$searchAllFields $limitFields = get_option('date_search_limit_fields'); $limitFields = $limitFields ? json_decode($limitFields) : array(); $elementIds = array(); if (is_array($limitFields)) { foreach ($limitFields as $limitField) { $limitField = intval($limitField); if ($limitField) { $elementIds[] = $limitField; } } sort($elementIds); } if ($elementIds) { $elementIds = "(" . implode(",", $elementIds) . ")"; $elementTexts = $db->fetchAll("select text from `{$db->ElementTexts}`" . " where record_id={$item_id}" . " and element_id in {$elementIds}"); if ($elementTexts) { $text = ""; foreach ($elementTexts as $elementText) { $text .= " " . $elementText["text"]; } } # if ($elementTexts) } # if ($elementIds) $searchRelComments = (int) (bool) get_option('date_search_search_rel_comments'); if ($searchRelComments) { $text = $text ? $text : ""; $text .= SELF::_relationshipCommentText($item_id); $text = $text ? $text : false; } } # !$searchAllFields if ($text !== false) { $cookedDates = SELF::_processDateText($text); # echo "<pre>"; print_r($cookedDates); die("</pre>"); if ($cookedDates) { $values = array(); foreach ($cookedDates as $cookedDate) { SELF::_swapIfNecessary($cookedDate[0], $cookedDate[1]); $values[] = '(' . $item_id . ',"' . $cookedDate[0] . '","' . $cookedDate[1] . '")'; } $values = implode(", ", $values); $sql = "insert into `{$db->DateSearchDates}` (item_id, fromdate, todate) values {$values}"; $db->query($sql); # die($sql); } # if ($cookedDates) } # if ($text) } # if ($item_id) }
/** * Pre-process one item's textual data and store measurements in MeasurementSearchValues table */ private function _preProcessItem($item_id) { $db = get_db(); if ($item_id) { $sql = "delete from `{$db->MeasurementSearchValues}` where item_id={$item_id}"; $db->query($sql); $text = false; $searchAllFields = (int) (bool) get_option('measurement_search_search_all_fields'); if ($searchAllFields) { $text = $db->fetchOne("select text from `{$db->SearchTexts}` where record_type='Item' and record_id={$item_id}"); $text = $text ? $text : ""; $text .= SELF::_relationshipCommentText($item_id); $text = $text ? $text : false; } else { # !$searchAllFields $limitFields = get_option('measurement_search_limit_fields'); $limitFields = $limitFields ? json_decode($limitFields) : array(); $elementIds = array(); if (is_array($limitFields)) { foreach ($limitFields as $limitField) { $limitField = intval($limitField); if ($limitField) { $elementIds[] = $limitField; } } sort($elementIds); } if ($elementIds) { $elementIds = "(" . implode(",", $elementIds) . ")"; $elementTexts = $db->fetchAll("select text from `{$db->ElementTexts}`" . " where record_id={$item_id}" . " and element_id in {$elementIds}"); if ($elementTexts) { $text = ""; foreach ($elementTexts as $elementText) { $text .= " " . $elementText["text"]; } } # if ($elementTexts) } # if ($elementIds) $searchRelComments = (int) (bool) get_option('measurement_search_search_rel_comments'); if ($searchRelComments) { $text = $text ? $text : ""; $text .= SELF::_relationshipCommentText($item_id); $text = $text ? $text : false; } } # !$searchAllFields if ($text !== false) { $cookedMeasurements = SELF::_processMeasurementText($text); // echo "<pre>" . print_r($cookedMeasurements,true) . "</pre>"; // die(); if ($cookedMeasurements) { $values = array(); foreach ($cookedMeasurements as $cookedMeasurement) { $values[] = '(' . $item_id . ',"' . str_pad($cookedMeasurement[0], MEASUREMENTSEARCH_NUM_MAXLEN, "0", STR_PAD_LEFT) . '","' . str_pad($cookedMeasurement[1], MEASUREMENTSEARCH_NUM_MAXLEN, "0", STR_PAD_LEFT) . '","' . str_pad($cookedMeasurement[2], MEASUREMENTSEARCH_NUM_MAXLEN, "0", STR_PAD_LEFT) . '","' . $cookedMeasurement[3] . '")'; } $values = implode(", ", $values); $sql = "insert into `{$db->MeasurementSearchValues}`" . " (item_id, height, width, depth, unit)" . " values {$values}"; $db->query($sql); // die(); } # if ($cookedMeasuerements) } # if ($text) } # if ($item_id) }