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;
}
?>