server/src/app/Repositories/RdfDocumentRepository.php
author ymh <ymh.work@gmail.com>
Tue, 11 Oct 2016 16:39:11 +0200
changeset 327 13564bb13ccc
parent 326 226d5b17a119
child 329 0a2c2ad49d75
permissions -rw-r--r--
In the serialized document the lan files id 'languages' and not 'language'
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
namespace CorpusParole\Repositories;
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
use Config;
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
use Log;
168
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents: 125
diff changeset
     7
use CorpusParole\Models\DocumentResult;
2
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
use CorpusParole\Models\Document;
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
     9
use CorpusParole\Libraries\CorpusParoleException;
261
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    10
use CorpusParole\Libraries\Utils;
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
    11
use CorpusParole\Libraries\Sparql\SparqlClient;
261
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    12
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    13
125
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
    14
use CorpusParole\Services\LexvoResolverInterface;
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
    15
19
eadaf0b8f02e Bo conception step. back to ember page
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
    16
use EasyRdf\Graph;
eadaf0b8f02e Bo conception step. back to ember page
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
    17
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
    18
use Illuminate\Pagination\LengthAwarePaginator;
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
    19
use Illuminate\Pagination\Paginator;
2
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
    21
use Es;
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
    22
2
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
/**
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
 * Implement the DocumentRepository using EasyRdf
19
eadaf0b8f02e Bo conception step. back to ember page
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
    25
 * TODO: certainly split the transaction management (+add, +delete +transaction ) to an external class -> for this extend the sparql client.
2
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
 */
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
class RdfDocumentRepository implements DocumentRepository {
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
275
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    29
    const BASE_DOC_QUERY
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    30
        = "SELECT".
261
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    31
        "    ?uri".
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    32
        "    ?doc".
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    33
        "    ?title".
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    34
        "    ?issued".
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    35
        "    ?modified".
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
    36
        "    (group_concat(distinct ?language;separator=\", \") as ?lang) ".
261
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    37
        "    (group_concat(distinct ?publisher;separator=\", \") as ?publishers) ".
275
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    38
        "  WHERE {".
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
    39
        "    GRAPH ?uri { ?doc a <http://www.europeana.eu/schemas/edm/ProvidedCHO>.".
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
    40
        "      ?doc <http://purl.org/dc/elements/1.1/title> ?title.".
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
    41
        "      OPTIONAL {?doc <http://purl.org/dc/elements/1.1/language> ?language.} ".
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
    42
        "      OPTIONAL {?doc <http://purl.org/dc/terms/issued> ?issued.} ".
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
    43
        "      OPTIONAL {?doc <http://purl.org/dc/terms/modified> ?modified.} ".
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
    44
        "      OPTIONAL {?doc <http://purl.org/dc/elements/1.1/publisher> ?publisher.}".
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
    45
        "    }. ".
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
    46
        "    %s".
275
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    47
        "  } ".
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
    48
        "  GROUP BY ?uri ?doc ?title ?issued ?modified ";
261
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    49
275
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    50
    const ADDITIONAL_DOC_QUERIES = [
261
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    51
        "SELECT".
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    52
        "    ?uri".
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    53
        "    ?doc".
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    54
        "    (sample(distinct ?ext) as ?extent) ".
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    55
        "WHERE {".
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    56
        "    GRAPH ?uri {".
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    57
        "        ?s a <http://www.europeana.eu/schemas/edm/WebResource>. ".
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    58
        "        ?uri <http://www.europeana.eu/schemas/edm/isShownBy> ?s. ".
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    59
        "        ?uri <http://www.europeana.eu/schemas/edm/aggregatedCHO> ?doc. ".
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    60
        "        OPTIONAL {?s <http://purl.org/dc/terms/extent> ?ext.}".
275
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    61
        "    }. ".
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    62
        "    %s".
261
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    63
        "} ".
275
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    64
        "GROUP BY ?uri ?doc",
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    65
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    66
        "SELECT".
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    67
        "    ?uri".
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    68
        "    ?doc".
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    69
        "    (sample(distinct str(?s)) as ?transcript_url) ".
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    70
        "WHERE {".
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    71
        "    GRAPH ?uri {".
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    72
        "        ?s a <http://www.europeana.eu/schemas/edm/WebResource>. ".
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    73
        "        ?uri <http://www.europeana.eu/schemas/edm/aggregatedCHO> ?doc. ".
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    74
        "        OPTIONAL {?s <http://purl.org/dc/elements/1.1/format> ?f.} ".
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    75
        "    }. ".
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    76
        "    FILTER(str(?f) IN ( \"application/xml\", \"application/pdf\" )). ".
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    77
        "    %s".
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    78
        "} ".
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    79
        "GROUP BY ?uri ?doc"
261
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    80
    ];
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    81
2
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
    private $sparqlClient;
125
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
    83
    private $lexvoResolver;
2
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
125
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
    85
    public function __construct(SparqlClient $sparqlClient, LexvoResolverInterface $lexvoResolver) {
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
    86
        $this->sparqlClient = $sparqlClient;
125
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
    87
        $this->lexvoResolver = $lexvoResolver;
2
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
    }
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
    90
    public function getSparqlClient() {
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
    91
        return $this->sparqlClient;
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
    92
    }
2
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
261
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
    94
    private function getResGraph($doc) {
276
ef32bf573d9c correct error in test with empty document returned by query
ymh <ymh.work@gmail.com>
parents: 275
diff changeset
    95
ef32bf573d9c correct error in test with empty document returned by query
ymh <ymh.work@gmail.com>
parents: 275
diff changeset
    96
        if(empty((array)$doc)) {
ef32bf573d9c correct error in test with empty document returned by query
ymh <ymh.work@gmail.com>
parents: 275
diff changeset
    97
            return null;
ef32bf573d9c correct error in test with empty document returned by query
ymh <ymh.work@gmail.com>
parents: 275
diff changeset
    98
        }
ef32bf573d9c correct error in test with empty document returned by query
ymh <ymh.work@gmail.com>
parents: 275
diff changeset
    99
261
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   100
        $newGraph = new Graph($doc->uri->getUri());
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   101
        $newGraph->add($doc->uri, "rdf:type", $newGraph->resource("http://www.openarchives.org/ore/terms/Aggregation"));
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   102
        $newGraph->add($doc->uri, "http://www.europeana.eu/schemas/edm/aggregatedCHO", $doc->doc);
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   103
        $newGraph->add($doc->doc, "rdf:type", $newGraph->resource("http://www.europeana.eu/schemas/edm/ProvidedCHO"));
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   104
        if(isset($doc->title)) {
19
eadaf0b8f02e Bo conception step. back to ember page
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
   105
            $newGraph->add($doc->doc, "http://purl.org/dc/elements/1.1/title", $doc->title);
261
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   106
        }
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   107
        if(isset($doc->lang)) {
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   108
            foreach(explode(", ", $doc->lang) as $langStr) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   109
                $langStr = trim($langStr);
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   110
                if(filter_var($langStr, FILTER_VALIDATE_URL)) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   111
                    $newGraph->addResource($doc->doc, "http://purl.org/dc/elements/1.1/language", $langStr);
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   112
                } else {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   113
                    $newGraph->addLiteral($doc->doc, "http://purl.org/dc/elements/1.1/language", $langStr);
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   114
                }
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   115
            }
261
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   116
        }
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   117
        if(isset($doc->issued)) {
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   118
            $newGraph->add($doc->doc, "http://purl.org/dc/terms/issued", $doc->issued);
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   119
        }
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   120
        if(isset($doc->modified)) {
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   121
            $newGraph->add($doc->doc, "http://purl.org/dc/terms/modified", $doc->modified);
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   122
        }
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   123
        if(isset($doc->publishers)) {
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   124
            $newGraph->add($doc->doc, "http://purl.org/dc/elements/1.1/publisher", $doc->publishers);
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   125
        }
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   126
        if(isset($doc->extent)) {
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   127
            $newGraph->add($doc->doc, "http://purl.org/dc/terms/extent", $doc->extent);
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   128
        }
275
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   129
        if(isset($doc->transcript_url)) {
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   130
            $newGraph->add($doc->doc, config('corpusparole.corpus_ontology_url').'transcript', $doc->transcript_url);
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   131
        }
261
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   132
        return $newGraph;
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   133
    }
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   134
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   135
    private function queryES($filters=null, $offset=null, $limit=null, $sort=null) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   136
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   137
        if(empty($sort)) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   138
            $sort = ["_doc"];
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   139
        } elseif (is_string($sort)) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   140
            $sort = [$sort];
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   141
        }
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   142
        if(is_null($filters)) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   143
            //$filters = ['language' => ["http://lexvo.org/id/iso639-3/oci", "http://lexvo.org/id/iso639-3/bre"]];
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   144
            $filters = [];
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   145
        }
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   146
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   147
        $qFilterParts = [];
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   148
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   149
        if(array_key_exists('language', $filters) && !empty($filters['language'])) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   150
            $languages = $filters['language'];
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   151
            if(is_string($languages)) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   152
                $languages = [ $languages, ];
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   153
            }
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   154
            $qFilterParts[] = [
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   155
                'bool' => [
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   156
                    'should' => [
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   157
                        [ 'terms' => [ 'language' => $languages ]]
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   158
                    ]
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   159
                ]
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   160
            ];
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   161
        }
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   162
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   163
        $query = [
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   164
            'index' => config('corpusparole.elasticsearch_index'),
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   165
            'body' => [
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   166
                "size" => empty($limit)?0:$limit,
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   167
                "from" => $offset,
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   168
                "sort" => $sort
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   169
            ]
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   170
        ];
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   171
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   172
        if(count($qFilterParts)>0) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   173
            $query['body']['query'] = ['constant_score' => [
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   174
                'filter' => [
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   175
                    'bool' => [
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   176
                        'must' => $qFilterParts
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   177
                    ]
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   178
                ]
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   179
            ] ];
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   180
        }
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   181
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   182
        $esRes = Es::search($query);
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   183
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   184
        return ['total' => $esRes['hits']['total'], 'documents' => array_map(function($r) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   185
            return $r['_id'];
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   186
        }, $esRes['hits']['hits'])];
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   187
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   188
    }
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   189
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   190
    /**
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   191
     * Query docs.
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   192
     * if $filter is empty or null and $sort is '_graph', the documents list is fetched from the triple store, otherwise, They are fetched from ElasticSearch
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   193
     */
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   194
    private function queryDocs($filters=null, $offset=null, $limit=null, $sort=null) {
261
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   195
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   196
        $resDocs = [];
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   197
275
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   198
        $limitsClauses = [];
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   199
        $sortClauseStr = "";
275
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   200
        $limitsClausesStr = "";
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   201
        $filterUris = "";
261
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   202
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   203
        if(empty($filters) && $sort === "_graph") {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   204
            if(!is_null($offset)) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   205
                array_push($limitsClauses, "OFFSET $offset");
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   206
            }
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   207
            if(!is_null($limit)) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   208
                array_push($limitsClauses, "LIMIT $limit");
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   209
            }
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   210
            if(!empty($limitsClauses)) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   211
                $limitsClausesStr = "\n" . join(" ", $limitsClauses);
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   212
            }
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   213
            $sortClauseStr = "\n ORDER BY ?uri";
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   214
            $total = $this->getCount();
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   215
        } else {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   216
            $esRes = $this->queryES($filters, $offset, $limit);
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   217
            // WARNING: we count on the fact that php keep keys order
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   218
            $total = intval($esRes['total']);
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   219
            foreach($esRes['documents'] as $esDocId) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   220
                $uri = config('corpusparole.corpus_doc_id_base_uri_prefix').$esDocId;
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   221
                $resDocs[$uri] = null;
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   222
            }
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   223
            if(count($resDocs) > 0) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   224
                $filterUris = "FILTER(?uri in (<".join(">, <" , array_keys($resDocs)).">)) ";
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   225
            } else {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   226
                return ['meta' => [ 'total'=> $total ], 'documents' => []];
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   227
            }
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   228
275
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   229
        }
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   230
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   231
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   232
        $sparqlQuery = sprintf(self::BASE_DOC_QUERY.$sortClauseStr.$limitsClausesStr, $filterUris);
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   233
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   234
        $docs = $this->sparqlClient->query($sparqlQuery);
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   235
275
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   236
        foreach($docs as $doc) {
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   237
            $graph = $this->getResGraph($doc);
276
ef32bf573d9c correct error in test with empty document returned by query
ymh <ymh.work@gmail.com>
parents: 275
diff changeset
   238
            if(is_null($graph)) {
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   239
                Log::debug("NULL GRAPH - odd");
276
ef32bf573d9c correct error in test with empty document returned by query
ymh <ymh.work@gmail.com>
parents: 275
diff changeset
   240
                continue;
ef32bf573d9c correct error in test with empty document returned by query
ymh <ymh.work@gmail.com>
parents: 275
diff changeset
   241
            }
275
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   242
            $uri = $doc->uri->getUri();
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   243
            $resDocs[$uri] = $graph;
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   244
        }
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   245
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   246
        if(count($resDocs) == 0) {
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   247
            return ['meta' => [ 'total'=> $total ], 'documents' => []];
275
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   248
        }
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   249
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   250
        if(empty($filterUris)) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   251
            $filterUris = "FILTER(?uri in (<".join(">, <" , array_keys($resDocs)).">)) ";
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   252
        }
275
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   253
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   254
        foreach(self::ADDITIONAL_DOC_QUERIES as $query) {
a4d8618c2f1b add transcript_url property on document list results
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   255
            $docs = $this->sparqlClient->query(sprintf($query, $filterUris));
261
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   256
            foreach($docs as $doc) {
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   257
                $graph = $this->getResGraph($doc);
276
ef32bf573d9c correct error in test with empty document returned by query
ymh <ymh.work@gmail.com>
parents: 275
diff changeset
   258
                if(is_null($graph)) {
ef32bf573d9c correct error in test with empty document returned by query
ymh <ymh.work@gmail.com>
parents: 275
diff changeset
   259
                    continue;
ef32bf573d9c correct error in test with empty document returned by query
ymh <ymh.work@gmail.com>
parents: 275
diff changeset
   260
                }
261
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   261
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   262
                $uri = $doc->uri->getUri();
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   263
                if(array_key_exists($uri, $resDocs)) {
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   264
                    $resDocs[$uri] = Utils::mergeGraphs($resDocs[$uri], $graph);
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   265
                } else {
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   266
                    $resDocs[$uri] = $graph;
02e2396bcbbc Migrate to ember 2.7 + correct jquery null context error + declare shim for popcorn (instead of silencing the JSHint error)
ymh <ymh.work@gmail.com>
parents: 169
diff changeset
   267
                }
28
b0b56e0f8c7f Add contributor edition
ymh <ymh.work@gmail.com>
parents: 22
diff changeset
   268
            }
2
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
        }
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   271
        $documentsResults = array_map(function($g) { return new DocumentResult($g->getUri(), $g); }, array_values($resDocs));
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   272
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   273
        return ['meta' => [ 'total'=> $total ], 'documents' => $documentsResults];
2
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
    }
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   276
    public function all() {
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   277
        return $this->queryDocs(null, null, null, "_graph")['documents'];
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   278
    }
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   279
306
3fccf43160a7 Some more changes linked to the change of api organization + some jshint error cleaning
ymh <ymh.work@gmail.com>
parents: 277
diff changeset
   280
    public function get($id, $short=false) {
2
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
122
b37fde30dd4a correct problem of identifier
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
   282
        if(strpos($id, config('corpusparole.corpus_id_scheme')) === 0) {
b37fde30dd4a correct problem of identifier
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
   283
            $id = substr($id, strlen(config('corpusparole.corpus_id_scheme')));
b37fde30dd4a correct problem of identifier
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
   284
        }
19
eadaf0b8f02e Bo conception step. back to ember page
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
   285
        $docUri = Config::get('corpusparole.corpus_doc_id_base_uri').$id;
2
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
        // We want the CBD (Concise Bounded Description, cf. http://www.w3.org/Submission/CBD/)
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
        // WARNING: This seems to work in sesame for our dataset.
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
        $doc = $this->sparqlClient->query(
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   290
            "CONSTRUCT { ?s ?p ?o } WHERE { GRAPH <$docUri> { ?s ?p ?o } }"
2
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
        );
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   292
        //TODO: return null if not found
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   293
        if($doc->isEmpty()) {
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   294
            return null;
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   295
        }
169
8fddc113095e Correct proble on geo info merging + add geo resource
ymh <ymh.work@gmail.com>
parents: 168
diff changeset
   296
        //print($doc->dump());
2
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
28
b0b56e0f8c7f Add contributor edition
ymh <ymh.work@gmail.com>
parents: 22
diff changeset
   298
        // clone the graph to force the URI
168
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents: 125
diff changeset
   299
        $DocumentKlass = $short?DocumentResult::class:Document::class;
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents: 125
diff changeset
   300
        return new $DocumentKlass($docUri, new Graph($docUri, $doc->toRdfPhp()));
2
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
    }
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   304
    /**
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   305
     * save document.
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   306
     * @return boolean true if a transaction was started, false otherwise
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   307
     * @throws CorpusParoleException if one of the operation could not be performed
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   308
     */
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   309
    public function save(Document $doc) {
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   310
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   311
        $transactionStarted = $this->sparqlClient->startTransaction();
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   312
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   313
        try {
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   314
            foreach($doc->getDeltaList() as $delta) {
277
bd4bc1db4f40 add blank node save and geoinfo to back model
ymh <ymh.work@gmail.com>
parents: 276
diff changeset
   315
                $this->sparqlClient->deleteWhere($delta->getDeleteWhere(), $delta->getUri());
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   316
                $this->sparqlClient->delete($delta->getDeletedGraph());
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   317
                $this->sparqlClient->add($delta->getAddedGraph());
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   318
            }
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   319
            if($transactionStarted) {
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   320
                $transactionStarted = false;
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   321
                return $this->sparqlClient->commit();
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   322
            }
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   323
            else  {
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   324
                return false;
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   325
            }
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   326
        }
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   327
        catch(CorpusParoleException $e) {
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   328
            if($transactionStarted) {
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   329
                $this->sparqlClient->rollback();
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   330
            }
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   331
            throw $e;
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   332
        }
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   333
    }
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   334
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   335
    public function getCount($filters=null) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   336
        $count = 0;
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   337
        if(empty($filters)) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   338
            $res = $this->sparqlClient->query("SELECT (COUNT (DISTINCT ?g) as ?count) WHERE { GRAPH ?g { ?s a <http://www.europeana.eu/schemas/edm/ProvidedCHO> } }");
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   339
            assert(!is_null($res) && count($res)==1);
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   340
            $count = intval($res[0]->count->getValue());
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   341
        } else {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   342
            $esRes = $this->queryES($filters, 0, 0);
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   343
            $count = intval($esRes['hits']['total']);
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   344
        }
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   345
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   346
        return $count;
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   347
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   348
    }
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   349
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   350
    //SELECT ?g WHERE { GRAPH ?g { ?s ?p ?o } }
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   351
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   352
    /**
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   353
     * Paginate all document as a paginator.
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   354
     *
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   355
     * @param  int  $perPage
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   356
     * @param  string  $pageName
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   357
     * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   358
     */
22
a50cbd7d702f small change in pagination and add missing .env template
ymh <ymh.work@gmail.com>
parents: 20
diff changeset
   359
    public function paginateAll($perPage = 15, $pageName = 'page', $page = null)
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   360
    {
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   361
        return $this->paginate(null, $perPage, $pageName, null);
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   362
    }
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   363
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   364
    /**
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   365
     * Paginate filtered document as a paginator.
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   366
     *
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   367
     * @param  array $filters
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   368
     * @param  int  $perPage
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   369
     * @param  string  $pageName
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   370
     * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   371
     */
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   372
    public function paginate($filters = null, $perPage = 15, $pageName = 'page', $page = null, $sort=null) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   373
19
eadaf0b8f02e Bo conception step. back to ember page
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
   374
        assert(is_numeric($perPage));
eadaf0b8f02e Bo conception step. back to ember page
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
   375
22
a50cbd7d702f small change in pagination and add missing .env template
ymh <ymh.work@gmail.com>
parents: 20
diff changeset
   376
        if(is_null($page)) {
a50cbd7d702f small change in pagination and add missing .env template
ymh <ymh.work@gmail.com>
parents: 20
diff changeset
   377
            $page = Paginator::resolveCurrentPage($pageName);
a50cbd7d702f small change in pagination and add missing .env template
ymh <ymh.work@gmail.com>
parents: 20
diff changeset
   378
        }
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   379
20
a9b98b16b053 add contributor list + edition pane
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
   380
        assert(is_null($page) || is_numeric($page));
19
eadaf0b8f02e Bo conception step. back to ember page
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
   381
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   382
        $offset = max(0,($page - 1) * $perPage);
20
a9b98b16b053 add contributor list + edition pane
ymh <ymh.work@gmail.com>
parents: 19
diff changeset
   383
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   384
        $results = $this->queryDocs($filters, $offset, $perPage, $sort);
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   385
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   386
        return new LengthAwarePaginator($results['documents'], $results['meta']['total'], $perPage, $page, [
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   387
            'path' => Paginator::resolveCurrentPath(),
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   388
            'pageName' => $pageName,
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   389
        ]);
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   390
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   391
    }
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
   392
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   393
125
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   394
    /**
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   395
     * Resolve lexvo id for all documents in the list
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   396
     * this allow to optimise the call of lexvo repository
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   397
     * @param $docList Array: a list (Array) of document to resolve
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   398
     */
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   399
    public function resolveLexvo(Array $docList) {
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   400
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   401
        $languageIds = [];
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   402
        #get the list pf language needing resolving
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   403
        foreach ($docList as $doc) {
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   404
            if(!empty($doc->getLanguagesValue()) && is_null($doc->getLanguagesResolved())) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   405
                foreach($doc->getLanguagesValue() as $lang) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   406
                    $languageIds[$lang]=true;
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   407
                }
125
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   408
            }
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   409
        }
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   410
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   411
        # call LexvoResolver
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   412
        $langNames = $this->lexvoResolver->getNames(array_keys($languageIds));
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   413
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   414
        foreach ($docList as $doc) {
326
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   415
            if(!empty($doc->getLanguagesValue()) && is_null($doc->getLanguagesResolved())) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   416
                $langResolved = [];
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   417
                foreach($doc->getLanguagesValue() as $lang) {
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   418
                    $langResolved[] = $langNames[$lang];
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   419
                }
226d5b17a119 - First implementation of filter for languages.
ymh <ymh.work@gmail.com>
parents: 306
diff changeset
   420
                $doc->setLanguageResolved($langResolved);
125
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   421
            }
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   422
        }
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   423
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   424
        return $docList;
e550b10fe3ca add language resolver on api data
ymh <ymh.work@gmail.com>
parents: 122
diff changeset
   425
    }
2
00e2916104fe Migrate to php 5.6 + Laravel 5.1 + add phpunit test
ymh <ymh.work@gmail.com>
parents:
diff changeset
   426
}