Index: phpdoc/fr/functions/hw.xml diff -u phpdoc/fr/functions/hw.xml:1.2 phpdoc/fr/functions/hw.xml:1.3 --- phpdoc/fr/functions/hw.xml:1.2 Sat Jul 22 06:43:41 2000 +++ phpdoc/fr/functions/hw.xml Thu Nov 30 02:27:38 2000 @@ -1,1614 +1,2025 @@ - - Fonctions Hyperwave - Hyperwave - - - - - Introduction - - Hyperwave a été developpé par - IICM à Graz. Son nom original était - Hyper-G et il a pris le nom de Hyperwave lors de sa - commercialisation (en 1996, si mes souvenirs sont bons). - - - Hyperwave n'est pas gratuit. La version actuelle est la 4.1, disponible à - www.hyperwave.com. Une version - limitée à 30 jours peut être demandée. - - - HIS est un système d'information similaire à une base de - données, (HIS, Hyperwave Information Server). HIS se concentre sur l'enregistrement - et la gestion des documents. Un document peut être n'importe quelle donnée, qui - peut être stockée dans un fichier. Chaque document est accompagné par un - enregistrement. Cet enregistrement contient des méta données à propos du document. - Ces méta données sont des listes d'attributs qui peuvent être étendues par - l'utilisateur. Un attribut est une paire clé/valeur de la forme : clé =valeur. - L'enregistrement complet contient autant de paire que le désire l'utilisateur. - Le nom d'un attribut n'a pas besoin d'être unique, c'est à dire qu'une même clé - peut apparaître plusieurs fois dans un enregistrement. Cela peut être utile si - vous devez donner un titre à votre document en plusieurs langues, par exemple. - Dans un cas pareil, la convention est que chaque valeur de titre est précédée - par deux lettres et deux points, tel que : 'fr:Titre en français' ou 'ge:Titel - in deutsch'. D'autres attributs comme une description ou des mots clés sont - aussi suceptibles de recourir à ce genre de procédé. Vous pouvez aussi remplacer - l'abréviation de langage par une autre chaîne, tant qu'elle est séparée de la - valeur par les deux points. - - - Chaque enregistrement a une représentation native qui contient toutes les paires - clé/valeur, séparées par un retour à la ligne. L'extension Hyperwave reconnaît une - autre représentation qui est un tableau associatif, oú les attributs servent de - clés. Les attributs multilingues étant géré sous la forme d'un autre tableau - associatif, dont les clés sont les chaînes de langue. En fait, tous les attributs - multiformes sont gérés sous la forme de tableau associatif. (Cela n'est pas encore - complètement codé. Uniquement les attributs de titre, description et mot clés - sont traités correctement). - - - En dehors des documents, tous les hyper liens contenus dans un documents sont - enregistrés dans un autre enregistrement. Les hyperliens qui sont à l'intérieur - d'un document en seront supprimés, et enregistrés dans des objets particuliers, - au moment de l'insertion dans la base de données. L'enregistrement des hyper-liens - contient les informations d'origine et d'objectif. Afin d'accéder au document - original, vous devre lire le document sans les liens, puis lire les liens, et - les réinsérer (les hw_pipedocument et - hw_gettext le font pour vous. L'avantage de séparer les - liens du document est évident : une fois qu'un document, cible d'un hyperlien, a - été renommé, le liens peut facilement être modifié. Le document contenant le lien - n'est pas modifié pour autant. Vous pouvez même ajouter un lien à un document - sans le modifier. - - - Dire que hw_pipedocument et hw_gettext - font l'insertion automatiquement n'est pas aussi simple qu'il n'y paraît. - L'insertion implique une certaine hiérarchie de document. Sur un serveur web, - la hiérarchie est fournie par le système de fichiers, mais Hyperwave dispose de - sa propre hiérarchie et les noms de fichiers ne reflètent pas la position d'un - objet dans cette hiérarchie. Ainsi, la création de liens requière en premier lieu - la construction de la hiérarchie et de l'espace des noms dans une hiérarchie web - et un espace de nom web. La différence fondamentale entre Hyperwave et le web est - qu'il y a une distinction claire en les noms et la hiérarchie dans Hyperwave. Le - nom ne contient aucune information à propos de la position de l'objet dans la - hiérarchie. Sur le web, le nom contient les informations de localisation dans la - hiérarchie. Cela conduit à deux méthodes de d'accès : soit la hiérarchie Hyperwave - et le nom de l'objet sont inscrit dans l'URL. Pour simplifier les choses, une - deuxième approche est pratiquée. L'objet Hyperwave de nom 'mon_objet' correspond à - l'URL 'http://hote/mon_objet', peu importe alors oú il est rangé dans la hiérarchie. - Un objet dont le nom est 'parent/mon_objet' peut être le fils de l'objet 'mon_objet' - dans la hiérarchie Hyperwave, bien que ce soit le contraire en convention web, et - cela risque de perturber l'utilisateur. - - - Ayant pris cette décision, un deuxième problème surgit : comment faire l'interface - avec PHP ? L' URL http://hote/mon_objet n'appelera aucun script PHP à moins que - vous ne demandiez à votre serveur web de le remplacer par autre chose, comme par - exemple : 'http://host/php3_script/mon_objet' et le script 'php3_script' utilise la - variable $PATH_INFO pour rechercher l'objet 'mon_objet' sur le serveur Hyperwave. - Il y a juste un petit inconvénient , qui peut facilement être corrigé. Réécrire - un URL ne vous permettra aucun accès aux autres documents du serveur web. Un - script de recherche dans le serveur Hyperwave serait impossible. Il vous faudra - donc au moins une autre règle pour exclure certaines URL, comme par exemple celles - qui commencent par http://host/Hyperwave. Voici de manière simple, la manière de - partager un espace de nom entre un serveur web et un serveur Hyperwave serveur. - - - Basé sur le mécanisme précédent, on trouve l'insertion dans les documents. - - - Il est plus compliqué d'avoir PHP ne fonctionne pas comme un module de serveur, ou - un scrip CGI, mais comme une application indépendante. Dans ce cas, il est utile - d'inscrire la hiérarchie et le nom de fichier Hyperwave dans le système de - fichier. Mais comme cela risque d'entrer en conflit avec le séparateur de dossier - ('/'), il faut le remplacer par un autre caractère,. '_'. - - - Le protocole réseau pour communiquer avec un serveur Hyperwave est appelé - HG-CSP - (Hyper-G Client/Server Protocol). Il est basé sur des messages qui initie des - actions, comme par exemple, lire l'entête de fichier. Dans les premières versions - de Hyperwave Server deux clients natifs (Harmony, Amadeus) étaient fournis pour - permettre la communication avec le serveur. Ils ont disparu lors de la - commercialisation de Hyperwave. En tant qu'ersatz, un client appelé wavemaster est - désormais fourni. - wavemaster est un espèce ce convertisseur de protocole de - HTTP en HG-CSP. L'idée est de faire toute - l'administration de la base et la visualisation des documents par une interface - web. Le wavemaster implémente un jeu d'emplacement pour certaines actions de - personnalisation de l'interface. Ce jeu est appelé PLACE - language. PLACE pêche encore par le manque de nombreuse fonctions - de programmations, et le manque d'évolutivité. Cela a conduit à l'utilisation de - JavaScript ce qui ne rend pas la vie facile. - - - Que PHP supporte Hyperwave permet de combler ces manques. PHP implémente tous - les messages définis par HG-CSP mais fourni d'autres commandes - puissantes, comme par exemple, celle de lire des documents complets. - - - - Hyperwave dispose de sa propre terminologie pour localiser certaines informations. - Cette terminologie a été largement étendue. Presque toutes les fonctions utilisent - l'un des types de données suivants : - - - - object ID: un entier, unique pour chaque objet sur le serveur Hyperwave. C'est - aussi un des attributs de l'enregistrement de l'objet (ObjectID).Les object ids - sont souvent utilisées comme paramètre d'entrée pour spécifier un objet. - - - object record: Une chaîne contenant des paires clé=valeur. Les paires sont - séparées par un retour à la ligne. Un enregistrement d'objet peut facilement - être converti en tableau, avec la fonction hw_objrec2array. - De nombreuses fonctions retournent un object records. Ces fonctions ont leur - nom qui finit par obj. - - - object array: Un tableau associatif qui contient tous les attributs d'un objet. - La clé est l'attribut. Si un attribut apparaît plusieurs fois, il sera - représenté sous la forme d'un tableau associatif ou indexé. Les attributs qui - dépendent des langues (comme title, keyword ou description) seront représentés sous la - forme d'un tableau associatif, dont les clés seront les abréviations de langues. - Tous les autres attributs à valeur multiple prendront la forme d'un tableau - indexé. - - - hw_document: Ce type est un nouveau type de données, qui contient le document - lui même, comme par exemple HTML, PDF etc. Il est optimisé pour les documents - HTML mais peut s'utiliser avec n'importe quel format. - - - - - De nombreuses fonctions qui retournent un tableau d'enregistrements, retournent aussi - un tableau associé, avec des informatiosn statistiques. Ce tableau est le dernier - élément du tableau d'enregistrements. Les statistiques contiennent les entrées - suivantes : - - - Hidden - - Nombre d'objet dont l'attribut PresentationHints est Hidden. - - - - CollectionHead - - Nombre d'objet dont l'attribut PresentationHints est CollectionHead. - - - - FullCollectionHead - - Nombre d'objet dont l'attribut PresentationHints est FullCollectionHead. - - - - CollectionHeadNr - - Index du premier objet du tableau d'enregistrement avec l'attribut - PresentationHints à CollectionHead. - - - - FullCollectionHeadNr - - Index du premier objet du tableau d'enregistrement avec l'attribut - PresentationHints est FullCollectionHead. - - - - Total - - Total: Nombre d'enregistrements. - - - - - - Intégration avec Apache - - L'extension Hyperwave est utilisée de manière optimale lorsqu PHP est compilé - comme module Apache. Dans ce cas, le serveur Hyperwave sous jacent peut être - caché quasiment totalement aux utilisateurs, si Apache utilise son moteur d'écriture. - Les explications suivantes vous éclaireront : - - - Etant donné que PHP avec l'extension Hyperwave et Apache tend à remplacer - la solution native basé sur Wavemaster, je vais supposer que le serveur Apache - servira seulement d'interface Hyperwave. Ce n'est pas nécessaire, mais cela - simplifie grandment la configuration. Le concept est très simple. Premièrement, - vous avez besoin d'un script PHP qui évalue la variable PATH_INFO et - considère que cette valeur est un objet Hyperwave. Appelons ce script 'Hyperwave'. - L'URL http://votre.hote/Hyperwave/nom_objet - retourne alors l'objet Hyperwave dont le nom est 'nom_objet'. Le script doit alors - réagir suivant le type de l'objet. Si c'est un groupe, il devra probablement - retourner une liste de fils. Si c'est un document, il pourra retourner son type - MIME et son contenu. Une amélioration peut être obtenue en utilisant le moteur - de réécriture d' Apache. D'un point de vue utilisateur, il est plus direct si - l'URL http://votre.hote/nom_objet - retourne l'objet. La règle de réécriture est simple : - - -RewriteRule ^/(.*) /usr/local/apache/htdocs/HyperWave/$1 [L] - - - Maintenant toutes les URL pointent sur un objet Hyperwave. Cela conduit à un - problème simple. Il n'y a pas d'autre façon d'exécuter, c'est à dire rechercher, - un autre script que ce script 'Hyperwave'. Cela pourra être corrigé avec une autre - règle telle que: - - -RewriteRule ^/hw/(.*) /usr/local/apache/htdocs/hw/$1 [L] - - - Le dossier /usr/local/apache/htdocs/hw - sera ainsi reservé pour d'autres scripts et fichiers. Assurez vous que cette - règle est évaluée avant la première règle que nous avons définie. Il y a juste - un léger inconvénient : tous les objets Hyperwave qui commencent par 'hw/' seront - cachés. Alors, assurez vous que vous n'utilisez pas de tels noms. Si vous avez - besoin d'autres dossiers, par exemple, un dossier d'images, ajoutez simplement - d'autres règles. N'oubliez pas de lancer le moteur de réécriture avec - - -RewriteEngine on - - - Mon expérience m'a montré que vous aurez besoin des scripts suivants : - - - - Retourne l'objet lui même - - Pour autoriser la recherche - - S'identifier - - Choisir une configuration - -Un script pour chaque fonction supplémentaire, comme afficher un objet, afficher des informations sur les utilisateurs, afficher le statut du serveur, etcÖ - - - - - - A faire - - Il reste encore beaucoup à faire : - - La fonction hw_InsertDocument doit être séparée en deux : - hw_InsertObject et - hw_PutDocument. - Les noms de nombreuses fonctions ne sont pas encore fixés. - - - La plupart des fonctions requièrent la connexion courante - comme premier paramètre. Cela conduit à beaucoup de frappe clavier, - même si il n'y a souvent qu'une seule connexion en jeu. Une connexion par - défaut améliorerait ceci. - - - - - - - - hw_Array2Objrec - converti un tableau en un objet. - - - Description - - strin hw_array2objrec - array object_array - - - Converti un object_array en un objet. - Les attributs multiples tels que 'Title' en différentes langues seront traités - correctement. - - - Voir aussi hw_objrec2array. - - - - - - - hw_Children - Liste des object ids des objets fils. - - - Description - - array hw_children - int connection - int objectID - - -Retourne un tableau avec des object ids. Chaque object id est celui d'un des fils du -groupe dont l'id est objectID. -Ce tableau contient tous les fils, documents et groupes. - - - - - - - hw_ChildrenObj - Liste des object records des objets fils. - - - Description - - array hw_childrenobj - int connection - int objectID - - -Retourne un tableau avec des object records. Chaque object records est celui d'un des -fils du groupe dont l'id est objectID. -Ce tableau contient tous les fils, documents et groupes - - - - - - - hw_Close - Ferme la connexion Hyperwave. - - - Description - - int hw_close - int connection - - - Retourne false si la connexion n'est pas valide, et sinon, true. Ferme la connexion connection à un serveur Hyperwave. - - - - - - hw_Connect - Ouvre une connexion Hyperwave. - - - Description - - int hw_connect - string host - int port - string username - string password - - -Ouvre une connexion Hyperwave et retourne un identifiant de connexion, en cas de succès, - ou false, si la connexion n'a pas pu être créée. Chaque argument doit être entouré de -guillemets, sauf le numéro de port. Les arguments username et - password sont optionnels, et peuvent être ignorés. Dans ce - cas, aucune identification ne sera faite au niveau du serveur. Cela revient à s'identifier en tant qu'utilisateur anonyme. Cette fonction retourne un identifiant de connexion qui sera nécessaire aux autres fonctions Hyperwave. Vous pouvez avoir plusieurs connexions simultanées. N'oubliez pas que les mots de passe ne sont pas cryptés. - - - Voir aussi hw_pConnect. - - - - - - hw_Cp - Copie des objets. - - - Description - - int hw_cp - int connection - array object_id_array - int destination id - - -Copie les objet ayant les objects id object_id_array, et crée un groupe ayant l'object id destination id. - -La valeur retournée est le nombre d'objets copiés. - - - Voir aussi hw_mv. - - - - - - hw_Deleteobject - Efface des objets. - - - Description - - int hw_deleteobject - int connection - int object_to_delete - - -Efface l'objet dont l'identifiant est object_to_delete. Toutes les instances de l'objets seront effacées. - - -Retourne TRUE si aucune erreur ne survient, et sinon, FALSE. - - - Voir aussi hw_mv. - - - - - - hw_DocByAnchor - Identifiant d'objet de l'objet dans l'ancrage. - - - Description - - int hw_docbyanchor - int connection - int anchorID - - -Retourne l'dentifiant d'objet de l'objet dans l'ancrage anchorID. - - - - - - hw_DocByAnchorObj - Attributs de l'objet dans l'ancrage. - - - Description - - string hw_docbyanchorobj - int connection - int anchorID - - - Retourne les attributs du document qui correspond à anchorID. - - - - - - hw_DocumentAttributes - Object record de hw_document. - - - Description - - string hw_documentattributes - int hw_document - - - Retourne les attributs du document. - - Voir aussi hw_DocumentBodyTag, - hw_DocumentSize. - - - - - - hw_DocumentBodyTag - Balise de corps d'un document. - - - Description - - string hw_documentbodytag - int hw_document - - -Retourne la balise BODY du document.Si le document est un document HTML , la balise BODY doit être affichée avant le document. - - Voir aussi hw_DocumentAttributes, - hw_DocumentSize. - - - - - - hw_DocumentContent - Contenu d'un document. - - - Description - - string hw_documentcontent - int hw_document - - -Retourne la balise BODY du document.Si le document est un document HTML , la balise BODY doit être affichée avant le document. - - Voir aussi hw_DocumentAttributes, - hw_DocumentSize, - hw_DocumentSetContent. - - - - - - hw_DocumentSetContent - Modifie/remplace le contenu d'un document. - - - Description - - string hw_documentsetcontent - int hw_document - string content - - -Modifie/remplace le contenu d'un document. Si le document est un document HTML, le contenu représente tout qui est placé au dela de la balise BODY. Les informations de HEAD et de la balise BODY sont enregistrés dans les attributs. Si vous fournissez aussi ces informations dans le corps du document, le serveur Hyperwave modifiera les attributs. Cela n'est cependant pas une bonne idée. Si la fonction échoue, l'ancien contenu est restauré. - - - Voir aussi hw_DocumentAttributes, - hw_DocumentSize, - hw_DocumentContent. - - - - - - hw_DocumentSize - Taille d'un document. - - - Description - - int hw_documentsize - int hw_document - - - Retourne la taille du document en octets. - - Voir aussi hw_DocumentBodyTag, - hw_DocumentAttributes. - - - - - - hw_ErrorMsg - Retourne un message d'erreur. - - - Description - - string hw_errormsg - int connection - - -Retourne une chaîne contenant le dernier message d'erreur, ou 'No Error' (pas d'erreur). Si false est retourné, cette fonction a échoué. Ce message est relatif à la dernière commande exécutée. - - - - - - hw_EditText - Retourne un document texte. - - - Description - - int hw_edittext - int connection - int hw_document - - -Charge le texte du document sur le serveur. Les attributs du document ne doivent pas être modifiés tant que le document est en train d'être édité. Cette fonction n'est disponible que sur les documents texte. Elle n'ouvrira pas de canal de transfert, et donc, bloquera le script durant le transfert. - - - Voir aussi hw_PipeDocument, - hw_free_document, - hw_DocumentBodyTag, - hw_DocumentSize, - hw_OutputDocument, - hw_GetText. - - - - - - hw_Error - Retourne le code d'erreur. - - - Description - - int hw_error - int connection - - -Retourne le code d'erreur de la dernière erreur. Si la valeur 0 est retournée, c'est qu'il n'y avait pas d'erreur. L'erreur se rapporte à la dernière commande. - - - - - - hw_Free_Document - Détruit un document. - - - Description - - int hw_free_document - int hw_document - - - Détruit un document Hyperwave. - - - - - - hw_GetParents - Identifiant d'objet des parents. - - - Description - - array hw_getparentsobj - int connection - int objectID - - - Retourne un tableau indexé avec les identifiants des objets parents de objectID. - - - - - - hw_GetParentsObj - Attributs des parents. - - - Description - - array hw_getparentsobj - int connection - int objectID - - - Retourne un tableau indexé, avec les attributs et un tableau associé, d'informations statistiques à propos des attributs. Ce tableau associé est le dernier élément du tableau retourné. Chaque -attribut appartient au père de l'objet objectID. - - - - - - hw_GetChildColl - Identifiant d'objet des groupes fils. - - - Description - - array hw_getchildcoll - int connection - int objectID - - - Retourne un tableau contenant les identifiants d'objets des groupes fils du -groupe objectID. Cette fonction ne retournera pas d'identifiants -d'objets des documents fils. - - Voir aussi hw_GetChildDocColl. - - - - - - hw_GetChildCollObj - object records d'un groupe d'enfants. - - - Description - - array hw_getchildcollobj - int connection - int objectID - - - Retourne un tableau d'object record. Chaque object records appartient à un groupe d'enfants -de la collection objectID. La fonction ne retournera pas -de documents enfants. - - Voir aussi hw_ChildrenObj, - hw_GetChildDocCollObj. - - - - - - hw_GetRemote - Retourne un document distant. - - - Description - - int hw_getremote - int connection - int objectID - - -Retourne un document distant. Les documents distants sont , en Hyperwave, des documents -lus depuis une source externe. La plus part des documents éloignés sont des pages web -externes, ou des requêtes sur une base de données. Afin de pouvoir accéder à des sources - externes, grâces aux documents distants, Hyperwave introduit l'interface HGI (Hyperwave - Gateway Interface) qui est similaire à CGI. Actuellement, seuls les protocoles de ftp, -http et certaines bases de données sont accessibles avec HGI. hw_GetRemote - retourne le document de la source distante. Si vous voulez utiliser cette fonction, il vous faut vous familiariser HGIs. Il est aussi préférable d'utiliser PHP plutôt que Hyperwave pour accéder aux sources externes. Le support des bases de données sera plus difficile avec Hyperwave que PHP. - - - Voir aussi hw_GetRemoteChildren. - - - - - - hw_GetRemoteChildren - Retourne les fils d'un document distant. - - - Description - - int hw_getremotechildren - int connection - string object record - - -Retourne les fils d'un document distant. Les fils d'un document distant sont des -documents distants eux mêmes. Cela est cohérent si une requête sur une base de données -doit être rendu plus sélective, comme expliqué dans Hyperwave Programmers' Guide. -Si le nombre de fils est 1 la fonction va retourner le document lui même, la fonction -retournera le document lui même, formaté Hyperwave Gateway Interface (HGI). Si -le nombre de fils est supérieur 1 la fonction retournera un tableau d'attributs, -qui pourra servir à une nouvelle requête avec hw_GetRemoteChildren. -Ces attributs sont virtuels et n'existent pas sur le serveur Hyperwave, et ainsi, n'ont pas d'identifiant d'objet valide. L'ordre exact de ces objets est du ressort de HGI. Si vous voulez utiliser cette fonction, vous devez être très familier HGIs. Il vaut mieux PHP plutôt que Hyperwave pour accéder aux fichiers distants. Le support de base de données y est bien meilleur. - - - Voir aussi hw_GetRemote. - - - - - - hw_GetSrcByDestObj - Retourne les ancrages qui pointent sur un objet. - - - Description - - array hw_getsrcbydestobj - int connection - int objectID - - - Retourne les attributs de tous les ancrages qui pointent sur objectID. -L'objet peut être un document ou un autre ancrage, de type destination. - - - Voir aussi hw_GetAnchors. - - - - - - hw_GetObject - Attributs d'un objet. - - - Description - - array hw_getobject - int connection - [int|array] objectID - string query - - -Retourne les attributs de l'objet dont l'identifiant est objectID, - si le second paramètre est un entier. Si le second paramètre est un tableau, la fonction retournera un tableau d'attributs. Dans ce cas, le dernier paramètre est aussi évalué. - - - query a la syntaxe suivante : - - <expression> ::= "(" <expression> ")" | - "!" <expression> | /* NOT */ - <expression> "||" <expression> | /* OR */ - <expression> "&&" <expression> | /* AND */ - <attribute> <operator> <value> - - <attribute> ::= /* * n'importe quel attribut (Title, Author, DocumentType ...) */ - - <operator> ::= "=" | /* égal */ - "<" | /* moins que (comparaison de type chaîne) */ - ">" | /* plus que (comparaison de type chaîne) */ - "~" /* recherche par expression régulière */ - - query permet de sélectionner une nouvelle fois certains objets dans la liste des objets donnés. Contrairement aux autres requêtes, celle ci peut utiliser des attributs non indexés. Le nombre d'attributs retourné dépend de la requête de la requête, et des autorisations d'accès aux objets. - - Voir aussi hw_GetAndLock, - hw_GetObjectByQuery. - - - - - - hw_GetAndLock - Retourne les attributs, et verrouille l'objet. - - - Description - - string hw_getandlock - int connection - int objectID - - -Retourne les attributs, et verrouille l'objet objectID. -Le verrouillage empêchera les autres utilisateurs d'y accéder, jusqu'à ce qu'il soit deverrouillé. - - - Voir aussi hw_Unlock, - hw_GetObject. - - - - - - hw_GetText - Retourne un document texte. - - - Description - - int hw_gettext - int connection - int objectID - mixed - - rootID/prefix - - - - -Retourne le document de l'objet objectID. Si le document possède -des ancrages qui peuvent être insérés, ils seront déjà insérés. -L'option rootID/prefix peut être une chaîne ou un entier. Si c'est un entier, il -détermine la méthode d'insertion des liens dans le document. Par défaut, il vaut 0 et -les liens seront construits en fonction du nom de l'objet cible. Cela sert beaucoup -dans les applications web. Si un lien pointe sur un objet avec le nom -'film_internet' le lien HTML sera <A HREF="/internet_movie">. -La position réelle de la source et de la cible dans la hiérarchie seront ignorés. Vous devrez modificer votre site web pour qu'il réécrive les URL, comme par exemple '/mon_script.php3/film_internet'. 'mon_script.php3' devra analyser $PATH_INFO et savoir recherche le document '/mon_script.php3/film_internet'. Si vous ne voulez pas de ce comportement, vous pouvez affecter à rootID/prefix n'importe quel prefixe. Dans ce cas, ce sera une chaîne. - - -Si rootID/prefix est un entier différent de 0 le lien sera -construit avec tous les noms de la hiérarchie, en commencant à l'objet d'identifiant rootID/prefix, -et séparé par des slash. Si, par exemple, le document 'film_internet' est situé à -'a-b-c-internet_movie' et '-' qui sert de séparateur hiérarchique de niveau sur -le serveur Hyperwave et le document source est situé dans 'a-b-d-source' alors, le lien HTML -serait: <A HREF="../c/internet_movie">. Cela est très pratique si vous voulez télécharger tout le contenu d'un serveur sur un disque, et faire une carte du système sur votre disque. - - -Cette fonction n'est opérationnelle qu'avec des document de pur texte. Elle n'ouvrira pas de canal spécial de transfert, et ainsi, bloquera le script le temps du transfert. - - - Voir aussi hw_PipeDocument, - hw_free_document, - hw_DocumentBodyTag, - hw_DocumentSize, - hw_OutputDocument. - - - - - - hw_GetObjectByQuery - Recherche un objet. - - - Description - - array hw_getobjectbyquery - int connection - string query - int max_hits - - -Recherche un objet sur tout le serveur et retourne un tableau d' object ids. -Le nombre maximum d'objet est limité par max_hits. - Si max_hits vaut -1 il n'y a pas de limite. - - La requête ne fonctionnera qu'avec des attributs indexés. - - Voir aussi hw_GetObjectByQueryObj. - - - - - - hw_GetObjectByQueryObj - Recherche un objet. - - - Description - - array hw_getobjectbyqueryobj - int connection - string query - int max_hits - - -Recherche un objet sur tout le serveur et retourne un tableau d' object records. -Le nombre maximum d'objet est limité par max_hits. Si max_hits -vaut -1 il n'y a pas de limite. - - - La requête ne fonctionnera qu'avec des attributs indexés. - - Voir aussi hw_GetObjectByQuery. - - - - - - hw_GetObjectByQueryColl - Recherche un objet dans un groupe. - - - Description - - array hw_getobjectbyquerycoll - int connection - int objectID - string query - int max_hits - - -Recherche un objet sur tout le groupe objectID et retourne un tableau d' object records. - Le nombre maximum d'objet est limité par objectID. Si objectID - vaut -1 il n'y a pas de limite. - - -La requête ne fonctionnera qu'avec des attributs indexés. - - Voir aussi hw_GetObjectByQueryCollObj. - - - - - - hw_GetObjectByQueryCollObj - Recherche un objet dans un groupe. - - - Description - - array hw_getobjectbyquerycollobj - int connection - int objectID - string query - int max_hits - - -Recherche un objet sur tout le groupe objectID et retourne un tableau d' object records. - Le nombre maximum d'objet est limité par objectID. Si objectID - vaut -1 il n'y a pas de limite. - - La requête ne fonctionnera qu'avec des attributs indexés. - - Voir aussi hw_GetObjectByQueryColl. - - - - - - hw_GetChildDocColl - ids des documents fils d'un groupe. - - - Description - - array hw_getchilddoccoll - int connection - int objectID - - - Retourne un tableau avec les id des documents fils d'une collection. - - Voir aussi hw_GetChildColl. - - - - - - hw_GetChildDocCollObj - Attributs des documents fils d'un groupe. - - - Description - - array hw_getchilddoccollobj - int connection - int objectID - - - Retourne un tableau contenant les attributs des documents fils du groupe objectID. - - Voir aussi hw_ChildrenObj, - hw_GetChildCollObj. - - - - - - hw_GetAnchors - Identifiants des ancrages d'un document. - - - Description - - array hw_getanchors - int connection - int objectID - - - Retourne un tableau contenant les identifiants des ancrages du document objectID. - - - - - - hw_GetAnchorsObj - Attributs des ancrages d'un document. - - - Description - - array hw_getanchorsobj - int connection - int objectID - - -Retourne un tableau d'attributs des ancrages du document objectID. - - - - - - hw_Mv - Déplace un objet. - - - Description - - int hw_mv - int connection - array object id array - int source id - int destination id - - -Déplaces les objets dont les identifiants sont passés dans le tableau source id, -depuis le source id dans le destination id. - Si destination id vaut 0, les objets ne seront plus insérés dans le groupe (ni dans le serveur). Dans ce cas, si une instance était la dernière instance d'un objet, l'objet sera effacé. Si vous voulez effacer toutes les instances d'un coup, utilisez hw_deleteobject. - - - La valeur retournée est le nombre d'objet déplacés. - - Voir aussi hw_cp, - hw_deleteobject. - - - - - - hw_Identify - Identifie un utilisateur. - - - Description - - int hw_identify - string username - string password - - -Identifies un utilisateur, dont le nom d'utilisateur est username and - et le mot de passe password. L'identification n'est valide -que pour la session en cours. Je ne pense pas que cette fonction serve souvent. Dans la plus part des cas, il est plus simple de s'identifier lors de l'ouverture de la connexion. - - - Voir aussi hw_Connect. - - - - - - hw_InCollections - Vérifie qu'un identifiant d'objet est dans un groupe. - - - Description - - array hw_incollections - int connection - array object_id_array - array collection_id_array - int return_collections - - -Vérifie qu'un ensemble d'objet (documents ou groupes) donnés par object_id_array - fait partie des groupe listés par object_id_array. -Lorsque le quatrième paramètre return_collections vaut 0, le -sous ensemble d'identifiant qui font partie d'un groupe (i.e. les documents ou groupes qui sont fils d'un ou plusieurs groupe, ou leurs fils, récurusivement) est retourné sous la forme d'un tableau. Cette option permet de mettre en valeur la partie de l'arborescence qui contient le résultat d'une requête, dans un sens graphique. - - - - - - - - hw_Info - Informations à propos d'une connexion. - - - Description - - string hw_info - int connection - - - Retourne les informations de la connexion courante. La chaîne retournée a le format suivant : <Serverstring>, <Host>, - <Port>, <Username>, <Port of Client>, - <Byte swapping> - - - - - - hw_InsColl - Insère un groupe. - - - Description - - int hw_inscoll - int connection - int objectID - array object_array - - -Insère un nouveau groupe, avec les attributs object_array dans le groupe -objectID. - - - - - - hw_InsDoc - Insère un document. - - - Description - - int hw_insdoc - int connection - int parentID - string object_record - string text - - - Insère un nouveau document avec les attributs object_record, -dans le groupe parentID. Cette fonction insère soit un objet -avec ses seuls attributs, soit pur objet ascii, avec text si il est fourni. -Si vous voulez insérer un document de type général, utilisez plutôt - hw_insertdocument. - - Voir aussi hw_InsertDocument, - hw_InsColl. - - - - - - hw_InsertDocument - Insère un document dans un groupe. - - - Description - - int hw_insertdocument - int connection - int parent_id - int hw_document - - -Insère un document dans le groupe parent_id. Le document doit -avoir été créé auparavant avec hw_New_Document. Assurez vous que -les attributs du nouveau document contiennent au moins les attributs suivants : -Type, DocumentType, Title et Name. Vous aurez aussi parfois besoin de MimeType. La fonction retourne l'identifiant de l'objet inséré, ou bien false. - - - Voir aussi hw_PipeDocument. - - - - - - hw_InsertObject - Insère un object record. - - - Description - - int hw_insertobject - int connection - string object rec - string parameter - - - Insère un objet dans le serveur. L'objet peut être n'importe quel objet Hyperwave valide. Reportez vous à la documentation HG-CSP pour plus de détails sur les paramètres. - - Note: Si vous voulez insérer un ancre, l'attribut Position doit être mis à la valeur start/end (début ou fin) ou encore 'invisible'. Les positions invisibles sont nécessaire si l'annotation n'a pas de liens correspondant dans le texte de l'annotation. - - Voir aussi hw_PipeDocument, - hw_InsertDocument, - hw_InsDoc, - hw_InsColl. - - - - - - hw_mapid - Représente un id globale en un id virtuel local. - - - Description - - int hw_mapid - int connection - int server id - int object id - - - Represente l'id d'un objet global de n'importe quel serveur Hyperwave, même si -vous ne vous y êtes pas connecté avec hw_connect, -avec un id d'objet local virtuel. Cet id d'objet local peut alors être utilisé comme n'importe quel -id d'objet : par exemple on peut obtenir l'enregistrement d'objet avec la fonction - hw_getobject. L'id du serveur est la première partie -de l'id global (GOid) de l'objet, qui est en fait une adresse IP. - - Note: Afin d'utiliser cette fonction, vous devez lever le flag - F_DISTRIBUTED, ce qui ne peut être fait qu'à la compilation. Par défaut, il n'est pas levé. -Lisez les commentaires dans le fichier hg_comm.c - - - - - - - - hw_Modifyobject - Modifie les attributs d'objet record. - - - Description - - int hw_modifyobject - int connection - int object_to_change - array remove - array add - int mode - - - -Cette commande permet d'effacer, d'ajouter ou de modifier des attributs d'un objet. -L'objet est reperé par son identifiant object_to_change. -Le premier tableau, remove, est la liste des attributs à effacer. Le deuxième tableau add est la -liste des attributs à ajouter. Afin de modifier un attribut, il vous faudra dont l'effacer, -puis l'ajouter à nouveau. hw_modifyobject effacera toujours les -attributs avant de les ajouter, à moins que la valeur de l'attribut à effacer ne -soit pas une chaîne, ou un tableau. - - -Le dernier paramètre détermine si la modification est récursive ou pas. - 1 signigie que la modification est récursive. Si un objet ne peut pas être modifié, -il sera ignoré. hw_error n'indiquera alors pas toujours d'erreur, -même si certains objets n'ont pas pu être modifié. - - - -Les clés des deux tableaux sont les noms des attributs. La valeurs de chaque élément peut être un tableau, ou une chaîne ou n'importe quoi d'autre. Dans le cas du tableau, la valeur de l'attribut est construite en séparant chaque élément par un point virgule. Dans le cas de la chaîne, elle sert directement de valeur. Une chaîne vide provoquera un effacement de l'attribut. Dans le cas oú la valeur n'est ni un tableau, ni une chaîne, aucune opération ne sera effectuée. Cela est nécessaire si vous voulez ajouter un attribut complètement une nouvelle valeur pour un attribut existant. Si le tableau d'effacement contenait une chaîne vide comme attribut, le serveur tenterait d'effacer l'attribut, ce qui échouerai de toute manière, car cet attribut n'existe pas. L'ajout de cet attribut échouerai aussi. Affecter la valeur de 0 à cet attribut ne l'effacerait pas, et l'ajout fonctionnerait. - - - -Si vous voulez changer l'attribut 'Nom' de valeur courante 'livres' en 'articles' vous devrez faire deux tableaux, et appeler hw_modifyobject. - - Modification d'un attribut - - // $connect est une connexion valide - // $objid est l'identifiant de l'objet - $remarr = array("Name" => "books"); - $addarr = array("Name" => "articles"); - $hw_modifyobject($connect, $objid, $remarr, $addarr); - - -Afin d'effacer/ajouter une paire nom=valeur aux attributs d'un objet, utilisez simplement les tableaux d'effacement et d'ajout, et laissez le dernier/troisième paramètre vide. Si l'attribut est le premier de ce nom à ajouter, donnez une valeur entière à cet élément. - - Ajouter un nouvel attribut - - // $connect is an existing connection to the Hyperwave server - // $objid is the ID of the object to modify - $remarr = array("Name" => 0); - $addarr = array("Name" => "articles"); - $hw_modifyobject($connect, $objid, $remarr, $addarr); - - - - - -Les attributs multilingues, (tels que 'Title'), peuvent être modifiés de deux manières : soit en fournissant la valeur de ces attributs de manière native (langue :valeur), soit en fournissant un tableau avec les éléments de chaque langue, comme décrit ci-dessus. L'exemple deviendrai alors : - - - modifying Title attribute - - $remarr = array("Title" => "en:Books"); - $addarr = array("Title" => "en:Articles"); - $hw_modifyobject($connect, $objid, $remarr, $addarr); - - - ou - - Modifier l'attribut Title - - $remarr = array("Title" => array("en" => "Books")); - $addarr = array("Title" => array("en" => "Articles", "ge"=>"Artikel")); - $hw_modifyobject($connect, $objid, $remarr, $addarr); - - -Pour supprimer l'entrée française 'Livres' et ajouter l'entrée 'Articles' et l'entrée allemande 'Artikel'. - - Suppression d'un attribut - - $remarr = array("Title" => ""); - $addarr = array("Title" => "en:Articles"); - $hw_modifyobject($connect, $objid, $remarr, $addarr); - - - -Cet exemple va effacer tous les attributs avec le nom 'Title' et ajouter un nouvel attribut 'Title'. Cela peut être pratique pour effacer des attributs récursivement. - - - -Si vous devez effacer tous les attributs avec un certains nom, vous devez passer une chaîne vide comme valeur. - - - -Seul les attributs 'Title', 'Description' et 'Keyword' gère correctement le préfixe de langue. Pour les autres attributs qui ne portent pas de préfixe de language, le préfixe 'xx' sera assigné. - - -L'attribut 'Name' est un peu particuluer. Dans certains cas, il ne peut pas être complétement effacé. Vous aurez alors le message 'Change of base attribute' (l'apparition de cette erreur n'est pas très claire). Ainsi, vous aurez à ajouter une nouvelle entrée pour Name puis, effacer l'ancien. - - -Il ne faut pas encadrer cette fonction par des appels à hw_getandlock et hw_unlock. - hw_modifyobject le fait de manière interne. - - - Retourne TRUE si aucune erreur ne survient, et FALSE sinon. - - - - - - hw_New_Document - Crée un nouveau document. - - - Description - - int hw_new_document - string object_record - string document_data - int document_size - - -Retourne un nouveau document Hyperwave avec comme données document_data et comme -attributs object_record. La longueur de document_data doit être données dans -document_size. Cette fonction n'insère pas l'objet dans le serveur Hyperwave. - - - Voir aussi hw_free_document, - hw_DocumentSize, - hw_DocumentBodyTag, - hw_OutputDocument, - hw_InsertDocument. - - - - - - hw_Objrec2Array - Converti les attributs d'un objet en tableau. - - - Description - - array hw_objrec2array - string object_record - - -Convertir les attributs object_record d'un objet en un tableau. -Les clés du tableau seront les noms des attributs. Les attributs multiples comme par exemple 'Title', dans différentes langues, seront rassemblées dans un autre tableau. Une clé est la partie gauche d'un attribut. Actuellement, seuls les attributs 'Title', 'Description' et 'Keyword' sont traités correctement. - - - Voir aussi hw_array2objrec. - - - - - - hw_OutputDocument - Affiche hw_document. - - - Description - - int hw_outputdocument - int hw_document - - - Affiche hw_document sans la balise BODY. - - - - - - hw_pConnect - Crée une connexion persistante. - - - Description - - int hw_pconnect - string host - int port - string username - string password - - -Retourne un index de connexion en cas de succès, et false si la connexion n'a pas pu -être créée. Ouvre une connexion persistante à un serveur Hyperwave. Tous les arguments -doivent être entre guillemets, hormis le numéro de port (port). Les arguments -username - et password sont optionnels, et peuvent être ignorés. Dans ce cas, aucune authentification ne sera faites, (connexion anonyme). Cette fonction retourne un index de connexion qui sera utilisée par les autres fonctions Hyperwave. Vous pouvez ouvrir plusieurs connexions simultanées. - - - Voir aussi hw_Connect. - - - - - - hw_PipeDocument - Retourne un document. - - - Description - - int hw_pipedocument - int connection - int objectID - - -Retourne le document Hyperwave d'objet id objectID. -Si le document a des ancrages, ils seront insérés. Le document sera transmis via -une connexion de données spéciale, qui ne bloque pas la connexion de contrôle (ie, le serveur n'attend pas la fin du transfert pour rendre la main). - - - Voir aussi hw_GetText (insertions), - hw_free_document, - hw_DocumentSize, - hw_DocumentBodyTag, - hw_OutputDocument. - - - - - - hw_Root - Object id de la racine. - - - Description - - int hw_root - - - -Retour l' Object id de la racine. Actuellement, cette identifiant est toujours 0. L'ensemble des fils de la racine est celui du serveur courant. - - - - - - - hw_Unlock - Déverrouille un objet. - - - Description - - int hw_unlock - int connection - int objectID - - - Déverrouille un document, et laisse l'accès aux autres utilisateurs. - - Voir aussi hw_GetAndLock. - - - - - - hw_Who - Liste des utilisateurs actuellement identifiés. - - - Description - - int hw_who - int connection - - -Retourne un tableau contenant la liste des utilisateurs actuellement connectés au serveur Hyperwave. Chaque élément du tableau est lui même un tableau, qui contient l'identifiant de l'élément, le nom, le système, la date de connexion (onSinceDate), l'heure de connexion (onSinceTime), la durée de connexion (TotalTime ) et self. 'self' contient 1 l'élément est l'utilisateur qui a appelé la fonction. - - - - - - - hw_Username - Nom de l'utilisateur actuellement identifié. - - - Description - - string hw_getusername - int connection - - - Retourne le nom d'utilisateur utilisé par la connexion. - - - - - - + + Fonctions Hyperwave + Hyperwave + + + Introduction + + Hyperwave a été developpé par + IICM à Graz. Son nom + original était Hyper-G et il a pris le nom de + Hyperwave lors de sa commercialisation (en 1996, si mes souvenirs sont bons). + + + Hyperwave n'est pas gratuit. La version actuelle est la 4.1, disponible à + www.hyperwave.com. Une version + limitée à 30 jours peut être demandée. + + + HIS est un système d'information similaire à + une base de données, (HIS, Hyperwave Information Server). HIS se + concentre sur l'enregistrement et la gestion des documents. Un document peut + être n'importe quelle donnée, qui peut être stockée + dans un fichier. Chaque document est accompagné par un enregistrement. + Cet enregistrement contient des méta données à propos + du document. Ces méta données sont des listes d'attributs qui + peuvent être étendues par l'utilisateur. Un attribut est une paire + clé/valeur de la forme : clé =valeur. L'enregistrement complet + contient autant de paire que le désire l'utilisateur. Le nom d'un + attribut n'a pas besoin d'être unique, c'est à dire qu'une + même clé peut apparaître plusieurs fois dans un + enregistrement. Cela peut être utile si vous devez donner un + titre à votre document en plusieurs langues, par exemple. Dans un + cas pareil, la convention est que chaque valeur de titre est + précédée par deux lettres et deux points, tel que : + 'fr:Titre en français' ou 'ge:Titel in deutsch'. D'autres attributs + comme une description ou des mots clés sont aussi suceptibles de + recourir à ce genre de procédé. Vous pouvez aussi + remplacer l'abréviation de langage par une autre chaîne, + tant qu'elle est séparée de la valeur par les deux points. + + + Chaque enregistrement a une représentation native qui contient toutes + les paires clé/valeur, séparées par un retour à + la ligne. L'extension Hyperwave reconnaît une autre représentation + qui est un tableau associatif, oú les attributs servent de clés. + Les attributs multilingues étant géré sous la forme d'un + autre tableau associatif, dont les clés sont les chaînes de + langue. En fait, tous les attributs multiformes sont gérés + sous la forme de tableau associatif. (Cela n'est pas encore complètement + codé. Uniquement les attributs de titre, description et mot clés + sont traités correctement). + + + En dehors des documents, tous les hyper liens contenus dans un documents sont + enregistrés dans un autre enregistrement. Les hyperliens qui sont + à l'intérieur d'un document en seront supprimés, et + enregistrés dans des objets particuliers, au moment de l'insertion + dans la base de données. L'enregistrement des hyper-liens + contient les informations d'origine et d'objectif. Afin d'accéder + au document original, vous devre lire le document sans les liens, puis lire + les liens, et les réinsérer (les + hw_pipedocument et hw_gettext le + font pour vous. L'avantage de séparer les liens du document est + évident : une fois qu'un document, cible d'un hyperlien, a + été renommé, le liens peut facilement être + modifié. Le document contenant le lien n'est pas modifié + pour autant. Vous pouvez même ajouter un lien à un document sans + le modifier. + + + Dire que hw_pipedocument et hw_gettext + font l'insertion automatiquement n'est pas aussi simple qu'il n'y paraît. + L'insertion implique une certaine hiérarchie de document. Sur un serveur + web, la hiérarchie est fournie par le système de fichiers, mais + Hyperwave dispose de sa propre hiérarchie et les noms de fichiers ne + reflètent pas la position d'un objet dans cette hiérarchie. + Ainsi, la création de liens requière en premier lieu + la construction de la hiérarchie et de l'espace des noms dans + une hiérarchie web et un espace de nom web. La différence + fondamentale entre Hyperwave et le web est qu'il y a une distinction claire + en les noms et la hiérarchie dans Hyperwave. Le nom ne contient aucune + information à propos de la position de l'objet dans la hiérarchie. + Sur le web, le nom contient les informations de localisation dans la + hiérarchie. Cela conduit à deux méthodes de d'accès : + soit la hiérarchie Hyperwave et le nom de l'objet sont inscrit dans + l'URL. Pour simplifier les choses, une deuxième approche est + pratiquée. L'objet Hyperwave de nom 'mon_objet' correspond à + l'URL 'http://hote/mon_objet', peu importe alors oú il est rangé + dans la hiérarchie. Un objet dont le nom est 'parent/mon_objet' peut + être le fils de l'objet 'mon_objet' dans la hiérarchie Hyperwave, + bien que ce soit le contraire en convention web, et cela risque de perturber + l'utilisateur. + + + Ayant pris cette décision, un deuxième problème surgit : + comment faire l'interface avec PHP ? L' URL http://hote/mon_objet n'appelera + aucun script PHP à moins que vous ne demandiez à votre serveur + web de le remplacer par autre chose, comme par exemple : + 'http://host/php3_script/mon_objet' et le script 'php3_script' utilise la + variable $PATH_INFO pour rechercher l'objet 'mon_objet' sur le serveur Hyperwave. + Il y a juste un petit inconvénient , qui peut facilement être + corrigé. Réécrire une URL ne vous permettra aucun + accès aux autres documents du serveur web. Un script de recherche + dans le serveur Hyperwave serait impossible. Il vous faudra donc au moins + une autre règle pour exclure certaines URL, comme par exemple celles + qui commencent par http://host/Hyperwave. Voici de manière simple, + la manière de partager un espace de nom entre un serveur web et un + serveur Hyperwave serveur. + + + Basé sur le mécanisme précédent, on trouve + l'insertion dans les documents. + + + Il est plus compliqué d'avoir PHP ne fonctionne pas comme un module + de serveur, ou un scrip CGI, mais comme une application indépendante. + Dans ce cas, il est utile d'inscrire la hiérarchie et le nom de fichier + Hyperwave dans le système de fichier. Mais comme cela risque d'entrer + en conflit avec le séparateur de dossier ('/'), il faut le remplacer + par un autre caractère,. '_'. + + + Le protocole réseau pour communiquer avec un serveur Hyperwave est + appelé HG-CSP + (Hyper-G Client/Server Protocol). Il est basé sur des messages qui + initie des actions, comme par exemple, lire l'entête de fichier. Dans + les premières versions de Hyperwave Server deux clients natifs + (Harmony, Amadeus) étaient fournis pour permettre la communication + avec le serveur. Ils ont disparu lors de la commercialisation de Hyperwave. + En tant qu'ersatz, un client appelé wavemaster est désormais + fourni. wavemaster est un espèce ce convertisseur de protocole de + HTTP en HG-CSP. L'idée est de faire + toute l'administration de la base et la visualisation des documents par une + interface web. Le wavemaster implémente un jeu d'emplacement pour + certaines actions de personnalisation de l'interface. Ce jeu est appelé + PLACE language. PLACE pêche encore par + le manque de nombreuse fonctions de programmations, et le manque + d'évolutivité. Cela a conduit à l'utilisation de + JavaScript ce qui ne rend pas la vie facile. + + + Que PHP supporte Hyperwave permet de combler ces manques. PHP implémente + tous les messages définis par HG-CSP mais fourni + d'autres commandes puissantes, comme par exemple, celle de lire des documents + complets. + + + Hyperwave dispose de sa propre terminologie pour localiser certaines + informations. Cette terminologie a été largement étendue. + Presque toutes les fonctions utilisent l'un des types de données + suivants : + + + + object ID: un entier, unique pour chaque objet sur le serveur Hyperwave. C'est + aussi un des attributs de l'enregistrement de l'objet (ObjectID).Les object ids + sont souvent utilisées comme paramètre d'entrée pour + spécifier un objet. + + + + + object record: Une chaîne contenant des paires clé=valeur. Les + paires sont séparées par un retour à la ligne. Un + enregistrement d'objet peut facilement être converti en tableau, avec + la fonction hw_objrec2array. De nombreuses fonctions + retournent un object records. Ces fonctions ont leur nom qui finit par obj. + + + + + object array: Un tableau associatif qui contient tous les attributs d'un objet. + La clé est l'attribut. Si un attribut apparaît plusieurs fois, il + sera représenté sous la forme d'un tableau associatif ou + indexé. Les attributs qui dépendent des langues (comme title, + keyword ou description) seront représentés sous la forme d'un + tableau associatif, dont les clés seront les abréviations de + langues. Tous les autres attributs à valeur multiple prendront la + forme d'un tableau indexé. + + + + + hw_document: Ce type est un nouveau type de données, qui contient le + document lui même, comme par exemple HTML, PDF etc. Il est + optimisé pour les documents HTML mais peut s'utiliser avec n'importe + quel format. + + + + + + De nombreuses fonctions qui retournent un tableau d'enregistrements, retournent + aussi un tableau associé, avec des informatiosn statistiques. Ce tableau + est le dernier élément du tableau d'enregistrements. Les + statistiques contiennent les entrées suivantes : + + + Hidden + + + Nombre d'objets dont l'attribut PresentationHints est Hidden. + + + + + CollectionHead + + + Nombre d'objet dont l'attribut PresentationHints est CollectionHead. + + + + + FullCollectionHead + + + Nombre d'objet dont l'attribut PresentationHints est FullCollectionHead. + + + + + CollectionHeadNr + + + Index du premier objet du tableau d'enregistrement avec l'attribut + PresentationHints à CollectionHead. + + + + FullCollectionHeadNr + + + Index du premier objet du tableau d'enregistrement avec l'attribut + PresentationHints est FullCollectionHead. + + + + + Total + + + Total: Nombre d'enregistrements. + + + + + + + + Intégration avec Apache + + L'extension Hyperwave est utilisée de manière optimale lorsque + PHP est compilé comme module Apache. Dans ce cas, le serveur Hyperwave + sous jacent peut être caché quasiment totalement aux utilisateurs, + si Apache utilise son moteur d'écriture. Les explications suivantes vous + éclaireront : + + + Etant donné que PHP avec l'extension Hyperwave et Apache tend à + remplacer la solution native basé sur Wavemaster, je vais supposer que + le serveur Apache servira seulement d'interface Hyperwave. Ce n'est pas + nécessaire, mais cela simplifie grandment la configuration. Le + concept est très simple. Premièrement, vous avez besoin d'un + script PHP qui évalue la variable PATH_INFO et + considère que cette valeur est un objet Hyperwave. Appelons ce script + 'Hyperwave'. L'URL + http://votre.hote/Hyperwave/nom_objet + retourne alors l'objet Hyperwave dont le nom est 'nom_objet'. Le script doit + alors réagir suivant le type de l'objet. Si c'est un groupe, il devra + probablement retourner une liste de fils. Si c'est un document, il pourra + retourner son type MIME et son contenu. Une amélioration peut + être obtenue en utilisant le moteur de réécriture d'Apache. + D'un point de vue utilisateur, il est plus direct si l'URL + http://votre.hote/nom_objet + retourne l'objet. La règle de réécriture est simple : + + +RewriteRule ^/(.*) /usr/local/apache/htdocs/HyperWave/$1 [L] + + + Maintenant toutes les URL pointent sur un objet Hyperwave. Cela conduit à + un problème simple. Il n'y a pas d'autre façon d'exécuter, + c'est à dire rechercher, un autre script que ce script 'Hyperwave'. + Cela pourra être corrigé avec une autre règle telle que: + + +RewriteRule ^/hw/(.*) /usr/local/apache/htdocs/hw/$1 [L] + + + Le dossier /usr/local/apache/htdocs/hw + sera ainsi reservé pour d'autres scripts et fichiers. Assurez vous que + cette règle est évaluée avant la première + règle que nous avons définie. Il y a juste un léger + inconvénient : tous les objets Hyperwave qui commencent par 'hw/' seront + cachés. Alors, assurez vous que vous n'utilisez pas de tels noms. Si vous + avez besoin d'autres dossiers, par exemple, un dossier d'images, ajoutez + simplement d'autres règles. N'oubliez pas de lancer le moteur de + réécriture avec + + +RewriteEngine on + + + Mon expérience m'a montré que vous aurez besoin + des scripts suivants : + + + + + + Retourne l'objet lui même + + + + + Pour autoriser la recherche + + + + + S'identifier + + + + + Choisir une configuration + + + + + Un script pour chaque fonction supplémentaire, comme afficher + un objet, afficher des informations sur les utilisateurs, afficher + le statut du serveur, etc... + + + + + + + A faire + + Il reste encore beaucoup à faire : + + + + La fonction