/[drupal]/contributions/modules/yahoo_terms/yahoo_terms.module
ViewVC logotype

Diff of /contributions/modules/yahoo_terms/yahoo_terms.module

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.1.2.7, Wed May 23 19:37:25 2007 UTC revision 1.1.2.8, Mon Jun 25 10:38:41 2007 UTC
# Line 115  function yahoo_terms_node_assign_keyword Line 115  function yahoo_terms_node_assign_keyword
115    $limit = ($limit === FALSE) ? variable_get('yahoo_terms_taxonomy_limit', -1) : $limit;    $limit = ($limit === FALSE) ? variable_get('yahoo_terms_taxonomy_limit', -1) : $limit;
116    $terms = yahoo_terms_text_get_keywords($text, $query, $limit, $blacklist);    $terms = yahoo_terms_text_get_keywords($text, $query, $limit, $blacklist);
117    $tids = _yahoo_terms_create_vocabulary_items($terms, $vid, $static);    $tids = _yahoo_terms_create_vocabulary_items($terms, $vid, $static);
118    $node->taxonomy = array_merge($node->taxonomy, $tids);    $tids_in_node = array_keys($node->taxonomy);
119    taxonomy_node_save($node->nid, $node->taxonomy);    $tids_fetched = array_keys($tids);
120      // Union of these arrays
121      $tids_now = $tids_in_node + $tids_fetched;
122      taxonomy_node_save($node->nid, $tids_now);
123    }
124    
125    /**
126     * Determine the vocab for the given node
127     */
128    function _yahoo_terms_which_vocab($type) {
129      $vid = variable_get('yahoo_terms_vocab_for_'. $type, FALSE);
130      $vid = ($vid === FALSE) ? variable_get('yahoo_terms_vocab', FALSE) : $vid;  // Fall back to default if needed
131      return $vid;
132  }  }
133    
134  /**  /**
# Line 139  function _yahoo_terms_create_vocabulary_ Line 151  function _yahoo_terms_create_vocabulary_
151    // todo: pull blacklist from user input    // todo: pull blacklist from user input
152    $blacklist = array('nbsp', 'quot');    $blacklist = array('nbsp', 'quot');
153    foreach ($keywords as $term) {    foreach ($keywords as $term) {
154      if (!in_array($term, $blacklist)) {  
155        $curr_term = taxonomy_get_term_by_name($term);      $curr_terms = taxonomy_get_term_by_name($term);
156        if (count($curr_term) != 0) {      if (count($curr_terms) != 0) {
157          $curr_term = $curr_term[0];        foreach ($curr_terms as $curr_term) {
158          if ($curr_term->vid == $vid) {          if ($curr_term->vid == $vid) {
159            $tids[] = $curr_term;            $tids[$curr_term->tid] = $curr_term;
         } else if ($static == FALSE) {  
           $new_term['name'] = $term;  
           $new_term['vid'] = $vid;  
           taxonomy_save_term($new_term);  
           $tids[] = taxonomy_get_term($new_term['tid']);  
           unset($new_term);  
160          }          }
161        }        }
162        else {        if (count($tids) == 0 and $static == FALSE) {
163          if ($static == FALSE) {          $new_term['name'] = $term;
164            $new_term['name'] = $term;          $new_term['vid'] = $vid;
165            $new_term['vid'] = $vid;          taxonomy_save_term($new_term);
166            taxonomy_save_term($new_term);          $tids[$new_term['tid']] = taxonomy_get_term($new_term['tid']);
167            $tids[] = taxonomy_get_term($new_term['tid']);          unset($new_term);
168            unset($new_term);        }
169          }      }
170        else {
171          if ($static == FALSE) {
172            $new_term['name'] = $term;
173            $new_term['vid'] = $vid;
174            taxonomy_save_term($new_term);
175            $tids[$new_term['tid']] = taxonomy_get_term($new_term['tid']);
176            unset($new_term);
177        }        }
178      }      }
179    }    }
# Line 224  function yahoo_terms_perm() { Line 237  function yahoo_terms_perm() {
237   * Implements hook_link()   * Implements hook_link()
238   */   */
239  function yahoo_terms_link($type, $node = NULL, $teaser = FALSE) {  function yahoo_terms_link($type, $node = NULL, $teaser = FALSE) {
240    if ($type == 'node' && $node != NULL) {    $vid = _yahoo_terms_which_vocab($node->type);
241      if(user_access(YAHOO_TERMS_USE) && user_access("administer nodes") && variable_get('yahoo_terms_enable_link', FALSE)) {    $count = db_num_rows(db_query("SELECT vid FROM {vocabulary_node_types} WHERE vid = %d AND type = '%s'", $vid, $node->type));
242        $links[] = l(t('extract terms'), 'yahoo_terms/'. $node->nid);    if ($count != 0) {
243        if ($type == 'node' && $node != NULL) {
244          if(user_access(YAHOO_TERMS_USE) && user_access("administer nodes") && variable_get('yahoo_terms_enable_link', FALSE)) {
245            $links[] = l(t('extract terms'), 'yahoo_terms/'. $node->nid);
246          }
247      }      }
248    }    }
249    return $links;    return $links;
# Line 272  function _yahoo_terms_process_node() { Line 289  function _yahoo_terms_process_node() {
289  function yahoo_terms_nodeapi(&$node, $op, $vid = NULL, $query = NULL) {  function yahoo_terms_nodeapi(&$node, $op, $vid = NULL, $query = NULL) {
290    switch ($op) {    switch ($op) {
291      case 'terms_tagging':      case 'terms_tagging':
292        $vid = ($vid === NULL) ? variable_get('yahoo_terms_vocab_for_'. $node->type, FALSE) : $vid;        $vid = _yahoo_terms_which_vocab($node->type);
       $vid = ($vid === FALSE) ? variable_get('yahoo_terms_vocab', FALSE) : $vid;  // Fall back to default if needed  
293        if (is_numeric($vid)) {        if (is_numeric($vid)) {
294          $query = ($query === NULL) ? "" : $query;          $query = ($query === NULL) ? "" : $query;
295          yahoo_terms_node_assign_keywords($node, $query, array(), $vid);          yahoo_terms_node_assign_keywords($node, $query, array(), $vid);
# Line 283  function yahoo_terms_nodeapi(&$node, $op Line 299  function yahoo_terms_nodeapi(&$node, $op
299        }        }
300        break;        break;
301      case 'insert':      case 'insert':
302        $vid = variable_get('yahoo_terms_vocab_for_'. $node->type, FALSE);        $vid = _yahoo_terms_which_vocab($node->type);
       $vid = ($vid === FALSE) ? variable_get('yahoo_terms_vocab', FALSE) : $vid;  // Fall back to default if needed  
303        $automatic = variable_get('yahoo_terms_enable_runtime', YAHOO_TERMS_ONLY_MANUALLY);        $automatic = variable_get('yahoo_terms_enable_runtime', YAHOO_TERMS_ONLY_MANUALLY);
304        if (is_numeric($vid) && ($automatic == YAHOO_TERMS_ON_NODE_CREATION || $automatic == YAHOO_TERMS_ON_NODE_CREATION_AND_UPDATE)) {        if (is_numeric($vid) && ($automatic == YAHOO_TERMS_ON_NODE_CREATION || $automatic == YAHOO_TERMS_ON_NODE_CREATION_AND_UPDATE)) {
305          yahoo_terms_node_assign_keywords($node, "", array(), $vid);          yahoo_terms_node_assign_keywords($node, "", array(), $vid);
306        }        }
307        break;        break;
308      case 'update':      case 'update':
309        $vid = variable_get('yahoo_terms_vocab_for_'. $node->type, FALSE);        $vid = _yahoo_terms_which_vocab($node->type);
       $vid = ($vid === FALSE) ? variable_get('yahoo_terms_vocab', FALSE) : $vid;  // Fall back to default if needed  
310        $automatic = variable_get('yahoo_terms_enable_runtime', YAHOO_TERMS_ONLY_MANUALLY);        $automatic = variable_get('yahoo_terms_enable_runtime', YAHOO_TERMS_ONLY_MANUALLY);
311        if (is_numeric($vid) && $automatic == YAHOO_TERMS_ON_NODE_CREATION_AND_UPDATE) {        if (is_numeric($vid) && $automatic == YAHOO_TERMS_ON_NODE_CREATION_AND_UPDATE) {
312          yahoo_terms_node_assign_keywords($node, "", array(), $vid);          yahoo_terms_node_assign_keywords($node, "", array(), $vid);
# Line 381  function yahoo_terms_batch() { Line 395  function yahoo_terms_batch() {
395      '#type' => 'checkbox',      '#type' => 'checkbox',
396      '#default_value' => FALSE      '#default_value' => FALSE
397    );    );
398      $form['yahoo_terms_batch']['limit_number'] = array(
399        '#title' => t('Only process n nodes in one turn'),
400        '#type' => 'select',
401        '#options' => array('0' => 'No limit', '50' => '50', '100' => '100', '500' => '500', '1000' => '1000'),
402        '#default_value' => 0
403      );
404    $form['submit'] = array(    $form['submit'] = array(
405      '#type' => 'submit',      '#type' => 'submit',
406      '#value' => 'Start tagging'      '#value' => 'Start tagging'
# Line 394  function yahoo_terms_batch() { Line 414  function yahoo_terms_batch() {
414  function yahoo_terms_batch_submit($form_id, $form_values) {  function yahoo_terms_batch_submit($form_id, $form_values) {
415    timer_start("yahoo_terms_batch");    timer_start("yahoo_terms_batch");
416    $num_of_processed = 0;    $num_of_processed = 0;
417    $result = db_query("SELECT nid FROM {node} WHERE type = '%s'", $form_values['type']);    $limit_number = $form_values['limit_number'];
418      if ($limit_number == 0) {
419        $result = db_query("SELECT nid FROM {node} WHERE type = '%s'",
420                           $form_values['type']);
421      }
422      else {
423        if (!$form_values['rewrite']) {
424          $result = db_query("SELECT n.nid FROM {node} n LEFT JOIN {term_node} t ON t.nid=n.nid WHERE t.nid IS NULL and type = '%s' ORDER BY created DESC LIMIT %d",
425                              $form_values['type'], $form_values['limit_number']
426          );
427        }
428        else {
429          $result = db_query("SELECT nid FROM {node}
430                              WHERE type = '%s' LIMIT %d",
431                              $form_values['type'], $form_values['limit_number']
432          );
433        }
434      }
435    while ($node = db_fetch_array($result)) {    while ($node = db_fetch_array($result)) {
436      $node = node_load($node['nid']);      $node = node_load($node['nid']);
437      if ( (!isset($node->taxonomy) || count($node->taxonomy) == 0) || $form_values['rewrite']) {      if ( (!isset($node->taxonomy) || count($node->taxonomy) == 0) || $form_values['rewrite']) {
# Line 432  function yahoo_terms_cron() { Line 469  function yahoo_terms_cron() {
469      if (variable_get('yahoo_terms_process_existing_'. $type, FALSE) == TRUE) {      if (variable_get('yahoo_terms_process_existing_'. $type, FALSE) == TRUE) {
470        variable_set('yahoo_terms_process_existing_'. $type, FALSE);        variable_set('yahoo_terms_process_existing_'. $type, FALSE);
471        $result = db_query("SELECT nid FROM {node} WHERE type = '%s'", $type);        $result = db_query("SELECT nid FROM {node} WHERE type = '%s'", $type);
472        $vid = variable_get('yahoo_terms_vocab_for_'. $node->type, FALSE);        $vid = _yahoo_terms_which_vocab($type);
       $vid = ($vid === FALSE) ? variable_get('yahoo_terms_vocab', FALSE) : $vid;  // Fall back to default if needed  
473        while ($node = db_fetch_array($result)) {        while ($node = db_fetch_array($result)) {
474          $node = node_load($node['nid']);          $node = node_load($node['nid']);
475          yahoo_terms_node_assign_keywords($node, "", array(), $vid);          yahoo_terms_node_assign_keywords($node, "", array(), $vid);

Legend:
Removed from v.1.1.2.7  
changed lines
  Added in v.1.1.2.8

  ViewVC Help
Powered by ViewVC 1.1.2