syncparams.controller.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. api_protect_admin_script();
  4. $sql = "SELECT * FROM vchamilo";
  5. $result = Database::query($sql);
  6. $vchamilos = Database::store_result($result);
  7. // propagate in all known vchamilos a setting
  8. if ($action == 'syncall') {
  9. $keys = array_keys($_REQUEST);
  10. $selection = preg_grep('/sel_.*/', $keys);
  11. foreach ($selection as $selkey) {
  12. $settingId = str_replace('sel_', '', $selkey);
  13. if (!is_numeric($settingId)) {
  14. continue;
  15. }
  16. $value = $_REQUEST[$selkey];
  17. $setting = api_get_settings_params_simple(array('id' => $settingId));
  18. $params = array(
  19. 'title' => $setting['title'],
  20. 'variable' => $setting['variable'],
  21. 'subkey' => $setting['subkey'],
  22. 'category' => $setting['category'],
  23. 'access_url' => $setting['access_url'],
  24. );
  25. foreach ($vchamilos as $vcid => $chm) {
  26. $table = $chm['main_database'].".settings_current ";
  27. $sql = " SELECT * FROM $table
  28. WHERE
  29. variable = '{{$setting['variable']}}' AND
  30. access_url = '{$setting['access_url']}'
  31. ";
  32. $result = Database::query($sql);
  33. if (Database::num_rows($result)) {
  34. $sql = "UPDATE $table SET
  35. selected_value = '$value'
  36. WHERE id = $settingId";
  37. Database::query($sql);
  38. }
  39. //$DB->set_field('settings_current', 'selected_value', $value, $params, 'id', $chm->main_database);
  40. }
  41. }
  42. }
  43. if ($action == 'syncthis') {
  44. $settingId = isset($_GET['settingid']) ? $_GET['settingid'] : '';
  45. if (is_numeric($settingId)) {
  46. $delifempty = isset($_REQUEST['del']) ? $_REQUEST['del'] : '';
  47. $value = $_REQUEST['value'];
  48. // Getting the local setting record.
  49. $setting = api_get_settings_params_simple(array('id' => $settingId));
  50. $params = array(
  51. 'access_url_changeable' => $setting['access_url_changeable'],
  52. 'title' => $setting['title'],
  53. 'variable' => $setting['variable'],
  54. 'subkey' => $setting['subkey'],
  55. 'category' => $setting['category'],
  56. 'type' => $setting['type'],
  57. 'comment' => $setting['comment'],
  58. 'access_url' => $setting['access_url'],
  59. );
  60. $errors = '';
  61. foreach ($vchamilos as $vcid => $chm) {
  62. $table = $chm['main_database'].".settings_current";
  63. if ($delifempty && empty($value)) {
  64. $sql = "DELETE FROM $table
  65. WHERE
  66. selected_value = '$value' AND
  67. variable = '{{$setting['variable']}}' AND
  68. access_url = '{$setting['access_url']}'
  69. ";
  70. Database::query($sql);
  71. //$res = $DB->delete_records('settings_current', $params, $chm->main_database);
  72. $case = "delete";
  73. } else {
  74. $sql = " SELECT * FROM $table
  75. WHERE
  76. variable = '".$setting['variable']."' AND
  77. access_url = '{$setting['access_url']}'
  78. ";
  79. $result = Database::query($sql);
  80. if (Database::num_rows($result)) {
  81. $sql = "UPDATE $table SET
  82. selected_value = '$value'
  83. WHERE id = $settingId";
  84. Database::query($sql);
  85. } else {
  86. Database::insert($table, $params, true);
  87. }
  88. }
  89. }
  90. return $errors;
  91. } else {
  92. return "Bad ID. Non numeric";
  93. }
  94. }
  95. return 0;