mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-15 14:03:27 +00:00
Merge branch '3.8'
Conflicts: composer.lock lib/Alchemy/Phrasea/Core/Version.php
This commit is contained in:
97
lib/classes/patch/383alpha4a.php
Normal file
97
lib/classes/patch/383alpha4a.php
Normal file
@@ -0,0 +1,97 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Phraseanet
|
||||
*
|
||||
* (c) 2005-2014 Alchemy
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Alchemy\Phrasea\Application;
|
||||
use Doctrine\ORM\Query\ResultSetMapping;
|
||||
|
||||
class patch_383alpha4a implements patchInterface
|
||||
{
|
||||
/** @var string */
|
||||
private $release = '3.8.3-alpha.4';
|
||||
|
||||
/** @var array */
|
||||
private $concern = array(base::APPLICATION_BOX);
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_release()
|
||||
{
|
||||
return $this->release;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function require_all_upgrades()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function concern()
|
||||
{
|
||||
return $this->concern;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function apply(base $appbox, Application $app)
|
||||
{
|
||||
$em = $app['EM'];
|
||||
$mappingFieldType = $mappingFieldResult = new ResultSetMapping();
|
||||
|
||||
$rs = $em->createNativeQuery(
|
||||
"SHOW FIELDS FROM usr WHERE Field = 'usr_login';",
|
||||
$mappingFieldType->addScalarResult('Type', 'Type')
|
||||
)->getSingleResult();
|
||||
|
||||
if (0 !== strpos(strtolower($rs['Type']), 'varbinary')) {
|
||||
return;
|
||||
}
|
||||
|
||||
// As 'usr_login' field type is varbinary it can contain any charset (utf8 or latin1).
|
||||
// Compare usr_login to usr_login converted to utf8>utf32>utf8
|
||||
// will detect broken char for latin1 encoded string.
|
||||
// Then detected 'usr_login' fields must be converted from latin1 to utf8.
|
||||
$rs = $em->createNativeQuery(
|
||||
'SELECT t.usr_id, t.login_utf8 FROM (
|
||||
SELECT usr_id,
|
||||
usr_login AS login_unknown_charset,
|
||||
CONVERT(CAST(usr_login AS CHAR CHARACTER SET latin1) USING utf8) AS login_utf8,
|
||||
CONVERT(CONVERT(CAST(usr_login AS CHAR CHARACTER SET utf8) USING utf32) USING utf8) AS login_utf8_utf32_utf8
|
||||
FROM usr
|
||||
) AS t
|
||||
WHERE t.login_utf8_utf32_utf8 != t.login_unknown_charset',
|
||||
$mappingFieldResult->addScalarResult('usr_id', 'usr_id')->addScalarResult('login_utf8', 'login_utf8')
|
||||
)->getResult();
|
||||
|
||||
foreach ($rs as $row) {
|
||||
$em->getConnection()->executeQuery(sprintf('UPDATE usr SET usr_login="%s" WHERE usr_id=%d', $row['login_utf8'], $row['usr_id']));
|
||||
}
|
||||
|
||||
foreach (array(
|
||||
// drop index
|
||||
"ALTER TABLE usr DROP INDEX usr_login;",
|
||||
// change field type
|
||||
"ALTER TABLE usr MODIFY usr_login VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin;",
|
||||
// recreate index
|
||||
"CREATE UNIQUE INDEX usr_login ON usr (usr_login);"
|
||||
) as $sql) {
|
||||
$em->getConnection()->executeQuery($sql);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
@@ -354,18 +354,6 @@ function returnElement(unId)
|
||||
var pref = new Array(0);
|
||||
var lastpref=null;
|
||||
|
||||
function loaded()
|
||||
{
|
||||
self.focus();
|
||||
write_valsug();
|
||||
makeRestrict();
|
||||
maketextaffich();
|
||||
makeEmpty();
|
||||
redrawme();
|
||||
scan();
|
||||
$("#iddivloading").hide();
|
||||
}
|
||||
|
||||
function Roll(im, x)
|
||||
{
|
||||
var s=document[im].src;
|
||||
@@ -809,7 +797,18 @@ pref["{{ value['key']|escapeDoubleQuote|raw }}"].valsug["{{ value['value']|escap
|
||||
|
||||
function getSruct()
|
||||
{
|
||||
var dom = document.implementation.createDocument(null, 'baseprefs', null);
|
||||
var parser = new DOMParser();
|
||||
var dom = parser.parseFromString($('#txtareaxml').val(), 'text/xml');
|
||||
var existing = dom.getElementsByTagName('sugestedValues');
|
||||
|
||||
if (existing.length !== 0) {
|
||||
for (i in existing) {
|
||||
if (existing[i].parentNode) {
|
||||
existing[i].parentNode.removeChild(existing[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var values = dom.createElement('sugestedValues');
|
||||
|
||||
for (a in pref ) {
|
||||
@@ -830,7 +829,11 @@ function getSruct()
|
||||
dom.getElementsByTagName('baseprefs')[0].appendChild(values);
|
||||
|
||||
var serializer = new XMLSerializer();
|
||||
var xml = '<?xml version="1.0" encoding="UTF-8"?>' + serializer.serializeToString(dom);
|
||||
var xml = serializer.serializeToString(dom);
|
||||
|
||||
if (xml.substring(0, 8) !== '<?xml ve') {
|
||||
xml = '<?xml version="1.0" encoding="UTF-8"?>' + xml;
|
||||
}
|
||||
|
||||
xml.replace('<sugestedValues>', statuscoll + otherFields + '<sugestedValues>');
|
||||
|
||||
@@ -888,7 +891,6 @@ function view(type)
|
||||
|
||||
newStr=getSruct();
|
||||
|
||||
console.log(newStr);
|
||||
if($('#txtareaxml').length > 0 && newStr!=null )
|
||||
{
|
||||
avantModif = newStr;
|
||||
@@ -916,6 +918,11 @@ function view(type)
|
||||
}
|
||||
|
||||
$(document).ready(function(){
|
||||
write_valsug();
|
||||
makeRestrict();
|
||||
maketextaffich();
|
||||
makeEmpty();
|
||||
redrawme();
|
||||
scan();
|
||||
$("#iddivloading").hide();
|
||||
});
|
||||
|
@@ -1,21 +1,4 @@
|
||||
<script type="text/javascript">
|
||||
var bodySize = {x:100,y:100};
|
||||
|
||||
function resize(){
|
||||
|
||||
bodySize.y = $(window).height();
|
||||
bodySize.x = $(window).width();
|
||||
|
||||
var $heightd = $('#tab_demandes').outerHeight(true);
|
||||
var maxSize = (bodySize.y - 120);
|
||||
|
||||
if($heightd > maxSize)
|
||||
{
|
||||
$('#tab_demandes').height(maxSize);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$(document).ready(function(){
|
||||
|
||||
resize();
|
||||
@@ -216,7 +199,7 @@
|
||||
</thead>
|
||||
</table>
|
||||
|
||||
<div id="tab_demandes" style="overflow-y:scroll; overflow-x:hidden;">
|
||||
<div id="tab_demandes">
|
||||
{% set tableColls = table['coll'] %}
|
||||
{% for row in table['user'] %}
|
||||
<div class="well well-small">
|
||||
@@ -253,9 +236,9 @@
|
||||
</td>
|
||||
<td>
|
||||
{% for basId in colls %}
|
||||
<h1 style="word-wrap: break-word;">
|
||||
<span style="font-weight:bold;font-size:14px;word-wrap: break-word;">
|
||||
{{ basId| bas_labels(app) }}
|
||||
</h1>
|
||||
</span>
|
||||
{% set btn_value = row['usr_id'] ~ "_" ~ basId %}
|
||||
<div class="btn-group btn-single-action" style="margin:auto auto 5px 0;">
|
||||
<button data-event="deny" value="{{ btn_value }}" type="button" name="deny[]" class="btn deny-checker" title="{{ 'admin:: refuser l\'acces' | trans }}">
|
||||
|
Reference in New Issue
Block a user