View source
<?php
function adds_power_menu_properties() {
return array(
'adds_skyscraper' => array(
'file' => 'adds.inc',
'path' => drupal_get_path('module', 'power_menu') . '/properties',
'admin_submit' => 'adds_power_menu_admin_submit',
'property_name' => 'adds_skyscraper',
'property_load' => 'adds_skyscraper_power_menu_load_property',
'description' => 'adds add, that is being outputted as variable to the page.tpl.php',
'scope' => 'page',
),
'adds_leaderboard' => array(
'file' => 'adds.inc',
'path' => drupal_get_path('module', 'power_menu') . '/properties',
'admin_submit' => 'adds_power_menu_admin_submit',
'property_name' => 'adds_leaderboard',
'property_load' => 'adds_leaderboard_power_menu_load_property',
'description' => 'adds add, that is being outputted as variable to the page.tpl.php',
'scope' => 'page',
),
'adds_rectangle' => array(
'file' => 'adds.inc',
'path' => drupal_get_path('module', 'power_menu') . '/properties',
'admin_submit' => 'adds_power_menu_admin_submit',
'property_name' => 'adds_rectangle',
'property_load' => 'adds_rectangle_power_menu_load_property',
'description' => 'adds add, that is being outputted as variable to the page.tpl.php',
'scope' => 'block',
'title' => t('Add'),
),
);
}
function adds_skyscraper_power_menu_load_property($mlid, $admin = FALSE) {
return _adds_power_menu_load_property($mlid, $admin, 'adds_skyscraper');
}
function adds_leaderboard_power_menu_load_property($mlid, $admin = FALSE) {
return _adds_power_menu_load_property($mlid, $admin, 'adds_leaderboard');
}
function adds_rectangle_power_menu_load_property($mlid, $admin = FALSE) {
return _adds_power_menu_load_property($mlid, $admin, 'adds_rectangle');
}
function _adds_power_menu_load_property($mlid, $admin = FALSE, $type) {
if (is_object($mlid)) {
$mlid = $mlid->mlid;
}
$res = db_query("SELECT pmp.value, ml.plid FROM {power_menu_properties} pmp LEFT JOIN {menu_links} ml ON pmp.mlid = ml.mlid WHERE pmp.mlid = :mlid AND pmp.property_name = :property_name", array(
':mlid' => $mlid,
':property_name' => $type,
))
->fetch();
if (empty($res)) {
return NULL;
}
if ($res->value == '' && $res->plid > 0 && !$admin) {
$res = adds_rectangle_power_menu_load_property($res->plid, $admin, $type);
}
elseif ($admin) {
return $res->value;
}
elseif ($res->value == '') {
$res = db_query("SELECT pmp.value FROM {power_menu_properties} pmp WHERE pmp.mlid = :mlid AND pmp.property_name = :property_name", array(
':mlid' => 0,
':property_name' => $type,
))
->fetch();
}
if (module_exists('php')) {
return php_eval($res->value);
}
}
function adds_power_menu_admin_submit($form, &$form_state) {
if (empty($form_state['values']['mlid']) || !($mlid = check_plain($form_state['values']['mlid']))) {
$mlid = 0;
}
$props = adds_power_menu_properties();
db_delete('power_menu_properties')
->condition('mlid', $mlid)
->execute();
foreach ($props as $prop) {
$db = array(
'mlid' => $mlid,
'property_name' => $prop['property_name'],
'value' => $form_state['values']['properties'][$prop['property_name']],
);
drupal_write_record('power_menu_properties', $db);
}
}