mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-13 21:13:26 +00:00
Merge branch '3.8'
This commit is contained in:
@@ -58,71 +58,70 @@ class patch_380a3 implements patchInterface
|
||||
{
|
||||
$conn = $databox->get_connection();
|
||||
|
||||
try {
|
||||
$removeProc = "DROP PROCEDURE IF EXISTS explode_log_table";
|
||||
$removeProc = "DROP PROCEDURE IF EXISTS explode_log_table";
|
||||
|
||||
$stmt = $conn->prepare($removeProc);
|
||||
$stmt->execute();
|
||||
$stmt->closeCursor();
|
||||
unset($stmt);
|
||||
$stmt = $conn->prepare($removeProc);
|
||||
$stmt->execute();
|
||||
$stmt->closeCursor();
|
||||
unset($stmt);
|
||||
|
||||
$procedure = "
|
||||
CREATE PROCEDURE explode_log_table(bound VARCHAR(255))
|
||||
BEGIN
|
||||
DECLARE l_log_id INT UNSIGNED DEFAULT 0;
|
||||
DECLARE l_coll_list TEXT;
|
||||
DECLARE occurance INT DEFAULT 0;
|
||||
DECLARE i INT DEFAULT 0;
|
||||
DECLARE dest_coll_id INT;
|
||||
DECLARE done INT DEFAULT 0;
|
||||
DECLARE result_set CURSOR FOR
|
||||
SELECT l.id, l.coll_list
|
||||
FROM log l
|
||||
LEFT JOIN log_colls lc ON (lc.log_id = l.id)
|
||||
WHERE (lc.log_id IS NULL) AND coll_list != '';
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
|
||||
OPEN result_set;
|
||||
read_loop: LOOP
|
||||
FETCH result_set INTO l_log_id, l_coll_list;
|
||||
IF done THEN
|
||||
LEAVE read_loop;
|
||||
END IF;
|
||||
SET occurance = (SELECT LENGTH(l_coll_list) - LENGTH(REPLACE(l_coll_list, bound, ''))+1);
|
||||
SET i=1;
|
||||
START TRANSACTION;
|
||||
WHILE i <= occurance DO
|
||||
SET dest_coll_id = (SELECT REPLACE(
|
||||
SUBSTRING(
|
||||
SUBSTRING_INDEX(l_coll_list, bound, i),
|
||||
LENGTH(SUBSTRING_INDEX(l_coll_list, bound, i - 1)) + 1
|
||||
),
|
||||
',',
|
||||
''
|
||||
));
|
||||
IF dest_coll_id > 0 THEN
|
||||
INSERT INTO log_colls VALUES (null, l_log_id, dest_coll_id);
|
||||
END IF;
|
||||
SET i = i + 1;
|
||||
END WHILE;
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
CLOSE result_set;
|
||||
END;";
|
||||
$procedure = "
|
||||
CREATE PROCEDURE explode_log_table(bound VARCHAR(255))
|
||||
BEGIN
|
||||
DECLARE l_log_id INT UNSIGNED DEFAULT 0;
|
||||
DECLARE l_coll_list TEXT;
|
||||
DECLARE occurance INT DEFAULT 0;
|
||||
DECLARE i INT DEFAULT 0;
|
||||
DECLARE dest_coll_id INT;
|
||||
DECLARE done INT DEFAULT 0;
|
||||
DECLARE result_set CURSOR FOR
|
||||
SELECT l.id, l.coll_list
|
||||
FROM log l
|
||||
LEFT JOIN log_colls lc ON (lc.log_id = l.id)
|
||||
WHERE (lc.log_id IS NULL) AND coll_list != '';
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
|
||||
OPEN result_set;
|
||||
read_loop: LOOP
|
||||
FETCH result_set INTO l_log_id, l_coll_list;
|
||||
IF done THEN
|
||||
LEAVE read_loop;
|
||||
END IF;
|
||||
SET occurance = (SELECT LENGTH(l_coll_list) - LENGTH(REPLACE(l_coll_list, bound, ''))+1);
|
||||
SET i=1;
|
||||
START TRANSACTION;
|
||||
WHILE i <= occurance DO
|
||||
SET dest_coll_id = (SELECT REPLACE(
|
||||
SUBSTRING(
|
||||
SUBSTRING_INDEX(l_coll_list, bound, i),
|
||||
LENGTH(SUBSTRING_INDEX(l_coll_list, bound, i - 1)) + 1
|
||||
),
|
||||
',',
|
||||
''
|
||||
));
|
||||
IF dest_coll_id > 0 THEN
|
||||
INSERT INTO log_colls VALUES (null, l_log_id, dest_coll_id);
|
||||
END IF;
|
||||
SET i = i + 1;
|
||||
END WHILE;
|
||||
COMMIT;
|
||||
END LOOP;
|
||||
CLOSE result_set;
|
||||
END;";
|
||||
|
||||
$stmt = $conn->prepare($procedure);
|
||||
$stmt->execute();
|
||||
$stmt->closeCursor();
|
||||
unset($stmt);
|
||||
$stmt = $conn->prepare($procedure);
|
||||
$stmt->execute();
|
||||
$stmt->closeCursor();
|
||||
|
||||
$sql = "CALL explode_log_table(',')";
|
||||
$stmt = $conn->prepare($sql);
|
||||
$stmt->execute();
|
||||
$stmt->closeCursor();
|
||||
unset($stmt);
|
||||
} catch (\PDOEXception $e) {
|
||||
return false;
|
||||
}
|
||||
$sql = "CALL explode_log_table(',')";
|
||||
$stmt = $conn->prepare($sql);
|
||||
$stmt->execute();
|
||||
$stmt->closeCursor();
|
||||
|
||||
|
||||
$stmt = $conn->prepare($removeProc);
|
||||
$stmt->execute();
|
||||
$stmt->closeCursor();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user