Example #1
0
function latest_forum_posts($course_id, $hp_items, $user_id)
{
    $db =& JFactory::getDBO();
    $latest_forum_posts = array();
    if (strlen($course_id)) {
        $query = "SELECT fd.*, c.course_name" . "\n FROM #__lms_forum_details as fd, #__lms_courses AS c" . "\n WHERE c.id = fd.course_id" . "\n AND fd.course_id IN (" . $course_id . ")";
        $db->setQuery($query);
        $forum_details = $db->loadObjectList();
        $board_ids = array();
        foreach ($forum_details as $fd) {
            $board_ids[] = $fd->ID_BOARD;
        }
        $latest_forum_posts = array();
        $forum =& JLMS_SMF::getInstance();
        if (isset($forum->smf_db)) {
            $latest_forum_posts = $forum->getLatestPosts($user_id, $hp_items, $board_ids);
        }
        if (count($latest_forum_posts)) {
            for ($i = 0; $i < count($latest_forum_posts); $i++) {
                foreach ($forum_details as $fd) {
                    if ($latest_forum_posts[$i]->id_board == $fd->ID_BOARD) {
                        $latest_forum_posts[$i]->course_id = $fd->course_id;
                        $latest_forum_posts[$i]->course_name = $fd->course_name;
                    }
                }
            }
        }
    }
    return $latest_forum_posts;
}
Example #2
0
 function onAfterRoute()
 {
     $database = JFactory::getDBO();
     $task = JRequest::getVar('task', '');
     $option = JRequest::getVar('option', '');
     $id = JRequest::getInt('id');
     $version = new JVersion();
     $app =& JFactory::getApplication();
     $loginTasks = array('login', 'user.login');
     $logoutTasks = array('logout', 'user.logout');
     $editTasks = array('saveUserEdit', 'saveregisters', 'profile.save', 'registration.register', 'register_save', 'user.save', 'user.apply', 'save', 'apply');
     if (strnatcasecmp($version->RELEASE, '1.7') >= 0) {
         $jVersion = 17;
     } else {
         if (strnatcasecmp($version->RELEASE, '1.6') >= 0) {
             $jVersion = 16;
         } else {
             $jVersion = 15;
         }
     }
     if (file_exists(JPATH_SITE . DS . 'components' . DS . 'com_joomla_lms' . DS . "includes" . DS . "classes" . DS . "lms.factory.php")) {
         require_once JPATH_SITE . DS . 'components' . DS . 'com_joomla_lms' . DS . "includes" . DS . "classes" . DS . "lms.factory.php";
     } else {
         //JoomlaLMS system files not found
         return;
     }
     if (!file_exists(JPATH_SITE . DS . 'components' . DS . 'com_joomla_lms' . DS . 'includes' . DS . 'forums' . DS . 'smf' . DS . 'smf.php')) {
         //JoomlaLMS system files not found
         return;
     }
     if (!class_exists('JLMSFactory')) {
         //JoomlaLMS system class not found
         return;
     }
     jimport('joomla.user.helper');
     $JLMS_CONFIG = JLMSFactory::getConfig();
     /* admin language for JoomlaLMS BackEnd menu */
     $app =& JFactory::getApplication();
     if ($app->isAdmin()) {
         $language = $JLMS_CONFIG->get('default_language');
         $lang_path = JPATH_SITE . DS . "administrator" . DS . "components" . DS . "com_joomla_lms";
         $lang =& JFactory::getLanguage();
         $oldLang = $lang->setDefault('english');
         if ($jVersion >= 16) {
             $lang->load('com_joomla_lms.sys', $lang_path, $language);
         } else {
             $lang->load('admin.menu.lang', $lang_path, $language);
         }
         $lang->setDefault($oldLang);
     }
     /* end of admin language */
     $user_id = 0;
     if (in_array($task, $loginTasks)) {
         $username = JRequest::getVar('username', '', 'post', 'username');
         $password = JRequest::getVar('password', '', 'post', 'string', JREQUEST_ALLOWRAW);
         if (!$username) {
             return false;
         }
         if (!$password) {
             $password = JRequest::getVar('passwd', '', 'post', 'string', JREQUEST_ALLOWRAW);
         }
         $query = 'SELECT * ' . ' FROM `#__users`' . ' WHERE username='******':', $result->password);
             $crypt = $parts[0];
             $salt = @$parts[1];
             $testcrypt = JUserHelper::getCryptedPassword($password, $salt);
             if ($crypt == $testcrypt) {
                 $juser = $result;
             }
         }
         if (isset($juser->id)) {
             $user_id = $juser->id;
         }
     } else {
         $user =& JFactory::getUser();
         $user_id = $id ? $id : $user->get('id');
     }
     //echo '<pre>';
     //print_r($juser);
     //echo '</pre>';
     //die;
     $do_synchronize = false;
     if ($this->params->get('synch_all_users', 1)) {
         $do_synchronize = true;
     } else {
         if (!$user_id) {
             return false;
         }
         $query = "SELECT user_id FROM #__lms_users WHERE user_id = " . $user_id;
         $database->setQuery($query);
         $lms_user_id = $database->LoadResult();
         if (!$lms_user_id) {
             $query = "SELECT user_id FROM #__lms_user_courses WHERE user_id = " . $user_id;
             $database->setQuery($query);
             $lms_user_id = $database->LoadResult();
             if (!$lms_user_id) {
                 $query = "SELECT user_id FROM #__lms_users_in_groups WHERE user_id = " . $user_id;
                 $database->setQuery($query);
                 $lms_user_id = $database->LoadResult();
             }
         }
         if (!$lms_user_id) {
             $do_synchronize = false;
         } else {
             $do_synchronize = true;
         }
     }
     if ($JLMS_CONFIG->get('plugin_forum') && $option && $do_synchronize) {
         if (in_array($option, array('com_users', 'com_user', 'com_comprofiler')) && in_array($task, $loginTasks)) {
             $forum =& JLMS_SMF::getInstance();
             if (is_object($forum)) {
                 //require_once ( JPATH_SITE.'/components/com_joomla_lms/includes/jlms_reg_forum.php');
                 if (isset($juser) && is_object($juser)) {
                     if (isset($juser->id)) {
                         //----> CB section
                         $query = "SELECT lms_config_var, lms_config_value FROM `#__lms_config` WHERE lms_config_var LIKE '%_cb_%' ";
                         $database->setQuery($query);
                         $configs = $database->loadObjectList();
                         $cb_values = array();
                         foreach ($configs as $cb_value) {
                             $cb_values[$cb_value->lms_config_var] = $cb_value->lms_config_value;
                         }
                         $cb_info = array();
                         if ($cb_values['is_cb_installed']) {
                             $fields = array('website', 'ICQ', 'AIM', 'YIM', 'MSN', 'location');
                             $fields_isset = array();
                             foreach ($fields as $field) {
                                 if (isset($cb_values['jlms_cb_' . $field]) && $cb_values['jlms_cb_' . $field]) {
                                     $fields_isset[] = $cb_values['jlms_cb_' . $field];
                                 }
                             }
                             if (!empty($fields_isset)) {
                                 $fields_str = implode(',', $fields_isset);
                                 $query = "SELECT name FROM `#__comprofiler_fields` WHERE fieldid IN ({$fields_str}) ";
                                 $database->setQuery($query);
                                 $field_name = $database->loadResultArray();
                                 $field_names = implode(',', $field_name);
                                 $query = "SELECT " . $field_names . " FROM `#__comprofiler` WHERE user_id=" . $juser->id;
                                 $database->setQuery($query);
                                 $cb_user = $database->loadResultArray();
                                 if (isset($cb_user[0])) {
                                     $cb_info = array_values($cb_user);
                                 }
                             }
                         }
                         $groups = '';
                         $smf_user = $forum->loadMemberByName($username);
                         if (is_object($smf_user) && isset($smf_user->id_member)) {
                             $mem_id = $smf_user->id_member;
                         } else {
                             $mem_id = $forum->registerOnForum($juser, $password, $groups, $cb_info);
                         }
                         $forum->setLoginCookie15($mem_id, $password);
                     }
                 }
             }
         } elseif (in_array($option, array('com_users', 'com_user', 'com_comprofiler')) && in_array($task, $logoutTasks)) {
             $forum =& JLMS_SMF::getInstance();
             if (is_object($forum)) {
                 $cookiename = $forum->getCookieName();
                 $parts = $forum->urlParts();
                 if ($parts[0] == 'localhost') {
                     setcookie($cookiename, 0, time() - 3600, $parts[1]);
                 } else {
                     setcookie($cookiename, 0, time() - 3600, $parts[1], $parts[0]);
                 }
             }
         } elseif (in_array($option, array('com_users', 'com_user', 'com_comprofiler')) && in_array($task, $editTasks)) {
             if (!$id) {
                 return false;
             }
             $forum =& JLMS_SMF::getInstance();
             if (is_object($forum)) {
                 $loginForm = JRequest::getVar('jform', array(), 'default', 'array');
                 $verifyPass = JRequest::getVar('password__verify', '', 'post', 'string', JREQUEST_ALLOWRAW);
                 $isCB = !$verifyPass ? false : true;
                 if ($isCB) {
                     $email = JRequest::getVar('email');
                     $username = JRequest::getVar('username');
                     $name = JRequest::getVar('name');
                     $postPass = JRequest::getVar('password', '', 'post', 'string', JREQUEST_ALLOWRAW);
                 } else {
                     if ($jVersion > 15) {
                         $username = $loginForm['username'];
                         $name = $loginForm['name'];
                         if ($app->isAdmin()) {
                             $email = $loginForm['email'];
                             $postPass = $loginForm['password'];
                         } else {
                             $email = $loginForm['email1'];
                             $postPass = $loginForm['password1'];
                         }
                         $verifyPass = $loginForm['password2'];
                     } else {
                         $email = JRequest::getVar('email');
                         $username = JRequest::getVar('username');
                         $name = JRequest::getVar('name');
                         $postPass = JRequest::getVar('password', '', 'post', 'string', JREQUEST_ALLOWRAW);
                         $verifyPass = JRequest::getVar('password2', '', 'post', 'string', JREQUEST_ALLOWRAW);
                     }
                 }
                 //$pass='******';
                 $password = '';
                 if (!preg_match("/.+@.+\\..+/", $email)) {
                     return false;
                 }
                 if ($username) {
                     if ($verifyPass) {
                         if ($verifyPass == $postPass) {
                             $password = $forum->password($username, $postPass);
                             //$pass = "******".$password."', ";
                         } else {
                             return false;
                         }
                     }
                 }
                 if ($id) {
                     $query = "SELECT username FROM `#__users` WHERE id='" . $id . "'";
                     $database->setQuery($query);
                     $database->query();
                     $usernameOld = $database->loadResult();
                     $smf_user = $forum->loadMemberByName($usernameOld);
                     $userid_forum = $smf_user->id_member;
                     $storeData = get_object_vars($smf_user);
                 }
                 $storeData['id_member'] = $userid_forum;
                 $storeData['member_name'] = $username;
                 $storeData['email_address'] = $email;
                 $storeData['real_name'] = $name;
                 if ($password) {
                     $storeData['passwd'] = $password;
                 }
                 $forum->storeMember($storeData);
                 if ($password) {
                     $forum->setLoginCookie15($userid_forum, $post_password);
                 }
             }
         }
     }
 }
function JLMS_checkSMF_cookies($reconnect = true)
{
    global $JLMS_CONFIG, $JLMS_DB;
    $id_member = 0;
    $password = '';
    $forum =& JLMS_SMF::getInstance();
    $cookiename = $forum->getCookieName();
    if (isset($_COOKIE[$cookiename])) {
        $cookie_forum = stripslashes($_COOKIE[$cookiename]);
        if (preg_match('~^a:[34]:\\{i:0;(i:\\d{1,6}|s:[1-8]:"\\d{1,8}");i:1;s:(0|40):"([a-fA-F0-9]{40})?";i:2;[id]:\\d{1,14};(i:3;i:\\d;)?\\}$~', $cookie_forum) == 1) {
            list($id_member, $password) = @unserialize($cookie_forum);
            $id_member = !empty($id_member) && strlen($password) > 0 ? (int) $id_member : 0;
        } else {
            $id_member = 0;
        }
    }
    if ($id_member) {
        $user_data = $forum->selectMembers(array($id_member));
        $user_settings = array();
        if ($user_data) {
            $user_settings = $user_data[0];
        }
        if (!empty($user_settings)) {
            // SHA-1 passwords should be 40 characters long.
            if (strlen($password) == 40) {
                $check = sha1($user_settings->passwd . $user_settings->password_salt) == $password;
            } else {
                $check = false;
            }
            // Wrong password or not activated - either way, you're going nowhere.
            //$id_member = $check && ($user_settings['is_activated'] == 1 || $user_settings['is_activated'] == 11) ? $user_settings['id_member'] : 0;
            $id_member = $check ? $user_settings->id_member : 0;
        } else {
            $id_member = 0;
        }
    }
    return $id_member;
}
function JLMS_DelOp_deleteLpaths($cid)
{
    global $JLMS_DB, $JLMS_CONFIG;
    $cids = implode(',', $cid);
    //patch by DEN - 10 march 2010 - ticket RQFC-2946
    $query = "DELETE FROM #__lms_gradebook_lpaths WHERE learn_path_id IN ({$cids})";
    $JLMS_DB->setQuery($query);
    $JLMS_DB->query();
    $query = "SELECT id FROM #__lms_forums WHERE forum_level = 1";
    $JLMS_DB->SetQuery($query);
    $board_types = $JLMS_DB->LoadResultArray();
    if (count($board_types)) {
        $board_types_str = implode(',', $board_types);
        $query = "SELECT id, course_id, board_type, group_id, ID_GROUP AS id_group, ID_CAT AS id_cat, ID_BOARD AS id_board, is_active, need_update FROM #__lms_forum_details WHERE board_type IN ({$board_types_str}) AND group_id IN ({$cids})";
        $JLMS_DB->setQuery($query);
        $lpaths = $JLMS_DB->loadObjectList();
        $boards = array();
        $mem_groups = array();
        foreach ($lpaths as $lpath) {
            $boards[] = $lpath->id_board;
            $mem_groups[] = $lpath->id_group;
        }
        $query = "DELETE FROM #__lms_forum_details WHERE board_type IN ({$board_types_str}) AND group_id IN ({$cids})";
        $JLMS_DB->setQuery($query);
        $JLMS_DB->query();
        $forum =& JLMS_SMF::getInstance();
        if (is_object($forum)) {
            $forum->deleteBoards($boards);
            $forum->deleteTopics($boards);
            $forum->deleteMessages($boards);
            $forum->deleteModerators($boards);
            $forum->deleteMembergroups($mem_groups);
            $forum->deletePermissions($mem_groups);
        }
    }
}