/** * Pushes users (htpasswd) and associations between users and courses (courselist.php) */ function push_users_courses_to_recorder() { global $recorder_user; global $recorder_basedir; global $recorder_subdir; global $recorder_password_storage_enabled; if (!db_ready()) { db_prepare(statements_get()); } $users = db_users_in_recorder_get(); $classrooms = db_classrooms_list_enabled(); //htpasswd $htpasswd = ''; $previous_user = ""; foreach ($users as $u) { if ($previous_user != $u['user_ID']) { $htpasswd .= $u['user_ID'] . ':' . $u['recorder_passwd'] . PHP_EOL; $previous_user = $u['user_ID']; } } file_put_contents('var/htpasswd', $htpasswd); //courselist.php $courselist = '<?php' . PHP_EOL; foreach ($users as $u) { $title = isset($u['shortname']) && !empty($u['shortname']) ? $u['shortname'] : $u['course_name']; $courselist .= '$course[\'' . $u['user_ID'] . '\'][\'' . $u['course_code'] . '\'] = "' . $title . '";' . PHP_EOL; $courselist .= '$users[\'' . $u['user_ID'] . '\'][\'full_name\']="' . $u['forename'] . ' ' . $u['surname'] . '";' . PHP_EOL; $courselist .= '$users[\'' . $u['user_ID'] . '\'][\'email\']="";' . PHP_EOL; } $courselist .= '?>'; file_put_contents('var/courselist.php', $courselist); // Upload all this on server foreach ($classrooms as $c) { exec('ping ' . $c['IP'] . ' 10', $output, $return_val); if ($return_val == 0) { $cmd = 'scp -o ConnectTimeout=10 ./var/htpasswd ' . $recorder_user . '@' . $c['IP'] . ':' . $recorder_basedir . $recorder_subdir; exec($cmd, $output, $return_var); $cmd = 'scp -o ConnectTimeout=10 ./var/courselist.php ' . $recorder_user . '@' . $c['IP'] . ':' . $recorder_basedir . $recorder_subdir; exec($cmd, $output, $return_var); } } return true; }
* but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /** * @package ezcast.commons.lib.sql */ require_once '../commons/lib_database.php'; if (file_exists('config.inc')) { require_once 'config.inc'; } db_prepare(statements_get()); function statements_get() { return array('update_courses_hasalbums' => 'UPDATE ' . db_gettable('courses') . ' ' . 'SET has_albums = 1 ' . 'WHERE course_code = :course_code', 'course_list' => 'SELECT ' . db_gettable('courses') . '.course_code, ' . db_gettable('courses') . '.course_name, ' . db_gettable('courses') . '.in_recorders, ' . db_gettable('courses') . '.has_albums, ' . db_gettable('courses') . '.origin, ' . db_gettable('courses') . '.date_created ' . 'FROM ' . db_gettable('courses') . ' ' . 'WHERE ' . db_gettable('courses') . '.course_code LIKE :course_code AND ' . db_gettable('courses') . '.course_name LIKE :course_name AND ' . db_gettable('courses') . '.in_recorders = :in_recorders AND ' . db_gettable('courses') . '.has_albums = :has_albums AND ' . db_gettable('courses') . '.origin = :origin', 'course_create' => 'INSERT INTO ' . db_gettable('courses') . '(course_code, course_name, shortname, in_recorders, has_albums, date_created, origin) ' . 'VALUES (:course_code, :course_name, :shortname, 0, 0, NOW(), \'internal\')', 'course_read' => 'SELECT ' . db_gettable('courses') . '.course_code, ' . db_gettable('courses') . '.course_name, ' . db_gettable('courses') . '.shortname, ' . db_gettable('courses') . '.in_recorders, ' . db_gettable('courses') . '.has_albums, ' . db_gettable('courses') . '.origin, ' . db_gettable('courses') . '.date_created ' . 'FROM ' . db_gettable('courses') . ' ' . 'WHERE course_code = :course_code', 'course_get_users' => 'SELECT ' . db_gettable('users_courses') . '.ID, ' . db_gettable('users') . '.user_ID, ' . db_gettable('users') . '.surname, ' . db_gettable('users') . '.forename, ' . db_gettable('users_courses') . '.origin ' . 'FROM ' . db_gettable('users') . ' ' . 'INNER JOIN ' . db_gettable('users_courses') . ' ON ' . db_gettable('users') . '.user_ID = ' . db_gettable('users_courses') . '.user_ID ' . 'WHERE course_code = :course_code', 'course_update' => 'UPDATE ' . db_gettable('courses') . ' ' . 'SET course_name = :course_name, shortname = :shortname, in_recorders = :in_recorders ' . 'WHERE course_code = :course_code', 'course_delete' => 'DELETE FROM ' . db_gettable('courses') . ' ' . 'WHERE course_code = :course_code AND origin = \'internal\'', 'user_read' => 'SELECT ' . db_gettable('users') . '.user_ID, ' . db_gettable('users') . '.surname, ' . db_gettable('users') . '.forename, ' . db_gettable('users') . '.permissions, ' . db_gettable('users') . '.origin ' . 'FROM ' . db_gettable('users') . ' ' . 'WHERE user_ID = :user_ID', 'user_courses_get' => 'SELECT DISTINCT ' . db_gettable('users_courses') . '.ID, ' . db_gettable('courses') . '.course_code, ' . db_gettable('courses') . '.shortname, ' . db_gettable('courses') . '.course_name, ' . db_gettable('courses') . '.in_recorders, ' . db_gettable('users_courses') . '.origin ' . 'FROM ' . db_gettable('courses') . ' ' . 'INNER JOIN ' . db_gettable('users_courses') . ' ON ' . db_gettable('courses') . '.course_code = ' . db_gettable('users_courses') . '.course_code ' . 'WHERE user_ID = :user_ID', 'users_get_admins' => 'SELECT user_ID ' . 'FROM ' . db_gettable('users') . ' ' . 'WHERE permissions > 0', 'get_users_in_recorder' => 'SELECT DISTINCT ' . db_gettable('users') . '.user_ID, ' . db_gettable('users') . '.recorder_passwd, ' . db_gettable('users') . '.forename, ' . db_gettable('users') . '.surname, ' . db_gettable('courses') . '.course_code, ' . db_gettable('courses') . '.shortname, ' . db_gettable('courses') . '.course_name ' . 'FROM ' . db_gettable('users') . ' ' . 'INNER JOIN ' . db_gettable('users_courses') . ' ' . 'ON ' . db_gettable('users') . '.user_ID = ' . db_gettable('users_courses') . '.user_ID ' . 'INNER JOIN ' . db_gettable('courses') . ' ' . 'ON ' . db_gettable('users_courses') . '.course_code = ' . db_gettable('courses') . '.course_code ' . 'WHERE ' . db_gettable('courses') . '.in_recorders != 0 ' . 'AND ' . db_gettable('users') . '.recorder_passwd IS NOT NULL ' . 'AND ' . db_gettable('users') . '.recorder_passwd != \'\'', 'get_internal_users' => 'SELECT ' . db_gettable('users') . '.user_ID, ' . db_gettable('users') . '.surname, ' . db_gettable('users') . '.forename, ' . db_gettable('users') . '.recorder_passwd ' . 'FROM ' . db_gettable('users') . ' ' . 'WHERE origin = \'internal\' ' . 'AND recorder_passwd IS NOT NULL ' . 'AND recorder_passwd != \'\' ', 'classrooms_list_enabled' => 'SELECT room_ID, name, IP ' . 'FROM ' . db_gettable('classrooms') . ' ' . 'WHERE enabled = 1', 'classrooms_list' => 'SELECT room_ID, name, IP ' . 'FROM ' . db_gettable('classrooms'), 'classroom_update_enabled' => 'UPDATE ' . db_gettable('classrooms') . ' ' . 'SET enabled = :enabled ' . 'WHERE room_ID = :room_ID', 'users_courses_create' => 'INSERT INTO ' . db_gettable('users_courses') . '(course_code, user_ID, origin) ' . 'VALUES (:course_code, :user_ID, \'internal\')', 'users_courses_delete' => 'DELETE FROM ' . db_gettable('users_courses') . ' ' . 'WHERE ID = :user_course_ID AND origin=\'internal\'', 'users_courses_get' => 'SELECT * ' . 'FROM ' . db_gettable('users_courses') . ' ' . 'WHERE course_code=:course_code AND user_ID=:user_ID', 'found_rows' => 'SELECT FOUND_ROWS();', 'user_create' => 'INSERT INTO ' . db_gettable('users') . '(user_ID, surname, forename, recorder_passwd, permissions, origin) ' . 'VALUES (:user_ID, :surname, :forename, :recorder_passwd, :permissions, \'internal\')', 'user_delete' => 'DELETE FROM ' . db_gettable('users') . ' ' . 'WHERE user_ID = :user_ID AND origin=\'internal\'', 'user_update' => 'UPDATE ' . db_gettable('users') . ' ' . 'SET surname = :surname, forename = :forename, recorder_passwd = :recorder_passwd, permissions = :permissions' . ' ' . 'WHERE user_ID = :user_ID', 'user_update_short' => 'UPDATE ' . db_gettable('users') . ' ' . 'SET surname = :surname, forename = :forename, permissions = :permissions' . ' ' . 'WHERE user_ID = :user_ID', 'log_action' => 'INSERT INTO ' . db_gettable('logs') . ' (`time`, `table`, message, author) ' . 'VALUES (NOW(), :table, :message, :author)', 'classroom_create' => 'INSERT INTO ' . db_gettable('classrooms') . '(room_ID, name, ip, enabled) ' . 'VALUES (:room_ID, :name, :ip, :enabled)', 'unlink_course' => 'DELETE FROM ' . db_gettable('users_courses') . ' ' . 'WHERE course_code = :course_code AND origin=\'internal\'', 'unlink_user' => 'DELETE FROM ' . db_gettable('users_courses') . ' ' . 'WHERE user_ID = :user_ID AND origin=\'internal\'', 'classroom_update' => 'UPDATE ' . db_gettable('classrooms') . ' ' . 'SET room_ID = :room_ID, name = :name, ip = :ip' . ' ' . 'WHERE room_ID = :ID', 'classroom_delete' => 'DELETE FROM ' . db_gettable('classrooms') . ' ' . 'WHERE room_ID = :room_ID'); } //--------------------------- // PAGE-SPECIFIC FUNCTIONS //--------------------------- /** * Returns the courses corresponding the the following criteria * @param String $course_code * @param String $user_ID * @param boolean $include_external * @param boolean $include_internal * @param integer $has_albums -1 = everything; 0 = only those with no albums; 1 = only those with album * @param integer $in_classrooms -1 = everything; 0 = only those not in recorder; 1 = only those in recorder