surveymanager.lib.php 68 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910
  1. <?php // $Id: usermanager.lib.php,v 1.9.2.3 2005/10/28 14:31:45 bmol Exp $
  2. /*
  3. =====================================================Gh9Xp5m=========================
  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) 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, 181 rue Royale, B-1000 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. {
  30. /**
  31. * Creates a new survey for the platform
  32. */
  33. function select_survey_list($seleced_surveyid='', $extra_script='')
  34. {
  35. $survey_table = Database :: get_course_table('survey');
  36. $sql = "SELECT * FROM $survey_table";// WHERE is_shared='1'";
  37. $sql_result = api_sql_query($sql,__FILE__,__LINE__);
  38. if(mysql_num_rows($sql_result)>0)
  39. {
  40. $str_survey_list = "";
  41. $str_survey_list .= "<select name=\"exiztingsurvey\" $extra_script>\n";
  42. $str_survey_list .= "<option value=\"\">--Select Survey--</option>";
  43. while($result=mysql_fetch_array($sql_result))
  44. {
  45. $selected = ($seleced_surveyid==$result[survey_id])?"selected":"";
  46. $str_survey_list .= "\n<option value=\"".$result[survey_id]."\" ".$selected.">".$result[title]."</option>";
  47. }
  48. $str_survey_list .= "</select>";
  49. return $str_survey_list;
  50. }
  51. else
  52. {
  53. return false;
  54. }
  55. }
  56. /*function getsurveyid($existing)
  57. {
  58. $survey_table = Database :: get_course_table(TABLE_MAIN_SURVEY);
  59. $sql = "SELECT survey_id FROM $survey_table WHERE title='$existing'" ;
  60. $result = api_sql_query($sql,__FILE__,__LINE__);
  61. $i=0;
  62. $survey_id=mysql_result($result,$i,'survey_id');
  63. echo "in getsurveyid".$survey_id;
  64. return(survey_id);
  65. }
  66. */
  67. function create_group($survey_id,$group_title,$introduction,$table_group)
  68. {
  69. $sql_query = "SELECT * FROM $table_group where groupname='".$group_title."' AND survey_id=".intval($survey_id);
  70. $res = api_sql_query($sql_query, __FILE__, __LINE__);
  71. if(mysql_num_rows($res))
  72. {
  73. return false;
  74. }
  75. else
  76. {
  77. $sql = 'SELECT MAX(sortby) FROM '.$table_group.' WHERE survey_id="'.$survey_id.'"';
  78. $rs = api_sql_query($sql, __FILE__, __LINE__);
  79. list($sortby) = mysql_fetch_array($rs);
  80. $sortby++;
  81. $sql="INSERT INTO $table_group(group_id,survey_id,groupname,introduction, sortby) values('','$survey_id','$group_title','$introduction','$sortby')";
  82. $result=api_sql_query($sql);
  83. return mysql_insert_id();
  84. }
  85. }
  86. function get_survey_author($authorid)
  87. {
  88. $user_table = Database :: get_main_table(TABLE_MAIN_USER);
  89. $sql_query = "SELECT * FROM $user_table where user_id='$authorid'";
  90. $res = api_sql_query($sql_query, __FILE__, __LINE__);
  91. $firstname=@mysql_result($res,0,'firstname');
  92. return $firstname;
  93. }
  94. function get_author($db_name,$survey_id)
  95. {
  96. //$table_survey = Database :: get_course_table('survey');
  97. $sql = "SELECT author FROM $db_name.survey WHERE survey_id='$survey_id'";
  98. $res = api_sql_query($sql, __FILE__, __LINE__);
  99. $author=@mysql_result($res,0,'author');
  100. return $author;
  101. }
  102. function get_surveyid($db_name,$group_id)
  103. {
  104. //$group_table = Database :: get_course_table('survey_group');
  105. $sql = "SELECT survey_id FROM $db_name.survey_group WHERE group_id='$group_id'";
  106. $res = api_sql_query($sql, __FILE__, __LINE__);
  107. $surveyid=@mysql_result($res,0,'survey_id');
  108. return $surveyid;
  109. }
  110. /*function get_survey_code($table_survey,$survey_code)
  111. {
  112. $sql="SELECT code FROM $table_survey where code='$survey_code'";
  113. $result=api_sql_query($sql);
  114. $code=mysql_result($result,0,'code');
  115. return($code);
  116. }*/
  117. function get_groupname($db_name,$gid)
  118. {
  119. //$grouptable = Database :: get_course_table('survey_group');
  120. $sql = "SELECT * FROM $db_name.survey_group WHERE group_id='$gid'";
  121. $res=api_sql_query($sql);
  122. $code=@mysql_result($res,0,'groupname');
  123. return($code);
  124. }
  125. function insert_into_group($survey_id,$group_title,$introduction,$tb)
  126. {
  127. $sql="INSERT INTO $tb(group_id,survey_id,group_title,introduction) values('','$survey_id','$group_title','$introduction')";
  128. $result=api_sql_query($sql);
  129. return mysql_insert_id();
  130. }
  131. function get_survey_code($table_survey,$survey_code)
  132. {
  133. $sql="SELECT code FROM $table_survey where code='$survey_code'";
  134. //echo $sql;
  135. //exit;
  136. $result=api_sql_query($sql);
  137. $code=@mysql_result($result,0,'code');
  138. //echo $code;exit;
  139. return($code);
  140. }
  141. function get_survey_list()
  142. {
  143. $survey_table = Database :: get_course_table('survey');
  144. $sql_query = "SELECT survey_id,title FROM $survey_table where title!='' ";
  145. $sql_result = api_sql_query($sql_query,__FILE__,__LINE__);
  146. echo "<select name=\"author\">";
  147. echo "<option value=\"\"><--Select Survey--></optional>";
  148. while ($result =@mysql_fetch_array($sql_result))
  149. {
  150. echo "\n<option value=\"".$result[survey_id]."\">".$result[title]."</option>";
  151. }
  152. echo "</select>";
  153. }
  154. function create_survey($surveycode,$surveytitle, $surveysubtitle, $author, $survey_language, $availablefrom, $availabletill,$isshare, $surveytemplate, $surveyintroduction, $surveythanks, $table_survey, $table_group)
  155. {
  156. //$table_survey = Database :: get_course_table('survey');
  157. $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())";
  158. $result = api_sql_query($sql, __FILE__, __LINE__);
  159. //$result = api_sql_query($sql);
  160. $survey_id = mysql_insert_id();
  161. $sql2 = "INSERT INTO $table_group(group_id,survey_id,groupname,introduction) values('','$survey_id','No Group','This is your Default Group')";
  162. $result = api_sql_query($sql2, __FILE__, __LINE__);
  163. return $survey_id;
  164. }
  165. function create_survey_in_another_language($id, $lang){
  166. global $_course;
  167. $original_survey = SurveyManager::get_all_datas($id);
  168. // copy the survey itself
  169. $sql = 'INSERT INTO '.$_course['dbName'].'.survey SET
  170. code = "'.$original_survey->code.'",
  171. title = "'.addslashes($original_survey->title).'",
  172. subtitle = "'.addslashes($original_survey->subtitle).'",
  173. author = "'.$original_survey->author.'",
  174. lang = "'.$lang.'",
  175. avail_from = "'.$original_survey->avail_from.'",
  176. avail_till = "'.$original_survey->avail_till.'",
  177. is_shared = "'.$original_survey->is_shared.'",
  178. template = "'.$original_survey->template.'",
  179. intro = "'.addslashes($original_survey->intro).'",
  180. surveythanks = "'.addslashes($original_survey->surveythanks).'",
  181. creation_date = "NOW()"';
  182. $result = api_sql_query($sql, __FILE__, __LINE__);
  183. $new_survey_id = mysql_insert_id();
  184. // copy the groups
  185. $groups = SurveyManager::listGroups($id);
  186. foreach($groups as $group)
  187. {
  188. SurveyManager::import_group($new_survey_id, $group['group_id'], $_course['dbName'], $_course['dbName']);
  189. }
  190. }
  191. function create_survey_attach($surveycode,$surveytitle, $surveysubtitle, $author, $survey_language, $availablefrom, $availabletill,$isshare, $surveytemplate, $surveyintroduction, $surveythanks, $table_survey, $table_group)
  192. {
  193. //$table_survey = Database :: get_course_table('survey');
  194. $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())";
  195. $result = api_sql_query($sql, __FILE__, __LINE__);
  196. $survey_id = mysql_insert_id();
  197. return $survey_id;
  198. }
  199. function update_survey($surveyid,$surveycode,$surveytitle, $surveysubtitle, $author, $survey_language, $availablefrom, $availabletill,$isshare, $surveytemplate, $surveyintroduction, $surveythanks, $cidReq,$table_course)
  200. {
  201. $sql_course = "SELECT * FROM $table_course WHERE code = '$cidReq'";
  202. $res_course = api_sql_query($sql_course,__FILE__,__LINE__);
  203. $obj_course=@mysql_fetch_object($res_course);
  204. $curr_dbname = $obj_course->db_name ;
  205. $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' WHERE survey_id='$surveyid'";
  206. api_sql_query($sql, __FILE__, __LINE__);
  207. return $curr_dbname;
  208. }
  209. /*
  210. function create_question($gid,$type,$caption,$answers,$open_ans,$answerT,$answerD,$rating,$table_question)
  211. {
  212. for($i=0;$i<10;$i++)
  213. {
  214. $x.= "'".$answers[$i]."',";
  215. }
  216. //echo "Hello".$x;
  217. for($j=0;$j<10;$j++)
  218. {
  219. if($j==9)
  220. {
  221. $y.= "'".$rating[$j]."'";
  222. }
  223. else
  224. {
  225. $y.= "'".$rating[$j]."',";
  226. }
  227. }
  228. $anst = implode(", " ,$answerT);
  229. $ansd = implode(", " ,$answerD);
  230. $table_question = Database :: get_course_table(TABLE_MAIN_SURVEYQUESTION);
  231. $sql = "INSERT INTO $table_question (gid,type,caption,ans1,ans2,ans3,ans4,ans5,ans6,ans7,ans8,ans9,ans10,open_ans,anst,ansd,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10) values('$gid','$type','$caption',$x'$open_ans','$anst','$ansd',$y)";
  232. $result = api_sql_query($sql);
  233. return mysql_insert_id();
  234. }
  235. function get_question($questionid)
  236. {
  237. $table_question = Database :: get_course_table(TABLE_MAIN_SURVEYQUESTION);
  238. $sql = "SELECT * FROM $table_question where qid='$questionid'";
  239. $res=api_sql_query($sql);
  240. $code=@mysql_result($res,0,'caption');
  241. return($code);
  242. }
  243. */
  244. function create_question($gid,$surveyid,$qtype,$caption,$alignment,$answers,$open_ans,$answerT,$answerD,$rating,$curr_dbname)
  245. {
  246. $sql_sort = "SELECT max(sortby) AS sortby FROM $curr_dbname.questions ";
  247. $res_sort=api_sql_query($sql_sort);
  248. $rs=mysql_fetch_object($res_sort);
  249. $sortby=$rs->sortby;
  250. if(empty($sortby))
  251. {
  252. $sortby=1;
  253. }
  254. else
  255. {
  256. $sortby=$sortby+1;
  257. }
  258. for($i=0;$i<10;$i++)
  259. {
  260. $x.= "'".$answers[$i]."',";
  261. }
  262. for($j=0;$j<10;$j++)
  263. {
  264. if($j==9)
  265. {
  266. $y.= "'".$rating[$j]."'";
  267. }
  268. else
  269. {
  270. $y.= "'".$rating[$j]."',";
  271. }
  272. }
  273. /*if($qtype=='Multiple Choice (multiple answer)')
  274. {
  275. $anst = implode(", " ,$answerT);
  276. $ansd = implode(", " ,$answerD);
  277. }
  278. else
  279. {*/
  280. $anst = $answerT;
  281. $ansd = $answerD;
  282. //}
  283. $sql = "INSERT INTO $curr_dbname.questions (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('$gid','$surveyid','$qtype','$caption','$alignment','$sortby',$x'$anst','$ansd',$y)";
  284. $result = api_sql_query($sql);
  285. return mysql_insert_id();
  286. }
  287. function update_question($qid,$qtype,$caption,$alignment,$answers,$open_ans,$curr_dbname)
  288. {
  289. for($i=0;$i<10;$i++)
  290. {
  291. $k=$i+1;
  292. $a.$k= $answers[$i];
  293. }
  294. $anst = $answerT;
  295. $ansd = $answerD;
  296. $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'";
  297. $result = api_sql_query($sql);
  298. return mysql_insert_id();
  299. }
  300. function get_question_type($questionid)
  301. {
  302. $table_question = Database :: get_course_table('questions');
  303. $sql = "SELECT * FROM $table_question where qid='$questionid'";
  304. $res=api_sql_query($sql);
  305. $code=@mysql_result($res,0,'type');
  306. return($code);
  307. }
  308. function no_of_question($db_name,$gid)
  309. {
  310. //$table_question = Database :: get_course_table('questions');
  311. $sql = "SELECT * FROM $db_name.questions where gid='$gid'";
  312. $res=api_sql_query($sql);
  313. $code=@mysql_num_rows($res);
  314. return($code);
  315. }
  316. function get_question_data($qid,$curr_dbname)
  317. {
  318. $sql = "SELECT * FROM $curr_dbname.questions where qid='$qid'";
  319. $res=api_sql_query($sql);
  320. $rs=mysql_fetch_object($res);
  321. $properties = get_object_vars($rs);
  322. foreach ($properties as $property=>$val){
  323. $val = stripslashes($val);
  324. $rs->$property = $val;
  325. }
  326. return $rs;
  327. }
  328. function get_data($id, $field) {
  329. global $_course;
  330. $sql='SELECT '.$field.' FROM '.$_course['dbName'].'.survey WHERE survey_id='.intval($id);
  331. $res=api_sql_query($sql);
  332. $code=@mysql_result($res,0);
  333. return($code);
  334. }
  335. function get_all_datas($id) {
  336. global $_course;
  337. $sql='SELECT * FROM '.$_course['dbName'].'.survey WHERE survey_id='.intval($id);
  338. $res=api_sql_query($sql);
  339. return mysql_fetch_object($res);
  340. }
  341. function get_surveyname($db_name,$sid)
  342. {
  343. //$surveytable=Database:: get_course_table('survey');
  344. $sql="SELECT * FROM $db_name.survey WHERE survey_id=$sid";
  345. $res=api_sql_query($sql);
  346. $code=@mysql_result($res,0,'title');
  347. return($code);
  348. }
  349. function get_surveyname_display($sid)
  350. {
  351. $surveytable=Database:: get_course_table('survey');
  352. $sql="SELECT * FROM $surveytable WHERE survey_id=$sid";
  353. $res=api_sql_query($sql);
  354. $code=@mysql_result($res,0,'title');
  355. return($code);
  356. }
  357. /*
  358. function join_survey($question_type)
  359. {
  360. $table_survey = Database :: get_course_table(TABLE_MAIN_SURVEY);
  361. $table_group = Database :: get_course_table(TABLE_MAIN_GROUP);
  362. $table_question = Database :: get_course_table(TABLE_MAIN_SURVEYQUESTION);
  363. echo $sql="select t1.title as stitle, t3.type as type, t3.caption as caption, t2.groupname as groupname from $table_survey t1, $table_group t2, $table_question t3 where t1.survey_id=t2.survey_id and t3.gid=t2.group_id and t3.type='$question_type'";
  364. $sql_result = api_sql_query($sql,__FILE__,__LINE__);
  365. $result = mysql_fetch_object($sql_result);
  366. return ($result);
  367. }
  368. */
  369. function import_questions($import_type, $ids)
  370. {
  371. //$groupname=surveymanager::get_groupname($gid_arr[$index]);
  372. switch ($import_type){
  373. case "survey":
  374. {
  375. }
  376. case "groups":
  377. {
  378. foreach ($ids as $gid){
  379. $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";
  380. }
  381. }
  382. case "questions":
  383. {
  384. }
  385. }
  386. $table_question = Database :: get_course_table('questions');
  387. if(isset($selected_group)){
  388. if($selected_group!=''){
  389. $sql = "SELECT $table_group('survey_id', 'groupname') values('$sid', '$groupname')";
  390. $res = api_sql_query($sql);
  391. $sql = "INSERT INTO $table_group('survey_id', 'groupname') values('$sid', '$groupname')";
  392. $res = api_sql_query($sql);
  393. $gid_arr[$index]+= mysql_insert_id();
  394. $groupids=implode(",",$gid_arr);
  395. }
  396. }
  397. echo $groupids;
  398. }
  399. /**
  400. * This function deletes a survey and all the groups and question belonging to it.
  401. *
  402. * @param unknown_type $survey_id
  403. *
  404. * @author unknown
  405. * @author Patrick Cool <patrick.cool@UGent.be>, Ghent University, cleanup and refactoring
  406. *
  407. */
  408. function delete_survey($survey_id)
  409. {
  410. $table_survey = Database :: get_course_table('survey');
  411. $table_group = Database :: get_course_table('survey_group');
  412. $table_question = Database :: get_course_table('questions');
  413. // Deleting the survey
  414. $sql = "DELETE FROM $table_survey WHERE survey_id='".$survey_id."'";
  415. api_sql_query($sql,__FILE__,__LINE__);
  416. // Deleting all the questions of the survey
  417. $sql = "select * FROM $table_group WHERE survey_id='".$survey_id."'";
  418. $res = api_sql_query($sql,__FILE__,__LINE__);
  419. while($obj = mysql_fetch_object($res))
  420. {
  421. $sql = "DELETE FROM $table_question WHERE gid='".$obj->group_id."'";
  422. api_sql_query($sql,__FILE__,__LINE__);
  423. }
  424. // Deleting the groups of the survey
  425. $sql = "DELETE FROM $table_group WHERE survey_id='".$survey_id."'";
  426. api_sql_query($sql,__FILE__,__LINE__);
  427. return true;
  428. }
  429. /**
  430. * This function deletes a
  431. *
  432. * @param unknown_type $group_id
  433. * @param unknown_type $curr_dbname
  434. *
  435. * @author unknown
  436. * @author Patrick Cool <patrick.cool@UGent.be>, Ghent University, refactoring: using correct database calls and removing useless second parameter
  437. */
  438. function delete_group($group_id)
  439. {
  440. // Database table definitions
  441. /** @todo use database constants for the survey tables */
  442. $table_question = Database :: get_course_table('questions');
  443. $table_survey_group = Database :: get_course_table('survey_group');
  444. $sql = "DELETE FROM $table_question WHERE gid='".$group_id."'";
  445. api_sql_query($sql,__FILE__,__LINE__);
  446. $sql = "DELETE FROM $table_survey_group WHERE group_id='".$group_id."'";
  447. api_sql_query($sql,__FILE__,__LINE__);
  448. }
  449. function ques_id_group_name($qid)
  450. {
  451. $ques_table=Database::get_course_table('questions');
  452. $sql="SELECT gid FROM $ques_table where qid=$qid";
  453. $res=api_sql_query($sql);
  454. $id=@mysql_result($res,0,'gid');
  455. $gname=surveymanager::get_groupname($id);
  456. return($gname);
  457. }
  458. function insert_questions($sid,$newgid,$gid,$table_group)
  459. {
  460. $sql_select = "SELECT * FROM $table_group WHERE group_id IN (".$gid.")";
  461. $res = api_sql_query($sql_select);
  462. $num = mysql_num_rows($res);
  463. $i=0;
  464. while($i<$num)
  465. {
  466. $sql_insert = "INSERT INTO $table_group(group_id, survey_id, groupname) values('', '$sid', 'Imported Group')";
  467. $result = api_sql_query($sql_insert);
  468. $i++;
  469. }
  470. }
  471. function select_group_list($survey_id, $seleced_groupid='', $extra_script='')
  472. {
  473. $group_table = Database :: get_course_table('survey_group');
  474. $sql = "SELECT * FROM $group_table WHERE survey_id='$survey_id'";
  475. $sql_result = api_sql_query($sql,__FILE__,__LINE__);
  476. if(mysql_num_rows($sql_result)>0)
  477. {
  478. $str_group_list = "";
  479. $str_group_list .= "<select name=\"exiztinggroup\" $extra_script>\n";
  480. while($result=mysql_fetch_array($sql_result))
  481. {
  482. $selected = ($seleced_groupid==$result[group_id])?"selected":"";
  483. $str_group_list .= "\n<option value=\"".$result[group_id]."\" ".$selected.">".$result[groupname]."</option>\n";
  484. }
  485. $str_group_list .= "</select>";
  486. return $str_group_list;
  487. }
  488. else
  489. {
  490. return false;
  491. }
  492. }
  493. //For importing the groups to new survey
  494. function insert_groups($sid,$newgid,$gids,$table_group,$table_question)
  495. {
  496. $gid_arr = explode(",",$gids);
  497. $num = count($gid_arr);
  498. $queryone = "SELECT * FROM $table_question WHERE gid = '$newgid'";
  499. $rs = api_sql_query($queryone);
  500. $numrs=mysql_num_rows($rs);
  501. for($k=0;$k<$numrs;$k++)
  502. {
  503. $imp[]=mysql_result($rs,$k,"imported_group");
  504. }
  505. $imp=@array_unique($imp);
  506. for($n=0;$n<count($gid_arr);$n++)
  507. {
  508. if(@in_array($gid_arr[$n],$imp))
  509. {
  510. $gname=surveymanager::get_groupname($gid_arr[$n]);
  511. $alr[]=$gname;
  512. //$alr[]=$gid_arr[$n];
  513. //$unique_arr = @array_unique($alr);
  514. // print_r($unique_arr);
  515. }
  516. }
  517. //$unique_arr = @array_unique($alr);
  518. //print_r($unique_arr);
  519. /*if($msg)
  520. {
  521. echo "You have already imported the following group(s)";
  522. echo "<br>".$msg;
  523. }*/
  524. for($index=0;$index<$num;$index++)
  525. {
  526. if(@!in_array($gid_arr[$index],$imp))
  527. {
  528. $temp_gid = $gid_arr[$index];
  529. $sql = "SELECT * FROM $table_question WHERE gid = '$temp_gid'";
  530. $res = api_sql_query($sql);
  531. $num_rows = mysql_num_rows($res);
  532. while($obj = mysql_fetch_object($res))
  533. {
  534. $temp_qtype = $obj->qtype;
  535. $temp_caption = $obj->caption;
  536. $y="";
  537. $x="";
  538. for($i=1;$i<=10;$i++)
  539. {
  540. $temp = "a".$i;
  541. $x.= "'".$obj->$temp."',"; /*this variable contains concatenated values and need to be refreshed each time before the loop starts!*/
  542. }
  543. for($j=1;$j<=10;$j++)
  544. {
  545. if($j==10)
  546. {
  547. $temps = "r".$j;
  548. $y.= "'".$obj->$temps."'";
  549. }
  550. else
  551. {
  552. $temps = "r".$j;
  553. $y.= "'".$obj->$temps."',";
  554. }
  555. }
  556. $sql_insert = "INSERT INTO $table_question (qid,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,imported_group) values('','$newgid','$temp_qtype','$temp_caption',$x'$anst','$ansd',$y,'$temp_gid')";
  557. $res2 = api_sql_query($sql_insert);
  558. }
  559. }
  560. }
  561. }
  562. function display_imported_group($sid,$table_group,$table_question)
  563. {
  564. $sql = "SELECT group_id FROM $table_group WHERE survey_id='$sid'";
  565. $res = api_sql_query($sql);
  566. $num = @mysql_num_rows($res);
  567. //echo "ths is num".$num;
  568. $parameters = array();
  569. $displays = array();
  570. while($obj = @mysql_fetch_object($res))
  571. {
  572. $groupid = $obj->group_id;
  573. $query = "SELECT * FROM $table_question WHERE gid = '$groupid'";
  574. $result = api_sql_query($query);
  575. while($object = @mysql_fetch_object($result))
  576. {
  577. $display = array();
  578. $display[] = '<input type="checkbox" name="course[]" value="'.$object->qid.'"/>';
  579. $display[] = $object->caption;
  580. $display[] = $object->qtype;
  581. $id = $object->gid;
  582. //echo "THIS IS GROUP NAME ID".$id;
  583. $gname = surveymanager::get_groupname($id);
  584. $display[] = $gname;
  585. $displays[] = $display;
  586. }
  587. }
  588. $table_header[] = array('', false);
  589. $table_header[] = array(get_lang('Question'), true);
  590. $table_header[] = array(get_lang('QuestionType'), true);
  591. $table_header[] = array(get_lang('Group'), true);
  592. Display :: display_sortable_table($table_header, $displays, array (), array (), $parameters);
  593. }
  594. function attach_survey($surveyid,$newsurveyid,$db_name,$curr_dbname)
  595. //For attaching the whole survey with its groups and questions
  596. {
  597. $sql = "SELECT * FROM $db_name.survey_group WHERE survey_id = '$surveyid'";
  598. $res = api_sql_query($sql,__FILE__,__LINE__);
  599. while($obj=@mysql_fetch_object($res))
  600. {
  601. $groupname=addslashes($obj->groupname);
  602. $introduction=addslashes($obj->introduction);
  603. $sql_insert = "INSERT INTO $curr_dbname.survey_group(group_id,survey_id,groupname,introduction) values('','$newsurveyid','$groupname','$introduction')";
  604. $resnext = api_sql_query($sql_insert,__FILE__,__LINE__);
  605. $groupid = mysql_insert_id();
  606. $sql_q = "SELECT * FROM $db_name.questions WHERE gid = '$obj->group_id'";
  607. $res_q = api_sql_query($sql_q,__FILE__,__LINE__);
  608. while($obj_q = mysql_fetch_object($res_q))
  609. {
  610. $caption1=addslashes($obj_q->caption);
  611. $a1=addslashes($obj_q->a1);
  612. $a2=addslashes($obj_q->a2);
  613. $a3=addslashes($obj_q->a3);
  614. $a4=addslashes($obj_q->a4);
  615. $a5=addslashes($obj_q->a5);
  616. $a6=addslashes($obj_q->a6);
  617. $a7=addslashes($obj_q->a7);
  618. $a8=addslashes($obj_q->a8);
  619. $a9=addslashes($obj_q->a9);
  620. $a10=addslashes($obj_q->a10);
  621. $at=addslashes($obj_q->at);
  622. $ad=addslashes($obj_q->ad);
  623. $r1=addslashes($obj_q->r1);
  624. $r2=addslashes($obj_q->r2);
  625. $r3=addslashes($obj_q->r3);
  626. $r4=addslashes($obj_q->r4);
  627. $r5=addslashes($obj_q->r5);
  628. $r6=addslashes($obj_q->r6);
  629. $r7=addslashes($obj_q->r7);
  630. $r8=addslashes($obj_q->r8);
  631. $r9=addslashes($obj_q->r9);
  632. $r10=addslashes($obj_q->r10);
  633. $sql_sort = "SELECT max(sortby) AS sortby FROM $curr_dbname.questions ";
  634. $res_sort=api_sql_query($sql_sort);
  635. $rs=mysql_fetch_object($res_sort);
  636. $sortby=$rs->sortby;
  637. if(empty($sortby))
  638. {$sortby=1;}
  639. else{$sortby=$sortby+1;}
  640. $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')";
  641. api_sql_query($sql_q_insert,__FILE__,__LINE__);
  642. }
  643. }
  644. }
  645. function update_group($groupid,$surveyid,$groupnamme,$introduction,$curr_dbname)
  646. {
  647. $sql = "UPDATE $curr_dbname.survey_group SET group_id='$groupid', survey_id='$surveyid', groupname='$groupnamme', introduction='$introduction' WHERE group_id='$groupid'";
  648. api_sql_query($sql, __FILE__, __LINE__);
  649. }
  650. /*
  651. function insert_old_groups($sid,$gids,$table_group,$table_question)
  652. {
  653. $gid_arr = explode(",",$gids);
  654. $index = count($gid_arr);
  655. ($gid_arr);
  656. for($p=0;$p<$index;$p++)
  657. {
  658. $sql = "SELECT * FROM $table_group WHERE group_id = '$gid_arr[$p]'";
  659. $res = api_sql_query($sql);
  660. $obj = mysql_fetch_object($res);
  661. $gname = $obj->groupname;
  662. if($gname=='Default')
  663. {
  664. $query = "SELECT * FROM $table_group WHERE survey_id = '$sid' AND groupname = 'Default'";
  665. $result = api_sql_query($query);
  666. $object = mysql_fetch_object($result);
  667. $gid = $object->group_id;
  668. $sql_def_check = "SELECT * FROM $table_question WHERE gid = '$gid'";
  669. $res_def_check = api_sql_query($sql_def_check);
  670. $count_def_check = mysql_num_rows($res_def_check);
  671. for($ctr=0;$ctr<$count_def_check;$ctr++)
  672. {
  673. $imp[]=mysql_result($res_def_check,$ctr,"imported_group");
  674. }
  675. $imp = @array_unique($imp);
  676. if(!@in_array($gid_arr[$p],$imp))
  677. {
  678. $sql_ques = "SELECT * FROM $table_question WHERE gid= '$gid_arr[$p]'";
  679. $res_ques = api_sql_query($sql_ques);
  680. $num = mysql_num_rows($res_ques);
  681. while($obj_ques = mysql_fetch_object($res_ques))
  682. {
  683. $temp_qtype = $obj_ques->qtype;
  684. $temp_caption = $obj_ques->caption;
  685. $anst = $obj_ques->at;
  686. $ansd = $obj_ques->ad;
  687. $y="";
  688. $x="";
  689. for($i=1;$i<=10;$i++)
  690. {
  691. $temp = "a".$i;
  692. $x.= "'".$obj_ques->$temp."',";
  693. }
  694. for($j=1;$j<=10;$j++)
  695. {
  696. if($j==10)
  697. {
  698. $temps = "r".$j;
  699. $y.= "'".$obj_ques->$temps."'";
  700. }
  701. else
  702. {
  703. $temps = "r".$j;
  704. $y.= "'".$obj_ques->$temps."',";
  705. }
  706. }
  707. $sql_ques_insert = "INSERT INTO $table_question (qid,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,imported_group) values('','$gid','$temp_qtype','$temp_caption',$x'$anst','$ansd',$y,'$gid_arr[$p]')";
  708. $res_ques_insert = api_sql_query($sql_ques_insert);
  709. }
  710. }
  711. else
  712. {
  713. $flag = 1;
  714. }
  715. }
  716. else
  717. {
  718. $intro = $obj->introduction;
  719. $sql_check = "SELECT * FROM $table_group WHERE survey_id = '$sid'";
  720. $res_check = api_sql_query($sql_check);
  721. $num_check = mysql_num_rows($res_check);
  722. for($k=0;$k<$num_check;$k++)
  723. {
  724. $imp[]=mysql_result($res_check,$k,"imported_group");
  725. }
  726. $imp = @array_unique($imp);
  727. if(!@in_array($gid_arr[$p],$imp))
  728. {
  729. $sql_insert = "INSERT INTO $table_group(group_id,survey_id,groupname,introduction,imported_group) values('','$sid','$gname','$intro','$gid_arr[$p]')";
  730. $res_insert = api_sql_query($sql_insert);
  731. $new_gid = mysql_insert_id();
  732. $sql_ques = "SELECT * FROM $table_question WHERE gid= '$gid_arr[$p]'";
  733. $res_ques = api_sql_query($sql_ques);
  734. $num = mysql_num_rows($res_ques);
  735. while($obj_ques = mysql_fetch_object($res_ques))
  736. {
  737. $temp_qtype = $obj_ques->qtype;
  738. $temp_caption = $obj_ques->caption;
  739. $anst = $obj_ques->at;
  740. $ansd = $obj_ques->ad;
  741. $y="";
  742. $x="";
  743. for($i=1;$i<=10;$i++)
  744. {
  745. $temp = "a".$i;
  746. $x.= "'".$obj_ques->$temp."',";
  747. }
  748. for($j=1;$j<=10;$j++)
  749. {
  750. if($j==10)
  751. {
  752. $temps = "r".$j;
  753. $y.= "'".$obj_ques->$temps."'";
  754. }
  755. else
  756. {
  757. $temps = "r".$j;
  758. $y.= "'".$obj_ques->$temps."',";
  759. }
  760. }
  761. $sql_ques_insert = "INSERT INTO $table_question (qid,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,imported_group) values('','$new_gid','$temp_qtype','$temp_caption',$x'$anst','$ansd',$y,'$gid_arr[$p]')";
  762. $res_ques_insert = api_sql_query($sql_ques_insert);
  763. }
  764. }
  765. else
  766. {
  767. $flag = 1;
  768. }
  769. }
  770. }
  771. return ($flag);
  772. }
  773. */
  774. function insert_old_groups($sid,$gids,$table_group,$table_question,$db_name,$cidReq)
  775. {
  776. $table_course = Database :: get_main_table(TABLE_MAIN_COURSE);
  777. $sql = "SELECT * FROM $table_course WHERE code = '$cidReq'";
  778. $res = api_sql_query($sql,__FILE__,__LINE__);
  779. $obj_name=@mysql_fetch_object($res);
  780. $current_db_name = $obj_name->db_name ;
  781. $gid_arr = explode(",",$gids);
  782. $index = count($gid_arr);
  783. ($gid_arr);
  784. for($p=0;$p<$index;$p++)
  785. {
  786. $sql = "SELECT * FROM $db_name.survey_group WHERE group_id = '$gid_arr[$p]'";
  787. $res = api_sql_query($sql);
  788. $obj = mysql_fetch_object($res);
  789. $gname = $obj->groupname;
  790. if($gname=='No Group')
  791. {
  792. $query = "SELECT * FROM $db_name.survey_group WHERE survey_id = '$sid' AND groupname = 'No Group'";
  793. $result = api_sql_query($query);
  794. $object = mysql_fetch_object($result);
  795. $gid = $object->group_id;
  796. $sql_def_check = "SELECT * FROM $db_name.questions WHERE gid = '$gid'";
  797. $res_def_check = api_sql_query($sql_def_check);
  798. $count_def_check = mysql_num_rows($res_def_check);
  799. for($ctr=0;$ctr<$count_def_check;$ctr++)
  800. {
  801. $imp[]=mysql_result($res_def_check,$ctr,"imported_group");
  802. }
  803. $imp = @array_unique($imp);
  804. $gid_arr[$p];
  805. if(!@in_array($gid_arr[$p],$imp))
  806. {
  807. $sql_ques = "SELECT * FROM $db_name.questions WHERE gid= '$gid_arr[$p]'";
  808. $res_ques = api_sql_query($sql_ques);
  809. $num = mysql_num_rows($res_ques);
  810. while($obj_ques = mysql_fetch_object($res_ques))
  811. {
  812. $temp_qtype = $obj_ques->qtype;
  813. $temp_caption = $obj_ques->caption;
  814. $anst = $obj_ques->at;
  815. $ansd = $obj_ques->ad;
  816. $y="";
  817. $x="";
  818. for($i=1;$i<=10;$i++)
  819. {
  820. $temp = "a".$i;
  821. $x.= "'".$obj_ques->$temp."',"; /*this variable contains concatenated values and need to be refreshed each time before the loop starts!*/
  822. }
  823. for($j=1;$j<=10;$j++)
  824. {
  825. if($j==10)
  826. {
  827. $temps = "r".$j;
  828. $y.= "'".$obj_ques->$temps."'";
  829. }
  830. else
  831. {
  832. $temps = "r".$j;
  833. $y.= "'".$obj_ques->$temps."',";
  834. }
  835. }
  836. $sql_ques_insert = "INSERT INTO $current_db_name.questions (qid,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,imported_group) values('','$gid','$temp_qtype','$temp_caption',$x'$anst','$ansd',$y,'$gid_arr[$p]')";
  837. $res_ques_insert = api_sql_query($sql_ques_insert);
  838. }
  839. }
  840. else
  841. {
  842. $flag = 1;
  843. }
  844. }
  845. else
  846. {
  847. $intro = $obj->introduction;
  848. $sql_check = "SELECT * FROM $db_name.survey_group WHERE survey_id = '$sid'";
  849. $res_check = api_sql_query($sql_check);
  850. $num_check = mysql_num_rows($res_check);
  851. for($k=0;$k<$num_check;$k++)
  852. {
  853. $imp[]=mysql_result($res_check,$k,"imported_group");
  854. }
  855. $imp = @array_unique($imp);
  856. if(!@in_array($gid_arr[$p],$imp))
  857. {
  858. $sql_insert = "INSERT INTO $current_db_name.survey_group(group_id,survey_id,groupname,introduction,imported_group) values('','$sid','$gname','$intro','$gid_arr[$p]')";
  859. $res_insert = api_sql_query($sql_insert);
  860. $new_gid = mysql_insert_id();
  861. $sql_ques = "SELECT * FROM $db_name.questions WHERE gid= '$gid_arr[$p]'";
  862. $res_ques = api_sql_query($sql_ques);
  863. $num = mysql_num_rows($res_ques);
  864. while($obj_ques = mysql_fetch_object($res_ques))
  865. {
  866. $temp_qtype = $obj_ques->qtype;
  867. $temp_caption = $obj_ques->caption;
  868. $anst = $obj_ques->at;
  869. $ansd = $obj_ques->ad;
  870. $y="";
  871. $x="";
  872. for($i=1;$i<=10;$i++)
  873. {
  874. $temp = "a".$i;
  875. $x.= "'".$obj_ques->$temp."',"; /*this variable contains concatenated values and need to be refreshed each time before the loop starts!*/
  876. }
  877. for($j=1;$j<=10;$j++)
  878. {
  879. if($j==10)
  880. {
  881. $temps = "r".$j;
  882. $y.= "'".$obj_ques->$temps."'";
  883. }
  884. else
  885. {
  886. $temps = "r".$j;
  887. $y.= "'".$obj_ques->$temps."',";
  888. }
  889. }
  890. $sql_ques_insert = "INSERT INTO $current_db_name.questions (qid,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,imported_group) values('','$new_gid','$temp_qtype','$temp_caption',$x'$anst','$ansd',$y,'$gid_arr[$p]')";
  891. $res_ques_insert = api_sql_query($sql_ques_insert);
  892. }
  893. }
  894. else
  895. {
  896. $flag = 1;
  897. }
  898. }
  899. }
  900. return ($flag);
  901. }
  902. function import_question($surveyid,$qids,$table_group,$table_question,$db_name,$cidReq,$yes)
  903. {
  904. $table_course = Database :: get_main_table(TABLE_MAIN_COURSE);
  905. $sql_course = "SELECT * FROM $table_course WHERE code = '$cidReq'";
  906. $res_course = api_sql_query($sql_course,__FILE__,__LINE__);
  907. $obj_name=@mysql_fetch_object($res_course);
  908. $current_db_name = $obj_name->db_name ;
  909. $qid=explode(",",$qids);
  910. $count = count($qid);
  911. for($i=0; $i<$count; $i++)
  912. {
  913. $sql_q = "SELECT * FROM $table_question WHERE qid = '$qid[$i]'";
  914. $res_q = api_sql_query($sql_q,__FILE__,__LINE__);
  915. $obj=@mysql_fetch_object($res_q);
  916. $oldgid=$obj->gid;
  917. $sql = "SELECT * FROM $table_group WHERE group_id = '$oldgid'";
  918. $res = api_sql_query($sql,__FILE__,__LINE__);
  919. $obj_gr = @mysql_fetch_object($res);
  920. $gname = $obj_gr->groupname;
  921. $gintro = $obj_gr->introduction;
  922. $sql_gid = "SELECT * FROM $table_group WHERE survey_id = '$surveyid' AND groupname = '$gname'";
  923. $res_gid = api_sql_query($sql_gid,__FILE__,__LINE__);
  924. $num=mysql_num_rows($res_gid);
  925. $obj_gid=@mysql_fetch_object($res_gid);
  926. $sql_quesid = "SELECT * FROM $table_question WHERE gid = '$obj_gid->group_id' AND caption = '$obj->caption'";
  927. $res_quesid = api_sql_query($sql_quesid,__FILE__,__LINE__);
  928. $num_ques=mysql_num_rows($res_quesid);
  929. if($num_ques>0)
  930. {
  931. $message=1;
  932. //echo "<div align=\"center\"><strong><font color=\"#FF0000\">Already Imported !</font></strong></div>" ;
  933. }
  934. else
  935. {
  936. if($num>0 && $yes=="yes")
  937. {
  938. $sql_q_insert = "INSERT INTO $current_db_name.questions (qid,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) values('','$obj_gid->group_id','$obj->qtype','$obj->caption','$obj->a1','$obj->a2','$obj->a3','$obj->a4','$obj->a5','$obj->a6','$obj->a7','$obj->a8','$obj->a9','$obj->a10','$obj->at','$obj->ad','$obj->r1','$obj->r2','$obj->r3','$obj->r4','$obj->r5','$obj->r6','$obj->r7','$obj->r8','$obj->r9','$obj->r10')";
  939. api_sql_query($sql_q_insert,__FILE__,__LINE__);
  940. }
  941. else
  942. {
  943. $sql_ginsert="INSERT INTO $current_db_name.survey_group(group_id,survey_id,groupname,introduction) values('','$surveyid','$gname','$gintro')";
  944. api_sql_query($sql_ginsert,__FILE__,__LINE__);
  945. $new_gid = mysql_insert_id();
  946. $sql_q_insert = "INSERT INTO $current_db_name.questions (qid,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) values('','$new_gid','$obj->qtype','$obj->caption','$obj->a1','$obj->a2','$obj->a3','$obj->a4','$obj->a5','$obj->a6','$obj->a7','$obj->a8','$obj->a9','$obj->a10','$obj->at','$obj->ad','$obj->r1','$obj->r2','$obj->r3','$obj->r4','$obj->r5','$obj->r6','$obj->r7','$obj->r8','$obj->r9','$obj->r10')";
  947. api_sql_query($sql_q_insert,__FILE__,__LINE__);
  948. }
  949. }
  950. }
  951. return $message;
  952. }
  953. function create_course_survey_rel($cidReq,$survey_id,$table_course,$table_course_survey_rel)
  954. {
  955. $sql = "SELECT * FROM $table_course WHERE code = '$cidReq'";
  956. $res = api_sql_query($sql,__FILE__,__LINE__);
  957. $obj=@mysql_fetch_object($res);
  958. $db_name = $obj->db_name ;
  959. $sql="INSERT INTO $table_course_survey_rel(id,course_code,db_name,survey_id) values('','$cidReq','$db_name','$survey_id')";
  960. api_sql_query($sql,__FILE__,__LINE__);
  961. return $db_name;
  962. }
  963. function import_existing_question($surveyid,$qids,$table_group,$table_question,$yes)
  964. {
  965. $qid=explode(",",$qids);
  966. $count = count($qid);
  967. for($i=0; $i<$count; $i++)
  968. {
  969. $sql_q = "SELECT * FROM $table_question WHERE qid = '$qid[$i]'";
  970. $res_q = api_sql_query($sql_q,__FILE__,__LINE__);
  971. $obj=@mysql_fetch_object($res_q);
  972. $oldgid=$obj->gid;
  973. $sql = "SELECT * FROM $table_group WHERE group_id = '$oldgid'";
  974. $res = api_sql_query($sql,__FILE__,__LINE__);
  975. $obj_gr = @mysql_fetch_object($res);
  976. $gname = $obj_gr->groupname;
  977. $gintro = $obj_gr->introduction;
  978. $sql_gid = "SELECT * FROM $table_group WHERE survey_id = '$surveyid' AND groupname = '$gname'";
  979. $res_gid = api_sql_query($sql_gid,__FILE__,__LINE__);
  980. $num=mysql_num_rows($res_gid);
  981. $obj_gid=@mysql_fetch_object($res_gid);
  982. $sql_quesid = "SELECT * FROM $table_question WHERE gid = '$obj_gid->group_id' AND caption = '$obj->caption'";
  983. $res_quesid = api_sql_query($sql_quesid,__FILE__,__LINE__);
  984. $num_ques=mysql_num_rows($res_quesid);
  985. if($num_ques>0)
  986. {
  987. $message=1;
  988. //echo "<div align=\"center\"><strong><font color=\"#FF0000\">Already Imported !</font></strong></div>" ;
  989. }
  990. else
  991. {
  992. if($num>0 && $yes=="yes")
  993. {
  994. $sql_q_insert = "INSERT INTO $table_question (qid,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) values('','$obj_gid->group_id','$obj->qtype','$obj->caption','$obj->a1','$obj->a2','$obj->a3','$obj->a4','$obj->a5','$obj->a6','$obj->a7','$obj->a8','$obj->a9','$obj->a10','$obj->at','$obj->ad','$obj->r1','$obj->r2','$obj->r3','$obj->r4','$obj->r5','$obj->r6','$obj->r7','$obj->r8','$obj->r9','$obj->r10')";
  995. api_sql_query($sql_q_insert,__FILE__,__LINE__);
  996. }
  997. else
  998. {
  999. $sql_ginsert="INSERT INTO $table_group(group_id,survey_id,groupname,introduction) values('','$surveyid','$gname','$gintro')";
  1000. api_sql_query($sql_ginsert,__FILE__,__LINE__);
  1001. $new_gid = mysql_insert_id();
  1002. $sql_q_insert = "INSERT INTO $table_question (qid,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) values('','$new_gid','$obj->qtype','$obj->caption','$obj->a1','$obj->a2','$obj->a3','$obj->a4','$obj->a5','$obj->a6','$obj->a7','$obj->a8','$obj->a9','$obj->a10','$obj->at','$obj->ad','$obj->r1','$obj->r2','$obj->r3','$obj->r4','$obj->r5','$obj->r6','$obj->r7','$obj->r8','$obj->r9','$obj->r10')";
  1003. api_sql_query($sql_q_insert,__FILE__,__LINE__);
  1004. }
  1005. }
  1006. }
  1007. return $message;
  1008. }
  1009. function insert_existing_groups($sid,$gids,$table_group,$table_question)
  1010. {
  1011. $gid_arr = explode(",",$gids);
  1012. $index = count($gid_arr);
  1013. ($gid_arr);
  1014. for($p=0;$p<$index;$p++)
  1015. {
  1016. $sql = "SELECT * FROM $table_group WHERE group_id = '$gid_arr[$p]'";
  1017. $res = api_sql_query($sql);
  1018. $obj = mysql_fetch_object($res);
  1019. $gname = $obj->groupname;
  1020. if($gname=='No Group')
  1021. {
  1022. $query = "SELECT * FROM $table_group WHERE survey_id = '$sid' AND groupname = 'No Group'";
  1023. $result = api_sql_query($query);
  1024. $object = mysql_fetch_object($result);
  1025. $gid = $object->group_id;
  1026. $sql_def_check = "SELECT * FROM $table_question WHERE gid = '$gid'";
  1027. $res_def_check = api_sql_query($sql_def_check);
  1028. $count_def_check = mysql_num_rows($res_def_check);
  1029. for($ctr=0;$ctr<$count_def_check;$ctr++)
  1030. {
  1031. $imp[]=mysql_result($res_def_check,$ctr,"imported_group");
  1032. }
  1033. $imp = @array_unique($imp);
  1034. if(!@in_array($gid_arr[$p],$imp))
  1035. {
  1036. $sql_ques = "SELECT * FROM $table_question WHERE gid= '$gid_arr[$p]'";
  1037. $res_ques = api_sql_query($sql_ques);
  1038. $num = mysql_num_rows($res_ques);
  1039. while($obj_ques = mysql_fetch_object($res_ques))
  1040. {
  1041. $temp_qtype = $obj_ques->qtype;
  1042. $temp_caption = $obj_ques->caption;
  1043. $anst = $obj_ques->at;
  1044. $ansd = $obj_ques->ad;
  1045. $y="";
  1046. $x="";
  1047. for($i=1;$i<=10;$i++)
  1048. {
  1049. $temp = "a".$i;
  1050. $x.= "'".$obj_ques->$temp."',"; /*this variable contains concatenated values and need to be refreshed each time before the loop starts!*/
  1051. }
  1052. for($j=1;$j<=10;$j++)
  1053. {
  1054. if($j==10)
  1055. {
  1056. $temps = "r".$j;
  1057. $y.= "'".$obj_ques->$temps."'";
  1058. }
  1059. else
  1060. {
  1061. $temps = "r".$j;
  1062. $y.= "'".$obj_ques->$temps."',";
  1063. }
  1064. }
  1065. $sql_ques_insert = "INSERT INTO $table_question (qid,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,imported_group) values('','$gid','$temp_qtype','$temp_caption',$x'$anst','$ansd',$y,'$gid_arr[$p]')";
  1066. $res_ques_insert = api_sql_query($sql_ques_insert);
  1067. }
  1068. }
  1069. else
  1070. {
  1071. $flag = 1;
  1072. }
  1073. }
  1074. else
  1075. {
  1076. $intro = $obj->introduction;
  1077. $sql_check = "SELECT * FROM $table_group WHERE survey_id = '$sid'";
  1078. $res_check = api_sql_query($sql_check);
  1079. $num_check = mysql_num_rows($res_check);
  1080. for($k=0;$k<$num_check;$k++)
  1081. {
  1082. $imp[]=mysql_result($res_check,$k,"imported_group");
  1083. }
  1084. $imp = @array_unique($imp);
  1085. if(!@in_array($gid_arr[$p],$imp))
  1086. {
  1087. $sql_insert = "INSERT INTO $table_group(group_id,survey_id,groupname,introduction,imported_group) values('','$sid','$gname','$intro','$gid_arr[$p]')";
  1088. $res_insert = api_sql_query($sql_insert);
  1089. $new_gid = mysql_insert_id();
  1090. $sql_ques = "SELECT * FROM $table_question WHERE gid= '$gid_arr[$p]'";
  1091. $res_ques = api_sql_query($sql_ques);
  1092. $num = mysql_num_rows($res_ques);
  1093. while($obj_ques = mysql_fetch_object($res_ques))
  1094. {
  1095. $temp_qtype = $obj_ques->qtype;
  1096. $temp_caption = $obj_ques->caption;
  1097. $anst = $obj_ques->at;
  1098. $ansd = $obj_ques->ad;
  1099. $y="";
  1100. $x="";
  1101. for($i=1;$i<=10;$i++)
  1102. {
  1103. $temp = "a".$i;
  1104. $x.= "'".$obj_ques->$temp."',"; /*this variable contains concatenated values and need to be refreshed each time before the loop starts!*/
  1105. }
  1106. for($j=1;$j<=10;$j++)
  1107. {
  1108. if($j==10)
  1109. {
  1110. $temps = "r".$j;
  1111. $y.= "'".$obj_ques->$temps."'";
  1112. }
  1113. else
  1114. {
  1115. $temps = "r".$j;
  1116. $y.= "'".$obj_ques->$temps."',";
  1117. }
  1118. }
  1119. $sql_ques_insert = "INSERT INTO $table_question (qid,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,imported_group) values('','$new_gid','$temp_qtype','$temp_caption',$x'$anst','$ansd',$y,'$gid_arr[$p]')";
  1120. $res_ques_insert = api_sql_query($sql_ques_insert);
  1121. }
  1122. }
  1123. else
  1124. {
  1125. $flag = 1;
  1126. }
  1127. }
  1128. }
  1129. return ($flag);
  1130. }
  1131. function pick_surveyname($sid)
  1132. {
  1133. $surveytable=Database:: get_course_table('survey');
  1134. $sql="SELECT * FROM $surveytable WHERE survey_id=$sid";
  1135. $res=api_sql_query($sql);
  1136. $code=@mysql_result($res,0,'title');
  1137. return($code);
  1138. }
  1139. function pick_author($survey_id)
  1140. {
  1141. $survey_table = Database :: get_course_table('survey');
  1142. $sql = "SELECT author FROM $survey_table WHERE survey_id='$survey_id'";
  1143. $res = api_sql_query($sql, __FILE__, __LINE__);
  1144. $author=@mysql_result($res,0,'author');
  1145. return $author;
  1146. }
  1147. function question_import($surveyid,$qids,$db_name,$curr_dbname)
  1148. {
  1149. $qid=explode(",",$qids);
  1150. $count = count($qid);
  1151. for($i=0; $i<$count; $i++)
  1152. {
  1153. $sql_sort = "SELECT max(sortby) AS sortby FROM $curr_dbname.questions ";
  1154. $res_sort=api_sql_query($sql_sort);
  1155. $rs=mysql_fetch_object($res_sort);
  1156. $sortby=$rs->sortby;
  1157. if(empty($sortby))
  1158. {$sortby=1;}
  1159. else{$sortby=$sortby+1;}
  1160. $sql_q = "SELECT * FROM $db_name.questions WHERE qid = '$qid[$i]'";
  1161. $res_q = api_sql_query($sql_q,__FILE__,__LINE__);
  1162. $obj=@mysql_fetch_object($res_q);
  1163. $oldgid=$obj->gid;
  1164. $caption1=addslashes($obj->caption);
  1165. $a1=addslashes($obj->a1);
  1166. $a2=addslashes($obj->a2);
  1167. $a3=addslashes($obj->a3);
  1168. $a4=addslashes($obj->a4);
  1169. $a5=addslashes($obj->a5);
  1170. $a6=addslashes($obj->a6);
  1171. $a7=addslashes($obj->a7);
  1172. $a8=addslashes($obj->a8);
  1173. $a9=addslashes($obj->a9);
  1174. $a10=addslashes($obj->a10);
  1175. $at=addslashes($obj->at);
  1176. $ad=addslashes($obj->ad);
  1177. $r1=addslashes($obj->r1);
  1178. $r2=addslashes($obj->r2);
  1179. $r3=addslashes($obj->r3);
  1180. $r4=addslashes($obj->r4);
  1181. $r5=addslashes($obj->r5);
  1182. $r6=addslashes($obj->r6);
  1183. $r7=addslashes($obj->r7);
  1184. $r8=addslashes($obj->r8);
  1185. $r9=addslashes($obj->r9);
  1186. $r10=addslashes($obj_q->r10);
  1187. //$sql_gr = "SELECT * FROM $db_name.survey_group WHERE group_id = '$oldgid'";
  1188. //$res_gr = api_sql_query($sql_gr,__FILE__,__LINE__);
  1189. // $obj_gr=@mysql_fetch_object($res_gr);
  1190. //$groupname = $obj_gr->groupname
  1191. $sql_quesid = "SELECT * FROM $curr_dbname.questions WHERE survey_id = '$surveyid' AND imported_question = '$qid[$i]' AND db_name = '$db_name'";
  1192. $res_quesid = api_sql_query($sql_quesid,__FILE__,__LINE__);
  1193. $num_ques=mysql_num_rows($res_quesid);
  1194. if($num_ques>0)
  1195. {
  1196. $message=1;
  1197. }
  1198. else
  1199. {
  1200. $sql_group = "SELECT * FROM $db_name.survey_group WHERE group_id = '$oldgid'";
  1201. $res_group = api_sql_query($sql_group,__FILE__,__LINE__);
  1202. $obj_group=@mysql_fetch_object($res_group);
  1203. $groupname = $obj_group->groupname;
  1204. $sql = "SELECT * FROM $curr_dbname.survey_group WHERE groupname = '$groupname' AND survey_id = '$surveyid'";
  1205. $res = api_sql_query($sql,__FILE__,__LINE__);
  1206. $obj_gro = mysql_fetch_object($res);
  1207. $num_group=mysql_num_rows($res);
  1208. if($num_group>0)
  1209. {
  1210. $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,imported_question,db_name) values('','$obj_gro->group_id','$surveyid','$obj->qtype','$caption1','$obj->alignment','$sortby','$a1','$a2','$a3','$a4','$a5','$a6','$a7','$a8','$a9','$a10','$at','$ad','$r1','$r2','$r3','$r4','$r5','$r6','$r7','$r8','$r9','$r10','$qid[$i]','$db_name')";
  1211. api_sql_query($sql_q_insert,__FILE__,__LINE__);
  1212. }
  1213. else
  1214. {
  1215. //$num_group;
  1216. $sql_ginsert="INSERT INTO $curr_dbname.survey_group(group_id,survey_id,groupname,introduction,imported_group, db_name) values('','$surveyid','$groupname','$obj_group->introduction','$oldgid','$db_name')";
  1217. api_sql_query($sql_ginsert,__FILE__,__LINE__);
  1218. $new_gid = mysql_insert_id();
  1219. $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,imported_question,db_name) values('','$new_gid','$surveyid','$obj->qtype','$caption1','$obj->alignment','$sortby','$a1','$a2','$a3','$a4','$a5','$a6','$a7','$a8','$a9','$a10','$at','$ad','$r1','$r2','$r3','$r4','$r5','$r6','$r7','$r8','$r9','$r10','$qid[$i]','$db_name')";
  1220. api_sql_query($sql_q_insert,__FILE__,__LINE__);
  1221. }
  1222. }
  1223. }
  1224. return $message;
  1225. }
  1226. /*
  1227. function import_group($surveyid,$gids,$db_name,$curr_dbname)
  1228. {
  1229. $gid_arr = explode(",",$gids);
  1230. $index = count($gid_arr);
  1231. for($i=0;$i<$index;$i++)
  1232. {
  1233. $sql = "SELECT * FROM $db_name.survey_group WHERE group_id = '$gid_arr[$i]'";
  1234. $res = api_sql_query($sql,__FILE__,__LINE__);
  1235. $obj = mysql_fetch_object($res);
  1236. $sql_ques = "SELECT * FROM $db_name.questions WHERE gid = '$gid_arr[$i]'";
  1237. $res_ques = api_sql_query($sql_ques,__FILE__,__LINE__);
  1238. $obj_ques = mysql_fetch_object($res_ques);
  1239. $sql_check = "SELECT * FROM $curr_dbname.survey_group WHERE survey_id = '$surveyid' AND imported_group = '$gid_arr[$i]' AND db_name = '$db_name'";
  1240. $res_check = api_sql_query($sql_check);
  1241. $obj_check = mysql_fetch_object($res_check);
  1242. $num = mysql_num_rows($res_check);
  1243. if($num>0)
  1244. {
  1245. $sql_question = "SELECT * FROM $curr_dbname.questions WHERE survey_id='$surveyid' AND imported_question = '$obj_ques->qid' AND db_name = '$db_name'";
  1246. $res_question = api_sql_query($sql_question,__FILE__,__LINE__);
  1247. $num_ques = mysql_num_rows($res_question);
  1248. if($num_ques>0)
  1249. {
  1250. $message=1;
  1251. }
  1252. else
  1253. {
  1254. $sql_insert_ques = "INSERT INTO $curr_dbname.questions (qid,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,imported_question,db_name) values('','$obj_check->group_id','$surveyid','$obj_ques->qtype','$obj_ques->caption','$obj_ques->a1','$obj_ques->a2','$obj_ques->a3','$obj_ques->a4','$obj_ques->a5','$obj_ques->a6','$obj_ques->a7','$obj_ques->a8','$obj_ques->a9','$obj_ques->a10','$obj_ques->at','$obj_ques->ad','$obj_ques->r1','$obj_ques->r2','$obj_ques->r3','$obj_ques->r4','$obj_ques->r5','$obj_ques->r6','$obj_ques->r7','$obj_ques->r8','$obj_ques->r9','$obj_ques->r10','$obj_ques->qid','$db_name')";
  1255. api_sql_query($sql_insert_ques);
  1256. }
  1257. }
  1258. else
  1259. {
  1260. $insert_group = "INSERT INTO $curr_dbname.survey_group (group_id,survey_id,groupname,introduction,imported_group,db_name) values('','$surveyid','$obj->groupname','$obj->introduction','$obj->group_id','$db_name')";
  1261. $res_insert_group=api_sql_query($insert_group);
  1262. $new_gid = mysql_insert_id();
  1263. $sql_insert_grp = "INSERT INTO $curr_dbname.questions (qid,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,imported_question,db_name) values('','$new_gid','$surveyid','$obj_ques->qtype','$obj_ques->caption','$obj_ques->a1','$obj_ques->a2','$obj_ques->a3','$obj_ques->a4','$obj_ques->a5','$obj_ques->a6','$obj_ques->a7','$obj_ques->a8','$obj_ques->a9','$obj_ques->a10','$obj_ques->at','$obj_ques->ad','$obj_ques->r1','$obj_ques->r2','$obj_ques->r3','$obj_ques->r4','$obj_ques->r5','$obj_ques->r6','$obj_ques->r7','$obj_ques->r8','$obj_ques->r9','$obj_ques->r10','$obj_ques->qid','$db_name')";
  1264. api_sql_query($sql_insert_grp);
  1265. }
  1266. }
  1267. return $message;
  1268. }
  1269. */
  1270. function import_group($sid,$gids,$db_name,$curr_dbname)
  1271. {
  1272. $gid_arr = explode(",",$gids);
  1273. $index = count($gid_arr);
  1274. for($i=0;$i<$index;$i++)
  1275. {
  1276. $sql = "SELECT * FROM $db_name.survey_group WHERE group_id = '$gid_arr[$i]'";
  1277. $res = api_sql_query($sql);
  1278. $obj = mysql_fetch_object($res);
  1279. $groupname=addslashes($obj->groupname);
  1280. $introduction=addslashes($obj->introduction);
  1281. $g_sortby = intval($obj->sortby);
  1282. $sql_curr = "SELECT * FROM $curr_dbname.survey_group WHERE survey_id = '$sid' AND groupname = '$obj->groupname'";
  1283. $res_curr = api_sql_query($sql_curr);
  1284. $obj_curr = mysql_fetch_object($res_curr);
  1285. $gid = $obj_curr->group_id;
  1286. $num = mysql_num_rows($res_curr);
  1287. if($num>0) //the group name exists and the questions will be imported in this group.
  1288. {
  1289. $sql_ques = "SELECT * FROM $curr_dbname.questions WHERE gid = '$gid'";
  1290. $res_ques = api_sql_query($sql_ques);
  1291. $obj_ques = mysql_fetch_object($res_ques);
  1292. $count = mysql_num_rows($res_ques);
  1293. for($j=0;$j<$count;$j++)
  1294. {
  1295. $check_qid[] = mysql_result($res_ques,$j,"imported_question");
  1296. $check_db[] = mysql_result($res_ques,$j,"db_name");
  1297. }
  1298. $check_qid = @array_unique($check_qid);
  1299. $check_db = @array_unique($check_db);
  1300. $sql_old = "SELECT * FROM $db_name.questions WHERE gid = '$gid_arr[$i]'";
  1301. $res_old = api_sql_query($sql_old);
  1302. while($obj_old = mysql_fetch_object($res_old))
  1303. {
  1304. $caption1=addslashes($obj_old->caption);
  1305. $a1=addslashes($obj_old->a1);
  1306. $a2=addslashes($obj_old->a2);
  1307. $a3=addslashes($obj_old->a3);
  1308. $a4=addslashes($obj_old->a4);
  1309. $a5=addslashes($obj_old->a5);
  1310. $a6=addslashes($obj_old->a6);
  1311. $a7=addslashes($obj_old->a7);
  1312. $a8=addslashes($obj_old->a8);
  1313. $a9=addslashes($obj_old->a9);
  1314. $a10=addslashes($obj_old->a10);
  1315. $at=addslashes($obj_old->at);
  1316. $ad=addslashes($obj_old->ad);
  1317. $r1=addslashes($obj_old->r1);
  1318. $r2=addslashes($obj_old->r2);
  1319. $r3=addslashes($obj_old->r3);
  1320. $r4=addslashes($obj_old->r4);
  1321. $r5=addslashes($obj_old->r5);
  1322. $r6=addslashes($obj_old->r6);
  1323. $r7=addslashes($obj_old->r7);
  1324. $r8=addslashes($obj_old->r8);
  1325. $r9=addslashes($obj_old->r9);
  1326. $r10=addslashes($obj_old->r10);
  1327. $sql_sort = "SELECT max(sortby) AS sortby FROM $curr_dbname.questions ";
  1328. $res_sort=api_sql_query($sql_sort);
  1329. $rs=mysql_fetch_object($res_sort);
  1330. $sortby=$rs->sortby;
  1331. if(empty($sortby))
  1332. {$sortby=1;}
  1333. else{$sortby=$sortby+1;}
  1334. if(@in_array($obj_old->qid,$check_qid)&&@in_array($db_name,$check_db)) //the question has already been imported
  1335. {
  1336. $flag=1;
  1337. continue;
  1338. }
  1339. else
  1340. {
  1341. $sql_insertq = "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, alt_text, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, imported_question, db_name) VALUES('', '$gid', '$sid', '$obj_old->qtype', '$caption1', '$obj_old->alignment', '$sortby', '$a1', '$a2', '$a3', '$a4', '$a5', '$a6', '$a7', '$a8', '$a9', '$a10', '$at', '$ad', '$alt_text', '$r1', '$r2', '$r3', '$r4', '$r5', '$r6', '$r7', '$r8', '$r9', '$r10', '$obj_old->qid', '$db_name')";
  1342. api_sql_query($sql_insertq);
  1343. }
  1344. }
  1345. }
  1346. else //the groupname does not exist. Create group with this name and insert questions in this new group.
  1347. {
  1348. $sql_insertg = "INSERT INTO $curr_dbname.survey_group (group_id, survey_id, groupname, introduction, imported_group, db_name, sortby) VALUES ('', '$sid', '$groupname', '$introduction', '$obj->group_id', '$db_name', $g_sortby)";
  1349. api_sql_query($sql_insertg);
  1350. $group_id = mysql_insert_id();
  1351. $sql_old = "SELECT * FROM $db_name.questions WHERE gid = '$gid_arr[$i]'";
  1352. $res_old = api_sql_query($sql_old);
  1353. while($obj_old = mysql_fetch_object($res_old))
  1354. {
  1355. $caption1=addslashes($obj_old->caption);
  1356. $a1=addslashes($obj_old->a1);
  1357. $a2=addslashes($obj_old->a2);
  1358. $a3=addslashes($obj_old->a3);
  1359. $a4=addslashes($obj_old->a4);
  1360. $a5=addslashes($obj_old->a5);
  1361. $a6=addslashes($obj_old->a6);
  1362. $a7=addslashes($obj_old->a7);
  1363. $a8=addslashes($obj_old->a8);
  1364. $a9=addslashes($obj_old->a9);
  1365. $a10=addslashes($obj_old->a10);
  1366. $at=addslashes($obj_old->at);
  1367. $ad=addslashes($obj_old->ad);
  1368. $r1=addslashes($obj_old->r1);
  1369. $r2=addslashes($obj_old->r2);
  1370. $r3=addslashes($obj_old->r3);
  1371. $r4=addslashes($obj_old->r4);
  1372. $r5=addslashes($obj_old->r5);
  1373. $r6=addslashes($obj_old->r6);
  1374. $r7=addslashes($obj_old->r7);
  1375. $r8=addslashes($obj_old->r8);
  1376. $r9=addslashes($obj_old->r9);
  1377. $r10=addslashes($obj_old->r10);
  1378. $sql_sort = "SELECT max(sortby) AS sortby FROM $curr_dbname.questions ";
  1379. $res_sort=api_sql_query($sql_sort);
  1380. $rs=mysql_fetch_object($res_sort);
  1381. $sortby=$rs->sortby;
  1382. if(empty($sortby))
  1383. {$sortby=1;}
  1384. else{$sortby=$sortby+1;}
  1385. $sql_insertq = "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, alt_text, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, imported_question, db_name) VALUES('', '$group_id', '$sid', '$obj_old->qtype', '$caption1', '$obj_old->alignment', '$sortby', '$a1', '$a2', '$a3', '$a4', '$a5', '$a6', '$a7', '$a8', '$a9', '$a10', '$at', '$ad', '$obj_old->alt_text', '$r1', '$r2', '$r3', '$r4', '$r5', '$r6', '$r7', '$r8', '$r9', '$r10', '$obj_old->qid', '$db_name')";
  1386. api_sql_query($sql_insertq);
  1387. }
  1388. }
  1389. }
  1390. return ($flag);
  1391. }
  1392. /**
  1393. * Enter description here...
  1394. *
  1395. * @return unknown
  1396. * @todo remove this function because this is of no use and should not be used.
  1397. */
  1398. function get_status()
  1399. {
  1400. global $_user;
  1401. $table_user = Database::get_main_table(TABLE_MAIN_USER);
  1402. $sqlm = "SELECT status FROM $table_user WHERE user_id = '".mysql_real_escape_string($_user['user_id'])."'";
  1403. $resm = api_sql_query($sqlm,__FILE__,__LINE__);
  1404. $objm=@mysql_fetch_object($resm);
  1405. $ss = $objm->status ;
  1406. return $ss;
  1407. }
  1408. function move_question($direction,$qid,$sort,$curr_dbname)
  1409. {
  1410. $questions=SurveyManager::get_questions_move($curr_dbname);
  1411. foreach ($questions as $key=>$value)
  1412. {
  1413. if ($qid==$value['qid'])
  1414. {
  1415. $source_course=$value;
  1416. if ($direction=="up")
  1417. {
  1418. $target_course=$questions[$key-1];
  1419. }
  1420. else
  1421. {$target_course=$questions[$key+1];}
  1422. }
  1423. }
  1424. $sql_update1="UPDATE $curr_dbname.questions SET sortby='".$target_course['sortby']."' WHERE qid='".$source_course['qid']."'";
  1425. $sql_update2="UPDATE $curr_dbname.questions SET sortby='".$source_course['sortby']."' WHERE qid='".$target_course['qid']."'";
  1426. mysql_query($sql_update2);
  1427. mysql_query($sql_update1);
  1428. //return ;
  1429. }
  1430. function get_questions_move($curr_dbname)
  1431. {
  1432. $sql_select_questions="SELECT * from $curr_dbname.questions order by `sortby` asc";
  1433. $result=mysql_query($sql_select_questions);
  1434. while ($row=mysql_fetch_array($result))
  1435. {
  1436. // we only need the database name of the course
  1437. $question1[]=array("caption"=> $row['caption'], "qid" => $row['qid'],"sortby" => $row['sortby']);
  1438. }
  1439. return $question1;
  1440. }
  1441. /**
  1442. * Displays a sortable table for the surveys
  1443. *
  1444. * @param unknown_type $groupid
  1445. * @param unknown_type $surveyid
  1446. * @param unknown_type $curr_dbname
  1447. * @param unknown_type $header
  1448. * @param unknown_type $content
  1449. * @param unknown_type $sorting_options
  1450. * @param unknown_type $paging_options
  1451. * @param unknown_type $query_vars
  1452. *
  1453. * @todo check if this function is needed as it seems that this is a copy of the Display::display_sortable_table function.
  1454. */
  1455. function display_sortable_table($groupid,$surveyid,$curr_dbname,$header, $content, $sorting_options = array (), $paging_options = array (), $query_vars = null)
  1456. {
  1457. global $origin;
  1458. // Database table definitions
  1459. /** @todo use database constants for the survey tables */
  1460. $table_survey = Database :: get_course_table('survey');
  1461. $table_group = Database :: get_course_table('survey_group');
  1462. $table_question = Database :: get_course_table('questions');
  1463. $table_course = Database::get_main_table(TABLE_MAIN_COURSE);
  1464. $table_survey_group = Database :: get_course_table('survey_group');
  1465. require_once ('tablesort.lib.php');
  1466. if (!isset ($paging_options['per_page_default']))
  1467. {
  1468. $paging_options['per_page_default'] = 10;
  1469. }
  1470. if (!isset ($paging_options['page_nr']))
  1471. {
  1472. $paging_options['page_nr'] = (isset ($_GET['page_nr']) ? $_GET['page_nr'] : 1);
  1473. }
  1474. if (!isset ($paging_options['per_page']))
  1475. {
  1476. $paging_options['per_page'] = (isset ($_GET['per_page']) ? $_GET['per_page'] : $paging_options['per_page_default']);
  1477. }
  1478. if (!isset ($sorting_options['column']))
  1479. {
  1480. $sorting_options['column'] = (isset ($_GET['column']) ? $_GET['column'] : 0);
  1481. }
  1482. if (!isset ($sorting_options['direction']))
  1483. {
  1484. $sorting_options['direction'] = (isset ($_GET['direction']) ? $_GET['direction'] : SORT_ASC);
  1485. }
  1486. // Build the query_string
  1487. if (is_array($query_vars))
  1488. {
  1489. foreach ($query_vars as $key => $value)
  1490. {
  1491. $query_string .= '&amp;'.urlencode($key).'='.urlencode($value);
  1492. }
  1493. }
  1494. $content = SurveyManager :: sort_table($content, $sorting_options['column'],'');
  1495. // Get data for selected page
  1496. $page_nav = '';
  1497. $page_content = array ();
  1498. $pages = array_chunk($content, intval($paging_options['per_page']));
  1499. if( $paging_options['page_nr'] > count($pages))
  1500. {
  1501. $paging_options['page_nr'] = count($pages);
  1502. }
  1503. $page_content = $pages[$paging_options['page_nr'] - 1];
  1504. // Build navigation bar
  1505. if (count($pages) > 1)
  1506. {
  1507. $page_nav = get_lang('Page').' : ';
  1508. if ($paging_options['page_nr'] > 1)
  1509. {
  1510. $page_nav .= '<a href="'.api_get_self().'?origin='.$origin.'&amp;column='.$sorting_options['column'].'&amp;direction='.$sorting_options['direction'].'&amp;page_nr='. ($paging_options['page_nr'] - 1).'&amp;per_page='.$paging_options['per_page'].''.$query_string.'">&laquo;</a> ';
  1511. }
  1512. for ($i = $paging_options['page_nr'] - 3; $i < $paging_options['page_nr']; $i ++)
  1513. {
  1514. if ($i > 0)
  1515. {
  1516. $page_nav .= '<a href="'.api_get_self().'?origin='.$origin.'&amp;column='.$sorting_options['column'].'&amp;direction='.$sorting_options['direction'].'&amp;page_nr='.$i.'&amp;per_page='.$paging_options['per_page'].''.$query_string.'">'.$i.'</a> ';
  1517. }
  1518. }
  1519. if ($i == $paging_options['page_nr'])
  1520. {
  1521. $page_nav .= '<b>'.$i.'</b> ';
  1522. }
  1523. for ($i = $paging_options['page_nr'] + 1; $i < $paging_options['page_nr'] + 4; $i ++)
  1524. {
  1525. if ($i <= count($pages))
  1526. {
  1527. $page_nav .= '<a href="'.api_get_self().'?origin='.$origin.'&amp;column='.$sorting_options['column'].'&amp;direction='.$sorting_options['direction'].'&amp;page_nr='.$i.'&amp;per_page='.$paging_options['per_page'].''.$query_string.'">'.$i.'</a> ';
  1528. }
  1529. }
  1530. if ($paging_options['page_nr'] < count($pages))
  1531. {
  1532. $page_nav .= '<a href="'.api_get_self().'?origin='.$origin.'&amp;column='.$sorting_options['column'].'&amp;direction='.$sorting_options['direction'].'&amp;page_nr='. ($paging_options['page_nr'] + 1).'&amp;per_page='.$paging_options['per_page'].''.$query_string.'">&raquo;</a> ';
  1533. }
  1534. }
  1535. $view_switch = '';
  1536. if (count($pages) == 1 && count($page_content) > $paging_options['per_page_default'])
  1537. {
  1538. $view_switch = ' <a href="'.api_get_self().'?origin='.$origin.'&amp;column='.$sorting_options['column'].'&amp;direction='.$sorting_options['direction'].'&amp;page_nr=1&amp;per_page='.$paging_options['per_page_default'].''.$query_string.'">'.get_lang('Show').' '.$paging_options['per_page_default'].'</a>';
  1539. }
  1540. elseif (count($pages) > 1)
  1541. {
  1542. $view_switch = ' <a href="'.api_get_self().'?origin='.$origin.'&amp;column='.$sorting_options['column'].'&amp;direction='.$sorting_options['direction'].'&amp;page_nr=1&amp;per_page='.count($content).''.$query_string.'">'.get_lang('ShowAll').'</a>';
  1543. }
  1544. $page_nav = '<table width="100%"><tr><td>'.$view_switch.'</td><td align="right">'.$page_nav.'</td></tr></table>';
  1545. // Determine new direction
  1546. $new_direction = ($sorting_options['direction'] == SORT_ASC ? SORT_DESC : SORT_ASC);
  1547. echo "\n";
  1548. echo $page_nav;
  1549. // Show the table
  1550. echo '<table class="data_table" width="100%">';
  1551. echo "\n";
  1552. echo '<tr>';
  1553. foreach ($header as $key => $value)
  1554. {
  1555. echo '<th '.$value[2].'>';
  1556. if ($value[1])
  1557. {
  1558. echo $value[0];
  1559. if ($sorting_options['column'] == $key)
  1560. {
  1561. echo $sorting_options['direction'] == SORT_ASC ? '&nbsp;&#8595; ' : '&nbsp;&#8593; ';
  1562. }
  1563. }
  1564. else
  1565. {
  1566. echo $value[0];
  1567. }
  1568. echo '</th>';
  1569. }
  1570. echo '</tr>';
  1571. echo "\n";
  1572. if( is_array($page_content))
  1573. {
  1574. $x=0;
  1575. $y=count($page_content);
  1576. $page_nr=$paging_options['page_nr'];
  1577. $per_page=$paging_options['per_page'];
  1578. $sql="SELECT * FROM $table_question WHERE survey_id = '$surveyid'";
  1579. $res1=api_sql_query($sql,__FILE__,__LINE__);
  1580. $num1=mysql_num_rows($res1);
  1581. $number_q=ceil($num1/10);
  1582. $sql_gr="SELECT * FROM $table_question WHERE gid='$groupid' AND survey_id = '$surveyid'";
  1583. $result_gr=api_sql_query($sql_gr,__FILE__,__LINE__);
  1584. $num_gr=mysql_num_rows($result_gr);
  1585. $questions=mysql_fetch_array($result_gr);
  1586. foreach ($page_content as $row => $data)
  1587. {
  1588. echo '<tr class="'. ($row % 2 == 0 ? 'row_even' : 'row_odd').'">';
  1589. foreach( $data as $column => $value)
  1590. {
  1591. echo '<td '.(isset($header[$column][3])? $header[$column][3] : '' ).'>';
  1592. if($x==0 && $page_nr==1)
  1593. {
  1594. echo str_replace('<img src="../img/up.gif" border="0" title="lang_move_up">',"",$value);
  1595. }
  1596. elseif(($page_nr==$number_q) && ($x==$y-1))
  1597. {
  1598. echo str_replace('<img src="../img/down.gif" border="0" title="lang_move_down">',"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;",$value);
  1599. }
  1600. else{
  1601. echo $value;
  1602. }
  1603. echo '</td>';
  1604. }
  1605. echo '</tr>';
  1606. echo "\n";
  1607. $x++;
  1608. }
  1609. }
  1610. echo '</table>';
  1611. echo $page_nav;
  1612. }
  1613. function sort_table($data, $column = 0, $direction = SORT_ASC, $type = SORT_REGULAR)
  1614. {
  1615. switch ($type)
  1616. {
  1617. case SORT_REGULAR :
  1618. if (TableSort::is_image_column($data, $column))
  1619. {
  1620. return TableSort::sort_table($data, $column, $direction, SORT_IMAGE);
  1621. }
  1622. elseif (TableSort::is_date_column($data, $column))
  1623. {
  1624. return TableSort::sort_table($data, $column, $direction, SORT_DATE);
  1625. }
  1626. elseif (TableSort::is_numeric_column($data, $column))
  1627. {
  1628. return TableSort::sort_table($data, $column, $direction, SORT_NUMERIC);
  1629. }
  1630. return TableSort::sort_table($data, $column, $direction, SORT_STRING);
  1631. break;
  1632. case SORT_NUMERIC :
  1633. $compare_function = 'strip_tags($el1) > strip_tags($el2)';
  1634. break;
  1635. case SORT_STRING :
  1636. $compare_function = 'strnatcmp(TableSort::orderingstring(strip_tags($el1)),TableSort::orderingstring(strip_tags($el2))) > 0';
  1637. break;
  1638. case SORT_IMAGE :
  1639. $compare_function = 'strnatcmp(TableSort::orderingstring(strip_tags($el1,"<img>")),TableSort::orderingstring(strip_tags($el2,"<img>"))) > 0';
  1640. break;
  1641. case SORT_DATE :
  1642. $compare_function = 'strtotime(strip_tags($el1)) > strtotime(strip_tags($el2))';
  1643. }
  1644. $function_body = '$el1 = $a['.$column.']; $el2 = $b['.$column.']; return ('.$direction.' == SORT_ASC ? ('.$compare_function.') : !('.$compare_function.'));';
  1645. // Sort the content
  1646. usort($data, create_function('$a,$b', $function_body));
  1647. return $data;
  1648. }
  1649. function listGroups($id_survey, $fields = '*'){
  1650. $groups_table = Database :: get_course_table(TABLE_MAIN_GROUP);
  1651. $sql = 'SELECT '.$fields.' FROM '.$groups_table.'
  1652. WHERE survey_id='.$id_survey.' ORDER BY sortby';
  1653. $rs = api_sql_query($sql, __FILE__, __LINE__);
  1654. $groups = array();
  1655. while($row = mysql_fetch_array($rs)){
  1656. $groups[] = $row;
  1657. }
  1658. return $groups;
  1659. }
  1660. function listQuestions($id_survey, $fields = '*'){
  1661. $questions_table = Database :: get_course_table(TABLE_MAIN_SURVEYQUESTION);
  1662. $groups_table = Database :: get_course_table('survey_group');
  1663. $sql = 'SELECT '.$fields.'
  1664. FROM '.$questions_table.' questions
  1665. INNER JOIN '.$groups_table.' groups
  1666. ON questions.gid = groups.group_id
  1667. WHERE questions.survey_id='.$id_survey.'
  1668. ORDER BY groups.sortby, questions.sortby';
  1669. $rs = api_sql_query($sql, __FILE__, __LINE__);
  1670. $questions = array();
  1671. while($row = mysql_fetch_array($rs)){
  1672. $questions[] = $row;
  1673. }
  1674. return $questions;
  1675. }
  1676. function listAnswers($qid){
  1677. $answers_table = Database :: get_course_table('survey_report');
  1678. $sql = 'SELECT DISTINCT answer FROM '.$answers_table.'
  1679. WHERE qid='.$qid;
  1680. $rs = api_sql_query($sql, __FILE__, __LINE__);
  1681. $answers = array();
  1682. while($row = mysql_fetch_array($rs)){
  1683. $answers[] = $row;
  1684. }
  1685. return $answers;
  1686. }
  1687. function listUsers($survey_id, $dbname, $fields='id, user_id, firstname, lastname, email, organization') {
  1688. $tbl_survey_users = Database :: get_main_table(TABLE_MAIN_SURVEY_USER);
  1689. $sql = 'SELECT '.$fields.' FROM '.$tbl_survey_users.'
  1690. WHERE survey_id='.$survey_id.'
  1691. AND db_name="'.$dbname.'"
  1692. ORDER BY lastname, firstname ';
  1693. $rs = api_sql_query($sql, __FILE__, __LINE__);
  1694. $users = array();
  1695. while($row = mysql_fetch_array($rs))
  1696. $users[] = $row;
  1697. return $users;
  1698. }
  1699. function getUserAnswersDetails($id_userAnswers, $params=''){
  1700. $table_answers = Database :: get_main_table(TABLE_MAIN_SURVEY_USER);
  1701. $sql = 'SELECT * FROM '.$table_answers.' '.$where.' '.$order;
  1702. $rs = api_sql_query($sql, __FILE__, __LINE__);
  1703. $answers = array();
  1704. while($row = mysql_fetch_array($rs))
  1705. $answers[] = $row;
  1706. return $answers;
  1707. }
  1708. }
  1709. ?>