function _ad_check_installation in Advertisement 6
Same name and namespace in other branches
- 6.3 ad.module \_ad_check_installation()
- 6.2 ad.module \_ad_check_installation()
- 7 ad.module \_ad_check_installation()
4 calls to _ad_check_installation()
- ad in ./
ad.module - Use this function to display ads from a specified group.
- ad_admin_configure_settings in ./
ad.admin.inc - Display a form for the ad module settings.
- ad_admin_groups_list in ./
ad.admin.inc - ad_admin_list in ./
ad.admin.inc - Build default ad administration page.
File
- ./
ad.module, line 1328 - An advertising system for Drupal powered websites.
Code
function _ad_check_installation() {
// Verify serve.php exists and is readable.
$adserve = variable_get('adserve', '');
$adserveinc = variable_get('adserveinc', '');
if (!file_exists($adserve)) {
// The serve.php file should be in the same directory as the ad.module.
$adserve = drupal_get_path('module', 'ad') . '/serve.php';
variable_set('adserve', $adserve);
}
if (!is_readable($adserve)) {
variable_set('adserve', '');
drupal_set_message(t('Failed to read the required file %filename. Please make the file readable by the webserver process. No ads can be displayed until this problem is resolved.', array(
'%filename' => $adserve,
)), 'error');
}
if (!file_exists($adserveinc)) {
// The adserve.inc file should be in the same directory as the ad.module.
$adserveinc = drupal_get_path('module', 'ad') . '/adserve.inc';
variable_set('adserveinc', $adserveinc);
}
if (!is_readable($adserveinc)) {
variable_set('adserveinc', '');
drupal_set_message(t('Failed to read the required file %filename. Please make the file readable by the webserver process. No ads can be displayed until this problem is resolved.', array(
'%filename' => $adserveinc,
)), 'error');
}
// Validate vid in vocabulary table.
$vid = db_result(db_query("SELECT vid FROM {vocabulary} WHERE module = 'ad'"));
if ($vid != variable_get('ad_group_vid', '')) {
drupal_set_message(t('Invalid vocabulary defined for advertisements, attempting to auto-fix.'), 'error');
if ($vid) {
db_query("DELETE FROM {vocabulary_node_types} WHERE vid = %d OR type = 'ad'", variable_get('ad_group_vid', ''));
variable_set('ad_group_vid_restore', variable_get('ad_group_vid', ''));
}
variable_del('ad_group_vid');
}
else {
// Validate vid in vocabulary_node_types table.
$result = db_query("SELECT vid FROM {vocabulary_node_types} WHERE type = 'ad'");
$found = FALSE;
while ($vocab = db_fetch_object($result)) {
if ($vocab->vid == variable_get('ad_group_vid', '')) {
$found = TRUE;
}
}
if (!$found) {
drupal_set_message(t('Missing vocabulary node type for advertisements, attempting to auto-fix.'), 'error');
db_query("DELETE FROM {vocabulary_node_types} WHERE vid = %d OR type = 'ad'", variable_get('ad_group_vid', ''));
db_query("DELETE FROM {vocabulary} WHERE vid = %d", variable_get('ad_group_vid', ''));
variable_set('ad_group_vid_restore', variable_get('ad_group_vid', ''));
variable_del('ad_group_vid');
}
}
_ad_get_vid();
// Preserve old ad groups, if any.
if (($old = variable_get('ad_group_vid_restore', '')) && ($vid = variable_get('ad_group_vid', ''))) {
drupal_set_message(t('Restoring orphaned ad group configuration.'));
db_query('UPDATE {term_data} SET vid = %d WHERE vid = %d', $vid, $old);
variable_set('ad_group_vid_restore', '');
}
$rid = db_result(db_query_range("SELECT rid FROM {permission} WHERE perm LIKE '%%show advertisements%%'", 1));
if (!$rid) {
drupal_set_message(t('Be sure to enable "!show" permissions for all roles that you wish to see advertisements.', array(
'!show' => l(t('show advertisements'), 'admin/user/permissions'),
)));
}
// Allow modules to define an action to take each time an ad is served.
// When modules define 'adserve_select' or 'adserve_filter', they must set
// the 'function' and 'path' parameters. The 'weight' parameter can
// optionally be set.
// function: the function to call when serving an add
// path: the path to the include file where $function is defined
// Modules can define actions that happen when advertisements are served.
// Currently support actions are:
// - init_text (display content before displaying ads) // TODO
// - select (alter which ads are selected to be displayed) // TODO
// - filter (filter selected ads before they are displayed) // TODO
// - exit_text (display content after displaying ads) // TODO
$hooks = array(
'init_text',
'select',
'filter',
'exit_text',
);
foreach ($hooks as $hook) {
$adserve_actions = module_invoke_all('adapi', "adserve_{$hook}", array());
$actions = array();
foreach ($adserve_actions as $name => $action) {
if (is_numeric($action['weight'])) {
$weight = $action['weight'];
}
else {
// weight is an optional, defaults to 0
$weight = $action['weight'] = 0;
}
$actions[$weight . '.' . $name] = $action;
$actions[$weight . '.' . $name]['name'] = $name;
}
// order actions by weight (multiple same-weight actions sorted by alpha)
ksort($actions);
variable_set("adserve_{$hook}", serialize($actions));
}
module_invoke_all('adapi', 'check_install', array());
}