function nodequeue_link in Nodequeue 5
Same name and namespace in other branches
- 5.2 nodequeue.module \nodequeue_link()
- 6.2 nodequeue.module \nodequeue_link()
Implementation of hook_link
File
- ./
nodequeue.module, line 614
Code
function nodequeue_link($type, $node, $teaser) {
if ($type == 'node' && variable_get('nodequeue_links', FALSE) && user_access('manipulate queues')) {
$roles_join = $roles_where = '';
$roles = array();
if (!user_access('manipulate all queues')) {
$roles_join = "INNER JOIN {nodequeue_roles} nr ON nr.qid = nq.qid ";
$roles = array_keys((array) $user->roles) + array(
DRUPAL_AUTHENTICATED_RID,
);
$role_args = array_fill(0, count($roles), '%d');
$roles_where .= "AND nr.rid IN (" . implode(',', $role_args) . ")";
}
$sql = 'SELECT nq.qid, nq.link, nq.link_remove, nqn.position FROM {nodequeue_queue} nq ' . 'INNER JOIN {nodequeue_types} nt ON nt.qid = nq.qid ' . $roles_join . 'LEFT JOIN {nodequeue_nodes} nqn ON nqn.qid = nq.qid AND nqn.nid = %d ' . "WHERE link <> '' AND nt.type = '%s' " . $roles_where;
$result = db_query($sql, array_merge(array(
$node->nid,
$node->type,
), $roles));
$links = array();
while ($queue = db_fetch_object($result)) {
if (!$queue->position) {
$links['nodequeue-ajax-toggle-' . $queue->qid] = array(
'title' => $queue->link,
'href' => "node/{$node->nid}/nodequeue/add/{$queue->qid}",
'attributes' => array(
'class' => 'nodequeue-ajax-toggle',
),
'query' => drupal_get_destination(),
);
}
else {
if ($queue->link_remove) {
$links['nodequeue-ajax-toggle-' . $queue->qid] = array(
'title' => $queue->link_remove,
'href' => "node/{$node->nid}/nodequeue/remove/{$queue->qid}",
'attributes' => array(
'class' => 'nodequeue-ajax-toggle',
),
'query' => drupal_get_destination(),
);
}
}
}
drupal_add_js(drupal_get_path('module', 'nodequeue') . '/nodequeue.js');
}
return $links;
}