/**
  * 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)
 }