Migration for bug fix 19795.
13 {
15
16
18 "SELECT exc_assignment.exc_id, exc_assignment.peer_crit_cat, exc_assignment.id, exc_assignment_peer.giver_id, exc_assignment_peer.peer_id" .
19 " FROM exc_assignment_peer, exc_assignment" .
20 " WHERE exc_assignment.id = exc_assignment_peer.ass_id" .
21 " AND (exc_assignment.peer_file = 1 OR exc_assignment.peer_crit_cat > 0)" .
22 " AND exc_assignment_peer.tstamp IS NOT null"
23 );
24
26 include_once("./Services/Migration/DBUpdate_5069/classes/class.ilFSStorageExercise5069.php");
28
29
30 if (
$row[
'peer_crit_cat']) {
31
32
33 $res_crit =
$ilDB->query(
34 $q = "SELECT id FROM exc_crit " .
35 " WHERE parent = " .
$ilDB->quote(
$row[
'peer_crit_cat'],
"integer") .
36 " AND type = " .
$ilDB->quote(
'file',
'text')
37 );
38
39 while ($row_crit =
$ilDB->fetchAssoc($res_crit)) {
40 $original_path = $storage->getPeerReviewUploadPath(
$row[
'peer_id'],
$row[
'giver_id'], $row_crit[
'id']);
41
42 $path_peaces = explode('/', rtrim($original_path, '/'));
43 array_pop($path_peaces);
44 $previous_dir_path = "";
45 foreach ($path_peaces as $piece) {
46 $previous_dir_path .= $piece . "/";
47 }
48 $dir_content = array_diff(scandir($previous_dir_path), array('.', '..'));
49
50
51 foreach ($dir_content as $content) {
52 if (is_dir($previous_dir_path . $content)) {
53
54 if ($content ==
$row[
'giver_id'] . $row_crit[
'id']) {
55 if (!is_dir($previous_dir_path .
$row[
'giver_id'])) {
56 mkdir($previous_dir_path .
$row[
'giver_id']);
57
58 }
59
60 if (!is_dir($previous_dir_path .
$row[
'giver_id'] .
"/" . $row_crit[
'id'])) {
61 mkdir($previous_dir_path .
$row[
'giver_id'] .
"/" . $row_crit[
'id']);
62
63 }
64
65
66 $old = substr($original_path, 0, strlen($original_path) - 1);
67 $new = $previous_dir_path .
$row[
'giver_id'] .
"/" . $row_crit[
'id'];
70 }
71
72 }
73 }
74 }
75 }
76 }
77
78 else {
79 $original_path = $storage->getPeerReviewUploadPath(
$row[
'peer_id'],
$row[
'giver_id'],
$row[
'peer_crit_cat']);
80
81 $path_peaces = explode('/', rtrim($original_path, '/'));
82 array_pop($path_peaces);
83 $previous_dir_path = "";
84 foreach ($path_peaces as $piece) {
85 $previous_dir_path .= $piece . "/";
86 }
87
88 $dir_content = array_diff(scandir($previous_dir_path), array('.', '..'));
89
90 foreach ($dir_content as $content) {
91 if (!is_dir($previous_dir_path . $content)) {
92 if (substr($content, 0, strlen(
$row[
'giver_id'])) ===
$row[
'giver_id']) {
93 $new_filename = substr($content, strlen(
$row[
'giver_id']));
94 copy($previous_dir_path . $content, $original_path . "/" . $new_filename);
95
96 }
97 }
98 }
99 }
100 }
101
102
103 }