source: pmb4.2/trunk/fuentes/pmb/classes/onto/common/onto_common_uri.class.php @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 5.2 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2011 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: onto_common_uri.class.php,v 1.13 2015-04-03 11:16:28 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9/**
10 * class onto_common_uri
11 * Génération des URI. La classe s'appuie sur un numéro auto en base de données.
12 * L'URI par défaut est prefix+"#"+numero auto. Si pas de préfixe :
13 * class_uri+"#"+numero auto.
14 * (Le # est à confirmer)
15 *
16 * L'URI est stoquée dans la table de données associée au numéro auto. Le numéro
17 * auto est utilisé dans les tables PMB.
18 *
19 */
20class onto_common_uri {
21
22        /** Aggregations: */
23
24        /** Compositions: */
25
26         /*** Attributes: ***/
27
28        /**
29         * dernière URI générée
30         * @access private
31         */
32        private static $last_uri;
33
34        /**
35         * Génère une nouvelle URI. Cette méthode est apellée par save() de onto_handler
36         *
37         * @param string class_uri URI de la classe d'objets
38         * @param string uri_prefix Préfixe à employer pour l'URI. Si vide, on prend celui de la classe.
39         * @return void
40         * @static
41         * @access public
42         */
43        public static function get_new_uri($class_uri, $uri_prefix="") {
44                global $dbh;
45               
46                if($uri_prefix){
47                        $class_uri=$uri_prefix;
48                }
49                $last_uri="";
50                $max=1;
51                //On cherche le max des id + 1
52                $query='SELECT MAX(uri_id)+1 FROM onto_uri';
53                $result=pmb_mysql_query($query,$dbh);
54               
55                if(pmb_mysql_num_rows($result)){
56                        $max=pmb_mysql_result($result,0,0);
57                }
58                if(!$max) $max =1;
59               
60                $query='SELECT 1 FROM onto_uri WHERE uri="'.addslashes($class_uri.$max).'"';
61                $result=pmb_mysql_query($query,$dbh);
62                if(!pmb_mysql_error($dbh) && !pmb_mysql_num_rows($result)){
63                        $last_uri=$class_uri.$max;
64                }else{
65                        do{
66                                $max++;
67                                $query='SELECT 1 FROM onto_uri WHERE uri="'.addslashes($class_uri.$max).'"';
68                                $result=pmb_mysql_query($query,$dbh);
69                        }while (pmb_mysql_num_rows($result));
70                }
71               
72                $last_uri=$class_uri.$max;
73                $query='INSERT INTO onto_uri SET uri="'.addslashes($last_uri).'"';
74                pmb_mysql_query($query,$dbh);
75               
76                //On initialise last_uri.
77                self::$last_uri=$last_uri;
78                return self::$last_uri;
79        } // end of member function get_new_uri
80
81        /**
82         * Génère une URI temporaire (basée sur microtime ?)
83         * @param string class_uri URI de la classe d'objets
84         *
85         * @return void
86         * @static
87         * @access public
88         */
89        public static function get_temp_uri($class_uri=""){
90                $temp_uri = $class_uri."_temp_".(microtime(true)*10000);
91                self::set_new_uri($temp_uri);
92                return $temp_uri;
93        } // end of member function get_temp_uri
94
95        /**
96         *
97         *
98         * @param string uri Vérifie si une URI est temporaire.
99
100         * @return void
101         * @access public
102         */
103        public static function is_temp_uri($uri) {
104                if(preg_match("/\_temp\_/", $uri)){
105                        return true;
106                }else{
107                        return false;
108                }
109        } // end of member function is_temp_uri
110
111        /**
112         *
113         *
114         * @return void
115         * @access public
116         */
117        public static function get_last_uri() {
118                return self::$last_uri;
119        } // end of member function get_last_uri
120
121        public static function get_name_from_uri($uri,$pmb_name){
122                $tmp=array();
123                $tmp=preg_split("/\/|\#/", $uri);
124                return trim($pmb_name.'_'.strtolower(end($tmp)));
125        }
126       
127        public static function set_new_uri($uri){
128                global $dbh;
129                $query = "select uri_id from onto_uri where uri ='".addslashes($uri)."'";
130                $result = pmb_mysql_query($query,$dbh);
131                if(pmb_mysql_num_rows($result)){
132                        //ca existe déjà !
133                        return pmb_mysql_result($result,0,0);
134                }
135                $query = "insert into onto_uri set uri = '".addslashes($uri)."'";
136                $result = pmb_mysql_query($query,$dbh);
137                return pmb_mysql_insert_id($dbh);
138        }
139
140        public static function get_uri($id_uri){
141                global $dbh;
142                $query = "select uri from onto_uri where uri_id ='".$id_uri."'";
143                $result = pmb_mysql_query($query,$dbh);
144                if($result && pmb_mysql_num_rows($result)){
145                        $uri = pmb_mysql_result($result,0,0);
146                }
147                return $uri;
148        } 
149       
150        public static function get_id($uri){
151                global $dbh;
152                $query = "select uri_id from onto_uri where uri = '".addslashes($uri)."'";
153                $result = pmb_mysql_query($query,$dbh);
154                if(pmb_mysql_num_rows($result)){
155                        $id = pmb_mysql_result($result,0,0);
156                }
157                return $id;             
158        }
159       
160        public static function replace_temp_uri($temp_uri, $class_uri, $uri_prefix="") {
161                global $dbh;
162               
163                if($uri_prefix){
164                        $class_uri=$uri_prefix;
165                }
166                $last_uri="";
167                $max=1;
168                //On cherche le max des id + 1
169                $query='SELECT MAX(uri_id)+1 FROM onto_uri';
170                $result=pmb_mysql_query($query,$dbh);
171               
172                if(pmb_mysql_num_rows($result)){
173                        $max=pmb_mysql_result($result,0,0);
174                }
175               
176                $query='SELECT 1 FROM onto_uri WHERE uri="'.addslashes($class_uri.$max).'"';
177                $result=pmb_mysql_query($query,$dbh);
178                if(!pmb_mysql_error($dbh) && !pmb_mysql_num_rows($result)){
179                        $last_uri=$class_uri.$max;
180                }else{
181                        do{
182                                $max++;
183                                $query='SELECT 1 FROM onto_uri WHERE uri="'.addslashes($class_uri.$max).'"';
184                                $result=pmb_mysql_query($query,$dbh);
185                        }while (pmb_mysql_num_rows($result));
186                }
187               
188                $last_uri=$class_uri.$max;
189                $query='update onto_uri SET uri="'.addslashes($last_uri).'" where uri="'.$temp_uri.'"';
190                pmb_mysql_query($query,$dbh);
191               
192                //On initialise last_uri.
193                self::$last_uri=$last_uri;
194                return self::$last_uri; 
195        }
196} // end of onto_common_uri
Note: See TracBrowser for help on using the repository browser.