upgrade 1.1.2 pour XML, MySql et SQLite
[mw_sourceml] / app / data / modules / sql / sml_data_sources.php
index 8e8056e..4c85c2b 100644 (file)
@@ -5,7 +5,7 @@
     var $status;
 
     # ----------------------------------------------------------------------------------------
-    #                                                                         status de source
+    #                                                                        classes de source
     #
 
     function source_status(){
@@ -44,6 +44,7 @@
       $id_composition = isset($params["id_composition"]) ? $params["id_composition"] : null;
       $id_source_derivation = isset($params["id_source_derivation"]) ? $params["id_source_derivation"] : null;
       $id_licence = isset($params["id_licence"]) ? $params["id_licence"] : null;
+      $is_reference = isset($params["is_reference"]) ? $params["is_reference"] : null;
       $order_by = isset($params["order_by"]) ? $params["order_by"] : "ordre";
       $order = isset($params["order"]) ? $params["order"] : "ASC";
       $sgbd = $this->sgbd();
@@ -52,7 +53,7 @@
       $ORDER_FROM_SOURCES_INFOS = !$ORDER_FIELD_EXISTS;
       $sources = array("list" => array(), "total" => 0);
       $COUNT_SELECT = "SELECT count(*) as n";
-      $SELECT = "SELECT #--sml_sources.*, #--sml_sources.id_class as status";
+      $SELECT = "SELECT #--sml_sources.*, #--sml_sources.id_class as `status`";
       if($ORDER_FROM_SOURCES_INFOS){
         if($order_by == "ordre"){
           $SELECT .= ", (0 + #--sml_sources_infos.`value`) as ordre";
        ($WHERE ? " AND " : " WHERE ")
       ." #--sml_sources.id=#--sml_sources_authors.id_source"
       ." AND #--sml_sources_authors.id_author=#--sml_authors.id"
-      ." AND #--sml_authors.id_user=".$this->eq($id_user)
-      ." AND #--sml_sources_authors.id_sources_access=".$this->id_groupe_status_admin();
+      ." AND #--sml_authors.id_user=".$this->eq($id_user)/*
+      ." AND #--sml_sources_authors.id_sources_access=".$this->id_groupe_status_admin()*/;
       if(isset($id_groupe)) $WHERE .=
        ($WHERE ? " AND " : " WHERE ")
       ." #--sml_sources.id=#--sml_sources_authors.id_source"
-      ." AND #--sml_sources_authors.id_author=".$this->eq($id_groupe)
-      ." AND #--sml_sources_authors.id_sources_access=".$this->id_groupe_status_admin();
+      ." AND #--sml_sources_authors.id_author=".$this->eq($id_groupe)/*
+      ." AND #--sml_sources_authors.id_sources_access=".$this->id_groupe_status_admin()*/;
       if(isset($status)) $WHERE .=
        ($WHERE ? " AND " : " WHERE ")
       ." #--sml_sources.id_class=".$this->eq($status);
       if(isset($id_licence)) $WHERE .=
        ($WHERE ? " AND " : " WHERE ")
       ." #--sml_sources.licence=".$this->eq($id_licence);
+      if(isset($is_reference)){
+        $WHERE .= ($WHERE ? " AND " : " WHERE ");
+        if($is_reference){
+          $WHERE .=
+           " #--sml_sources.reference IS NOT NULL"
+          ." AND LENGTH(#--sml_sources.reference) > 0";
+        }
+        else{
+          $WHERE .=
+           " (#--sml_sources.reference IS NULL"
+          ." OR (LENGTH(#--sml_sources.reference) = 0))";
+        }
+      }
       $ORDER_BY = " ORDER BY ".$order_by." ".$order;
       $LIMIT = (isset($start) && $env->config("max_list") ? " LIMIT ".$env->config("max_list")." OFFSET ".$start : "");
       try{
       if(($source["has_derivations"] = $this->source_derivations(array("derivation" => $source["id"]))) === false) return false;
       if(($source["derivations"] = $this->source_derivations(array("id_source" => $source["id"]))) === false) return false;
       if(($source["reference"] = $this->source_reference($source)) === false) return false;
+      if($user = $env->user()){
+        if(($source["permissions"] = $this->source_permissions($source, $user["id"])) === false) return false;
+      }
       if(!$source["reference"])
       { if(($source["documents"] = $this->source_documents($source["id"])) === false) return false;
       }