Changes in / [1:3]


Ignore:
Location:
/WikiProtein/extensions/Wikidata
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • /WikiProtein/extensions/Wikidata/OmegaWiki/ConceptModule.php

    r1 r3  
    136136                global $wgTitle;
    137137               
    138                 $expression = definedMeaningExpression($wgTitle->getText());
     138                // Translate the text attribute from the wgTitle, which is the UUID,
     139                // to the corresponding concept id for internal use.
     140                $api = new WikiDataAPI(SQLDatabaseFactory::createViewDatabase());
     141                $conceptId = $api->getConceptIdForUUID($wgTitle->getText());
     142               
     143                $expression = definedMeaningExpression($conceptId);
    139144                return $expression;
    140145        }
     
    157162                $wgOut->enableClientCache(false);
    158163                       
    159                 $conceptId = $wgTitle->getText();
     164                // Translate the text attribute from the wgTitle, which is the UUID,
     165                // to the corresponding concept id for internal use.
     166                $api = new WikiDataAPI(SQLDatabaseFactory::createViewDatabase());
     167                $conceptId = $api->getConceptIdForUUID($wgTitle->getText());
    160168
    161169                if ($this->checkConceptId($conceptId)) {
  • /WikiProtein/extensions/Wikidata/OmegaWiki/type.php

    r1 r3  
    5151}
    5252
     53/**
     54 * Creates an internal URL to the concept for the given concept id. The
     55 * concept id is translated to the corresponding UUID.
     56 * @param $conceptId The internal id of the concept to link to
     57 * @return the created URL for the concept
     58 */
    5359function conceptIdAsURL($conceptId) {
    54         return conceptReferenceAsURL($conceptId);
     60        $api = new WikiDataAPI(SQLDatabaseFactory::createViewDatabase());
     61        $uuid = $api->getUUIDForConceptId($conceptId);
     62       
     63        return conceptReferenceAsURL($uuid);
    5564}
    5665
     
    7180}
    7281
     82/**
     83 * Creates an internal HTML link to the concept for the given concept id. The
     84 * concept id is translated to the corresponding UUID.
     85 * @param $conceptId The internal id of the concept to link to
     86 * @param $label The verbose representation for the link
     87 * @return The HTML representation of a link to the given concept
     88 */
    7389function conceptReferenceAsLink($conceptId, $label) {
    74         return createLink(conceptReferenceAsURL($conceptId), $label, "concept");
     90        $api = new WikiDataAPI(SQLDatabaseFactory::createViewDatabase());
     91        $uuid = $api->getUUIDForConceptId($conceptId);
     92       
     93        return createLink(conceptReferenceAsURL($uuid), $label, "concept");
    7594}
    7695
  • /WikiProtein/extensions/Wikidata/Special pages/SpecialAPI.php

    r1 r3  
    11<?php
    22if (!defined('MEDIAWIKI')) die();
     3
     4global $IP;
    35
    46require_once("$IP/extensions/Wikidata/API/Triples.php");
  • /WikiProtein/extensions/Wikidata/WikiDataAPI.php

    r1 r3  
    148148        }
    149149
     150        /**
     151         * Retrieves the concept id for the given UUID. If the UUID isn't
     152         * found, -1 is returned.
     153         * @param unknown_type $uuid
     154         * @return unknown_type
     155         */
     156        public function getConceptIdForUUID($uuid)
     157        {
     158                // retrieve the wikidata_objects table representation
     159                $objectsTable = $this->tableSet->objects;
     160               
     161                // select the object id (what is actually the concept id) from the
     162                // wikidata_objects table where the UUID is equal to the given UUID
     163                $queryResult = $this->database->select(
     164                        array($objectsTable->objectId),
     165                        array($objectsTable),
     166                        array(
     167                                equals($objectsTable->uuid, $uuid)
     168                        )
     169                );
     170               
     171                // fetch the result, or zero if there were no results
     172                $result = $queryResult->fetchSingleValueWithDefault(0);
     173                // cleanup
     174                $queryResult->free();
     175               
     176                return $result;         
     177        }
     178       
     179        /**
     180         * Retrieves the UUID for the given concept id. If the concept id
     181         * isn't found, 0 is returned.
     182         * @param $conceptId
     183         */
     184        public function getUUIDForConceptId($conceptId)
     185        {
     186                // retrieve the wikidata_objects table object
     187                $objectsTable = $this->tableSet->objects;
     188               
     189                // select the UUID from the wikidata_objects table where the concept id
     190                // is equal to the given concept id
     191                $queryResult = $this->database->select(
     192                        array($objectsTable->uuid),
     193                        array($objectsTable),
     194                        array(
     195                                equals($objectsTable->objectId, $conceptId)
     196                        )
     197                );
     198               
     199                // fetch the result, or zero if there were no results
     200                $result = $queryResult->fetchSingleValueWithDefault(0);
     201                // cleanup
     202                $queryResult->free();
     203               
     204                return $result;
     205        }
     206       
    150207        public function getExpressionId($spelling, $languageId) {
    151208                $expressionTable = $this->tableSet->expression;
     
    27112768        }
    27122769}
     2770
     2771/**
     2772 * TODO: evaluate if this is the best place for this function
     2773 *
     2774 * Validates the given UUID. The format of the UUID is validated against
     2775 * the specification of the UUID MySQL function.
     2776 * @param $uuid The UUID to validate
     2777 * @return a flag indicating whether the UUID is valid
     2778 * @see http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid
     2779 */
     2780function isValidUUID($uuid)
     2781{
     2782        return preg_match("/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/", $uuid);
     2783}
Note: See TracChangeset for help on using the changeset viewer.