Revert "PHRAS-524"

This reverts commit a7af07b00c.
This commit is contained in:
Benoît Burnichon
2015-05-13 13:43:07 +02:00
parent 354eb4b60e
commit 96df8cc926
4 changed files with 56 additions and 140 deletions

View File

@@ -11,10 +11,6 @@
namespace Alchemy\Phrasea\TaskManager\Editor;
use Alchemy\Phrasea\Application;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
use Alchemy\Phrasea\Core\Configuration\PropertyAccess;
class SubdefsEditor extends AbstractEditor
@@ -44,7 +40,7 @@ class SubdefsEditor extends AbstractEditor
<?xml version="1.0" encoding="UTF-8"?>
<tasksettings>
<embedded>1</embedded>
<sbas/>
<sbas>0</sbas>
<type_image>1</type_image>
<type_video>1</type_video>
<type_audio>1</type_audio>
@@ -74,77 +70,7 @@ EOF;
'flush' => static::FORM_TYPE_INTEGER,
'maxrecs' => static::FORM_TYPE_INTEGER,
'maxmegs' => static::FORM_TYPE_INTEGER,
'embedded' => static::FORM_TYPE_BOOLEAN,
'embedded' => static::FORM_TYPE_BOOLEAN
];
}
/**
* {@inheritdoc}
*/
public function updateXMLWithRequest(Request $request)
{
$dom = $this->createBlankDom();
if (false === @$dom->loadXML($request->request->get('xml'))) {
throw new BadRequestHttpException('Invalid XML data.');
}
foreach ($this->getFormProperties() as $name => $type) {
$values = $request->request->get($name);
if($values === null) {
$values = array();
} elseif(!is_array($values)) {
$values = array($values);
}
// erase the former setting but keep the node in place.
// in case on multi-valued, keep only the first node (except if no value at all: erase all)
foreach($dom->getElementsByTagName($name) as $i=>$node) {
if($i > 0 || count($values)==0) {
$node->parentNode->removeChild($node);
} else {
while ($child = $node->firstChild) {
$node->removeChild($child);
}
}
}
// if no setting to write, no reason to create a node
if(count($values) == 0) {
continue;
}
// in case the node did not exist at all, create one
if ( ($node = $dom->getElementsByTagName($name)->item(0)) === null) {
$node = $dom->documentElement->appendChild($dom->createElement($name));
}
// because dom::insertBefore is used, reverse allows to respect order while serializing.
$values = array_reverse($values);
// write
foreach($values as $i=>$value) {
if($i>0) {
// multi-valued ? add an entry
$node = $dom->documentElement->insertBefore($dom->createElement($name), $node);
}
$node->appendChild($dom->createTextNode($this->toXMLValue($type, $value)));
}
}
return new Response($dom->saveXML(), 200, ['Content-type' => 'text/xml']);
}
private function toXMLValue($type, $value)
{
switch ($type) {
case static::FORM_TYPE_BOOLEAN:
$value = (!$value ? '0' : '1');
break;
case static::FORM_TYPE_INTEGER:
$value = ($value !== null ? (string)((int) $value) : '');
break;
}
return $value;
}
}

View File

@@ -60,39 +60,18 @@ class SubdefsJob extends AbstractJob
Image2Image::$lookForEmbeddedPreview = $thumbnailExtraction;
$sqlqmark = array();
$sqlparms = array();
foreach(array('image',
'video',
'audio',
'document',
'flash',
'unknown') as $type) {
if (!isset($settings->{"type_" . $type}) || !\p4field::isno($settings->{"type_" . $type})) {
$sqlqmark[] = '?';
$sqlparms[] = $type;
}
}
foreach ($app['phraseanet.appbox']->get_databoxes() as $databox) {
if (!$this->isStarted()) {
break;
}
if(count($settings->xpath("sbas[text()=".$databox->get_sbas_id() ."]")) == 0) {
continue;
}
$conn = $databox->get_connection();
$sql = 'SELECT coll_id, record_id FROM record'
. ' WHERE jeton & ' . PhraseaTokens::MAKE_SUBDEF . ' > 0';
if(count($sqlqmark) > 0) {
$sql .= ' AND type IN(' . implode(',', $sqlqmark) . ')';
}
$sql .= ' ORDER BY record_id DESC LIMIT 0, 30';
$sql = 'SELECT coll_id, record_id
FROM record
WHERE jeton & ' . PhraseaTokens::MAKE_SUBDEF . ' > 0
ORDER BY record_id DESC LIMIT 0, 30';
$stmt = $conn->prepare($sql);
$stmt->execute($sqlparms);
$stmt->execute();
$rs = $stmt->fetchAll(\PDO::FETCH_ASSOC);
$stmt->closeCursor();
@@ -110,19 +89,19 @@ class SubdefsJob extends AbstractJob
$this->log('warning', sprintf("Generate subdefs failed for : sbasid=%s / databox=%s / recordid=%s : %s", $databox->get_sbas_id(), $databox->get_dbname() , $row['record_id'], $e->getMessage()));
}
$sql = 'UPDATE record'
. ' SET jeton=(jeton & ~' . PhraseaTokens::MAKE_SUBDEF . '), moddate=NOW()'
. ' WHERE record_id=:record_id';
$sql = 'UPDATE record
SET jeton=(jeton & ~' . PhraseaTokens::MAKE_SUBDEF . '), moddate=NOW()
WHERE record_id=:record_id';
$stmt = $conn->prepare($sql);
$stmt->execute([':record_id' => $row['record_id']]);
$stmt->closeCursor();
// rewrite metadata
$sql = 'UPDATE record'
. ' SET status=(status & ~0x03),'
. ' jeton=(jeton | ' . PhraseaTokens::WRITE_META_SUBDEF . ')'
. ' WHERE record_id=:record_id';
$sql = 'UPDATE record
SET status=(status & ~0x03),
jeton=(jeton | ' . PhraseaTokens::WRITE_META_SUBDEF . ')
WHERE record_id=:record_id';
$stmt = $conn->prepare($sql);
$stmt->execute([':record_id' => $row['record_id']]);
$stmt->closeCursor();
@@ -138,5 +117,4 @@ class SubdefsJob extends AbstractJob
$app['elasticsearch.indexer']->flushQueue();
}
}