nodewords)) { $node->nodewords = nodewords_get($node->nid); } break; // Plug into node form case "form pre": return form_textfield(t("Keywords"), "nodewords", $node->nodewords, 60, 250, t("You can assign keywords to a node to enhance search engine recognition and to give meta data.")); break; // Set nodewords if anything was provided by admin case "insert": if ($node->nodewords) { nodewords_set($node->nid, $node->nodewords); } break; // Update nodewords to the given value (even empty) case "update": nodewords_set($node->nid, $node->nodewords); break; // Remove nodewords associated with this node case "delete": nodewords_delete($node->nid); break; // Inject keywords into output on node view case "view": _nodewords_html_head(strip_tags(check_output($node->teaser)), nodewords_get($node->nid)); break; } } else { switch ($op) { case "view": _nodewords_html_head(strip_tags(check_output($node->teaser)), nodewords_get($node->nid)); break; } } } // Detect node id, if a usual node page is displayed function _nodewords_nodeid_get() { if (preg_match("!^node/(\\d+)(/|$)!", $_GET['q'], $found)) { return $found[1]; } return FALSE; } // Get nodewords for a specific node id function nodewords_get($nodeid = NULL) { // Autodetect node id if on node page if (!isset($nodeid) && !($nodeid = _nodewords_nodeid_get())) { return FALSE; } if ($result = db_query("SELECT nodewords FROM {nodewords} WHERE nid = %d", $nodeid)) { if ($row = db_fetch_object($result)) { return $row->nodewords; } } return FALSE; } // Set nodewords for a specific node id function nodewords_set($nodeid, $nodewords) { // Remove nodewords entry if it was emptyed if (!strlen($nodewords)) { return nodewords_delete($nodeid); } // Decide on INSERT or UPDATE statement to execute $count = 0; if ($result = db_query("SELECT count(*) cnt FROM {nodewords} WHERE nid = %d", $nodeid)) { $row = db_fetch_object($result); $count = $row->cnt; } if ($count) { db_query("UPDATE {nodewords} SET nodewords = '%s' WHERE nid = %d", $nodewords, $nodeid); } else { db_query("INSERT INTO {nodewords} (nid, nodewords) values(%d, '%s')", $nodeid, $nodewords); } } // Remove nodewords for a specific node id function nodewords_delete($nodeid) { db_query("DELETE FROM {nodewords} WHERE nid = %d", $nodeid); } // Set global node keywords function nodewords_settings() { $output = form_textfield(t('Global site keywords'), 'nodewords_global_keywords', variable_get("nodewords_global_keywords", ""), 80, 255, t('These keywords will be appended to every pages HTML meta keywords. Use commas to separate the words.')); return $output; } // Display global meta information on non-node pages function nodewords_init() { if (!_nodewords_nodeid_get()) { _nodewords_html_head(strip_tags(variable_get("site_mission", "")), variable_get("nodewords_global_keywords", "")); } } // Set meta headers for the current page function _nodewords_html_head($description, $keywords = NULL) { $description_text = _nodewords_filter_content($description); $keywords_text = _nodewords_filter_content($keywords); $meta = "\n" . '' . "\n" . ''; drupal_set_html_head($meta); } //filter '"' and white spaces function _nodewords_filter_content($text=NULL){ if ($text){ // remove table width then replace with 100% $search1 = '"'; $replace1 = '"'; $text = str_replace($search1, $replace1, $text); $replace = ' '; $search = "\n"; $text = str_replace($search, $replace, $text); $search = "\r"; $text = str_replace($search, $replace, $text); $search = ' '; $text = str_replace($search, $replace, $text); $text =trim($text); //remove continue space within text $text = preg_replace('/\s+/', ' ', $text); } return $text; } ?>