Пример #1
0
/**
 * 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;
}
Пример #2
0
* 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