move code up one directory
[atutor.git] / mods / _standard / chat / manage / start_transcript.php
1 <?php
2 /************************************************************************/
3 /* ATutor                                                                                                                               */
4 /************************************************************************/
5 /* Copyright (c) 2002-2010                                              */
6 /* Inclusive Design Institute                                           */
7 /* http://atutor.ca                                                     */
8 /* This program is free software. You can redistribute it and/or        */
9 /* modify it under the terms of the GNU General Public License          */
10 /* as published by the Free Software Foundation.                        */
11 /************************************************************************/
12 // $Id$
13
14 define('AT_INCLUDE_PATH', '../../../../include/');
15 require(AT_INCLUDE_PATH.'vitals.inc.php');
16
17
18 /* @See ./admin.php */
19 function writeAdminSettings(&$admin) {
20         if (file_exists(AT_CONTENT_DIR . 'chat/'.$_SESSION['course_id'].'/admin.settings')) {
21                 chmod(AT_CONTENT_DIR . 'chat/'.$_SESSION['course_id'].'/admin.settings', 0755);
22         }
23
24         $fp = @fopen(AT_CONTENT_DIR . 'chat/'.$_SESSION['course_id'].'/admin.settings', 'w+');
25         if (!$fp) {
26                 // error
27                 return 0;
28         }
29
30         $settings = '';
31         foreach ($admin as $prefKey => $prefValue) {
32                 $settings .= $prefKey.'='.$prefValue."\n";
33         }
34
35         flock($fp, LOCK_EX);
36         if (!@fwrite($fp, $settings)) {
37                 return 0;
38         }
39         flock($fp, LOCK_UN);
40         chmod(AT_CONTENT_DIR . 'chat/'.$_SESSION['course_id'].'/admin.settings', 0600);
41
42         return 1;
43 }
44
45 function getAdminSettings() {
46         if (!file_exists(AT_CONTENT_DIR . 'chat/'.$_SESSION['course_id'].'/admin.settings')) {
47                 return 0;
48         }
49
50         $admin = array();
51
52         $file_prefs = file(AT_CONTENT_DIR . 'chat/'.$_SESSION['course_id'].'/admin.settings');
53         foreach ($file_prefs as $pref) {
54                 $pref = explode('=', $pref, 2);
55                 $admin[$pref[0]] = trim($pref[1]);
56         }
57
58     if ($admin['returnT'] && $admin['returnL']) {
59         $admin['returnLink'] = '<a href="'.$admin['returnL'].'" onFocus="this.className=\'highlight\'" onBlur="this.className=\'\'">'.$admin['returnT'].'</a>';
60     } else {
61         $admin['returnLink'] = '';
62     }
63
64         return $admin;
65 }
66
67 function defaultAdminSettings() {
68         $admin = array();
69
70     //$admin['cgiURL'] = 'http://dev.atutor.ca/chat/';
71     //$admin['htmlDir'] = '/usr/webserver/content/snow/chat/';
72     //$admin['htmlURL'] = 'http://dev.atutor.ca/discussions/achat/';
73     $admin['msgLifeSpan']               = 1800;         /* 30 min  */
74     $admin['chatIDLifeSpan']    = 2678400;      /* 1 month */
75     $admin['chatSessionLifeSpan'] = 3600;       /* 1 hour  */
76     //$admin['chatName'] = 'Accessible Chat';
77     //$admin['chatIDListFlag'] = 0;
78    // $admin['returnL'] = 'http://dev.atutor.ca';
79     //$admin['returnT'] = 'Return to the ATRC';
80     //$admin['adminPass'] = 'temppass';
81
82         return $admin;
83 }
84
85 $admin = getAdminSettings();
86 if ($admin === 0) {
87         $admin = defaultAdminSettings();
88 }
89
90 if (isset($_POST['submit'])) {
91         $admin['adminPass']                             = $_POST['newAdminPass'];
92         $adminPass                                              = $_POST['newAdminPass'];
93         $admin['chatName']                              = $_POST['chatName'];
94         $admin['returnL']                               = $_POST['returnL'];
95         $admin['returnT']                               = $_POST['returnT'];
96         $admin['msgLifeSpan']                   = $_POST['msgLifeSpan'];
97         $admin['chatSessionLifeSpan']   = $_POST['chatSessionLifeSpan'];
98         $admin['chatIDLifeSpan']                = $_POST['chatIDLifeSpan'];
99         writeAdminSettings($admin);
100
101 } else if (isset($_POST['submit2'])) {
102         @mkdir(AT_CONTENT_DIR . 'chat/'.$_SESSION['course_id'] . '/tran');
103         if(file_exists(AT_CONTENT_DIR . 'chat/'.$_SESSION['course_id'].'/tran/'.$_POST['tranFile'].'.html')){
104                 $warnings = array('CHAT_TRAN_EXISTS', $_POST['tranFile']); //'file already exists';
105                 $msg->addWarning($warnings);
106         } else if ($_POST['function'] == 'startTran') {
107                 if (!(preg_match("/^[a-zA-Z0-9_]([a-zA-Z0-9_])*$/i", $_POST['tranFile']))){
108                         $msg->addError('CHAT_TRAN_REJECTED');
109                 } else {
110                         $admin['produceTran'] = 1;
111                         $admin['tranFile'] = $_POST['tranFile'] . '.html';
112                         writeAdminSettings($admin);
113                         $tran = '<p>'._AT('chat_transcript_start').' '.date('Y-M-d H:i').'</p>';
114                         $tran .= '<table border="0" cellpadding="3" summary="" class="chat-transcript">';
115                                 
116                         $fp = fopen(AT_CONTENT_DIR . 'chat/'.$_SESSION['course_id'].'/tran/'.$admin['tranFile'], 'w+');
117
118                         flock($fp, LOCK_EX);
119                         if (!fwrite($fp, $tran)) {
120                                 return 0;
121                         }
122                         flock($fp, LOCK_UN);
123
124                         header('Location: index.php');
125                         exit;
126                 }
127         } else if ($_POST['function'] == 'stopTran') {
128                 $admin['produceTran'] = 0;
129                 writeAdminSettings($admin);
130                         
131                 $tran = '<p>'._AT('chat_transcript_end').' '.date('Y-M-d H:i').'</p>';
132                 $fp = @fopen(AT_CONTENT_DIR . 'chat/'.$_SESSION['course_id'].'/tran/'.$admin['tranFile'], 'a');
133
134                 @flock($fp, LOCK_EX); 
135                 if (!@fwrite($fp, $tran)) {
136                         return 0;
137                 }
138                 flock($fp, LOCK_UN);
139
140                 header('Location: index.php');
141                 exit;
142         }
143 } else if ($_GET['function'] == 'clearOldChatIDs') {
144         $return = clearOutOldChatPrefs();
145 } else if ($_POST['submit3']) {
146         deleteUser($_POST['delName']);
147 } else if ($_POST['submit4']) {
148         if ($dir = @opendir(AT_CONTENT_DIR . 'chat/'.$_SESSION['course_id'].'/users/')) {
149                 while (($file = readdir($dir)) !== false) {
150                         if (substr($file, -strlen('.prefs')) == '.prefs') {
151                                 $chatName = substr($file, 0, -strlen('.prefs'));
152                                 deleteUser($chatName);
153                         }
154                 }
155         }
156 }
157
158 //check chat directory
159 if (!@opendir(AT_CONTENT_DIR . 'chat/')){
160         mkdir(AT_CONTENT_DIR . 'chat/', 0777);
161 }
162
163 if(!file_exists(AT_CONTENT_DIR . 'chat/'.$_SESSION['course_id'].'/admin.settings')){
164         @mkdir(AT_CONTENT_DIR . 'chat/'.$_SESSION['course_id'], 0777);
165         @mkdir(AT_CONTENT_DIR . 'chat/'.$_SESSION['course_id'].'/tran/', 0776);
166         @mkdir(AT_CONTENT_DIR . 'chat/'.$_SESSION['course_id'].'/msgs/', 0776);
167         @mkdir(AT_CONTENT_DIR . 'chat/'.$_SESSION['course_id'].'/users/', 0776);
168         @copy('admin.settings.default', AT_CONTENT_DIR . 'chat/'.$_SESSION['course_id'].'/admin.settings');
169         @chmod (AT_CONTENT_DIR . 'chat/'.$_SESSION['course_id'].'/admin.settings', 0777);
170
171 }
172
173 require(AT_INCLUDE_PATH.'header.inc.php');
174
175         if ($return != '') {
176                 echo '<code>'.$return.'</code>';
177         }
178         
179         if ($admin['msgLifeSpan'] < 650) {
180         $m10 = ' selected ';
181     } else if ($admin['msgLifeSpan'] < 950) {
182         $m30 = ' selected ';
183     } else if ($admin['msgLifeSpan'] < 1850) {
184         $m60 = ' selected ';
185     } else if ($admin['msgLifeSpan'] < 10850) {
186         $m180 = ' selected ';
187     } else {
188         $m1D = ' selected ';
189     }
190
191     if ($admin['chatSessionLifeSpan'] < 650) {
192         $s10 = ' selected ';
193     } else if ($admin['chatSessionLifeSpan'] < 950) {
194         $s30 = ' selected ';
195     } else if ($admin['chatSessionLifeSpan'] < 1850) {
196         $s60 = ' selected ';
197     } else if ($admin['chatSessionLifeSpan'] < 10850) {
198         $s180 = ' selected ';
199     } else {
200         $s1D = ' selected ';
201     }
202     if ($admin['chatIDLifeSpan'] < 86450) {
203         $i1D = ' selected ';
204     } else if ($admin['chatIDLifeSpan'] < 1728050) {
205         $i20D = ' selected ';
206     } else if ($admin['chatIDLifeSpan'] < 2592050) {
207         $i1M = ' selected ';
208     } else {
209         $i1Y = ' selected ';
210     } 
211
212 $savant->assign('admin', $admin);       
213 $savant->assign('adminPass', $adminPass);
214 $savant->display('instructor/chat/start_transcript.tmpl.php');
215 require(AT_INCLUDE_PATH.'footer.inc.php');
216 ?>