Newer
Older
// $Id$
require_once(drupal_get_path('module', 'gallery') .'/gallery_base.inc');
// Default variable values
define('GALLERY_IMAGEBLOCK_SIZE_METHOD_DEFAULT', 'maxsize');
define('GALLERY_IMAGEBLOCK_SIZE_DEFAULT', 150);
define('GALLERY_GRID_SIZE_METHOD_DEFAULT', 'maxsize');
define('GALLERY_GRID_SIZE_DEFAULT', 90);
define('GALLERY_SEARCH_SIZE_METHOD_DEFAULT', 'maxsize');
define('GALLERY_SEARCH_SIZE_DEFAULT', 150);
define('GALLERY_FILTER_MAXSIZE_DEFAULT', 150);
define('GALLERY_FILTER_EXACTSIZE_DEFAULT', '');
* Implementation of hook_perm().
*/
function gallery_perm() {
return array('administer gallery settings', 'access gallery', 'access standalone g2image');
}
/**
* Implementation of hook_theme().
*/
function gallery_theme() {
return array(
'gallery_module_status_message' => array(
'arguments' => array('status' => NULL),
),
'gallery_severity_message' => array(
'arguments' => array('severity' => NULL),
),
'gallery_plugin_status_message' => array(
'arguments' => array('status' => NULL, 'invert' => FALSE),
),
'gallery_severity_status_message' => array(
'arguments' => array('severity' => NULL, 'status' => NULL, 'full_msg' => FALSE, 'invert' => FALSE),
),
'gallery_g2image_textarea_link' => array(
'arguments' => array('element' => NULL, 'link' => NULL),
),
'gallery_report' => array(
'arguments' => array('report' => FALSE),
),
'gallery_block_image_block' => array(
'arguments' => array('content' => NULL, 'class' => NULL),
),
'gallery_block_grid_block' => array(
'arguments' => array('images' => NULL, 'num_cols' => NULL, 'class' => NULL),
),
'gallery_search_item' => array(
'arguments' => array('item' => NULL),
)
);
}
/**
* Implementation of hook_init().
// Include CSS
drupal_add_css(drupal_get_path('module', 'gallery') .'/gallery.css');
drupal_add_css(drupal_get_path('module', 'gallery') .'/gallery_filter.css');
// Switch theme for gallery pages
if (arg(0) == variable_get('gallery_base', 'gallery') && (($theme = variable_get('gallery_page_theme', NULL)) != 'default')) {
$custom_theme = $theme;
init_theme();
}
}
/**
* Implementation of hook_menu().
*/
function gallery_menu() {
$gallery_valid = variable_get('gallery_valid', 0);
if ($gallery_valid) {
$items[variable_get('gallery_base', 'gallery')] = array(
'title' => 'Gallery',
'description' => 'Visit your embedded Gallery2.',
'access callback' => 'user_access',
'access arguments' => array('access gallery'),
'page callback' => variable_get('gallery_page_callback', 'gallery_page')
}
// Settings / General administration
$items['admin/settings/gallery'] = array(
'title' => 'Gallery settings',
'description' => 'Configure settings for embedding Gallery2 into Drupal.',
'access callback' => 'user_access',
'access arguments' => array('administer gallery settings'),
'file' => $gallery_valid ? 'gallery_settings.inc' : 'gallery_install.inc',
'page callback' => 'drupal_get_form',
'page arguments' => $gallery_valid ? array('_gallery_settings_general') : array('_gallery_install')
);
$items['admin/settings/gallery/install'] = array(
'title' => 'Install',
'access callback' => 'user_access',
'access arguments' => array('administer gallery settings'),
'file' => 'gallery_install.inc',
'page callback' => 'drupal_get_form',
'page arguments' => $gallery_valid ? array('_gallery_install_status') : array('_gallery_install'),
'type' => $gallery_valid ? MENU_LOCAL_TASK : MENU_DEFAULT_LOCAL_TASK,
'weight' => 0
);
if ($gallery_valid) {
$items['admin/settings/gallery/general'] = array(
'title' => 'General',
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => 1
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
$items['admin/settings/gallery/filter'] = array(
'title' => 'Filter',
'access callback' => 'user_access',
'access arguments' => array('administer gallery settings'),
'file' => 'gallery_settings.inc',
'page callback' => 'drupal_get_form',
'page arguments' => array('_gallery_settings_filter'),
'type' => MENU_LOCAL_TASK,
'weight' => 2
);
$items['admin/settings/gallery/g2image'] = array(
'title' => 'G2Image',
'access callback' => 'user_access',
'access arguments' => array('administer gallery settings'),
'file' => 'gallery_settings.inc',
'page callback' => 'drupal_get_form',
'page arguments' => array('_gallery_settings_g2image'),
'type' => MENU_LOCAL_TASK,
'weight' => 3
);
if (module_exists('search')) {
$items['admin/settings/gallery/search'] = array(
'title' => 'Search',
'access callback' => 'user_access',
'access arguments' => array('administer gallery settings'),
'file' => 'gallery_settings.inc',
'page callback' => 'drupal_get_form',
'page arguments' => array('_gallery_settings_search'),
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
$items['admin/settings/gallery/report'] = array(
'access callback' => 'user_access',
'access arguments' => array('administer site configuration'),
'file' => 'gallery_report.inc',
'page callback' => '_gallery_report',
'page arguments' => array(FALSE),
'type' => MENU_CALLBACK
);
$items['admin/settings/gallery/report/download'] = array(
'access callback' => 'user_access',
'access arguments' => array('administer site configuration'),
'file' => 'gallery_report.inc',
'page callback' => '_gallery_report',
'page arguments' => array(TRUE),
'type' => MENU_CALLBACK
);
// User administration
$items['admin/user/gallery'] = array(
'title' => 'Gallery users',
'description' => 'Gallery2 user integration and synchronization.',
'access callback' => 'user_access',
'access arguments' => array('administer users'),
'file' => 'gallery_user_admin.inc',
'page callback' => '_gallery_user_users'
);
$items['admin/user/gallery/users'] = array(
'title' => 'User Status',
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => 0
);
$items['admin/user/gallery/advanced'] = array(
'title' => 'Advanced Sync',
'access callback' => 'user_access',
'access arguments' => array('administer users'),
'file' => 'gallery_user_admin.inc',
'page callback' => 'drupal_get_form',
'page arguments' => array('_gallery_user_advanced'),
'type' => MENU_LOCAL_TASK,
'weight' => 1
);
$items['admin/user/gallery/settings'] = array(
'title' => 'User Settings',
'access callback' => 'gallery_admin_access',
'access arguments' => array(array('administer users', 'administer gallery settings')),
'file' => 'gallery_user_admin.inc',
'page callback' => 'drupal_get_form',
'page arguments' => array('_gallery_user_settings'),
'type' => MENU_LOCAL_TASK,
'weight' => 2
);
$items['admin/user/gallery/users/sync/%'] = array(
'access callback' => 'user_access',
'access arguments' => array('administer users'),
'file' => 'gallery_user_admin.inc',
'page callback' => '_gallery_user_users_sync',
'page arguments' => array(5),
'type' => MENU_CALLBACK
);
* Function gallery_admin_access().
function gallery_admin_access($perms) {
foreach ($perms as $perm) {
if (!user_access($perm)) {
return FALSE;
}
}
function gallery_help($section) {
require_once(drupal_get_path('module', 'gallery') .'/gallery_help.inc');
return _gallery_help($section);
* Function gallery_auth_validate().
* (authenticate user against G2 directly)
function gallery_auth_validate($form, &$form_state) {
$username = $form_state['values']['name'];
$password = trim($form_state['values']['pass']);
// Is the user allowed to login?
list($ret, $disabled) = GalleryCoreApi::isDisabledUsername($username);
if (!$ret && !$disabled) {
// Load G2 user to get the hashed password
list($ret, $g2_user) = GalleryCoreApi::fetchUserByUsername($username);
if (!$ret) {
// Authenticate the G2 user
if (GalleryUtilities::isCorrectPassword($password, $g2_user->hashedPassword)) {
// Does this user exist in Drupal, then override password
// (so that next time the user can be authenticated directly)
if ($user = user_load(array('name' => $username, 'status' => 1))) {
user_save($user, array('pass' => $password));
return TRUE;
}
}
}
}
}
return FALSE;
* Implementation of hook_user().
function gallery_user($op, &$edit, &$user, $category = NULL) {
require_once(drupal_get_path('module', 'gallery') .'/gallery_user.inc');
case 'login':
gallery_login();
break;
case 'logout':
gallery_logout();
break;
case 'view':
return gallery_user_view($user);
case 'insert':
return gallery_user_insert($edit, drupal_clone($user));
case 'update':
return gallery_user_update($edit, drupal_clone($user));
case 'delete':
return gallery_user_delete($user);
/**
* Implementation of hook_search().
*/
function gallery_search($op = 'search', $keys = NULL) {
require_once(drupal_get_path('module', 'gallery') .'/gallery_search.inc');
return _gallery_search($op, $keys);
}
* Implementation of hook_search_item().
* (override how to display the item)
*/
function gallery_search_page($results) {
require_once(drupal_get_path('module', 'gallery') .'/gallery_search.inc');
return _gallery_search_page($results);
* Implementation of hook_form_alter().
function gallery_form_alter(&$form, $form_state, $form_id) {
// Trigger groups sync if Drupal roles are added/modified
if (($form_id == 'user_admin_role') || ($form_id == 'user_admin_new_role')) {
require_once(drupal_get_path('module', 'gallery') .'/gallery_groups.inc');
$form['#submit'][] = '_gallery_groups_submit';
else if ($form_id == 'search_form' && arg(1) == 'gallery' && variable_get('gallery_search_advanced', 1) && user_access('access gallery')) {
require_once(drupal_get_path('module', 'gallery') .'/gallery_search.inc');
_gallery_search_form($form);
}
// Add _validate() handler for external authentication
else if ($form_id == 'user_login_block' || $form_id == 'user_login') {
$form['#validate'][] = 'gallery_auth_validate';
* Implementation of hook_filter().
function gallery_filter($op, $delta = 0, $format = -1, $text = '') {
require_once(drupal_get_path('module', 'gallery') .'/gallery_filter.inc');
switch ($op) {
case 'list' :
return array(0 => t('Gallery2 filter'));
case 'description' :
return t('Allow users to easily reference Gallery2 items from nodes.');
case 'process' :
return gallery_filter_process($text);
return !variable_get('gallery_filter_can_cache', TRUE);
default:
return $text;
}
* Implementation of hook_filter_tips().
function gallery_filter_tips($delta = 0, $format = -1, $long = FALSE) {
require_once(drupal_get_path('module', 'gallery') .'/gallery_help.inc');
return $long ? gallery_filter_long_tip_translated() : gallery_filter_short_tip_translated();
* Implementation of hook_elements().
*/
function gallery_elements() {
$type['textarea'] = array('#process' => array('gallery_g2image_textarea'));
/**
* Function gallery_g2image_textarea().
* (add image link underneath textareas)
*/
function gallery_g2image_textarea($element) {
require_once(drupal_get_path('module', 'gallery') .'/gallery_g2image.inc');
if (_gallery_g2image_page_match() && !strstr($_GET['q'], 'gallery')
&& (variable_get('gallery_g2image_mode', 'disabled') == 'standalone')
&& (user_access('access standalone g2image'))) {
gallery_g2image_add_js();
$output = theme('gallery_g2image_textarea_link', $element, $link);
$element['#suffix'] .= $output;
* Implementation of hook_block().
function gallery_block($op = 'list', $delta = 0, $edit = array()) {
require_once(drupal_get_path('module', 'gallery') .'/gallery_block.inc');
if (variable_get('gallery_valid', 0)) {
return _gallery_block($op, $delta, $edit);
}
* Function gallery_page().
* (main gallery display page)
*/
function gallery_page() {
// Turn off sidebar
if (variable_get('gallery_move_sidebar_to_block', 1)) {
GalleryCapabilities::set('showSidebarBlocks', FALSE);
}
$result = gallery_handle_request();
if ($result && !$result['isDone']) {
// Allow modules to alter the page
drupal_alter('gallery_page', $result, array());
gallery_set_head($result['headHtml'], TRUE);
// Add pathbar. See http://gallery.menalto.com/node/33447
if (isset($result['themeData'])) {
$breadcrumb = array(l(t('Home'), ''));
// Some themes (eg hybrid) do not set $result['themeData']['parents']
if ($result['themeData']['parents']) {
foreach ($result['themeData']['parents'] as $parent) {
$parent_title = $parent['title'];
// Simple strip of BBCode (italic, bold)
$parent_title = str_replace(
array('[i]', '[/i]', '[b]', '[/b]'),
array('<i>', '</i>', '<strong>', '</strong>'),
$parent_title
);
$parent_title = str_replace('[/i]', '</i>', $parent_title);
// Still does not generate a clean url for /gallery (uses index.php?q=gallery)
$link = gallery_generate_url(array('itemId' => $parent['id']), FALSE);
// TODO (#154507 + i18n-rewrite): $link = TRUE ? str_replace('?q=gallery', 'gallery', $link) : $link;
$breadcrumb[] = l($parent_title, $link);
}
drupal_set_breadcrumb($breadcrumb);
}
// Hack to get the admin sidebar
if (variable_get('gallery_move_admin_sidebar_to_block', 0)) {
if (preg_match("/^(.*<td id=\"gsSidebarCol\">)(.*?)(<\/td>.*?)$/s", $result['bodyHtml'], $match)) {
// New body
$result['bodyHtml'] = $match[1] . $match[3];
// Insert admin sidebar in $result['sidebarBlocksHtml']
if (empty($result['sidebarBlocksHtml'][1])) {
$result['sidebarBlocksHtml'][1] = $match[2];
else {
$result['sidebarBlocksHtml'][] = $match[2];
}
}
}
// Store the sidebar info in a global variable for use in the gallery navigation block
$GLOBALS['gallery_sidebar'] = $result['sidebarBlocksHtml'];
return $result['bodyHtml'];
* Implementation of hook_xmlsitemap_links().
* (define additional links to add to the site map)
*/
function gallery_xmlsitemap_links($type = NULL, $excludes = array()) {
if (($type != 'xml') || !variable_get('gallery_enable_sitemap', 1) || !_gallery_init(TRUE)) {
list($ret, $view) = GalleryView::loadView('sitemap.Sitemap');
if ($ret) {
gallery_error(t('Error loading the Gallery2 Sitemap. Make sure the \'Sitemap\' plugin is enabled in Gallery2.'), $ret);
return;
list($ret, $root) = GalleryCoreApi::getDefaultAlbumId();
gallery_error(t('Error calling getDefaultAlbumId()'), $ret);
return;
// Get the sitemap from Gallery2
ob_start();
$ret = $view->renderSitemap($root);
$g2_sitemap = ob_get_contents();
ob_end_clean();
if ($ret) {
gallery_error(t('Error getting sitemap from Gallery2.'), $ret);
return;
}