diff --git a/lib/Alchemy/Phrasea/TaskManager/Editor/SubdefsEditor.php b/lib/Alchemy/Phrasea/TaskManager/Editor/SubdefsEditor.php index fb54cea097..e2ee1478f8 100644 --- a/lib/Alchemy/Phrasea/TaskManager/Editor/SubdefsEditor.php +++ b/lib/Alchemy/Phrasea/TaskManager/Editor/SubdefsEditor.php @@ -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 1 - + 0 1 1 1 @@ -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; - } - } diff --git a/lib/Alchemy/Phrasea/TaskManager/Job/SubdefsJob.php b/lib/Alchemy/Phrasea/TaskManager/Job/SubdefsJob.php index 3f20dc1e60..82eb1facf4 100644 --- a/lib/Alchemy/Phrasea/TaskManager/Job/SubdefsJob.php +++ b/lib/Alchemy/Phrasea/TaskManager/Job/SubdefsJob.php @@ -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(); } - } diff --git a/templates/web/admin/task-manager/task-editor/subdefs.html.twig b/templates/web/admin/task-manager/task-editor/subdefs.html.twig index 26f9ff6666..cae411c3e1 100644 --- a/templates/web/admin/task-manager/task-editor/subdefs.html.twig +++ b/templates/web/admin/task-manager/task-editor/subdefs.html.twig @@ -4,11 +4,15 @@
- {% for databox in app['phraseanet.appbox'].get_databoxes() %} - - {% endfor %} +
@@ -83,31 +87,29 @@ xml = $.parseXML(xml); xml = $(xml); - var gform = document.forms['graphicForm']; - - gform.embedded.checked = !!parseInt(xml.find("embedded").text()); - gform.type_image.checked = !!parseInt(xml.find("type_image").text()); - gform.type_video.checked = !!parseInt(xml.find("type_video").text()); - gform.type_audio.checked = !!parseInt(xml.find("type_audio").text()); - gform.type_document.checked = !!parseInt(xml.find("type_document").text()); - gform.type_flash.checked = !!parseInt(xml.find("type_flash").text()); - gform.type_unknown.checked = !!parseInt(xml.find("type_unknown").text()); - gform.flush.value = minmax(parseInt(xml.find("flush").text()), 1, 100); - gform.maxrecs.value = minmax(parseInt(xml.find("maxrecs").text()), 10, 100); - gform.maxmegs.value = minmax(parseInt(xml.find("maxmegs").text()), 64, 512); - for(i=0; i < gform['sbas[]'].length; i++) + with(document.forms['graphicForm']) { - var sbid = gform['sbas[]'][i].value; - - if(xml.find("sbas").filter(function(){return $(this).text()==sbid}).length > 0) + embedded.checked = !!parseInt(xml.find("embedded").text()); + type_image.checked = !!parseInt(xml.find("type_image").text()); + type_video.checked = !!parseInt(xml.find("type_video").text()); + type_audio.checked = !!parseInt(xml.find("type_audio").text()); + type_document.checked = !!parseInt(xml.find("type_document").text()); + type_flash.checked = !!parseInt(xml.find("type_flash").text()); + type_unknown.checked = !!parseInt(xml.find("type_unknown").text()); + flush.value = minmax(parseInt(xml.find("flush").text()), 1, 100); + maxrecs.value = minmax(parseInt(xml.find("maxrecs").text()), 10, 100); + maxmegs.value = minmax(parseInt(xml.find("maxmegs").text()), 64, 512); + for(i in sbas.options) { - gform['sbas[]'][i].checked = true; + if(sbas.options[i].value == parseInt(xml.find("sbas").text()) ) + { + sbas.options[i].selected = true; + } + else + { + sbas.options[i].selected = false; + } } - else - { - gform['sbas[]'][i].checked = false; - } - } } } diff --git a/templates/web/admin/task-manager/task-editor/task.html.twig b/templates/web/admin/task-manager/task-editor/task.html.twig index 60c0658d59..b432928ef4 100644 --- a/templates/web/admin/task-manager/task-editor/task.html.twig +++ b/templates/web/admin/task-manager/task-editor/task.html.twig @@ -55,6 +55,16 @@