index.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404
  1. <?php // $Id: index.php 13993 2007-12-15 05:19:04Z yannoo $
  2. /*
  3. ==============================================================================
  4. Dokeos - elearning and course management software
  5. Copyright (c) 2004 Dokeos S.A.
  6. Copyright (c) 2003 Ghent University (UGent)
  7. Copyright (c) 2001 Universite catholique de Louvain (UCL)
  8. Copyright (c) Olivier Brouckaert
  9. For a full list of contributors, see "credits.txt".
  10. The full license can be read in "license.txt".
  11. This program is free software; you can redistribute it and/or
  12. modify it under the terms of the GNU General Public License
  13. as published by the Free Software Foundation; either version 2
  14. of the License, or (at your option) any later version.
  15. See the GNU General Public License for more details.
  16. Contact: Dokeos, 181 rue Royale, B-1000 Brussels, Belgium, info@dokeos.com
  17. ==============================================================================
  18. */
  19. /**
  20. ==============================================================================
  21. * Index of the admin tools
  22. *
  23. * @package dokeos.admin
  24. ==============================================================================
  25. */
  26. // name of the language file that needs to be included <br />
  27. $language_file=array('admin','tracking');
  28. // resetting the course id
  29. $cidReset=true;
  30. // including some necessary dokeos files
  31. require('../inc/global.inc.php');
  32. require_once(api_get_path(LIBRARY_PATH).'security.lib.php');
  33. // setting the section (for the tabs)
  34. $this_section=SECTION_PLATFORM_ADMIN;
  35. // Access restrictions
  36. api_protect_admin_script();
  37. $nameTools = get_lang('PlatformAdmin');
  38. // setting breadcrumbs
  39. $interbreadcrumb[] = array('url' => 'index.php', 'name' => $nameTools);
  40. // setting the name of the tool
  41. $tool_name=get_lang("PlatformAdmin");
  42. // Displaying the header
  43. Display::display_header($nameTools);
  44. if(is_dir(api_get_path(SYS_CODE_PATH).'install/') && is_readable(api_get_path(SYS_CODE_PATH).'install/index.php'))
  45. {
  46. Display::display_normal_message(get_lang('InstallDirAccessibleSecurityThreat'));
  47. }
  48. /*
  49. ==============================================================================
  50. ACTION HANDLING
  51. ==============================================================================
  52. */
  53. if ($_POST['Register'])
  54. {
  55. register_site();
  56. Display :: display_confirmation_message(get_lang('VersionCheckEnabled'));
  57. }
  58. /*
  59. ==============================================================================
  60. MAIN SECTION
  61. ==============================================================================
  62. */
  63. $keyword_url = Security::remove_XSS($_GET['keyword']);
  64. ?>
  65. <div class="admin_section">
  66. <h4><img src="../img/members.gif" border="0" style="vertical-align: middle;" alt="" /> <?php echo ucfirst(get_lang('Users')); ?></h4>
  67. <ul><li style="list-style-type:none"><form method="get" action="user_list.php">
  68. <input type="text" name="keyword" value="<?php echo $keyword_url; ?>"/>
  69. <input type="submit" value="<?php echo get_lang('Search'); ?>"/>
  70. </form></li>
  71. <li>
  72. <a href="user_list.php?search=advanced"><?php echo get_lang('AdvancedSearch'); ?></a>
  73. </li>
  74. <li><a href="user_list.php"><?php echo get_lang('UserList') ?></a></li>
  75. <li><a href="user_add.php"><?php echo get_lang('AddUsers') ?></a></li>
  76. <li><a href="user_export.php"><?php echo get_lang('ExportUserListXMLCSV') ?></a></li>
  77. <li><a href="user_import.php"><?php echo get_lang('ImportUserListXMLCSV') ?></a></li>
  78. </ul>
  79. </div>
  80. <div class="admin_section">
  81. <h4><img src="../img/course.gif" border="0" style="vertical-align: middle;" alt="" /> <?php echo ucfirst(get_lang('Courses')); ?></h4>
  82. <ul><li style="list-style-type:none"><form method="get" action="course_list.php">
  83. <input type="text" name="keyword" value="<?php echo $keyword_url; ?>"/>
  84. <input type="submit" value="<?php echo get_lang('Search'); ?>"/>
  85. </form></li>
  86. <li>
  87. <a href="course_list.php?search=advanced"><?php echo get_lang('AdvancedSearch'); ?></a>
  88. </li>
  89. <li><a href="course_list.php"><?php echo get_lang('CourseList') ?></a></li>
  90. <li><a href="course_add.php"><?php echo get_lang('AddCourse') ?></a></li>
  91. <li><a href="course_import.php"><?php echo get_lang('AddCourse').' CSV'; ?></a></li>
  92. <!--<li><a href="course_virtual.php"><?php //echo get_lang('AdminManageVirtualCourses') ?></a></li>-->
  93. <li><a href="course_category.php"><?php echo get_lang("AdminCategories"); ?></a></li>
  94. <li><a href="subscribe_class2course.php"><?php echo get_lang('AddClassesToACourse'); ?></a></li>
  95. <li><a href="subscribe_user2course.php"><?php echo get_lang('AddUsersToACourse'); ?></a></li>
  96. <li><a href="course_user_import.php"><?php echo get_lang('AddUsersToACourse').' CSV'; ?></a></li>
  97. </ul>
  98. </div>
  99. <div class="admin_section">
  100. <h4>
  101. <img src="../img/settings.gif" border="0" style="vertical-align: middle;" alt="" />
  102. <?php echo ucfirst(get_lang('Platform')); ?>
  103. </h4>
  104. <ul>
  105. <li><a href="settings.php"><?php echo get_lang('DokeosConfigSettings') ?></a></li>
  106. <li><a href="system_announcements.php"><?php echo get_lang('SystemAnnouncements') ?></a></li>
  107. <li><a href="languages.php"><?php echo get_lang('Languages'); ?></a></li>
  108. <li><a href="configure_homepage.php"><?php echo get_lang('ConfigureHomePage'); ?></a></li>
  109. <li><a href="statistics/index.php"><?php echo get_lang('ToolName'); ?> </a></li>
  110. <?php if(!empty($phpMyAdminPath)): ?>
  111. <li><a href="<?php echo $phpMyAdminPath; ?>" target="_blank"><?php echo get_lang("AdminDatabases"); ?></a><br />(<?php echo get_lang("DBManagementOnlyForServerAdmin"); ?>)</li>
  112. <?php endif; ?>
  113. <li><a href="configure_extensions.php"><?php echo get_lang('ConfigureExtensions'); ?></a></li>
  114. <ul>
  115. <li><a href="configure_extensions.php?display=visio"><?php echo get_lang('Visioconf'); ?></a></li>
  116. <li><a href="configure_extensions.php?display=ppt2lp"><?php echo get_lang('Ppt2lp'); ?></a></li>
  117. <li><a href="configure_extensions.php?display=ephorus"><?php echo get_lang('EphorusPlagiarismPrevention'); ?></a></li>
  118. <li><a href="configure_extensions.php?display=search"><?php echo get_lang('SearchEngine'); ?></a></li>
  119. <li><a href="configure_extensions.php?display=serverstats"><?php echo get_lang('ServerStatistics'); ?></a></li>
  120. <li><a href="configure_extensions.php?display=bandwidthstats"><?php echo get_lang('BandWidthStatistics'); ?></a></li>
  121. </ul>
  122. </ul>
  123. </div>
  124. <?php
  125. if(api_get_setting('use_session_mode')=='true')
  126. {
  127. ?>
  128. <div class="admin_section">
  129. <h4>
  130. <img src="../img/agenda.gif" border="0" align="absmiddle" alt="" />
  131. <?php echo get_lang('Sessions') ?>
  132. </h4>
  133. <ul>
  134. <li style="list-style-type:none"><form method="POST" action="session_list.php">
  135. <input type="text" name="keyword" value="<?php echo $keyword_url; ?>"/>
  136. <input type="submit" value="<?php echo get_lang('Search'); ?>"/>
  137. </form>
  138. </li>
  139. <li><a href="session_list.php"><?php echo get_lang('ListSession') ?></a></li>
  140. <li><a href="session_add.php"><?php echo get_lang('AddSession') ?></a></li>
  141. <li><a href="session_import.php"><?php echo get_lang('ImportSessionListXMLCSV') ?></a></li>
  142. <li><a href="session_export.php"><?php echo get_lang('ExportSessionListXMLCSV') ?></a></li>
  143. </ul>
  144. </div>
  145. <?php
  146. }
  147. else
  148. {
  149. ?>
  150. <div class="admin_section">
  151. <h4><img src="../img/group.gif" border="0" style="vertical-align: middle;" alt="" /> <?php echo ucfirst(get_lang('AdminClasses')); ?></h4>
  152. <ul>
  153. <li style="list-style-type:none"><form method="get" action="class_list.php">
  154. <input type="text" name="keyword" value="<?php echo $keyword_url; ?>"/>
  155. <input type="submit" value="<?php echo get_lang('Search'); ?>"/>
  156. </form>
  157. </li>
  158. <li><a href="class_list.php"><?php echo get_lang('ClassList'); ?></a></li>
  159. <li><a href="class_add.php"><?php echo get_lang('AddClasses'); ?></a></li>
  160. <li><a href="class_import.php"><?php echo get_lang('ImportClassListCSV'); ?></a></li>
  161. <li><a href="class_user_import.php"><?php echo get_lang('AddUsersToAClass'); ?> CSV</a></li>
  162. </ul>
  163. </div>
  164. <?php
  165. }
  166. ?>
  167. <div class="admin_section">
  168. <h4>
  169. <img src="../img/dokeos.gif" border="0" style="vertical-align: middle;" alt="" />
  170. <?php echo "dokeos.com"; ?>
  171. </h4>
  172. <ul>
  173. <li><a href="http://www.dokeos.com/"><?php echo get_lang('DokeosHomepage'); ?></a></li>
  174. <li><a href="http://www.dokeos.com/forum/"><?php echo get_lang('DokeosForum'); ?></a></li>
  175. <li><a href="http://www.dokeos.com/community_add_portal.php?url=<?php echo $_configuration['root_web']; ?>&amp;name=<?php echo urlencode(get_setting('siteName'));?>&amp;organisation=<?php echo urlencode(get_setting('InstitutionUrl'));?>&amp;manager=<?php echo urlencode(get_setting('administratorSurname')." ".get_setting('administratorName'));?>&amp;manageremail=<?php echo urlencode(get_setting('emailAdministrator'));?>"><?php echo get_lang('RegisterYourPortal'); ?></a></li>
  176. <li><a href="http://www.dokeos.com/extensions/"><?php echo get_lang('DokeosExtensions'); ?></a></li>
  177. <li>
  178. <?php
  179. //try to display a maximum before we check the dokeos version and all that
  180. session_write_close(); //close session to avoid blocking concurrent access
  181. flush(); //send data to client as much as allowed by the web server
  182. ob_flush();
  183. echo get_lang('VersionCheck').': '.version_check();
  184. ?>
  185. </li>
  186. </ul>
  187. </div>
  188. <?php
  189. /**
  190. * Displays either the text for the registration or the message that the installation is (not) up to date
  191. *
  192. * @return string html code
  193. * @author Patrick Cool <patrick.cool@UGent.be>, Ghent University
  194. * @version august 2006
  195. * @todo have a 6monthly re-registration
  196. */
  197. function version_check()
  198. {
  199. // The site has not been registered yet
  200. if (get_setting('registered')=='false' OR get_setting('registered') == false )
  201. {
  202. $return = '';
  203. $return .= '<form action="'.api_get_self().'" id="VersionCheck" name="VersionCheck" method="post">';
  204. $return .= get_lang('VersionCheckExplanation');
  205. $return .= '<input type="checkbox" name="donotlistcampus" value="1" id="checkbox" /> Do not display my campus in the list of Dokeos platforms';
  206. $return .= '<input type="submit" name="Register" value="Enable Version Check" id="register" />';
  207. $return .= '</form>';
  208. }
  209. else
  210. {
  211. // The site has been registered already but is seriously out of date (registration date + 15552000 seconds)
  212. if ((get_setting('registered') + 15552000) > mktime())
  213. {
  214. $return = 'It has been a long time since about your campus has been updated on Dokeos.com';
  215. $return .= '<form action="'.api_get_self().'" id="VersionCheck" name="VersionCheck" method="post">';
  216. $return .= '<input type="submit" name="Register" value="Enable Version Check" id="register" />';
  217. $return .= '</form>';
  218. }
  219. else
  220. {
  221. $return = 'site registered. ';
  222. $return .= check_dokeos_version2();
  223. }
  224. }
  225. return $return;
  226. }
  227. /**
  228. * This setting changes the registration status for the campus
  229. *
  230. * @author Patrick Cool <patrick.cool@UGent.be>, Ghent University
  231. * @version August 2006
  232. *
  233. * @todo the $_settings should be reloaded here. => write api function for this and use this in global.inc.php also.
  234. */
  235. function register_site()
  236. {
  237. // Database Table Definitions
  238. $tbl_settings = Database :: get_main_table(TABLE_MAIN_SETTINGS_CURRENT);
  239. // the SQL statment
  240. $sql = "UPDATE $tbl_settings SET selected_value='true' WHERE variable='registered'";
  241. $result = api_sql_query($sql);
  242. //
  243. if ($_POST['donotlistcampus'])
  244. {
  245. $sql = "UPDATE $tbl_settings SET selected_value='true' WHERE variable='donotlistcampus'";
  246. $result = api_sql_query($sql);
  247. }
  248. // reload the settings
  249. }
  250. /**
  251. * Check if the current installation is up to date
  252. * The code is borrowed from phpBB and slighlty modified
  253. * @author The phpBB Group <support@phpbb.com> (the code)
  254. * @author Patrick Cool <patrick.cool@UGent.be>, Ghent University (the modifications)
  255. * @copyright (C) 2001 The phpBB Group
  256. * @return language string with some layout (color)
  257. */
  258. function check_dokeos_version2()
  259. {
  260. global $_configuration;
  261. $dokeos_version = $_configuration['dokeos_version']; // the dokeos version of your installation
  262. if (ini_get('allow_url_fopen')==1)
  263. {
  264. // the number of courses
  265. $sql="SELECT code FROM ".Database::get_main_table(TABLE_MAIN_COURSE);
  266. $result=api_sql_query($sql);
  267. $number_of_courses = Database::num_rows($result);
  268. // the number of users
  269. $sql="SELECT user_id FROM ".Database::get_main_table(TABLE_MAIN_USER);
  270. $result=api_sql_query($sql);
  271. $number_of_users = Database::num_rows($result);
  272. $version_url= 'http://www.dokeos.com/version.php?url='.urlencode(api_get_path(WEB_PATH)).'&campus='.urlencode(api_get_setting('siteName')).'&contact='.urlencode(get_setting('emailAdministrator')).'&version='.urlencode($dokeos_version).'&numberofcourses='.urlencode($number_of_courses).'&numberofusers='.urlencode($number_of_users).'&donotlistcampus='.get_setting('donotlistcampus');
  273. $handle=@fopen($version_url,'r');
  274. $version_info=@fread($handle, 1024);
  275. if (trim($dokeos_version)<>trim($version_info))
  276. {
  277. $output='<br /><span style="color:red">' . get_lang('YourVersionNotUpToDate') . '. '.get_lang('LatestVersionIs').' <b>Dokeos '.$version_info.'</b>. '.get_lang('YourVersionIs').' <b>Dokeos '.$dokeos_version. '</b>. '.str_replace('http://www.dokeos.com','<a href="http://www.dokeos.com">http://www.dokeos.com</a>',get_lang('PleaseVisitDokeos')).'</span>';
  278. }
  279. else
  280. {
  281. $output = '<br /><span style="color:green">'.get_lang('VersionUpToDate').': Dokeos '.$version_info.'</span>';
  282. }
  283. }
  284. else
  285. {
  286. $output = '<span style="color:red">' . get_lang('AllowurlfopenIsSetToOff') . '</span>';
  287. }
  288. return $output;
  289. }
  290. /**
  291. * Check if the current installation is up to date
  292. * The code is borrowed from phpBB and slighlty modified
  293. * @author The phpBB Group <support@phpbb.com> (the code)
  294. * @author Patrick Cool <patrick.cool@UGent.be>, Ghent University (the modifications)
  295. * @copyright (C) 2001 The phpBB Group
  296. * @return language string with some layout (color)
  297. * @deprecated For some reason this code adds a 9 in front and a 0 at the end of what normally gets displayed by
  298. the http://www.dokeos.com/version.php page (instead of version.txt) . That's why I chose to use fopen which requires however
  299. that allow_url_open is set to true
  300. */
  301. function check_dokeos_version()
  302. {
  303. global $_configuration; // the dokeos version of your installation
  304. $dokeos_version = $_configuration['dokeos_version'];
  305. if ($fsock = @fsockopen('www.dokeos.com', 80, $errno, $errstr))
  306. {
  307. @fputs($fsock, "GET /version.php HTTP/1.1\r\n");
  308. @fputs($fsock, "HOST: www.dokeos.com\r\n");
  309. @fputs($fsock, "Connection: close\r\n\r\n");
  310. $get_info = false;
  311. while (!@feof($fsock))
  312. {
  313. if ($get_info)
  314. {
  315. $version_info .= @fread($fsock, 1024);
  316. }
  317. else
  318. {
  319. if (@fgets($fsock, 1024) == "\r\n")
  320. {
  321. $get_info = true;
  322. }
  323. }
  324. }
  325. @fclose($fsock);
  326. if (trim($dokeos_version)<>trim($version_info))
  327. {
  328. $output='<span style="color:red">' . get_lang('YourVersionNotUpToDate') . '. '.get_lang('LatestVersionIs').' <b>Dokeos '.$version_info.'</b>. '.get_lang('YourVersionIs').' <b>Dokeos '.$dokeos_version. '</b>. '.str_replace('http://www.dokeos.com','<a href="http://www.dokeos.com">http://www.dokeos.com</a>',get_lang('PleaseVisitDokeos')).'</span>';
  329. }
  330. else
  331. {
  332. $output = '<span style="color:green">'.get_lang('VersionUpToDate').': Dokeos '.$version_info.'</span>';
  333. }
  334. }
  335. else
  336. {
  337. if ($errstr)
  338. {
  339. $output = '<span style="color:red">' . get_lang('ConnectSocketError') . ': '. $errstr . '</span>';
  340. }
  341. else
  342. {
  343. $output = '<span>' . get_lang('SocketFunctionsDisabled') . '</span>';
  344. }
  345. }
  346. return $output;
  347. }
  348. /*
  349. ==============================================================================
  350. FOOTER
  351. ==============================================================================
  352. */
  353. Display::display_footer();
  354. ?>