Increased capabilities of plugins by adding the possibility to have checkbox-type settings - refs #4796

skala
Yannick Warnier 14 years ago
parent f6845c0405
commit ec17e2408a
  1. 31
      main/inc/lib/plugin.class.php
  2. 24
      main/inc/lib/plugin.lib.php

@ -287,11 +287,29 @@ class Plugin {
if (!empty($this->course_settings)) {
foreach ($this->course_settings as $setting) {
$variable = Database::escape_string($setting['name']);
$sql = "SELECT value FROM $t_course WHERE c_id = $course_id AND variable = '$variable' ";
$result = Database::query($sql);
if (!Database::num_rows($result)) {
$sql_course = "INSERT INTO $t_course (c_id, variable, value, category, subkey) VALUES ($course_id, '$variable','', 'plugins', '$plugin_name')";
$r = Database::query($sql_course);
$value ='';
if (isset($setting['init_value'])) {
$value = Database::escape_string($setting['init_value']);
}
$type = 'textfield';
if (isset($setting['type'])) {
$type = Database::escape_string($setting['type']);
}
if (isset($setting['group'])) {
$group = Database::escape_string($setting['group']);
$sql = "SELECT value FROM $t_course WHERE c_id = $course_id AND variable = '$group' AND subkey = '$variable' ";
$result = Database::query($sql);
if (!Database::num_rows($result)) {
$sql_course = "INSERT INTO $t_course (c_id, variable, subkey, value, category, type) VALUES ($course_id, '$group', '$variable', '$value', 'plugins', '$type')";
$r = Database::query($sql_course);
}
} else {
$sql = "SELECT value FROM $t_course WHERE c_id = $course_id AND variable = '$variable' ";
$result = Database::query($sql);
if (!Database::num_rows($result)) {
$sql_course = "INSERT INTO $t_course (c_id, variable, value, category, subkey, type) VALUES ($course_id, '$variable','$value', 'plugins', '$plugin_name', '$type')";
$r = Database::query($sql_course);
}
}
}
}
@ -328,6 +346,9 @@ class Plugin {
if (!empty($this->course_settings)) {
foreach ($this->course_settings as $setting) {
$variable = Database::escape_string($setting['name']);
if (!empty($setting['group'])) {
$variable = Database::escape_string($setting['group']);
}
$sql_course = "DELETE FROM $t_course WHERE c_id = $course_id AND variable = '$variable'";
Database::query($sql_course);
}

@ -332,8 +332,22 @@ class AppPlugin {
//$icon = null;
$form->addElement('html', '<div><h3>'.$icon.' '.Security::remove_XSS($plugin_info['title']).'</h3><div>');
$groups = array();
foreach ($obj->course_settings as $setting) {
$form->addElement($setting['type'], $setting['name'], $obj->get_lang($setting['name']));
if ($setting['type'] != 'checkbox') {
$form->addElement($setting['type'], $setting['name'], $obj->get_lang($setting['name']));
} else {
//if (isset($groups[$setting['group']])) {
$element = & $form->createElement($setting['type'], $setting['name'], '', $obj->get_lang($setting['name']));
if ($setting['init_value'] == 1) {
$element->setChecked(true);
}
$groups[$setting['group']][] = $element;
//}
}
}
foreach ($groups as $k => $v) {
$form->addGroup($groups[$k], $k, array($obj->get_lang($k)));
}
$form->addElement('style_submit_button', null, get_lang('SaveSettings'), 'class="save"');
$form->addElement('html', '</div></div>');
@ -398,7 +412,13 @@ class AppPlugin {
$obj = $plugin_info['plugin_class']::create();
if (is_array($obj->course_settings)) {
foreach ($obj->course_settings as $item) {
$settings[] = $item['name'];
if (isset($item['group'])) {
if (!in_array($item['group'],$settings)) {
$settings[] = $item['group'];
}
} else {
$settings[] = $item['name'];
}
}
}
unset($obj); unset($plugin_info);

Loading…
Cancel
Save