function process_category($field_id, $cat_name, $form_id)
 {
     $cat_name = trim($cat_name);
     if ($cat_name == '') {
         return $cat_name;
     }
     $job_map =& $this->FMD->getOption('job_map');
     // job post mappings
     $category_id = JB_match_category_id_from_name($cat_name, $form_id);
     if (!$category_id) {
         $category_id = 0;
         // this will make this function return 0 unless error or $category_id is assigned.
         // What to do if cannot find the category_id from $cat_name ?
         switch ($job_map[$field_id]['cat_mode']) {
             case 'ADD_NEW':
                 // add new category using $job_map[$key]['parent_category'] as parent
                 $category_id = $this->add_category($job_map[$field_id]['parent_category'], $cat_name, $form_id);
                 break;
             case 'ADD_MATCH':
                 // ADD_MATCH is only available for jobs
                 // try to match the category by breaking up the data in to words, and then search each word for the
                 // category/
                 $cat_match = $job_map[$field_id]['cat_match'];
                 // get the element name, eg. jamit|jobsFeed|job|title
                 $category_id = JB_match_text_to_category($this->clean_data($this->data[$cat_match]['data']), $form_id);
                 if ($category_id === false) {
                     $this->set_import_error("Error. Cannot match category for: [" . $cat_name . "] field_id: [{$field_id}] ");
                 }
                 break;
             case 'ERROR':
                 // Throw an error & skip the whole record, because a category cannot be found
                 $this->set_import_error("Error. No code exists for  '" . $cat_name . "' in the database, when importing <" . $job_map[$field_id]['element'] . "> ");
                 return false;
                 break;
             case 'IGNORE':
                 break;
         }
     }
     return $category_id;
 }
Beispiel #2
0
function jb_match_text_to_category($text, $form_id, $lang = '')
{
    $MAX_SEARCH = 5;
    $i = 0;
    if (!$lang) {
        $lang = JB_get_default_lang();
    }
    if (strlen($text) == 0) {
        return false;
    }
    $words = preg_split("/\\s+/", $text);
    $result = array_count_values(array_map('strtolower', $words));
    // Returns an associative array of values from input as keys and their count as value. Case insensitive
    arsort($result);
    while (($word = key($result)) && $i < $MAX_SEARCH) {
        $i++;
        // match to category
        // return $category_id
        if (strlen($word) < 3) {
            // ignore any words with 2 or less chars
            continue;
        }
        if ($cat_name = JB_match_category_id_from_name($word, $form_id, $lang = '')) {
            return $cat_name;
        }
        next($result);
    }
    return false;
}