diff -uprbwB ./relatedlinks.info ../../relatedlinks/relatedlinks.info
--- ./relatedlinks.info 2008-02-19 01:10:11.000000000 +0100
+++ ../../relatedlinks/relatedlinks.info 2008-03-27 22:56:27.000000000 +0100
@@ -1,6 +1,9 @@
; $Id: relatedlinks.info,v 1.2 2007/06/18 22:53:56 dww Exp $
name = Related Links
-description = Displays links related to content.
+description = Displays links related to content
+package = Development
+version = "6.x-1.x-dev"
+core = "6.x"
; Information added by drupal.org packaging script on 2008-02-19
version = "5.x-2.x-dev"
diff -uprbwB ./relatedlinks.install ../../relatedlinks/relatedlinks.install
--- ./relatedlinks.install 2007-02-26 18:26:10.000000000 +0100
+++ ../../relatedlinks/relatedlinks.install 2008-03-27 22:56:27.000000000 +0100
@@ -5,62 +5,17 @@
* Implementation of hook_install().
*/
function relatedlinks_install() {
- $ret = array();
-
- switch ($GLOBALS['db_type']) {
- case 'mysqli':
- case 'mysql':
- db_query("CREATE TABLE {relatedlinks} (
- lid int(11) unsigned NOT NULL auto_increment,
- nid int(11) unsigned NOT NULL default 0,
- url varchar(255) NOT NULL default '',
- title varchar(255) default NULL,
- type tinyint(4) unsigned NOT NULL default 1,
- PRIMARY KEY (lid),
- KEY nid (nid),
- KEY nid_type (nid, type))
- COMMENT = 'Relatedlinks module: store manual and parsed links.'
- /*!40100 default CHARACTER SET utf8 */"
- );
- db_query("CREATE TABLE {relatedlinks_tracker} (
- nid int(11) UNSIGNED NOT NULL,
- keywords varchar(255) NULL,
- updated int(11) NOT NULL default 0,
- PRIMARY KEY (nid),
- KEY (updated))
- COMMENT = 'Table keeping track of discovered links.'
- /*!40100 default CHARACTER SET utf8 */"
- );
- break;
- case 'pgsql':
- db_query("CREATE TABLE {relatedlinks} (
- lid serial,
- nid integer NOT NULL default 0,
- url varchar(255) NOT NULL default '',
- title varchar(255) default NULL,
- type smallint NOT NULL default 1
- PRIMARY KEY (lid))"
- );
- db_query("CREATE INDEX {relatedlinks}_nid_idx ON {relatedlinks}(nid)");
- db_query("CREATE INDEX {relatedlinks}_nid_type_idx ON {relatedlinks}(nid, type)");
- db_query("CREATE TABLE {relatedlinks_tracker} (
- nid integer NOT NULL default 0,
- keywords varchar(255) NULL,
- updated integer NOT NULL default 0
- PRIMARY KEY (nid))"
- );
- db_query("CREATE INDEX {relatedlinks_tracker}_updated_idx ON {relatedlinks_tracker}(updated)");
- }
- drupal_set_message(t('The relatedlinks module installation script has completed.'));
if (!module_exists('taxonomy') && !module_exists('search')) {
drupal_set_message(t('The discovered links feature of the relatedlinks module requires one of the following modules:
'));
+ return;
}
- return $ret;
+ // Create tables.
+ drupal_install_schema('relatedlinks');
}
/**
@@ -99,25 +54,13 @@ function relatedlinks_update_2() {
function relatedlinks_update_3() {
$ret = array();
- switch ($GLOBALS['db_type']) {
- case 'mysqli':
- case 'mysql':
- $ret[] = update_sql("ALTER TABLE {relatedlinks} ADD lid int(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST");
- $ret[] = update_sql("ALTER TABLE {relatedlinks} CHANGE link url varchar(255) NOT NULL default ''");
- $ret[] = update_sql("ALTER TABLE {relatedlinks} ADD title varchar(255) DEFAULT NULL AFTER url");
- // nid and type are UNSIGNED fields.
- $ret[] = update_sql("ALTER TABLE {relatedlinks} CHANGE nid nid int(11) UNSIGNED NOT NULL DEFAULT 0");
- $ret[] = update_sql("ALTER TABLE {relatedlinks} CHANGE type type tinyint(4) UNSIGNED NOT NULL DEFAULT 1");
- $ret[] = update_sql("ALTER TABLE {relatedlinks} ADD INDEX nid_type (nid, type)");
- break;
- case 'pgsql':
- // Needs testing. Field ordering needs to be added.
- db_add_column($ret, 'relatedlinks', 'lid', 'serial');
- db_change_column($ret, 'relatedlinks', 'link', 'url', 'varchar(255)', array('default' => "''", 'not null' => TRUE));
- db_add_column($ret, 'relatedlinks', 'title', 'varchar(255)', array('default' => "NULL"));
- $ret[] = update_sql("CREATE INDEX {relatedlinks}_nid_type_idx ON {relatedlinks}(nid, type)");
- break;
- }
+ db_drop_primary_key($ret, 'relatedlinks');
+ db_add_field($ret, 'relatedlinks', 'lid', array('type' => 'serial', 'size' => 'tiny', 'not null' => TRUE));
+ db_change_field($ret, 'relatedlinks', 'link', 'url', array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''));
+ db_add_field($ret, 'relatedlinks', 'title', array('type' => 'varchar', 'length' => '255', 'default' => NULL));
+ db_change_field($ret, 'relatedlinks', 'nid', array('type' => 'int', 'size' => 'tiny', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0));
+ db_change_field($ret, 'relatedlinks', 'type', array('type' => 'int', 'size' => 'tiny', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 1));
+ db_add_index($ret, 'relatedlinks', 'nid_type', array('nid', 'type'));
$result = db_query("SELECT * FROM {relatedlinks}");
while ($link = db_fetch_array($result)) {
@@ -137,29 +80,31 @@ function relatedlinks_update_3() {
function relatedlinks_update_4() {
$ret = array();
- switch ($GLOBALS['db_type']) {
- case 'mysqli':
- case 'mysql':
- $ret[] = update_sql("CREATE TABLE {relatedlinks_tracker} (
- nid int(11) UNSIGNED NOT NULL,
- keywords varchar(255) NULL,
- updated int(11) NOT NULL default 0,
- PRIMARY KEY (nid),
- KEY (updated))
- COMMENT = 'Table keeping track of discovered links.'
- /*!40100 default CHARACTER SET utf8 */"
+ $schema['relatedlinks_tracker'] = array(
+ 'description' => t('Table keeping track of discovered links.'),
+ 'fields' => array(
+ 'nid' => array(
+ 'type' => 'serial',
+ 'size' => 'tiny',
+ 'unsigned' => TRUE,
+ 'not null' => TRUE),
+ 'keywords' => array(
+ 'type' => 'varchar',
+ 'length' => 255,
+ 'not null' => FALSE),
+ 'updated' => array(
+ 'type' => 'int',
+ 'size' => 'tiny',
+ 'not null' => TRUE,
+ 'default' => 0),
+ ),
+ 'indexes' => array(
+ 'updated' => array('updated'),
+ ),
+ 'primary key' => array('nid'),
);
- break;
- case 'pgsql':
- $ret[] = update_sql("CREATE TABLE {relatedlinks_tracker} (
- nid integer NOT NULL default 0,
- keywords varchar(255) NULL,
- updated integer NOT NULL default 0
- PRIMARY KEY (nid))"
- );
- $ret[] = update_sql("CREATE INDEX {relatedlinks_tracker}_updated_idx ON {relatedlinks_tracker}(updated)");
- }
+ db_create_table($ret, 'relatedlinks_tracker', $schema);
$ret[] = update_sql("INSERT INTO {relatedlinks_tracker} (nid) SELECT DISTINCT(nid) FROM {relatedlinks}");
return $ret;
@@ -169,7 +114,77 @@ function relatedlinks_update_4() {
* Implementation of hook_uninstall().
*/
function relatedlinks_uninstall() {
- db_query('DROP TABLE {relatedlinks_tracker}, {relatedlinks}');
+ $ret = array();
+ db_drop_table($ret, 'relatedlinks');
+ db_drop_table($ret, 'relatedlinks_tracker');
variable_del('relatedlinks_types');
variable_del('relatedlinks_node_types');
}
+
+/**
+ * Implementation of hook_schema().
+ */
+function relatedlinks_schema() {
+ $schema['relatedlinks'] = array(
+ 'description' => t('Relatedlinks module: store manual and parsed links.'),
+ 'fields' => array(
+ 'lid' => array(
+ 'type' => 'serial',
+ 'size' => 'tiny',
+ 'unsigned' => TRUE,
+ 'not null' => TRUE),
+ 'nid' => array(
+ 'type' => 'int',
+ 'size' => 'tiny',
+ 'unsigned' => TRUE,
+ 'default' => 0),
+ 'url' => array(
+ 'type' => 'varchar',
+ 'length' => 255,
+ 'not null' => TRUE,
+ 'default' => ''),
+ 'title' => array(
+ 'type' => 'varchar',
+ 'length' => 255,
+ 'not null' => FALSE,
+ 'default' => NULL),
+ 'type' => array(
+ 'type' => 'int',
+ 'size' => 'tiny',
+ 'unsigned' => TRUE,
+ 'not null' => TRUE,
+ 'default' => 1),
+ ),
+ 'indexes' => array(
+ 'nid' => array('nid'),
+ 'nid_type' => array('nid', 'type'),
+ ),
+ 'primary key' => array('lid'),
+ );
+
+ $schema['relatedlinks_tracker'] = array(
+ 'description' => t('Table keeping track of discovered links.'),
+ 'fields' => array(
+ 'nid' => array(
+ 'type' => 'serial',
+ 'size' => 'tiny',
+ 'unsigned' => TRUE,
+ 'not null' => TRUE),
+ 'keywords' => array(
+ 'type' => 'varchar',
+ 'length' => 255,
+ 'not null' => FALSE),
+ 'updated' => array(
+ 'type' => 'int',
+ 'size' => 'tiny',
+ 'not null' => TRUE,
+ 'default' => 0),
+ ),
+ 'indexes' => array(
+ 'updated' => array('updated'),
+ ),
+ 'primary key' => array('nid'),
+ );
+
+ return $schema;
+}
diff -uprbwB ./relatedlinks.js ../../relatedlinks/relatedlinks.js
--- ./relatedlinks.js 2008-02-18 21:59:05.000000000 +0100
+++ ../../relatedlinks/relatedlinks.js 2008-03-28 15:59:49.000000000 +0100
@@ -8,7 +8,7 @@ $(document).ready(function() {
// Parse textarea for links and store them in a global array.
l = $(ta).val().split("\n");
- r = new RegExp('\w*([^\ \w]+)\ *(.*)$', 'i');
+ r = new RegExp('^([^ ]+)\ (.*)$', 'i');
links = new Array();
for (var i = 0; i < l.length; i++) {
m = l[i].match(r);
diff -uprbwB ./relatedlinks.module ../../relatedlinks/relatedlinks.module
--- ./relatedlinks.module 2008-02-18 15:42:59.000000000 +0100
+++ ../../relatedlinks/relatedlinks.module 2008-03-28 17:19:23.000000000 +0100
@@ -26,8 +26,8 @@ define('RELATEDLINKS_DISCOVERED', 3);
/**
* Implementation of hook_help().
*/
-function relatedlinks_help($section) {
- switch ($section) {
+function relatedlinks_help($path, $arg) {
+ switch ($path) {
case 'admin/settings/relatedlinks':
return t('Select the types of links to store and display.');
case 'admin/settings/relatedlinks/discovered':
@@ -57,46 +57,38 @@ Links:
/**
* Implementation of hook_menu().
*/
-function relatedlinks_menu($may_cache) {
+function relatedlinks_menu() {
$items = array();
- if ($may_cache) {
- $items[] = array(
- 'path' => 'admin/settings/relatedlinks',
- 'title' => t('Related links'),
- 'description' => t('Configure related links settings.'),
- 'callback' => 'drupal_get_form',
- 'callback arguments' => array('_relatedlinks_settings_form'),
- 'access' => user_access('administer related links')
- );
- $items[] = array(
- 'path' => 'admin/settings/relatedlinks/configure',
- 'title' => t('Settings'),
- 'callback' => 'drupal_get_form',
- 'callback arguments' => array('_relatedlinks_settings_form'),
- 'access' => user_access('administer related links'),
+ $items['admin/settings/relatedlinks'] = array(
+ 'title' => 'Related links',
+ 'description' => 'Configure related links settings.',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('_relatedlinks_settings_form'),
+ 'access arguments' => array('administer related links')
+ );
+ $items['admin/settings/relatedlinks/configure'] = array(
+ 'title' => 'Settings',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('_relatedlinks_settings_form'),
+ 'access arguments' => array('administer related links'),
'type' => MENU_DEFAULT_LOCAL_TASK
);
- $items[] = array(
- 'path' => 'admin/settings/relatedlinks/discovered',
- 'title' => t('Discovered links'),
- 'callback' => 'drupal_get_form',
- 'callback arguments' => array('_relatedlinks_discovered_settings_form'),
- 'access' => user_access('administer related links'),
+ $items['admin/settings/relatedlinks/discovered'] = array(
+ 'title' => 'Discovered links',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('_relatedlinks_discovered_settings_form'),
+ 'access arguments' => array('administer related links'),
'type' => MENU_LOCAL_TASK,
'weight' => 2
);
- }
- else {
- $items[] = array(
- 'path' => 'relatedlinks/autocomplete',
- 'callback' => 'relatedlinks_autocomplete',
- 'callback arguments' => array(arg(2)),
- 'access' => user_access('add related links'),
+ $items['relatedlinks/autocomplete'] = array(
+ 'page callback' => 'relatedlinks_autocomplete',
+ 'page arguments' => array(arg(2)),
+ 'access arguments' => array('add related links'),
'type' => MENU_LOCAL_TASK,
'weight' => 2
);
- }
return $items;
}
@@ -133,7 +125,7 @@ function relatedlinks_block($op = 'list'
// This is only valid if we're looking at a node now.
if (arg(0) == 'node' && is_numeric(arg(1))) {
$block = array();
- $node = node_load(arg(1));
+ $node = menu_get_object();
// Only display if node type is associated with this module.
if ($node && in_array($node->type, variable_get('relatedlinks_node_types', _relatedlinks_node_get_types(TRUE)))) {
$link_types = variable_get('relatedlinks_types', _relatedlinks_get_type_defaults());
@@ -249,7 +241,7 @@ function relatedlinks_nodeapi(&$node, $o
/**
* Implementation of hook_form_alter().
*/
-function relatedlinks_form_alter($form_id, &$form) {
+function relatedlinks_form_alter(&$form, $form_state, $form_id) {
if (user_access('add related links') && isset($form['type']) &&
($form['type']['#value'] .'_node_form' == $form_id)) {
@@ -283,7 +275,7 @@ function relatedlinks_form_alter($form_i
$form['relatedlinks_fieldset']['#collapsed'] = empty($relatedlinks);
- $path = '/'. drupal_get_path('module', 'relatedlinks');
+ $path = './'. drupal_get_path('module', 'relatedlinks');
drupal_add_js($path .'/relatedlinks.js');
drupal_add_css($path .'/relatedlinks.css');
drupal_add_js(array(
@@ -326,7 +318,7 @@ function relatedlinks_cron() {
if (_relatedlinks_get_type_property(RELATEDLINKS_DISCOVERED, 'enabled') && $discovered['cron']) {
$updated = time() - ($discovered['cron'] * 24 * 60 * 60);
// Select all stale nodes.
- $result = db_query("SELECT nid FROM {relatedlinks_tracker} WHERE updated != 0 AND updated < %d", $updated);
+ $result = db_query("SELECT nid FROM {relatedlinks_tracker} WHERE updated <> 0 AND updated < %d", $updated);
$nids = array();
while ($node = db_fetch_array($result)) {
$nids[] = $node['nid'];
@@ -426,14 +418,14 @@ Related links blocks and forms will only
/**
* Process relatedlinks settings form submissions.
*/
-function _relatedlinks_settings_form_submit($form_id, $form_values) {
+function _relatedlinks_settings_form_submit($form, &$form_state) {
// Sort on 'weight'.
- uasort($form_values['relatedlinks_types'], '_relatedlinks_compare');
+ uasort($form_state['values']['relatedlinks_types'], '_relatedlinks_compare');
// Store the entire relatedlinks_types table.
- variable_set('relatedlinks_types', $form_values['relatedlinks_types']);
+ variable_set('relatedlinks_types', $form_state['values']['relatedlinks_types']);
- $node_types = array_filter($form_values['relatedlinks_node_types']);
+ $node_types = array_filter($form_state['values']['relatedlinks_node_types']);
variable_set('relatedlinks_node_types', array_keys($node_types));
// Block table needs to be reset.
@@ -471,6 +463,7 @@ criteria are applied to results derived
$criteria = array(
'taxonomy' => t('Results based on taxonomy terms (if enabled).'),
'search' => t('Results from the search module (if enabled).'),
+ 'language' => t('Results based on language of nodes.'),
'node' => t('Prefer results of the same content type.'),
'user' => t('Prefer results from the same author.'),
'date' => t('Prefer newer results.'),
@@ -549,7 +542,7 @@ that they be periodically purged and rec
$form['relatedlinks_discovered']['cron']['refresh'] = array(
'#type' => 'select',
'#title' => t('Automatically update discovered links older than'),
- '#description' => t('This feature requires cron to be enabled.', array('!cron' => url('admin/logs/status'))),
+ '#description' => t('This feature requires cron to be enabled.', array('!cron' => url('admin/reports/status'))),
'#parents' => array('relatedlinks_discovered', 'cron'),
'#options' => array(
1 => t('One day'),
@@ -569,17 +562,17 @@ that they be periodically purged and rec
/**
* Validate discovered links settings form submissions.
*/
-function _relatedlinks_discovered_settings_form_validate($form_id, $form_values) {
- if ($form_values['relatedlinks_discovered']['ranking']['taxonomy'] === $form_values['relatedlinks_discovered']['ranking']['search'] &&
- $form_values['relatedlinks_discovered']['ranking']['taxonomy'] === 0) {
+function _relatedlinks_discovered_settings_form_validate($form, &$form_state) {
+ if ($form_state['values']['relatedlinks_discovered']['ranking']['taxonomy'] === $form_state['values']['relatedlinks_discovered']['ranking']['search'] &&
+ $form_state['values']['relatedlinks_discovered']['ranking']['taxonomy'] === 0) {
$error = t('The discovered links feature requires either taxonomy or search results to be enabled.');
form_set_error('relatedlinks_discovered][criteria][ranking', $error);
}
- if ($form_values['relatedlinks_discovered']['ranking']['taxonomy'] === 'taxonomy' && !module_exists('taxonomy')) {
+ if ($form_state['values']['relatedlinks_discovered']['ranking']['taxonomy'] === 'taxonomy' && !module_exists('taxonomy')) {
form_set_error('relatedlinks_discovered][criteria][ranking', t('The taxonomy module needs to be enabled for taxonomy results to be calculated.'));
}
- if ($form_values['relatedlinks_discovered']['ranking']['search'] === 'search' && !module_exists('search')) {
+ if ($form_state['values']['relatedlinks_discovered']['ranking']['search'] === 'search' && !module_exists('search')) {
form_set_error('relatedlinks_discovered][criteria][ranking', t('The search module needs to be enabled for taxonomy results to be calculated.'));
}
}
@@ -587,16 +580,16 @@ function _relatedlinks_discovered_settin
/**
* Process discovered links settings form submissions.
*/
-function _relatedlinks_discovered_settings_form_submit($form_id, $form_values) {
+function _relatedlinks_discovered_settings_form_submit($form, &$form_state) {
$indices = array('ranking', 'vocabularies', 'node_types');
foreach ($indices as $index) {
- if (isset($form_values['relatedlinks_discovered'][$index])) {
- $form_values['relatedlinks_discovered'][$index] = array_filter($form_values['relatedlinks_discovered'][$index]);
- $form_values['relatedlinks_discovered'][$index] = array_keys($form_values['relatedlinks_discovered'][$index]);
+ if (isset($form_state['values']['relatedlinks_discovered'][$index])) {
+ $form_state['values']['relatedlinks_discovered'][$index] = array_filter($form_state['values']['relatedlinks_discovered'][$index]);
+ $form_state['values']['relatedlinks_discovered'][$index] = array_keys($form_state['values']['relatedlinks_discovered'][$index]);
}
}
- variable_set('relatedlinks_discovered', $form_values['relatedlinks_discovered']);
+ variable_set('relatedlinks_discovered', $form_state['values']['relatedlinks_discovered']);
}
/**
@@ -948,12 +941,14 @@ function _relatedlinks_get_discovered_li
$user = in_array('user', $discovered['ranking']) ? $node->uid : FALSE;
$date = in_array('date', $discovered['ranking']) ? TRUE : FALSE;
$comments = in_array('comments', $discovered['ranking']) ? TRUE : FALSE;
+ $lang = in_array('language', $discovered['ranking']) ? $node->language : FALSE;
$taxonomy_links = $search_links = array();
if (module_exists('taxonomy') && in_array('taxonomy', $discovered['ranking'])) {
$vids = isset($discovered['vocabularies']) ? $discovered['vocabularies'] : array();
$tids = array_keys($node->taxonomy);
- $taxonomy_links = _relatedlinks_taxonomy_select_nodes($node->nid, $tids, $max, $vids, $node_types, $date, $user, $comments);
+
+ $taxonomy_links = _relatedlinks_taxonomy_select_nodes($node->nid, $tids, $max, $vids, $node_types, $date, $user, $comments, $lang);
}
if (module_exists('search') && in_array('search', $discovered['ranking'])) {
$search_links = _relatedlinks_search_select_nodes($node->nid, $keywords, $max, $node_types);
@@ -998,7 +993,7 @@ function _relatedlinks_get_discovered_li
* Handle term hierarchies (depth).
* Escape SQL input as an added precaution.
*/
-function _relatedlinks_taxonomy_select_nodes($nid, $tids, $limit, $vids, $node_types, $date, $comments) {
+function _relatedlinks_taxonomy_select_nodes($nid, $tids, $limit, $vids, $node_types, $date, $user, $comments, $lang) {
$links = array();
foreach ($tids as $index => $tid) {
@@ -1019,6 +1014,9 @@ function _relatedlinks_taxonomy_select_n
$where[] = 'n.status = 1';
$where[] = 'n.moderate = 0';
$where[] = 'n.nid != '. $nid;
+ if ($lang) {
+ $where[] = 'n.language = \'' . $lang . '\'';
+ }
$order[] = 'count DESC';
$order[] = 'sticky DESC';
@@ -1165,6 +1163,16 @@ function _relatedlinks_node_candidates($
}
/**
+ * Implementation of hook_theme().
+ */
+function relatedlinks_theme() {
+ return array(
+ 'relatedlinks_types_table' => array('form' => NULL),
+ 'relatedlinks' => array('arguments' => array('links' => array()))
+ );
+}
+
+/**
* Theme the related links configuration table.
*
* @param $form