/**
  * execute the connection to source
  */
 function connect()
 {
     $this->lang = DoceboLanguage::createInstance('ru_report');
     // perform the query for data retriving
     $course_man = new Man_Course();
     $this->acl_man = new DoceboACLManager();
     $p_dr = new PeopleDataRetriever($GLOBALS['dbConn'], $GLOBALS['prefix_fw']);
     $re_people = $p_dr->getAllRowsIdst();
     $this->_query_result = false;
     $this->_readed_end = false;
     $this->row_index = 0;
     $user_selected = array();
     if (!$re_people) {
         $this->_readed_end = true;
         return TRUE;
     }
     // find some information
     $query_course_user = "******" . $GLOBALS['prefix_lms'] . "_courseuser AS cu \r\n\t\t\tJOIN " . $GLOBALS['prefix_lms'] . "_course AS c \r\n\t\tWHERE cu.idCourse = c.idCourse \r\n\t\t\tAND cu.idUser IN ( " . implode(',', $user_selected) . " ) \r\n\t\t\tAND cu.status = '" . _CUS_END . "' ";
     $this->_query_result = sql_query($query_course_user);
     if (!$this->_query_result) {
         $this->last_error = mysql_error();
         return FALSE;
     }
     return TRUE;
 }
 function get_next_row()
 {
     if ($this->data === false) {
         $pdr = new PeopleDataRetriever($GLOBALS['dbConn'], $GLOBALS['prefix_fw']);
         if ($this->tree != 0) {
             //list($this->tree_desc) = $this->tree_view->tdb->getDescendantsSTFromST(array($this->tree));
             $pdr->setGroupFilter($this->tree, true);
         }
         $this->data = $pdr->getRows();
     }
     $row = sql_fetch_row($this->data);
     //print_r($row);
     if ($row == false) {
         $this->eof = true;
         return false;
     }
     $export = array();
     //find user field value
     foreach ($this->simplecols as $field_id => $name) {
         if (is_numeric($field_id)) {
             $pluto = $this->fl->fieldValue((int) $field_id, array($row[0]));
             list(, $export[]) = each($pluto);
         } else {
             switch ($field_id) {
                 case "userid":
                     $export[] = substr($row[1], 1);
                     break;
                 case "firstname":
                     $export[] = $row[2];
                     break;
                 case "lastname":
                     $export[] = $row[3];
                     break;
                 case "pass":
                     $export[] = '';
                     break;
                 case "email":
                     $export[] = $row[4];
                     break;
                 case "signature":
                     $export[] = $row[6];
                     break;
             }
         }
     }
     $this->index++;
     return $export;
 }
Example #3
0
 /**
  * various stats and data retrieving to display in the dashboard
  *
  * @param boolean $stats_required
  * @param boolean $arr_users
  * @return array
  */
 public function getUsersStats($stats_required = false, $arr_users = false)
 {
     $aclManager = Docebo::user()->getACLManager();
     $users = array();
     if ($stats_required == false || empty($stats_required) || !is_array($stats_required)) {
         $stats_required = array('all', 'suspended', 'register_today', 'register_yesterday', 'register_7d', 'now_online', 'inactive_30d', 'waiting', 'superadmin', 'admin', 'public_admin');
     }
     $stats_required = array_flip($stats_required);
     $data = new PeopleDataRetriever($GLOBALS['dbConn'], $GLOBALS['prefix_fw']);
     if (!empty($this->users_filter)) {
         $data->setUserFilter($this->users_filter);
     }
     if (isset($stats_required['all'])) {
         $users['all'] = $data->getTotalRows();
     }
     if (isset($stats_required['suspended'])) {
         $data->addFieldFilter('valid', 0);
         $data->addFieldFilter('userid', 'Anonymous', '<>');
         //or idst <> Docebo::user()->getAnonymousId() ...
         $users['suspended'] = $data->getTotalRows();
     }
     if (isset($stats_required['register_today'])) {
         $data->resetFieldFilter();
         $data->addFieldFilter('register_date', date("Y-m-d") . ' 00:00:00', '>');
         $users['register_today'] = $data->getTotalRows();
     }
     if (isset($stats_required['register_yesterday'])) {
         $data->resetFieldFilter();
         $yesterday = date("Y-m-d", time() - 86400);
         $data->addFieldFilter('register_date', $yesterday . ' 00:00:00', '>');
         $data->addFieldFilter('register_date', $yesterday . ' 23:59:59', '<');
         $users['register_yesterday'] = $data->getTotalRows();
     }
     if (isset($stats_required['register_7d'])) {
         $data->resetFieldFilter();
         $sevendaysago = date("Y-m-d", time() - 7 * 86400);
         $data->addFieldFilter('register_date', $sevendaysago . ' 00:00:00', '>');
         $users['register_7d'] = $data->getTotalRows();
     }
     if (isset($stats_required['now_online'])) {
         $data->resetFieldFilter();
         $data->addFieldFilter('lastenter', date("Y-m-d H:i:s", time() - REFRESH_LAST_ENTER), '>');
         $users['now_online'] = $data->getTotalRows();
         if ($arr_users !== false && is_array($arr_users) && count($arr_users) > 0) {
             $data->setUserFilter($arr_users);
             $users['now_online_filtered'] = $data->getTotalRows();
         } else {
             $users['now_online_filtered'] = 0;
         }
     }
     if (isset($stats_required['inactive_30d'])) {
         $data->resetFieldFilter();
         $data->addFieldFilter('lastenter', date("Y-m-d", time() - 30 * 86400) . ' 00:00:00', '<');
         $data->addFieldFilter('userid', 'Anonymous', '<>');
         //or idst <> Docebo::user()->getAnonymousId() ...
         $users['inactive_30d'] = $data->getTotalRows();
     }
     if (isset($stats_required['waiting'])) {
         $users['waiting'] = $aclManager->getTempUserNumber();
     }
     if (isset($stats_required['superadmin'])) {
         $idst_sadmin = $aclManager->getGroupST(ADMIN_GROUP_GODADMIN);
         $users['superadmin'] = $aclManager->getGroupUMembersNumber($idst_sadmin);
     }
     if (isset($stats_required['admin'])) {
         $idst_admin = $aclManager->getGroupST(ADMIN_GROUP_ADMIN);
         $users['admin'] = $aclManager->getGroupUMembersNumber($idst_admin);
     }
     if (isset($stats_required['public_admin'])) {
         $idst_padmin = $aclManager->getGroupST(ADMIN_GROUP_PUBLICADMIN);
         $users['public_admin'] = $aclManager->getGroupUMembersNumber($idst_padmin);
     }
     return $users;
 }
 /**
  * execute the connection to source
  **/
 function connect()
 {
     $this->lang = DoceboLanguage::createInstance('rg_report');
     // perform the query for data retriving
     $course_man = new Man_Course();
     $this->acl_man = new DoceboACLManager();
     $p_dr = new PeopleDataRetriever($GLOBALS['dbConn'], $GLOBALS['prefix_fw']);
     $re_people = $p_dr->getAllRowsIdst();
     $this->_readed_end = false;
     $this->row_index = 0;
     $user_selected = array();
     if (!$re_people) {
         $this->_readed_end = true;
         return TRUE;
     }
     while (list($idst) = sql_fetch_row($re_people)) {
         $user_selected[$idst] = $idst;
     }
     $this->users_info = $this->acl_man->getUsers($user_selected);
     $this->id_courses = $course_man->getAllCourses();
     $this->num_iscr = array();
     $this->num_nobegin = array();
     $this->num_itinere = array();
     $this->num_end = array();
     $this->time_in_course = array();
     $effective_user = array();
     $query_course_user = "******" . $GLOBALS['prefix_lms'] . "_courseuser AS cu \r\n\t\tWHERE idUser IN ( " . implode(',', $user_selected) . " ) ";
     $re_course_user = sql_query($query_course_user);
     while (list($id_u, $id_c, $fisrt_access, $date_complete) = sql_fetch_row($re_course_user)) {
         if (isset($this->num_iscr[$id_c])) {
             ++$this->num_iscr[$id_c];
         } else {
             $this->num_iscr[$id_c] = 1;
         }
         if ($fisrt_access === NULL) {
             //never enter
             if (isset($this->num_nobegin[$id_c])) {
                 ++$this->num_nobegin[$id_c];
             } else {
                 $this->num_nobegin[$id_c] = 1;
             }
         } elseif ($date_complete === NULL) {
             //enter
             if (isset($this->num_itinere[$id_c])) {
                 ++$this->num_itinere[$id_c];
             } else {
                 $this->num_itinere[$id_c] = 1;
             }
         } else {
             //complete
             if (isset($this->num_end[$id_c])) {
                 ++$this->num_end[$id_c];
             } else {
                 $this->num_end[$id_c] = 1;
             }
         }
         $effective_user[] = $id_u;
     }
     if (!empty($effective_user)) {
         $query_time = "\r\n\t\t\tSELECT idCourse, SUM(UNIX_TIMESTAMP(lastTime) - UNIX_TIMESTAMP(enterTime)) \r\n\t\t\tFROM " . $GLOBALS['prefix_lms'] . "_tracksession \r\n\t\t\tWHERE idUser IN ( " . implode(',', $effective_user) . " )\r\n\t\t\tGROUP BY idCourse ";
         $re_time = sql_query($query_time);
         while (list($id_c, $time_num) = sql_fetch_row($re_time)) {
             $this->time_in_course[$id_c] = $time_num;
         }
     }
     return TRUE;
 }
Example #5
0
 function &getAllUserIdst()
 {
     $p_dr = new PeopleDataRetriever($GLOBALS['dbConn'], $GLOBALS['prefix_fw']);
     $userlevelid = Docebo::user()->getUserLevelId();
     if ($userlevelid != ADMIN_GROUP_GODADMIN) {
         require_once _base_ . '/lib/lib.preference.php';
         $adminManager = new AdminPreference();
         $p_dr->intersectGroupFilter($adminManager->getAdminTree(Docebo::user()->getIdSt()));
     }
     $re_people = $p_dr->getAllRowsIdst();
     $user_selected = array();
     if (!$re_people) {
         return $user_selected;
     }
     while (list($idst) = sql_fetch_row($re_people)) {
         $user_selected[$idst] = $idst;
     }
     return $user_selected;
 }