widgets.inc in Widgets 6
Implementaion of custom functions for Widgets module.
File
widgets.incView source
<?php
/**
* @file
* Implementaion of custom functions for Widgets module.
*/
/**
* Get all widgets.
*
* @param $regions
* Restrict widgets to only this region.
* @return
* List of widgets.
*/
function widgets_get_widgets($region = NULL) {
$options = array();
// Get widget types.
$types = variable_get('widgets_types', NULL);
if (is_null($types)) {
return $options;
}
$enabled_types = array();
foreach ($types as $key => $value) {
if ($value != '0') {
$enabled_types[] = "'{$key}'";
}
}
$enabled_types = implode(',', $enabled_types);
if ($results = db_query("SELECT n.nid, n.title, w.weight FROM {node} n LEFT JOIN {widgets} w ON w.widget_nid = n.nid WHERE n.type IN (" . $enabled_types . ") AND n.status = 1 ORDER BY w.weight ASC")) {
while ($row = db_fetch_array($results)) {
$options[$row['nid']] = $row['title'];
}
}
return $options;
}
/**
* Get selected widgets for a node.
*
* @param $nid
* Node ID.
* @return
* Array containing selected widget ID's.
*/
function widgets_get_selected($nid) {
$selected = array();
if ($results = db_query('SELECT * FROM {widgets} WHERE nid = %d ORDER BY weight ASC', $nid)) {
while ($row = db_fetch_array($results)) {
$selected[] = $row['widget_nid'];
}
}
return $selected;
}
/**
* Get default set of widgets for node type.
*
* @param $type
* The node type name.
*/
function widgets_get_default($type) {
return variable_get("widgets_default_{$type}", array());
}
/**
* Save association between node and widgets.
*
* @param $node
* Node object.
*/
function widgets_write_record($node) {
db_query('DELETE FROM {widgets} WHERE nid = %d', $node->nid);
db_query('DELETE FROM {widgets_status} WHERE nid = %d', $node->nid);
$widgets = array_values($node->selected_widgets);
for ($i = 0; $i < sizeof($widgets); $i++) {
$data = (object) array(
'nid' => $node->nid,
'widget_nid' => $widgets[$i],
'weight' => $i,
);
drupal_write_record('widgets', $data);
}
// Write status record.
$disabled = !$node->disable_widgets ? 0 : 1;
$default = !$node->default_widgets ? 0 : 1;
drupal_write_record('widgets_status', $data = (object) array(
'nid' => $node->nid,
'disabled' => $disabled,
'use_default' => $default,
));
}
/**
* Add javascript and stylesheets required for the multiselect widget.
*
* @param $element_id
* DOM ID of the element to transform to a multiselect.
*/
function widgets_add_multiselect($element_id) {
// Styles.
drupal_add_css(drupal_get_path('module', 'jquery_ui') . '/jquery.ui/themes/base/ui.all.css');
drupal_add_css(drupal_get_path('module', 'widgets') . '/js/multiselect/css/ui.multiselect.css');
drupal_add_css(drupal_get_path('module', 'widgets') . '/css/widgets.css');
// jQuery UI.
jquery_ui_add(array(
'ui.sortable',
'ui.draggable',
));
// Multiselect.
drupal_add_js(drupal_get_path('module', 'widgets') . '/js/form.js');
drupal_add_js(drupal_get_path('module', 'widgets') . '/js/multiselect/js/ui.multiselect.js');
drupal_add_js('Drupal.behaviors.attachWidgets = function(){$("#' . $element_id . '").multiselect(); widgetsStatus(); }', 'inline');
}
Functions
Name![]() |
Description |
---|---|
widgets_add_multiselect | Add javascript and stylesheets required for the multiselect widget. |
widgets_get_default | Get default set of widgets for node type. |
widgets_get_selected | Get selected widgets for a node. |
widgets_get_widgets | Get all widgets. |
widgets_write_record | Save association between node and widgets. |