marche avec MySql, SQLite ou XML
[mw_sourceml] / app / data / modules / xml / sml_data_licences.php
diff --git a/app/data/modules/xml/sml_data_licences.php b/app/data/modules/xml/sml_data_licences.php
new file mode 100644 (file)
index 0000000..0953652
--- /dev/null
@@ -0,0 +1,96 @@
+<?php
+
+  class sml_data_licences extends mw_data
+  {
+
+    function licences($start = null)
+    { $sgbd = $this->sgbd();
+      $env = $this->env();
+      $licences = array("list" => array(), "total" => 0);
+      if($rst = $sgbd->open_data("sml_licences"))
+      { while($v_rst = $sgbd->fetch_data($rst))
+        { if(isset($v_rst))
+          { $licences["total"]++;
+            if(!isset($start) || !$env->config("max_list") || ($licences["total"] > $start && $licences["total"] < ($start + $env->config("max_list"))))
+            { $licences["list"][$v_rst["id"]] = $v_rst;
+            }
+          }
+          else
+          { $licences = false;
+            break;
+          }
+        }
+        $sgbd->close_data($rst);
+      }
+      else $licences = false;
+      return $licences;
+    }
+
+    function licence($id)
+    { if($id == 0) return $id;
+      $sgbd = $this->sgbd();
+      return $sgbd->get_data("sml_licences", $id);
+    }
+
+    function add_licence($nom, $url)
+    { $sgbd = $this->sgbd();
+      return $sgbd->add_data
+      ( "sml_licences",
+        array
+        ( "nom" => $nom,
+          "url" => $url
+        )
+      );
+    }
+
+    function set_licence($id, $nom, $url)
+    { if(($licence = $this->licence($id)) !== false)
+      { $sgbd = $this->sgbd();
+        if($nom != $licence["nom"] || $url != $licence["url"])
+        { $licence["nom"] = $nom;
+          $licence["url"] = $url;
+          if(!$this->maj_source_xml_licence($licence)) return false;
+        }
+        return $sgbd->set_data
+        ( "sml_licences",
+          $id,
+          array
+          ( "nom" => $nom,
+            "url" => $url
+          )
+        );
+      }
+      return false;
+    }
+
+    function del_licence($id)
+    { $OK = true;
+      $USED = false;
+      $sgbd = $this->sgbd();
+      $env = $this->env();
+      if($rst = $sgbd->open_data("sml_sources"))
+      { while($source = $sgbd->fetch_data($rst))
+        { if(isset($source))
+          { if($source["licence"] == $id)
+            { $USED = true;
+              break;
+            }
+          }
+          else
+          { $OK = false;
+            break;
+          }
+        }
+        $sgbd->close_data($rst);
+      }
+      else $OK = false;
+      if($OK)
+      { if($USED) return 1;
+        return $sgbd->del_data("sml_licences", $id) ? true : false;
+      }
+      return false;
+    }
+
+  }
+
+?>
\ No newline at end of file