LP: Enable acquisition field when not existing lp view - refs BT#20042

pull/4343/head
Angel Fernando Quiroz Campos 4 years ago
parent 10db2b01c5
commit 1594cb3227
  1. 22
      main/inc/ajax/student_follow_page.ajax.php
  2. 6
      main/inc/lib/StudentFollowPage.php
  3. 29
      main/lp/learnpath.class.php

@ -118,31 +118,13 @@ function processViewsInvisible(array $lpViews, bool $state)
[$lpId, $userId, $courseId, $sessionId] = array_map('intval', $parts);
$lpView = learnpath::findLastView($lpId, $userId, $courseId, $sessionId);
if (empty($lpView)) {
$tblLpView = Database::get_course_table(TABLE_LP_VIEW);
$lpViewId = Database::insert(
$tblLpView,
[
'c_id' => $courseId,
'lp_id' => $lpId,
'user_id' => $userId,
'view_count' => 1,
'session_id' => $sessionId,
]
);
Database::update($tblLpView, ['id' => $lpViewId], ['iid = ?' => $lpViewId]);
} else {
$lpViewId = $lpView['iid'];
}
$lpView = learnpath::findLastView($lpId, $userId, $courseId, $sessionId, true);
$extraFieldValue = new ExtraFieldValue('lp_view');
$extraFieldValue->save(
[
'variable' => StudentFollowPage::VARIABLE_INVISIBLE,
'item_id' => $lpViewId,
'item_id' => $lpView['iid'],
'comment' => json_encode(['user' => api_get_user_id(), 'datetime' => api_get_utc_datetime()]),
'value' => $state,
]

@ -90,11 +90,7 @@ class StudentFollowPage
int $sessionId = 0,
bool $allowEdit = false
): string {
$lpView = learnpath::findLastView($lpInfo['iid'], $studentId, $courseId, $sessionId);
if (empty($lpView)) {
return '-';
}
$lpView = learnpath::findLastView($lpInfo['iid'], $studentId, $courseId, $sessionId, true);
$extraField = new ExtraField('lp_view');
$field = $extraField->get_handler_field_info_by_field_variable(self::VARIABLE_ACQUISITION);

@ -14625,8 +14625,13 @@ EOD;
}
}
public static function findLastView(int $lpId, int $studentId, int $courseId, int $sessionId = 0)
{
public static function findLastView(
int $lpId,
int $studentId,
int $courseId,
int $sessionId = 0,
bool $createIfNotExists = false
): array {
$tblLpView = Database::get_course_table(TABLE_LP_VIEW);
$sessionCondition = api_get_session_condition($sessionId);
@ -14636,7 +14641,25 @@ EOD;
ORDER BY view_count DESC";
$result = Database::query($sql);
return Database::fetch_assoc($result);
$lpView = Database::fetch_assoc($result);
if ($createIfNotExists && empty($lpView)) {
$lpViewId = Database::insert(
$tblLpView,
[
'c_id' => $courseId,
'lp_id' => $lpId,
'user_id' => $studentId,
'view_count' => 1,
'session_id' => $sessionId,
]
);
Database::update($tblLpView, ['id' => $lpViewId], ['iid = ?' => $lpViewId]);
return ['iid' => $lpViewId];
}
return $lpView;
}
/**

Loading…
Cancel
Save