configure_extensions.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559
  1. <?php // $Id: configure_homepage.php 9246 2006-09-25 13:24:53 +0000 (lun., 25 sept. 2006) bmol $
  2. /*
  3. ==============================================================================
  4. Dokeos - elearning and course management software
  5. Copyright (c) 2008 Dokeos SPRL
  6. For a full list of contributors, see "credits.txt".
  7. The full license can be read in "license.txt".
  8. This program is free software; you can redistribute it and/or
  9. modify it under the terms of the GNU General Public License
  10. as published by the Free Software Foundation; either version 2
  11. of the License, or (at your option) any later version.
  12. See the GNU General Public License for more details.
  13. Contact address: Dokeos, rue du Corbeau, 108, B-1030 Brussels, Belgium
  14. Mail: info@dokeos.com
  15. ==============================================================================
  16. */
  17. // name of the language file that needs to be included
  18. $language_file='admin';
  19. $cidReset=true;
  20. include('../inc/global.inc.php');
  21. $this_section=SECTION_PLATFORM_ADMIN;
  22. api_protect_admin_script();
  23. $interbreadcrumb[] = array ('url' => 'index.php', 'name' => get_lang('PlatformAdmin'));
  24. // Database Table Definitions
  25. $tbl_settings_current = Database::get_main_table(TABLE_MAIN_SETTINGS_CURRENT);
  26. $message = '';
  27. require api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php';
  28. if(isset($_POST['activeExtension'])){
  29. switch ($_POST['extension_code']){
  30. case 'visio' :
  31. $sql = 'UPDATE '.$tbl_settings_current.' SET
  32. selected_value="true"
  33. WHERE variable="service_visio"
  34. AND subkey="active"';
  35. $rs = api_sql_query($sql, __FILE__, __LINE__);
  36. if(Database::affected_rows()>0)
  37. {
  38. // select all the courses and insert the tool inside
  39. $sql = 'SELECT db_name FROM '.Database::get_main_table(TABLE_MAIN_COURSE);
  40. $rs = api_sql_query($sql, __FILE__, __LINE__);
  41. while($row = Database::fetch_array($rs)){
  42. if(!empty($_POST['visio_host']))
  43. {
  44. $tool_table = Database::get_course_table(TABLE_TOOL_LIST,$row['db_name']);
  45. $select = "SELECT id FROM $tool_table WHERE name='".TOOL_VISIO_CONFERENCE."'";
  46. $selectres = api_sql_query($select,__FILE__, __LINE__);
  47. if(Database::num_rows($selectres)<1)
  48. {
  49. $sql = 'INSERT INTO '.$tool_table.' SET
  50. name="'.TOOL_VISIO_CONFERENCE.'",
  51. link="conference/index.php?type=conference",
  52. image="visio.gif",
  53. visibility="1",
  54. admin="0",
  55. address="squaregrey.gif",
  56. target="_self",
  57. category="interaction"';
  58. api_sql_query($sql, __FILE__, __LINE__);
  59. }
  60. $select = "SELECT id FROM $tool_table WHERE name='".TOOL_VISIO_CLASSROOM."'";
  61. $selectres = api_sql_query($select,__FILE__, __LINE__);
  62. if(Database::num_rows($selectres)<1)
  63. {
  64. $sql = 'INSERT INTO '.$tool_table.' SET
  65. name="'.TOOL_VISIO_CLASSROOM.'",
  66. link="conference/index.php?type=classroom",
  67. image="visio.gif",
  68. visibility="1",
  69. admin="0",
  70. address="squaregrey.gif",
  71. target="_self",
  72. category="authoring"';
  73. api_sql_query($sql, __FILE__, __LINE__);
  74. }
  75. }
  76. }
  77. $message = get_lang('ServiceActivated');
  78. }
  79. $sql = 'UPDATE '.$tbl_settings_current.' SET
  80. selected_value="'.Database::escape_string($_POST['visio_host']).'"
  81. WHERE variable="service_visio"
  82. AND subkey="visio_host"';
  83. $rs = api_sql_query($sql, __FILE__, __LINE__);
  84. $sql = 'UPDATE '.$tbl_settings_current.' SET
  85. selected_value="'.Database::escape_string($_POST['visio_port']).'"
  86. WHERE variable="service_visio"
  87. AND subkey="visio_port"';
  88. $rs = api_sql_query($sql, __FILE__, __LINE__);
  89. $sql = 'UPDATE '.$tbl_settings_current.' SET
  90. selected_value="'.Database::escape_string($_POST['visio_pass']).'"
  91. WHERE variable="service_visio"
  92. AND subkey="visio_pass"';
  93. $rs = api_sql_query($sql, __FILE__, __LINE__);
  94. $sql = 'UPDATE '.$tbl_settings_current.' SET
  95. selected_value="'.($_POST['visio_use_rtmpt']=='true'?'true':'false').'"
  96. WHERE variable="service_visio"
  97. AND subkey="visio_use_rtmpt"';
  98. $rs = api_sql_query($sql, __FILE__, __LINE__);
  99. if(empty($message))
  100. {
  101. $message = get_lang('ServiceReconfigured');
  102. }
  103. break;
  104. case 'ppt2lp' :
  105. $sql = 'UPDATE '.$tbl_settings_current.' SET
  106. selected_value="true"
  107. WHERE variable="service_ppt2lp"
  108. AND subkey="active"';
  109. $rs = api_sql_query($sql, __FILE__, __LINE__);
  110. if(Database::affected_rows()>0){
  111. $message = get_lang('ServiceActivated');
  112. }
  113. $sql = 'UPDATE '.$tbl_settings_current.' SET
  114. selected_value="'.addslashes($_POST['host']).'"
  115. WHERE variable="service_ppt2lp"
  116. AND subkey="host"';
  117. api_sql_query($sql, __FILE__, __LINE__);
  118. $sql = 'UPDATE '.$tbl_settings_current.' SET
  119. selected_value="'.addslashes($_POST['port']).'"
  120. WHERE variable="service_ppt2lp"
  121. AND subkey="port"';
  122. api_sql_query($sql, __FILE__, __LINE__);
  123. $sql = 'UPDATE '.$tbl_settings_current.' SET
  124. selected_value="'.addslashes($_POST['ftp_password']).'"
  125. WHERE variable="service_ppt2lp"
  126. AND subkey="ftp_password"';
  127. api_sql_query($sql, __FILE__, __LINE__);
  128. $sql = 'UPDATE '.$tbl_settings_current.' SET
  129. selected_value="'.addslashes($_POST['user']).'"
  130. WHERE variable="service_ppt2lp"
  131. AND subkey="user"';
  132. api_sql_query($sql, __FILE__, __LINE__);
  133. $sql = 'UPDATE '.$tbl_settings_current.' SET
  134. selected_value="'.addslashes($_POST['path_to_lzx']).'"
  135. WHERE variable="service_ppt2lp"
  136. AND subkey="path_to_lzx"';
  137. api_sql_query($sql, __FILE__, __LINE__);
  138. $sql = 'UPDATE '.$tbl_settings_current.' SET
  139. selected_value="'.addslashes($_POST['size']).'"
  140. WHERE variable="service_ppt2lp"
  141. AND subkey="size"';
  142. api_sql_query($sql, __FILE__, __LINE__);
  143. break;
  144. }
  145. }
  146. $listActiveServices = array();
  147. // get the list of active services
  148. $sql = 'SELECT variable FROM '.$tbl_settings_current.' WHERE variable LIKE "service_%" AND subkey="active" and selected_value="true"';
  149. $rs = api_sql_query($sql, __FILE__, __LINE__);
  150. while($row = Database::fetch_array($rs)){
  151. $listActiveServices[] = $row['variable'];
  152. }
  153. $javascript_service_displayed = '';
  154. if(isset($_GET['display'])){
  155. $javascript_service_displayed = 'document.getElementById("extension_content_'.$_GET['display'].'").style.display = "block"';
  156. }
  157. // javascript to handle accordion behaviour
  158. $javascript_message = '';
  159. if(!empty($message)){
  160. $javascript_message =
  161. '
  162. document.getElementById("message").style.display = "block";
  163. var timer = setTimeout(hideMessage,5000);
  164. ';
  165. }
  166. $htmlHeadXtra[]= '
  167. <script type="text/javascript">
  168. var listeDiv;
  169. var extensionsHeader = new Array();
  170. var extensionsContent = new Array();
  171. window.onload = loadTables;
  172. function loadTables(){
  173. '.$javascript_message.'
  174. var listeDiv = document.getElementsByTagName("div");
  175. // fill extensionsHeader and extensionsContent
  176. for(var i=0 ; i < listeDiv.length ; i++){
  177. if(listeDiv[i].id.indexOf(\'extension_header\')!=-1){
  178. listeDiv[i].onclick = afficheContent;
  179. extensionsHeader.push(listeDiv[i]);
  180. }
  181. if(listeDiv[i].id.indexOf("extension_content")!=-1){
  182. extensionsContent.push(listeDiv[i]);
  183. }
  184. }
  185. '.$javascript_service_displayed.'
  186. }
  187. function hideMessage(){
  188. document.getElementById("message").style.display = "none";
  189. }
  190. function afficheContent(event){
  191. var id = this.id.replace("header","content");
  192. switch(document.getElementById(id).style.display){
  193. case "block" :
  194. document.getElementById(id).style.display = "none";
  195. break;
  196. case "none" :
  197. document.getElementById(id).style.display = "block";
  198. for(var i=0 ; i < extensionsContent.length ; i++){
  199. if(extensionsContent[i].id != id)
  200. extensionsContent[i].style.display = "none";
  201. }
  202. break;
  203. }
  204. }
  205. </script>';
  206. $nameTool = get_lang('ConfigureExtensions');
  207. Display::display_header($nameTool);
  208. ?>
  209. <div id="message" style="display: none">
  210. <?php
  211. if(!empty($message))
  212. Display::display_normal_message($message)
  213. ?>
  214. </div>
  215. <div id="content" align="center">
  216. <!-- INSTRUCTIONS TO ADD AN EXTENSION HERE
  217. - copy paste a "main_*" div
  218. - set the names of the subdiv to extension_header_yourextension and extension_content_yourextension
  219. - extension_content_yourextension is the hidden div where you have to put your form / activation process
  220. - extension_header_yourextension is the name of your extension
  221. - you do not need to add javascript to display / hide your divs
  222. - please fill free to improve the global display of the document
  223. -->
  224. <!-- VISIOCONFERENCE -->
  225. <div id="main_visio">
  226. <div id="extension_header_visio" class="accordion_header">
  227. <a href="#"><?php echo get_lang('Visioconf') ?></a>
  228. </div>
  229. <div id="extension_content_visio" style="display:none" class="accordion_content">
  230. <?php echo get_lang('VisioconfDescription') ?><br /><br />
  231. <table width="100%">
  232. <tr>
  233. <td align="center">
  234. <?php Display::display_icon('screenshot_conf.jpg', get_lang('Visioconf')); ?>
  235. </td>
  236. <!--td align="center" width="50%">
  237. <?php
  238. $form = new FormValidator('visio');
  239. $form -> addElement('text', 'visio_host', get_lang('VisioHost'));
  240. $form -> addElement('html','<br /><br />');
  241. $form -> addElement('text', 'visio_port', get_lang('VisioPort'));
  242. $form -> addElement('html','<br /><br />');
  243. $form -> addElement('text', 'visio_pass', get_lang('VisioPassword'));
  244. $form -> addElement('html','<br /><br />');
  245. $group = array();
  246. $group[] =& HTML_QuickForm::createElement('radio', 'visio_use_rtmpt',null,get_lang('Yes'),'true');
  247. $group[] =& HTML_QuickForm::createElement('radio', 'visio_use_rtmpt',null,get_lang('No'),'false');
  248. $form->addGroup($group, '', get_lang('VisioUseRtmptTitle').' ('.get_lang('VisioUseRtmptComment').')', '&nbsp;');
  249. //$form -> addElement('text', 'visio_is_web_rtmp', get_lang('VisioRTMPIsWeb'));
  250. //$form -> addElement('html','<br /><br />');
  251. $form -> addElement('hidden', 'extension_code', 'visio');
  252. $defaults = array();
  253. $renderer = $form -> defaultRenderer();
  254. $renderer -> setElementTemplate('<div style="text-align:left">{label}</div><div style="text-align:left">{element}</div>');
  255. $form -> addElement('html','<br /><br />');
  256. if(in_array('service_visio',$listActiveServices))
  257. {
  258. $sql = 'SELECT subkey, selected_value FROM '.$tbl_settings_current.'
  259. WHERE variable = "service_visio"';
  260. $rs = api_sql_query($sql, __FILE__, __LINE__);
  261. while($row = Database::fetch_array($rs,'ASSOC'))
  262. {
  263. $defaults[$row['subkey']] = $row['selected_value'];
  264. }
  265. $form -> addElement('style_submit_button', 'activeExtension', get_lang('ReconfigureExtension'),'class="save"');
  266. }
  267. else {
  268. $form -> addElement('style_submit_button', 'activeExtension', get_lang('ActivateExtension'),'class="save"');
  269. }
  270. $form -> setDefaults($defaults);
  271. $form -> display();
  272. ?>
  273. </td-->
  274. </tr>
  275. </table>
  276. </div>
  277. </div>
  278. <!-- PPT2LP -->
  279. <div id="main_ppt2lp">
  280. <div id="extension_header_ppt2lp" class="accordion_header">
  281. <a href="#"><?php echo get_lang('Ppt2lp') ?></a>
  282. </div>
  283. <div id="extension_content_ppt2lp" style="display:none" class="accordion_content">
  284. <?php echo get_lang('Ppt2lpDescription').' '.get_lang('Ppt2lpVoiceRecordingNeedsRed5') ?><br /><br />
  285. <table width="100%">
  286. <tr>
  287. <td valign="top" align="center">
  288. <?php Display::display_icon('screenshot_ppt2lp.jpg', get_lang('Ppt2lp')); ?>
  289. </td>
  290. <!--td align="center" width="50%">
  291. <form method="POST" action="<?php echo api_get_self(); ?>">
  292. <?php
  293. $form = new FormValidator('ppt2lp');
  294. $form -> addElement('text', 'host', get_lang('Host'));
  295. $form -> addElement('html','<br /><br />');
  296. $form -> addElement('text', 'port', get_lang('Port'));
  297. $form -> addElement('html','<br /><br />');
  298. $form -> addElement('text', 'user', get_lang('UserOnHost'));
  299. $form -> addElement('html','<br /><br />');
  300. $form -> addElement('text', 'ftp_password', get_lang('FtpPassword'));
  301. $form -> addElement('html','<br /><br />');
  302. $form -> addElement('text', 'path_to_lzx', get_lang('PathToLzx'));
  303. $form -> addElement('html','<br /><br />');
  304. $options = array(
  305. '540x405'=>'540x405',
  306. '640x480'=>'640x480',
  307. '720x540'=>'720x540',
  308. '800x600'=>'800x600',
  309. '1000x750'=>'1000x750'
  310. );
  311. $form -> addElement('select', 'size', get_lang('SlideSize'), $options);
  312. $form -> addElement('hidden', 'extension_code', 'ppt2lp');
  313. $defaults = array();
  314. $renderer = $form -> defaultRenderer();
  315. $renderer -> setElementTemplate('<div style="text-align:left">{label}</div><div style="text-align:left">{element}</div>');
  316. $form -> addElement('html','<br /><br />');
  317. if(in_array('service_ppt2lp',$listActiveServices))
  318. {
  319. $sql = 'SELECT subkey, selected_value FROM '.$tbl_settings_current.'
  320. WHERE variable = "service_ppt2lp"
  321. AND subkey <> "active"';
  322. $rs = api_sql_query($sql, __FILE__, __LINE__);
  323. while($row = Database::fetch_array($rs,'ASSOC'))
  324. {
  325. $defaults[$row['subkey']] = $row['selected_value'];
  326. }
  327. $form -> addElement('style_submit_button', 'activeExtension', get_lang('ReconfigureExtension'),'class="save"');
  328. }
  329. else {
  330. $defaults['host'] = 'localhost';
  331. $defaults['port'] = '2002';
  332. $defaults['size'] = '720x540';
  333. $form -> addElement('style_submit_button', 'activeExtension', get_lang('ActivateExtension'),'class="save"');
  334. }
  335. $form -> setDefaults($defaults);
  336. $form -> display();
  337. echo '<br />';
  338. ?>
  339. </form>
  340. </td-->
  341. </tr>
  342. </table>
  343. </div>
  344. </div>
  345. <?php
  346. /*
  347. <!-- EPHORUS -->
  348. <div id="main_ephorus">
  349. <div id="extension_header_ephorus" class="accordion_header">
  350. <a href="#"><?php echo get_lang('EphorusPlagiarismPrevention') ?></a>
  351. </div>
  352. <div id="extension_content_ephorus" style="display:none;padding:0;width:780px;" class="accordion_content">
  353. <table width="100%" cellpadding="0" cellspacing="0">
  354. <tr>
  355. <td align="center">
  356. <TABLE style="WIDTH: 750px" cellSpacing="0" cellPadding="0" align="middle" border="0">
  357. <TBODY>
  358. <TR>
  359. <TD>
  360. <TABLE style="WIDTH: 475px" cellSpacing="0" cellPadding="0" border="0">
  361. <TBODY>
  362. <TR>
  363. <TD>
  364. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  365. <a title="http://www.ephorus.com/dokeos_activate.html" href="http://www.ephorus.com/dokeos_activate.html" target="_blank">
  366. <?php Display::display_icon('ephorus.gif','Ephorus'); ?>
  367. </a>
  368. </TD>
  369. <TD>
  370. <P align=center>
  371. <FONT color="#669966" size="3"><?php echo get_lang('EphorusLeadersInAntiPlagiarism') ?></FONT>
  372. </P>
  373. </TD>
  374. </TR>
  375. </TBODY>
  376. </TABLE>
  377. </TD>
  378. </TR>
  379. <TR>
  380. <TD>
  381. <P>
  382. <TABLE style="WIDTH: 85%" cellSpacing="0" cellPadding="0" border="0">
  383. <TBODY>
  384. <TR>
  385. <TD width="50">&nbsp;
  386. </TD>
  387. <TD>
  388. <P>
  389. <?php echo get_lang('EphorusDescription') ?>
  390. </P>
  391. <P>
  392. <A title="http://www.ephorus.nl/demo_account_en.html" href="http://www.ephorus.nl/demo_account_en.html" target="_blank"><?php echo get_lang('EphorusClickHereForADemoAccount') ?></A>
  393. </P>
  394. <P>
  395. <A title="http://www.ephorus.nl:80/dokeos_activate.html" href="http://www.ephorus.nl/dokeos_activate.html" target="_blank"><?php echo get_lang('EphorusClickHereForInformationsAndPrices') ?></A>.
  396. </P>
  397. </TD>
  398. </TR>
  399. </TBODY>
  400. </TABLE>
  401. </P>
  402. </TD>
  403. </TR>
  404. </TBODY>
  405. </TABLE>
  406. </td>
  407. </tr>
  408. </table>
  409. </div>
  410. </div>
  411. */
  412. ?>
  413. <!-- SEARCH -->
  414. <div id="main_search">
  415. <div id="extension_header_search" class="accordion_header">
  416. <a href="#"><?php echo get_lang('SearchEngine') ?></a>
  417. </div>
  418. <div id="extension_content_search" style="display:none" class="accordion_content">
  419. <?php echo get_lang('SearchEngineDescription') ?><br /><br />
  420. <table width="100%">
  421. <tr>
  422. <td width="50%">
  423. <?php Display::display_icon('screenshot_search.jpg', get_lang('SearchEngine')); ?>
  424. </td>
  425. <td align="center" width="50%">
  426. <form method="POST" action="<?php echo api_get_self(); ?>">
  427. <input type="hidden" name="extension_code" value="search" />
  428. <button type="submit" class="save" name="activeExtension" value="<?php echo get_lang('ActivateExtension') ?>" ><?php echo get_lang('ActivateExtension') ?></button>
  429. </form>
  430. </td>
  431. </tr>
  432. </table>
  433. </div>
  434. </div>
  435. <!-- SERVER STATS -->
  436. <div id="main_serverstats">
  437. <div id="extension_header_serverstats" class="accordion_header">
  438. <a href="#"><?php echo get_lang('ServerStatistics') ?></a>
  439. </div>
  440. <div id="extension_content_serverstats" style="display:none" class="accordion_content">
  441. <?php echo get_lang('ServerStatisticsDescription') ?><br /><br />
  442. <table width="100%">
  443. <tr>
  444. <td width="50%">
  445. <?php Display::display_icon('screenshot_serverstats.jpg', get_lang('ServerStatistics')); ?>
  446. </td>
  447. <td align="center" width="50%">
  448. <form method="POST" action="<?php echo api_get_self(); ?>">
  449. <input type="hidden" name="extension_code" value="serverstats" />
  450. <button type="submit" class="save" name="activeExtension" value="<?php echo get_lang('ActivateExtension') ?>" ><?php echo get_lang('ActivateExtension') ?></button>
  451. </form>
  452. </td>
  453. </tr>
  454. </table>
  455. </div>
  456. </div>
  457. <!-- BANDWIDTH STATS -->
  458. <div id="main_bandwidthstats">
  459. <div id="extension_header_bandwidthstats" class="accordion_header">
  460. <a href="#"><?php echo get_lang('BandWidthStatistics') ?></a>
  461. </div>
  462. <div id="extension_content_bandwidthstats" style="display:none" class="accordion_content">
  463. <?php echo get_lang('BandWidthStatisticsDescription') ?><br /><br />
  464. <table width="100%">
  465. <tr>
  466. <td width="50%">
  467. <?php Display::display_icon('screenshot_bandwidth.jpg', get_lang('BandWidthStatistics')); ?>
  468. </td>
  469. <td align="center" width="50%">
  470. <form method="POST" action="<?php echo api_get_self(); ?>">
  471. <input type="hidden" name="extension_code" value="bandwidthstats" />
  472. <button type="submit" class="save" name="activeExtension" value="<?php echo get_lang('ActivateExtension') ?>" ><?php echo get_lang('ActivateExtension') ?></button>
  473. </form>
  474. </td>
  475. </tr>
  476. </table>
  477. </div>
  478. </div>
  479. </div><!-- /content -->
  480. <?php
  481. /*
  482. ==============================================================================
  483. FOOTER
  484. ==============================================================================
  485. */
  486. Display::display_footer();
  487. ?>