public function escapedQuery($query, $vars = array()) { for ($teller = 0; strpos($query, '%') !== FALSE; $teller++) { $pos = strpos($query, '%'); if ($pos !== false) { if (trim($vars[$teller]) == FALSE) { return null; } $query = substr_replace($query, Uri::escape_uri($vars[$teller]), $pos, 1); } } $prefixed_query = self::prefixesIntoQuery() . $query; try { $return = @file_get_contents($this->endpoint . rawurlencode($prefixed_query)); return json_decode($return, true); } catch (Exception $e) { error_log('Fout bij uitvoeren query: ' . $e); return null; } }
/** * Verwijdert een verband tussen twee IE's, indien aanwezig. * @type: Met beginhoofdletter, zoals in wikiartikel, na {{ */ static function verwijderVerband($van_uri, $naar_uri, $type) { $van = Uri::SMWuriNaarLeesbareTitel($van_uri); $naar = Uri::SMWuriNaarLeesbareTitel($naar_uri); $verbandtype = ''; switch ($type) { case 'Produces': case 'Consumes': case 'Part of': $verbandtype = 'argument'; break; default: $verbandtype = 'blok'; } if ($verbandtype == 'argument') { $ie_type = SPARQLConnection::geefEersteResultaat('wiki:' . Uri::escape_uri($van_uri), 'property:Intentional_Element_type'); self::verwijderUitBlokargumentVanArtikel($van, $ie_type . ' links', $type, $naar, 'Verband verwijderd via EMontVisualisator'); return; } $titel_te_bewerken_artikel = Title::newFromText($van); $te_bewerken_artikel = new WikiPage($titel_te_bewerken_artikel); $inhoud = $te_bewerken_artikel->getText(); $verbandaanwezig = self::vindVerband($van, $naar, $type); if ($verbandaanwezig === FALSE) { return; } $blockstring = '{{' . $type; $eindstring = '}}'; $posblock = 0; while (TRUE) { $posblock = strpos($inhoud, $blockstring, $posblock); $posnaar = strpos($inhoud, $naar, $posblock); $posvolgendeblock = strpos($inhoud, $blockstring, $posblock + 1); if ($posnaar < $posvolgendeblock || $posvolgendeblock === FALSE) { $poseind = strpos($inhoud, $eindstring, $posnaar); break; } // Om te voorkomen dat hetzelfde blok opnieuw wordt gevonden wordt de positie met 1 verhoogd. $posblock++; } $nieuwe_inhoud = substr($inhoud, 0, $posblock) . trim(substr($inhoud, $poseind + strlen($eindstring))); $te_bewerken_artikel->doEdit($nieuwe_inhoud, 'Verband verwijderd via EMontVisualisator', EDIT_UPDATE); }