surveymanager.lib.php 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664
  1. <?php // $Id: usermanager.lib.php,v 1.9.2.3 2005/10/28 14:31:45 bmol Exp $
  2. /*
  3. ==============================================================================
  4. Dokeos - elearning and course management software
  5. Copyright (c) 2004-2008 Dokeos SPRL
  6. Copyright (c) 2003 Ghent University (UGent)
  7. Copyright (c) 2001 Universite catholique de Louvain (UCL)
  8. Copyright (c) various contributors
  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, rue du Corbeau, 108, B-1030 Brussels, Belgium, info@dokeos.com
  17. ==============================================================================
  18. */
  19. /**
  20. ==============================================================================
  21. * This library provides functions for user management.
  22. * Include/require it in your code to use its functionality.
  23. *
  24. * @author Bart Mollet, main author
  25. * @package dokeos.library
  26. ==============================================================================
  27. */
  28. class SurveyManager {
  29. private function __construct() {
  30. }
  31. /**
  32. * Possible deprecated method
  33. */
  34. function get_survey_author($authorid)
  35. {
  36. $user_table = Database :: get_main_table(TABLE_MAIN_USER);
  37. $authorid = Database::escape_string($authorid);
  38. $sql_query = "SELECT * FROM $user_table WHERE user_id='$authorid'";
  39. $res = Database::query($sql_query);
  40. $firstname=@Database::result($res,0,'firstname');
  41. return $firstname;
  42. }
  43. /**
  44. * Possible deprecated method
  45. */
  46. function get_author($db_name,$survey_id)
  47. {
  48. //$table_survey = Database :: get_course_table(TABLE_SURVEY);
  49. $survey_id = Database::escape_string($survey_id);
  50. $sql = "SELECT author FROM $db_name.survey WHERE survey_id='$survey_id'";
  51. $res = Database::query($sql);
  52. $author=@Database::result($res,0,'author');
  53. return $author;
  54. }
  55. /**
  56. * Possible deprecated method
  57. */
  58. function get_surveyid($db_name,$group_id)
  59. {
  60. //$group_table = Database :: get_course_table(TABLE_SURVEY_QUESTION_GROUP);
  61. $group_id = Database::escape_string($group_id);
  62. $sql = "SELECT survey_id FROM $db_name.survey_group WHERE group_id='$group_id'";
  63. $res = Database::query($sql);
  64. $surveyid=@Database::result($res,0,'survey_id');
  65. return $surveyid;
  66. }
  67. public static function get_groupname ($db_name,$gid) {
  68. //$grouptable = Database :: get_course_table(TABLE_SURVEY_QUESTION_GROUP);
  69. $gid = Database::escape_string($gid);
  70. $sql = "SELECT * FROM $db_name.survey_group WHERE group_id='$gid'";
  71. $res=Database::query($sql);
  72. $code=@Database::result($res,0,'groupname');
  73. return($code);
  74. }
  75. /**
  76. * Possible deprecated method
  77. */
  78. function insert_into_group ($survey_id,$group_title,$introduction,$tb) {
  79. $survey_id = Database::escape_string($survey_id);
  80. $group_title = Database::escape_string($group_title);
  81. $introduction = Database::escape_string($introduction);
  82. $sql="INSERT INTO $tb (group_id,survey_id,group_title,introduction) values('','$survey_id','$group_title','$introduction')";
  83. $result=Database::query($sql);
  84. return Database::insert_id();
  85. }
  86. /**
  87. * Possible deprecated method
  88. */
  89. function get_survey_code ($table_survey,$survey_code)
  90. {
  91. $survey_code = Database::escape_string($survey_code);
  92. $sql="SELECT code FROM $table_survey where code='$survey_code'";
  93. //echo $sql;
  94. //exit;
  95. $result=Database::query($sql);
  96. $code=@Database::result($result,0,'code');
  97. //echo $code;exit;
  98. return($code);
  99. }
  100. /**
  101. * Possible deprecated method
  102. */
  103. function get_survey_list()
  104. {
  105. $survey_table = Database :: get_course_table(TABLE_SURVEY);
  106. $sql_query = "SELECT survey_id,title FROM $survey_table where title!='' ";
  107. $sql_result = Database::query($sql_query);
  108. echo "<select name=\"author\">";
  109. echo "<option value=\"\"><--Select Survey--></optional>";
  110. while ($result =@Database::fetch_array($sql_result))
  111. {
  112. echo "\n<option value=\"".$result[survey_id]."\">".$result[title]."</option>";
  113. }
  114. echo "</select>";
  115. }
  116. /**
  117. * Possible deprecated method
  118. */
  119. function create_survey ($surveycode,$surveytitle, $surveysubtitle, $author, $survey_language, $availablefrom, $availabletill,$isshare, $surveytemplate, $surveyintroduction, $surveythanks, $table_survey, $table_group)
  120. {
  121. //$table_survey = Database :: get_course_table(TABLE_SURVEY);
  122. $sql = "INSERT INTO $table_survey (code,title, subtitle, author,lang,avail_from,avail_till, is_shared,template,intro,surveythanks,creation_date) values('$surveycode','$surveytitle','$surveysubtitle','$author','$survey_language','$availablefrom','$availabletill','$isshare','$surveytemplate','$surveyintroduction','$surveythanks',curdate())";
  123. $result = Database::query($sql);
  124. //$result = Database::query($sql);
  125. $survey_id = Database::insert_id();
  126. $sql2 = "INSERT INTO $table_group(group_id,survey_id,groupname,introduction) values('','$survey_id','No Group','This is your Default Group')";
  127. $result = Database::query($sql2);
  128. return $survey_id;
  129. }
  130. /**
  131. * Possible deprecated method
  132. */
  133. /**
  134. * Possible deprecated method
  135. */
  136. function create_survey_attach($surveycode,$surveytitle, $surveysubtitle, $author, $survey_language, $availablefrom, $availabletill,$isshare, $surveytemplate, $surveyintroduction, $surveythanks, $table_survey, $table_group)
  137. {
  138. //$table_survey = Database :: get_course_table(TABLE_SURVEY);
  139. $sql = "INSERT INTO $table_survey (code,title, subtitle, author,lang,avail_from,avail_till, is_shared,template,intro,surveythanks,creation_date) values('$surveycode','$surveytitle','$surveysubtitle','$author','$survey_language','$availablefrom','$availabletill','$isshare','$surveytemplate','$surveyintroduction','$surveythanks',curdate())";
  140. $result = Database::query($sql);
  141. $survey_id = Database::insert_id();
  142. return $survey_id;
  143. }
  144. /**
  145. * Possible deprecated method
  146. */
  147. function update_survey($surveyid,$surveycode,$surveytitle, $surveysubtitle, $author, $survey_language, $availablefrom, $availabletill,$isshare, $surveytemplate, $surveyintroduction, $surveythanks, $cidReq,$table_course)
  148. {
  149. $sql_course = "SELECT * FROM $table_course WHERE code = '$cidReq'";
  150. $res_course = Database::query($sql_course);
  151. $obj_course=@Database::fetch_object($res_course);
  152. $curr_dbname = $obj_course->db_name ;
  153. $surveyid = Database::escape_string($surveyid);
  154. $sql = "UPDATE $curr_dbname.survey SET code='$surveycode', title='$surveytitle', subtitle='$surveysubtitle', lang='$survey_language', avail_from='$availablefrom', avail_till='$availabletill', is_shared='$isshare', template='$surveytemplate', intro='$surveyintroduction',surveythanks='$surveythanks'
  155. WHERE survey_id='$surveyid'";
  156. Database::query($sql);
  157. return $curr_dbname;
  158. }
  159. /**
  160. * Possible deprecated method
  161. */
  162. function update_question($qid,$qtype,$caption,$alignment,$answers,$open_ans,$curr_dbname)
  163. {
  164. for($i=0;$i<10;$i++)
  165. {
  166. $k=$i+1;
  167. $a.$k= $answers[$i];
  168. }
  169. $anst = $answerT;
  170. $ansd = $answerD;
  171. $sql = "UPDATE $curr_dbname.questions SET qtype='$qtype',caption='$caption',alignment='$alignment',a1='$answers[0]',a2='$answers[1]',a3='$answers[2]',a4='$answers[3]',a5='$answers[4]',a6='$answers[5]',a7='$answers[6]',a8='$answers[7]',a9='$answers[8]',a10='$answers[9]' WHERE qid='$qid'";
  172. $result = Database::query($sql);
  173. return Database::insert_id();
  174. }
  175. /**
  176. * Possible deprecated method
  177. */
  178. function get_question_type($questionid)
  179. {
  180. $table_question = Database :: get_course_table(TABLE_MAIN_SURVEYQUESTION);
  181. $questionid = Database::escape_string($questionid);
  182. $sql = "SELECT * FROM $table_question WHERE qid='$questionid'";
  183. $res=Database::query($sql);
  184. $code=@Database::result($res,0,'type');
  185. return($code);
  186. }
  187. /**
  188. * Possible deprecated method
  189. */
  190. function no_of_question($db_name,$gid)
  191. {
  192. //$table_question = Database :: get_course_table(TABLE_MAIN_SURVEYQUESTION);
  193. $gid = Database::escape_string($gid);
  194. $sql = "SELECT * FROM $db_name.questions WHERE gid='$gid'";
  195. $res=Database::query($sql);
  196. $code=@Database::num_rows($res);
  197. return($code);
  198. }
  199. /**
  200. * Possible deprecated method
  201. */
  202. function get_data($id, $field)
  203. {
  204. global $_course;
  205. $sql='SELECT '.$field.' FROM '.$_course['dbName'].'.survey WHERE survey_id='.intval($id);
  206. $res=Database::query($sql);
  207. $code=@Database::result($res,0);
  208. return($code);
  209. }
  210. /**
  211. * Possible deprecated method
  212. */
  213. function get_all_datas($id)
  214. {
  215. global $_course;
  216. $sql='SELECT * FROM '.$_course['dbName'].'.survey WHERE survey_id='.intval($id);
  217. $res=Database::query($sql);
  218. return Database::fetch_object($res);
  219. }
  220. /**
  221. * Possible deprecated method
  222. */
  223. function get_surveyname($db_name,$sid)
  224. {
  225. //$surveytable=Database:: get_course_table(TABLE_SURVEY);
  226. $sid = Database::escape_string($sid);
  227. $sql="SELECT * FROM $db_name.survey WHERE survey_id=$sid";
  228. $res=Database::query($sql);
  229. $code=@Database::result($res,0,'title');
  230. return($code);
  231. }
  232. /**
  233. * Possible deprecated method
  234. */
  235. function get_surveyname_display($sid)
  236. {
  237. $sid = Database::escape_string($sid);
  238. $surveytable=Database:: get_course_table(TABLE_SURVEY);
  239. $sql="SELECT * FROM $surveytable WHERE survey_id=$sid";
  240. $res=Database::query($sql);
  241. $code=@Database::result($res,0,'title');
  242. return($code);
  243. }
  244. /**
  245. * Possible deprecated method
  246. */
  247. function import_questions($import_type, $ids)
  248. {
  249. //$groupname=surveymanager::get_groupname($gid_arr[$index]);
  250. switch ($import_type) {
  251. case "survey":
  252. {
  253. }
  254. case "groups":
  255. {
  256. foreach ($ids as $gid){
  257. $sql="insert into $table_question SELECT ('',gid,qtype,caption,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,at,ad,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10) FROM $table_question where gid=$gid";
  258. }
  259. }
  260. case "questions":
  261. {
  262. }
  263. }
  264. $table_question = Database :: get_course_table(TABLE_MAIN_SURVEYQUESTION);
  265. if(isset($selected_group)){
  266. if($selected_group!=''){
  267. $sql = "SELECT $table_group('survey_id', 'groupname') values('$sid', '$groupname')";
  268. $res = Database::query($sql);
  269. $sql = "INSERT INTO $table_group('survey_id', 'groupname') values('$sid', '$groupname')";
  270. $res = Database::query($sql);
  271. $gid_arr[$index]+= Database::insert_id();
  272. $groupids=implode(",",$gid_arr);
  273. }
  274. }
  275. echo $groupids;
  276. }
  277. /**
  278. * This function deletes a survey and all the groups and question belonging to it.
  279. *
  280. * @param unknown_type $survey_id
  281. *
  282. * @author unknown
  283. * @author Patrick Cool <patrick.cool@UGent.be>, Ghent University, cleanup and refactoring
  284. *
  285. */
  286. public static function delete_survey($survey_id)
  287. {
  288. $table_survey = Database :: get_course_table(TABLE_SURVEY);
  289. $table_group = Database :: get_course_table(TABLE_SURVEY_QUESTION_GROUP);
  290. $table_question = Database :: get_course_table(TABLE_MAIN_SURVEYQUESTION);
  291. $survey_id = Database::escape_string($survey_id);
  292. // Deleting the survey
  293. $sql = "DELETE FROM $table_survey WHERE survey_id='".$survey_id."'";
  294. Database::query($sql);
  295. // Deleting all the questions of the survey
  296. $sql = "SELECT * FROM $table_group WHERE survey_id='".$survey_id."'";
  297. $res = Database::query($sql);
  298. while($obj = Database::fetch_object($res))
  299. {
  300. $sql = "DELETE FROM $table_question WHERE gid='".$obj->group_id."'";
  301. Database::query($sql);
  302. }
  303. // Deleting the groups of the survey
  304. $sql = "DELETE FROM $table_group WHERE survey_id='".$survey_id."'";
  305. Database::query($sql);
  306. return true;
  307. }
  308. /**
  309. * Possible deprecated method
  310. * This function deletes a
  311. * @param unknown_type $group_id
  312. * @param unknown_type $curr_dbname
  313. *
  314. * @author unknown
  315. * @author Patrick Cool <patrick.cool@UGent.be>, Ghent University, refactoring: using correct database calls and removing useless second parameter
  316. */
  317. function delete_group($group_id)
  318. {
  319. // Database table definitions
  320. /** @todo use database constants for the survey tables */
  321. $table_question = Database :: get_course_table(TABLE_MAIN_SURVEYQUESTION);
  322. $table_survey_group = Database :: get_course_table(TABLE_SURVEY_QUESTION_GROUP);
  323. $sql = "DELETE FROM $table_question WHERE gid='".$group_id."'";
  324. Database::query($sql);
  325. $sql = "DELETE FROM $table_survey_group WHERE group_id='".$group_id."'";
  326. Database::query($sql);
  327. }
  328. /**
  329. * Possible deprecated method
  330. */
  331. function select_group_list($survey_id, $seleced_groupid='', $extra_script='')
  332. {
  333. $group_table = Database :: get_course_table(TABLE_SURVEY_QUESTION_GROUP);
  334. $sql = "SELECT * FROM $group_table WHERE survey_id='$survey_id'";
  335. $sql_result = Database::query($sql);
  336. if(Database::num_rows($sql_result)>0)
  337. {
  338. $str_group_list = "";
  339. $str_group_list .= "<select name=\"exiztinggroup\" $extra_script>\n";
  340. while($result=Database::fetch_array($sql_result))
  341. {
  342. $selected = ($seleced_groupid==$result[group_id])?"selected":"";
  343. $str_group_list .= "\n<option value=\"".$result[group_id]."\" ".$selected.">".$result[groupname]."</option>\n";
  344. }
  345. $str_group_list .= "</select>";
  346. return $str_group_list;
  347. }
  348. else
  349. {
  350. return false;
  351. }
  352. }
  353. /**
  354. * Possible deprecated method
  355. */
  356. function display_imported_group($sid,$table_group,$table_question)
  357. {
  358. $sql = "SELECT group_id FROM $table_group WHERE survey_id='$sid'";
  359. $res = Database::query($sql);
  360. $num = @Database::num_rows($res);
  361. //echo "ths is num".$num;
  362. $parameters = array();
  363. $displays = array();
  364. while($obj = @Database::fetch_object($res))
  365. {
  366. $groupid = $obj->group_id;
  367. $query = "SELECT * FROM $table_question WHERE gid = '$groupid'";
  368. $result = Database::query($query);
  369. while($object = @Database::fetch_object($result))
  370. {
  371. $display = array();
  372. $display[] = '<input type="checkbox" name="course[]" value="'.$object->qid.'"/>';
  373. $display[] = $object->caption;
  374. $display[] = $object->qtype;
  375. $id = $object->gid;
  376. //echo "THIS IS GROUP NAME ID".$id;
  377. $gname = surveymanager::get_groupname($id);
  378. $display[] = $gname;
  379. $displays[] = $display;
  380. }
  381. }
  382. $table_header[] = array('', false);
  383. $table_header[] = array(get_lang('Question'), true);
  384. $table_header[] = array(get_lang('QuestionType'), true);
  385. $table_header[] = array(get_lang('Group'), true);
  386. Display :: display_sortable_table($table_header, $displays, array (), array (), $parameters);
  387. }
  388. /**
  389. * Possible deprecated method
  390. */
  391. function attach_survey($surveyid,$newsurveyid,$db_name,$curr_dbname)
  392. //For attaching the whole survey with its groups and questions
  393. {
  394. $sql = "SELECT * FROM $db_name.survey_group WHERE survey_id = '$surveyid'";
  395. $res = Database::query($sql);
  396. while($obj=@Database::fetch_object($res))
  397. {
  398. $groupname=addslashes($obj->groupname);
  399. $introduction=addslashes($obj->introduction);
  400. $sql_insert = "INSERT INTO $curr_dbname.survey_group(group_id,survey_id,groupname,introduction) values('','$newsurveyid','$groupname','$introduction')";
  401. $resnext = Database::query($sql_insert);
  402. $groupid = Database::insert_id();
  403. $sql_q = "SELECT * FROM $db_name.questions WHERE gid = '$obj->group_id'";
  404. $res_q = Database::query($sql_q);
  405. while($obj_q = Database::fetch_object($res_q))
  406. {
  407. $caption1=addslashes($obj_q->caption);
  408. $a1=addslashes($obj_q->a1);
  409. $a2=addslashes($obj_q->a2);
  410. $a3=addslashes($obj_q->a3);
  411. $a4=addslashes($obj_q->a4);
  412. $a5=addslashes($obj_q->a5);
  413. $a6=addslashes($obj_q->a6);
  414. $a7=addslashes($obj_q->a7);
  415. $a8=addslashes($obj_q->a8);
  416. $a9=addslashes($obj_q->a9);
  417. $a10=addslashes($obj_q->a10);
  418. $at=addslashes($obj_q->at);
  419. $ad=addslashes($obj_q->ad);
  420. $r1=addslashes($obj_q->r1);
  421. $r2=addslashes($obj_q->r2);
  422. $r3=addslashes($obj_q->r3);
  423. $r4=addslashes($obj_q->r4);
  424. $r5=addslashes($obj_q->r5);
  425. $r6=addslashes($obj_q->r6);
  426. $r7=addslashes($obj_q->r7);
  427. $r8=addslashes($obj_q->r8);
  428. $r9=addslashes($obj_q->r9);
  429. $r10=addslashes($obj_q->r10);
  430. $sql_sort = "SELECT max(sortby) AS sortby FROM $curr_dbname.questions ";
  431. $res_sort=Database::query($sql_sort);
  432. $rs=Database::fetch_object($res_sort);
  433. $sortby=$rs->sortby;
  434. if(empty($sortby))
  435. {$sortby=1;}
  436. else{$sortby=$sortby+1;}
  437. $sql_q_insert = "INSERT INTO $curr_dbname.questions (qid,gid,survey_id,qtype,caption,alignment,sortby,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,at,ad,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10) values('','$groupid','$newsurveyid','$obj_q->qtype','$caption1','$obj_q->alignment','$sortby','$a1','$a2','$a3','$a4','$a5','$a6','$a7','$a8','$a9','$a10','$at','$ad','$r1','$r2','$r3','$r4','$r5','$r6','$r7','$r8','$r9','$r10')";
  438. Database::query($sql_q_insert);
  439. }
  440. }
  441. }
  442. /**
  443. * Possible deprecated method
  444. */
  445. function update_group($groupid,$surveyid,$groupnamme,$introduction,$curr_dbname)
  446. {
  447. $sql = "UPDATE $curr_dbname.survey_group SET group_id='$groupid', survey_id='$surveyid', groupname='$groupnamme', introduction='$introduction' WHERE group_id='$groupid'";
  448. Database::query($sql);
  449. }
  450. /**
  451. * Possible deprecated method
  452. */
  453. function create_course_survey_rel($cidReq,$survey_id,$table_course,$table_course_survey_rel)
  454. {
  455. $sql = "SELECT * FROM $table_course WHERE code = '$cidReq'";
  456. $res = Database::query($sql);
  457. $obj=@Database::fetch_object($res);
  458. $db_name = $obj->db_name ;
  459. $sql="INSERT INTO $table_course_survey_rel(id,course_code,db_name,survey_id) values('','$cidReq','$db_name','$survey_id')";
  460. Database::query($sql);
  461. return $db_name;
  462. }
  463. /**
  464. * Possible deprecated method
  465. */
  466. function pick_surveyname($sid)
  467. {
  468. $surveytable=Database:: get_course_table(TABLE_SURVEY);
  469. $sql="SELECT * FROM $surveytable WHERE survey_id=$sid";
  470. $res=Database::query($sql);
  471. $code=@Database::result($res,0,'title');
  472. return($code);
  473. }
  474. /**
  475. * Possible deprecated method
  476. */
  477. function pick_author($survey_id)
  478. {
  479. $survey_table = Database :: get_course_table(TABLE_SURVEY);
  480. $sql = "SELECT author FROM $survey_table WHERE survey_id='$survey_id'";
  481. $res = Database::query($sql);
  482. $author=@Database::result($res,0,'author');
  483. return $author;
  484. }
  485. /**
  486. * Possible deprecated method
  487. * Enter description here...
  488. *
  489. * @return unknown
  490. * @todo remove this function because this is of no use and should not be used.
  491. */
  492. function get_status()
  493. {
  494. global $_user;
  495. $table_user = Database::get_main_table(TABLE_MAIN_USER);
  496. $sqlm = "SELECT status FROM $table_user WHERE user_id = '".Database::escape_string($_user['user_id'])."'";
  497. $resm = Database::query($sqlm);
  498. $objm=@Database::fetch_object($resm);
  499. $ss = $objm->status ;
  500. return $ss;
  501. }
  502. }
  503. /**
  504. *
  505. * Manage the "versioning" of a conditional survey
  506. *
  507. * */
  508. class SurveyTree {
  509. public $surveylist;
  510. public $plainsurveylist;
  511. public $numbersurveys;
  512. /**
  513. * Sets the surveylist and the plainsurveylist
  514. */
  515. public function __construct() {
  516. // Database table definitions
  517. $table_survey = Database :: get_course_table(TABLE_SURVEY);
  518. $table_survey_question = Database :: get_course_table(TABLE_SURVEY_QUESTION);
  519. $table_user = Database :: get_main_table(TABLE_MAIN_USER);
  520. // searching
  521. $search_restriction = SurveyUtil::survey_search_restriction();
  522. if ($search_restriction) {
  523. $search_restriction = ' AND '.$search_restriction;
  524. }
  525. $sql = "SELECT survey.survey_id , survey.parent_id, survey_version, survey.code as name
  526. FROM $table_survey survey
  527. LEFT JOIN $table_survey_question survey_question
  528. ON survey.survey_id = survey_question.survey_id , $table_user user
  529. WHERE survey.author = user.user_id
  530. GROUP BY survey.survey_id";
  531. $res = Database::query($sql);
  532. $surveys_parents = array ();
  533. $refs = array();
  534. $list = array();
  535. $last=array();
  536. $plain_array=array();
  537. while ($survey = Database::fetch_array($res,'ASSOC'))
  538. {
  539. $plain_array[$survey['survey_id']]=$survey;
  540. $surveys_parents[]=$survey['survey_version'];
  541. $thisref = &$refs[ $survey['survey_id'] ];
  542. $thisref['parent_id'] = $survey['parent_id'];
  543. $thisref['name'] = $survey['name'];
  544. $thisref['id'] = $survey['survey_id'];
  545. $thisref['survey_version'] = $survey['survey_version'];
  546. if ($survey['parent_id'] == 0)
  547. {
  548. $list[ $survey['survey_id'] ] = &$thisref;
  549. }
  550. else
  551. {
  552. $refs[ $survey['parent_id'] ]['children'][ $survey['survey_id'] ] = &$thisref;
  553. }
  554. }
  555. $this->surveylist = $list;
  556. $this->plainsurveylist = $plain_array;
  557. }
  558. /**
  559. * This function gets the parent id of a survey
  560. *
  561. * @param int survey id
  562. * @return int survey parent id
  563. *
  564. * @author Julio Montoya <gugli100@gmail.com>, Dokeos
  565. * @version September 2008
  566. */
  567. public function getParentId ($id) {
  568. $node = $this->plainsurveylist[$id];
  569. if (is_array($node)&& !empty($node['parent_id']))
  570. return $node['parent_id'];
  571. else
  572. return -1;
  573. }
  574. /**
  575. * This function creates a list of all surveys id
  576. * @param list of nodes
  577. * @return array with the structure survey_id => survey_name
  578. * @author Julio Montoya <gugli100@gmail.com>, Dokeos
  579. * @version September 2008
  580. *
  581. */
  582. public function createList ($list) {
  583. $result=array();
  584. if(is_array($list)) {
  585. foreach ($list as $key=>$node) {
  586. if (is_array($node['children']))
  587. {
  588. //echo $key; echo '--<br>';
  589. //print_r($node);
  590. //echo '<br>';
  591. $result[$key]= $node['name'];
  592. $re=self::createList($node['children']);
  593. if (!empty($re))
  594. {
  595. if (is_array($re))
  596. foreach ($re as $key=>$r)
  597. {
  598. $result[$key]=''.$r;
  599. }
  600. else
  601. {
  602. $result[]=$re;
  603. }
  604. }
  605. }
  606. else
  607. {
  608. //echo $key; echo '-<br>';
  609. $result[$key]=$node['name'];
  610. }
  611. }
  612. }
  613. return $result;
  614. }
  615. }
  616. ?>