Internal: DB structure change: Replace *_session_id fields with session_id in track_e_* tables - refs GH#4318

Author: @christianbeeznest
pull/4615/head
christianbeeznest 3 years ago committed by GitHub
parent 2123330891
commit 0998b3cc9a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      public/main/admin/user_move_stats.php
  2. 18
      public/main/inc/lib/events.lib.php
  3. 4
      public/main/inc/lib/sessionmanager.lib.php
  4. 18
      public/main/inc/lib/tracking.lib.php
  5. 20
      src/CoreBundle/Entity/TrackEAccess.php
  6. 18
      src/CoreBundle/Entity/TrackEDownloads.php
  7. 18
      src/CoreBundle/Entity/TrackELastaccess.php
  8. 18
      src/CoreBundle/Entity/TrackELinks.php
  9. 18
      src/CoreBundle/Entity/TrackEUploads.php
  10. 47
      src/CoreBundle/Migrations/Schema/V200/Version20220614165020.php
  11. 2
      src/CoreBundle/Serializer/UserToJsonNormalizer.php
  12. 20
      tests/scripts/course2session.php

@ -230,7 +230,7 @@ if (isset($_REQUEST['load_ajax'])) {
//4. track_e_lastaccess
$sql = "SELECT access_id FROM $TBL_TRACK_E_LAST_ACCESS
WHERE c_id = $course_id
AND access_session_id = $origin_session_id
AND session_id = $origin_session_id
AND access_user_id = $user_id ";
$res = Database::query($sql);
$list = [];
@ -242,7 +242,7 @@ if (isset($_REQUEST['load_ajax'])) {
foreach ($list as $id) {
if ($update_database) {
$sql = "UPDATE $TBL_TRACK_E_LAST_ACCESS
SET access_session_id = $new_session_id
SET session_id = $new_session_id
WHERE access_id = $id";
if ($debug) {
echo $sql;

@ -131,7 +131,7 @@ class Event
} else {
$userId = '0'; // no one
}
$sql = "INSERT INTO $TABLETRACK_ACCESS (user_ip, access_user_id, c_id, access_date, access_session_id)
$sql = "INSERT INTO $TABLETRACK_ACCESS (user_ip, access_user_id, c_id, access_date, session_id)
VALUES ('$ip', $userId, $courseId, '$now', $sessionId)";
Database::query($sql);
@ -142,11 +142,11 @@ class Event
access_user_id = $userId AND
c_id = $courseId AND
access_tool IS NULL AND
access_session_id = $sessionId";
session_id = $sessionId";
$result = Database::query($sql);
if (0 == Database::affected_rows($result)) {
$sql = "INSERT INTO $TABLETRACK_LASTACCESS (access_user_id, c_id, access_date, access_session_id)
$sql = "INSERT INTO $TABLETRACK_LASTACCESS (access_user_id, c_id, access_date, session_id)
VALUES ($userId, $courseId, '$now', $sessionId)";
Database::query($sql);
}
@ -225,7 +225,7 @@ class Event
'c_id' => $courseId,
'access_tool' => $tool,
'access_date' => $reallyNow,
'access_session_id' => $sessionId,
'session_id' => $sessionId,
'user_ip' => Database::escape_string(api_get_real_ip()),
];
Database::insert($tableAccess, $params);
@ -238,7 +238,7 @@ class Event
access_user_id = $userId AND
c_id = $courseId AND
access_tool = '$tool' AND
access_session_id = $sessionId";
session_id = $sessionId";
$result = Database::query($sql);
if (0 == Database::affected_rows($result)) {
@ -247,7 +247,7 @@ class Event
'c_id' => $courseId,
'access_tool' => $tool,
'access_date' => $reallyNow,
'access_session_id' => $sessionId,
'session_id' => $sessionId,
];
Database::insert($tableLastAccess, $params);
}
@ -287,7 +287,7 @@ class Event
'c_id' => $courseId,
'down_doc_path' => $documentUrl,
'down_date' => $reallyNow,
'down_session_id' => $sessionId,
'session_id' => $sessionId,
]
);
}
@ -320,7 +320,7 @@ class Event
c_id,
upload_work_id,
upload_date,
upload_session_id
session_id
)
VALUES (
$userId,
@ -361,7 +361,7 @@ class Event
c_id,
links_link_id,
links_date,
links_session_id
session_id
) VALUES (
$userId,
$courseId,

@ -1317,7 +1317,7 @@ class SessionManager
FROM $table_stats_access
WHERE access_tool = 'course_description'
AND c_id = '%s'
AND access_session_id = %s
AND session_id = %s
AND access_user_id = %s ";
$sql_query = sprintf($sql, $course['real_id'], $user['id_session'], $user['user_id']);
@ -1967,7 +1967,7 @@ class SessionManager
//Database::query("DELETE FROM $tbl_item_properties WHERE session_id = $sessionId");
Database::query("DELETE FROM $tbl_url_session WHERE session_id = $sessionId");
Database::query("DELETE FROM $trackCourseAccess WHERE session_id = $sessionId");
Database::query("DELETE FROM $trackAccess WHERE access_session_id = $sessionId");
Database::query("DELETE FROM $trackAccess WHERE session_id = $sessionId");
$sql = "UPDATE $ticket SET session_id = NULL WHERE session_id = $sessionId";
Database::query($sql);

@ -4098,7 +4098,7 @@ class Tracking
DATE_SUB('$now',INTERVAL $last_days DAY) <= access_date AND
c_id = '$courseId' AND
access_tool='".TOOL_CHAT."' AND
access_session_id = '$session_id' ";
session_id = '$session_id' ";
$result = Database::query($sql);
if (Database::num_rows($result)) {
$row = Database::fetch_row($result);
@ -4137,7 +4137,7 @@ class Tracking
access_tool='".TOOL_CHAT."' AND
access_user_id='$student_id' AND
c_id = $courseId AND
access_session_id = '$session_id'
session_id = '$session_id'
ORDER BY access_date DESC limit 1";
$rs = Database::query($sql);
if (Database::num_rows($rs) > 0) {
@ -4175,7 +4175,7 @@ class Tracking
WHERE
links_user_id= '.$student_id.' AND
c_id = "'.$courseId.'" AND
links_session_id = '.$session_id.' ';
session_id = '.$session_id.' ';
$rs = Database::query($sql);
@ -4204,7 +4204,7 @@ class Tracking
FROM '.$table.'
WHERE down_user_id = '.$student_id.'
AND c_id = "'.$courseId.'"
AND down_session_id = '.$session_id.' ';
AND session_id = '.$session_id.' ';
$rs = Database::query($sql);
return Database::num_rows($rs);
@ -4358,7 +4358,7 @@ class Tracking
$condition_session = '';
if (isset($session_id)) {
$session_id = (int) $session_id;
$condition_session = ' AND access_session_id = '.$session_id;
$condition_session = ' AND session_id = '.$session_id;
}
$sql = "SELECT
access_tool,
@ -4406,7 +4406,7 @@ class Tracking
$condition_session = '';
$session_id = intval($session_id);
if (!empty($session_id)) {
$condition_session = ' AND down_session_id = '.$session_id;
$condition_session = ' AND session_id = '.$session_id;
}
$sql = "SELECT
down_doc_path,
@ -4452,7 +4452,7 @@ class Tracking
$condition_session = '';
if (isset($session_id)) {
$session_id = intval($session_id);
$condition_session = ' AND sl.links_session_id = '.$session_id;
$condition_session = ' AND sl.session_id = '.$session_id;
}
$sql = "SELECT cl.title, cl.url,count(DISTINCT sl.links_user_id), count(cl.title) as count_visits
@ -7031,7 +7031,7 @@ class Tracking
$sql = "SELECT access_id FROM $TBL_TRACK_E_LAST_ACCESS
WHERE
c_id = $course_id AND
access_session_id = $origin_session_id AND
session_id = $origin_session_id AND
access_user_id = $user_id ";
$res = Database::query($sql);
$list = [];
@ -7043,7 +7043,7 @@ class Tracking
foreach ($list as $id) {
if ($update_database) {
$sql = "UPDATE $TBL_TRACK_E_LAST_ACCESS
SET access_session_id = $new_session_id
SET session_id = $new_session_id
WHERE access_id = $id";
if ($debug) {
echo $sql;

@ -15,8 +15,8 @@ use Doctrine\ORM\Mapping as ORM;
* @ORM\Table(name="track_e_access", indexes={
* @ORM\Index(name="access_user_id", columns={"access_user_id"}),
* @ORM\Index(name="access_c_id", columns={"c_id"}),
* @ORM\Index(name="access_session_id", columns={"access_session_id"}),
* @ORM\Index(name="user_course_session_date", columns={"access_user_id", "c_id", "access_session_id", "access_date"})
* @ORM\Index(name="session_id", columns={"session_id"}),
* @ORM\Index(name="user_course_session_date", columns={"access_user_id", "c_id", "session_id", "access_date"})
* })
* @ORM\Entity
*/
@ -50,9 +50,9 @@ class TrackEAccess
protected ?string $accessTool = null;
/**
* @ORM\Column(name="access_session_id", type="integer", nullable=false)
* @ORM\Column(name="session_id", type="integer", nullable=false)
*/
protected int $accessSessionId;
protected int $sessionId;
/**
* @ORM\Column(name="user_ip", type="string", length=45, nullable=false)
@ -148,25 +148,25 @@ class TrackEAccess
}
/**
* Set accessSessionId.
* Set sessionId.
*
* @return TrackEAccess
*/
public function setAccessSessionId(int $accessSessionId)
public function setSessionId(int $sessionId)
{
$this->accessSessionId = $accessSessionId;
$this->sessionId = $sessionId;
return $this;
}
/**
* Get accessSessionId.
* Get sessionId.
*
* @return int
*/
public function getAccessSessionId()
public function getSessionId()
{
return $this->accessSessionId;
return $this->sessionId;
}
/**

@ -15,7 +15,7 @@ use Doctrine\ORM\Mapping as ORM;
* @ORM\Table(name="track_e_downloads", indexes={
* @ORM\Index(name="idx_ted_user_id", columns={"down_user_id"}),
* @ORM\Index(name="idx_ted_c_id", columns={"c_id"}),
* @ORM\Index(name="down_session_id", columns={"down_session_id"})
* @ORM\Index(name="session_id", columns={"session_id"})
* })
* @ORM\Entity
*/
@ -49,9 +49,9 @@ class TrackEDownloads
protected string $downDocPath;
/**
* @ORM\Column(name="down_session_id", type="integer", nullable=false)
* @ORM\Column(name="session_id", type="integer", nullable=false)
*/
protected int $downSessionId;
protected int $sessionId;
/**
* Set downUserId.
@ -142,25 +142,25 @@ class TrackEDownloads
}
/**
* Set downSessionId.
* Set sessionId.
*
* @return TrackEDownloads
*/
public function setDownSessionId(int $downSessionId)
public function setSessionId(int $sessionId)
{
$this->downSessionId = $downSessionId;
$this->sessionId = $sessionId;
return $this;
}
/**
* Get downSessionId.
* Get sessionId.
*
* @return int
*/
public function getDownSessionId()
public function getSessionId()
{
return $this->downSessionId;
return $this->sessionId;
}
/**

@ -15,7 +15,7 @@ use Doctrine\ORM\Mapping as ORM;
* @ORM\Table(name="track_e_lastaccess", indexes={
* @ORM\Index(name="access_user_id", columns={"access_user_id"}),
* @ORM\Index(name="access_c_id", columns={"c_id"}),
* @ORM\Index(name="access_session_id", columns={"access_session_id"})
* @ORM\Index(name="session_id", columns={"session_id"})
* })
* @ORM\Entity
*/
@ -42,9 +42,9 @@ class TrackELastaccess
protected ?string $accessTool = null;
/**
* @ORM\Column(name="access_session_id", type="integer", nullable=true)
* @ORM\Column(name="session_id", type="integer", nullable=true)
*/
protected ?int $accessSessionId = null;
protected ?int $sessionId = null;
/**
* @ORM\Column(name="access_id", type="bigint")
@ -142,25 +142,25 @@ class TrackELastaccess
}
/**
* Set accessSessionId.
* Set sessionId.
*
* @return TrackELastaccess
*/
public function setAccessSessionId(int $accessSessionId)
public function setSessionId(int $sessionId)
{
$this->accessSessionId = $accessSessionId;
$this->sessionId = $sessionId;
return $this;
}
/**
* Get accessSessionId.
* Get sessionId.
*
* @return int
*/
public function getAccessSessionId()
public function getSessionId()
{
return $this->accessSessionId;
return $this->sessionId;
}
/**

@ -15,7 +15,7 @@ use Doctrine\ORM\Mapping as ORM;
* @ORM\Table(name="track_e_links", indexes={
* @ORM\Index(name="idx_tel_c_id", columns={"c_id"}),
* @ORM\Index(name="idx_tel_user_id", columns={"links_user_id"}),
* @ORM\Index(name="links_session_id", columns={"links_session_id"})
* @ORM\Index(name="session_id", columns={"session_id"})
* })
* @ORM\Entity
*/
@ -42,9 +42,9 @@ class TrackELinks
protected int $linksLinkId;
/**
* @ORM\Column(name="links_session_id", type="integer", nullable=false)
* @ORM\Column(name="session_id", type="integer", nullable=false)
*/
protected int $linksSessionId;
protected int $sessionId;
/**
* @ORM\Column(name="links_id", type="integer")
@ -142,25 +142,25 @@ class TrackELinks
}
/**
* Set linksSessionId.
* Set sessionId.
*
* @return TrackELinks
*/
public function setLinksSessionId(int $linksSessionId)
public function setSessionId(int $sessionId)
{
$this->linksSessionId = $linksSessionId;
$this->sessionId = $sessionId;
return $this;
}
/**
* Get linksSessionId.
* Get sessionId.
*
* @return int
*/
public function getLinksSessionId()
public function getSessionId()
{
return $this->linksSessionId;
return $this->sessionId;
}
/**

@ -17,7 +17,7 @@ use Doctrine\ORM\Mapping as ORM;
* indexes={
* @ORM\Index(name="course", columns={"c_id"}),
* @ORM\Index(name="upload_user_id", columns={"upload_user_id"}),
* @ORM\Index(name="upload_session_id", columns={"upload_session_id"})
* @ORM\Index(name="session_id", columns={"session_id"})
* }
* )
* @ORM\Entity
@ -52,9 +52,9 @@ class TrackEUploads
protected int $uploadWorkId;
/**
* @ORM\Column(name="upload_session_id", type="integer", nullable=false)
* @ORM\Column(name="session_id", type="integer", nullable=false)
*/
protected int $uploadSessionId;
protected int $sessionId;
/**
* Set uploadUserId.
@ -145,25 +145,25 @@ class TrackEUploads
}
/**
* Set uploadSessionId.
* Set sessionId.
*
* @return TrackEUploads
*/
public function setUploadSessionId(int $uploadSessionId)
public function setSessionId(int $sessionId)
{
$this->uploadSessionId = $uploadSessionId;
$this->sessionId = $sessionId;
return $this;
}
/**
* Get uploadSessionId.
* Get sessionId.
*
* @return int
*/
public function getUploadSessionId()
public function getSessionId()
{
return $this->uploadSessionId;
return $this->sessionId;
}
/**

@ -0,0 +1,47 @@
<?php
declare(strict_types=1);
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Migrations\Schema\V200;
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo;
use Doctrine\DBAL\Schema\Schema;
class Version20220614165020 extends AbstractMigrationChamilo
{
public function getDescription(): string
{
return 'Migrate track_e_access, track_e_lastaccess, track_e_uploads, track_e_downloads, track_e_links';
}
public function up(Schema $schema): void
{
$this->addSql('DROP INDEX access_session_id ON track_e_access');
$this->addSql('DROP INDEX user_course_session_date ON track_e_access');
$this->addSql('ALTER TABLE track_e_access CHANGE access_session_id session_id INT NOT NULL');
$this->addSql('CREATE INDEX session_id ON track_e_access (session_id)');
$this->addSql('CREATE INDEX user_course_session_date ON track_e_access (access_user_id, c_id, session_id, access_date)');
$this->addSql('DROP INDEX access_session_id ON track_e_lastaccess');
$this->addSql('ALTER TABLE track_e_lastaccess CHANGE access_session_id session_id INT DEFAULT NULL');
$this->addSql('CREATE INDEX session_id ON track_e_lastaccess (session_id)');
$this->addSql('DROP INDEX upload_session_id ON track_e_uploads');
$this->addSql('ALTER TABLE track_e_uploads CHANGE upload_session_id session_id INT NOT NULL');
$this->addSql('CREATE INDEX session_id ON track_e_uploads (session_id)');
$this->addSql('DROP INDEX down_session_id ON track_e_downloads');
$this->addSql('ALTER TABLE track_e_downloads CHANGE down_session_id session_id INT NOT NULL');
$this->addSql('CREATE INDEX session_id ON track_e_downloads (session_id)');
$this->addSql('DROP INDEX links_session_id ON track_e_links');
$this->addSql('ALTER TABLE track_e_links CHANGE links_session_id session_id INT NOT NULL');
$this->addSql('CREATE INDEX session_id ON track_e_links (session_id)');
}
public function down(Schema $schema): void
{
}
}

@ -294,7 +294,7 @@ final class UserToJsonNormalizer
$date = $item->getAccessDate()->format($dateFormat);
$list = [
'Course #'.$item->getCId(),
'Session # '.$item->getAccessSessionId(),
'Session # '.$item->getSessionId(),
'Tool: '.$item->getAccessTool(),
'Access date: '.$date,
];

@ -54,16 +54,16 @@ $tables = array(
//'session_rel_course_rel_user',
//'session_rel_user',
'track_course_ranking' => array('c' => 'c_id', 's' => 'session_id'),
'track_e_access' => array('access_cours_code' => 'c_id', 's' => 'access_session_id'),
'track_e_access' => array('access_cours_code' => 'c_id', 's' => 'session_id'),
'track_e_attempt' => array('c' => 'course_code', 's' => 'session_id'),
'track_e_course_access' => array('c' => 'course_code', 's' => 'session_id'),
'track_e_downloads' => array('c' => 'down_cours_id', 's' => 'down_session_id'),
'track_e_downloads' => array('c' => 'down_cours_id', 's' => 'session_id'),
'track_e_exercices' => array('c' => 'exe_cours_id', 's' => 'session_id'),
'track_e_item_property' => array('c' => 'course_id', 's' => 'session_id'),
'track_e_lastaccess' => array('c' => 'access_cours_code', 's' => 'access_session_id'),
'track_e_links' => array('c' => 'links_cours_id', 's' => 'links_session_id'),
'track_e_lastaccess' => array('c' => 'access_cours_code', 's' => 'session_id'),
'track_e_links' => array('c' => 'links_cours_id', 's' => 'session_id'),
'track_e_online' => array('c' => 'course', 's' => 'session_id'),
'track_e_uploads' => array('c' => 'c_id', 's' => 'upload_session_id'),
'track_e_uploads' => array('c' => 'c_id', 's' => 'session_id'),
'user_rel_course_vote' => array('c' => 'c_id', 's' => 'session_id'),
);
// Users related tables. From those tables above, only a few have data related
@ -91,16 +91,16 @@ $userTables = array(
//'session_rel_course_rel_user',
//'session_rel_user',
'track_course_ranking' => array('c' => 'c_id', 's' => 'session_id'),
'track_e_access' => array('c' => 'c_id', 's' => 'access_session_id'),
'track_e_access' => array('c' => 'c_id', 's' => 'session_id'),
'track_e_attempt' => array('c' => 'c_id', 's' => 'session_id'),
'track_e_course_access' => array('c' => 'c_id', 's' => 'session_id'),
'track_e_downloads' => array('c' => 'c_id', 's' => 'down_session_id'),
'track_e_downloads' => array('c' => 'c_id', 's' => 'session_id'),
'track_e_exercices' => array('c' => 'c_id', 's' => 'session_id'),
'track_e_item_property' => array('c' => 'course_id', 's' => 'session_id'),
'track_e_lastaccess' => array('c' => 'c_id', 's' => 'access_session_id'),
'track_e_links' => array('c' => 'c_id', 's' => 'links_session_id'),
'track_e_lastaccess' => array('c' => 'c_id', 's' => 'session_id'),
'track_e_links' => array('c' => 'c_id', 's' => 'session_id'),
'track_e_online' => array('c' => 'c_id', 's' => 'session_id'),
'track_e_uploads' => array('c' => 'upload_cours_id', 's' => 'upload_session_id'),
'track_e_uploads' => array('c' => 'upload_cours_id', 's' => 'session_id'),
'user_rel_course_vote' => array('c' => 'c_id', 's' => 'session_id'),
);

Loading…
Cancel
Save