missconfig for subtables
authorKilian Saffran <ksaffran@dks.lu>
Mon, 24 Jun 2019 19:21:36 +0000 (21:21 +0200)
committerKilian Saffran <ksaffran@dks.lu>
Mon, 24 Jun 2019 19:21:36 +0000 (21:21 +0200)
13 files changed:
backoffice/api/lib/dksapp.pm
backoffice/api/lib/dksconfig.pm
backoffice/api/lib/dksdb.pm
backoffice/api/process.cgi
backoffice/index.cgi
backoffice/js/fieldsave.js
backoffice/tmpl/module/annuaire/index.js
backoffice/tmpl/module/annuaire/index.tt
index.cgi
tmpl/block/domaines.tt
tmpl/block/topnav.tt
tmpl/page/avocat/index.tt
tmpl/page/index.tt

index ac1e3be..b70a61a 100644 (file)
@@ -28,12 +28,24 @@ sub activate_app(){
     $res = $self->{db}->dbexec("update appaccess set expiration=date(case when expiration >= date('".$statusdate."') then expiration + interval '".$duration." month' else date('".$statusdate."') + interval '".$duration." month' end)  where id=".$apacc->{id});
   } else {
     $res = $self->{db}->dbexec("INSERT INTO appaccess (id_user, id_app, publicenabled, expiration) VALUES(".$iduser.", ".$idapp.", null, date('".$statusdate."') + interval '".$duration." month');");
-    if (($apacc->{inittables}) && ($apacc->{inittables} ne "")){
-      my @tbl = split(",",$apacc->{inittables});
-      foreach my $t (@tbl){
-        $self->{db}->dbexec("INSERT INTO ".$t." (id_user)  VALUES (".$iduser.");");
+    # if (($apacc->{inittables}) && ($apacc->{inittables} ne "")){
+    #   my @tbl = split(",",$apacc->{inittables});
+    #   foreach my $t (@tbl){
+    #     
+    #   }
+    # }
+    if ($idapp eq "2"){ #is annauire
+      my $ud = $self->{db}->dbquery("SELECT * from users where id=".$iduser.";");
+      if (exists($ud->{id})){
+        $self->{db}->dbexec("INSERT INTO lawyercatalog (id_user)  VALUES (".$iduser.");");
+        my $profile_link = lc(substr($ud->{username},0,index($ud->{username},0,'@')));
+        my $profexists = $self->{db}->dbquery("SELECT COUNT(*)+1 as cnt from lawyercatalog where profile_link='".$profile_link."';");
+        if ($profexists->{cnt} ne "1"){
+          $profile_link .= $profexists->{cnt};
+        }
+        $self->{db}->dbexec("UPDATE lawyercatalog SET profilelink='".$profile_link."' WHERE id_user=".$iduser.";");
       }
-    } 
+    }
   }
   return $res;
 }
index 13cbc67..3f9cb83 100644 (file)
@@ -12,8 +12,8 @@ our @EXPORT_OK = qw($sitecfg);
 our $sitecfg ={
   cookiename => 'juridig',
   dbtype => 'PgPP',
-  dsn => 'DBI:PgPP:dbname=juridiglu_db;host=sql629.your-server.de',
-  #dsn => 'DBI:PgPP:dbname=juridiglu_db;host=localhost',
+  #dsn => 'DBI:PgPP:dbname=juridiglu_db;host=sql629.your-server.de',
+  dsn => 'DBI:PgPP:dbname=juridiglu_db;host=localhost',
   dbuser => 'juridiglu_user',
   dbpassword => 'hfdR2C9pK9rQV4cH',
   page => 'index.tt',
index 5ebf275..d0a6221 100644 (file)
@@ -180,15 +180,24 @@ sub create_ddl_insert(){
        my $data = shift;
        my $fields = ();
        my @ddl = ();
+
        foreach my $f (keys(%{$data})){
                        if (($f =~ /\_/) && ($f !~ /^ident_/)){
                                my $t = substr($f,0,index($f,"_"));
                                my $c = substr($f,length($t)+1);
                                #my ($t,$c) = $f =~ m/(.+)\_(.+)/;
                                $fields->{$t}->{$c} = $data->{$f};
-                       }
+                       } elsif ($f =~ /^ident_/){
+        my $f2 = $f; 
+        $f2 =~ s/^ident_//;
+
+        my $t = substr($f2,0,index($f2,"_"));
+                               my $c = substr($f2,length($t)+1);
+                               $fields->{$t}->{$c} = $data->{$f};     
+      }
+
                 }
-       
+
        foreach my $tb (keys(%{$fields})){
                my @sqlcol = ();
                my @sqlval = ();
@@ -203,7 +212,7 @@ sub create_ddl_insert(){
                        }
                        push (@sqlval,$v);
                }
-               push(@ddl,"INSERT INTO ".$tb." (".join(",",@sqlcol).") VALUES (".join(",",@sqlval).") returning id;");
+               push(@ddl,"INSERT INTO public.".$tb." (".join(",",@sqlcol).") VALUES (".join(",",@sqlval).") returning id;");
        }
        return @ddl;
 }
@@ -251,7 +260,7 @@ sub create_ddl_insert_json(){
                push (@sqlval,$v);
                #}                      
        }
-       return "INSERT INTO ".$schema.".\"".$table."\" (".join(",",@sqlcol).") VALUES (".join(",",@sqlval).");";
+       return "INSERT INTO public.".$schema.".\"".$table."\" (".join(",",@sqlcol).") VALUES (".join(",",@sqlval).");";
 }
 
 sub create_ddl_update(){
@@ -310,7 +319,39 @@ sub create_ddl_update(){
                                }
                                push (@sqlcond,$c."=".$v);
                        }
-               push(@ddl,"UPDATE ".$tb." SET ".join(",",@sqlupd)." WHERE ".join(" AND ",@sqlcond).";");
+               push(@ddl,"UPDATE public.".$tb." SET ".join(",",@sqlupd)." WHERE ".join(" AND ",@sqlcond).";");
+       } 
+       
+       return @ddl; 
+}
+
+sub create_cnt_statement(){
+       my $self = shift;
+       my $data = shift;
+       my $fields = ();
+       my @ddl = ();
+       foreach my $f (keys(%{$data})){
+                       if ($f =~ /^ident_/){
+                               my $fx = substr($f,6);
+                               my $t = substr($fx,0,index($fx,"_"));
+                               my $c = substr($fx,length($t)+1);
+                               #my ($t,$c) = $f =~ m/^ident_(.+)\_([a-z0-9|\_]+)/;
+                               $fields->{$t}->{cond}->{$c} = $data->{$f};
+                       } 
+                }
+       foreach my $tb (keys(%{$fields})){
+               my @sqlcond = ();
+                       foreach my $c (keys(%{$fields->{$tb}->{cond}})){
+                               my $v = $fields->{$tb}->{cond}->{$c};
+                               $v =~ s/'/''/g;
+                               if ($v eq ''){
+                                       $v = 'null';
+                               } else {
+                                       $v = "'".$v."'";
+                               }
+                               push (@sqlcond,$c."=".$v);
+                       }
+               push(@ddl,"SELECT count(*) as cnt from ".$tb." WHERE ".join(" AND ",@sqlcond).";");
        } 
        
        return @ddl; 
@@ -351,7 +392,7 @@ sub create_ddl_delete(){
                        $v =~ s/'/''/g;
                        push (@sqlcond,$c."='".$v."'");
                }
-               push(@ddl,"DELETE FROM ".$tb." WHERE ".join(" AND ",@sqlcond).";");
+               push(@ddl,"DELETE FROM public.".$tb." WHERE ".join(" AND ",@sqlcond).";");
        } 
        return @ddl;
 }
index 3a1f0f5..185c5b0 100644 (file)
@@ -95,6 +95,7 @@ if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){
       delete $p->{sid};
       my $retid=undef;
       my $type = "upd";
+      my $idexists = 0;
       foreach my $px (keys(%{$p})){
         if ($px eq "lawyercatalog_city"){
           $p->{lawyercatalog_location_link} = $db->textunidecode($p->{$px});
@@ -103,8 +104,12 @@ if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){
         #$p->{$px} = $db->securetext($p->{$px});
 
         if (($px =~ /\_id$/) && ($p->{$px} eq "")){
+          
           $type = "ins";
         }
+        if ($px =~ /^ident\_.+\_id$/){
+          $idexists = 1;
+        }
         if ($p->{$px} =~ /^data:.+;base64,/){
             # $html->{result}->{isfile} = 1;
             
@@ -122,6 +127,20 @@ if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){
             }
         }
       }
+      if (($idexists == 0) && ($type eq "upd")){
+        my @sqlcnt = $db->create_cnt_statement($p);
+        my $rnums = 0;
+            
+        foreach my $s (@sqlcnt){
+          
+          $rnums= $db->dbquery($s);
+        }
+        if ($rnums->{cnt} eq "0"){
+          $type = "ins";
+        } 
+    
+      }
       my @sql = ();
       if ($type eq "ins"){
         @sql = $db->create_ddl_insert($p);
index 2629267..06acaaa 100644 (file)
@@ -25,6 +25,7 @@ $vars->{filepath} = substr($cgi->url({-absolute=>1}),length($vars->{basepath})+1
 $vars->{baseurl} = $cgi->url({-base=>1}).$vars->{basepath};
 $vars->{siteurl} = $cgi->url({-base=>1}).dirname($vars->{basepath});
 if ($vars->{filepath} ne ""){
+  $vars->{suffix} = substr($vars->{filepath},rindex($vars->{filepath},'.')); 
   $vars->{page} = $vars->{filepath};
   $vars->{page} =~ s/html$/tt/;
 }
@@ -118,7 +119,13 @@ if ($p->{sid} ne ""){
 #   $skl = "skeleton/browser.tt";
 # } 
 # #END - Browser Blocking
-print $cgi->header(-type=>'text/html', -charset=>"utf-8",-cookie => $cookie);
+my $ctype = 'text/html';
+if ($vars->{suffix} eq ".js"){
+  $ctype= "text/javascript";
+} elsif ($vars->{suffix} eq ".css"){
+  $ctype = "text/css";
+}
+print $cgi->header(-type=>$ctype, -charset=>"utf-8",-cookie => $cookie);
 # print dirname($ENV{"SCRIPT_FILENAME"});
 
 my $template = Template->new({INCLUDE_PATH => [dirname($ENV{"SCRIPT_FILENAME"}).'/tmpl']});
@@ -160,9 +167,9 @@ $template->process($skl,$vars) || die "Template process failed: ", $template->er
 # }
 
 #  print Dumper($vars);
-#print "/*";
+print "/*";
 # print Dumper($p);
-print Dumper($vars);
+print Dumper($vars);
 # print Dumper($sess);
-#print "*/";
+print "*/";
 
index 1b7ad55..c6ff2cf 100644 (file)
@@ -43,7 +43,7 @@ function savefield(objid){
   var bident = false;
   for (var d in $("#" + objid).data()){
     //if (typeof $("#" + objid).data(d) == "string"){
-    if ((d != "select2Id") && (d != "select2") && (d != "selectpicker")){
+    if ( (d != "select2Id") && (d != "select2") && (d != "selectpicker")){
       
       // if (d.startsWith("ident_")){
       //console.log(d);
@@ -55,7 +55,7 @@ function savefield(objid){
   if (bident == false){
     var frmid=$("#" + objid)[0].form.id;
     for (var idv in $("#" + frmid).data()){
-      if ((idv != "select2Id") && (idv != "select2") && (idv != "selectpicker")){
+      if ( (idv != "select2Id") && (idv != "select2Id") && (idv != "select2") && (idv != "selectpicker")){
         field[idv] = $("#" + frmid).data(idv);
       }
     }
index 42c13dc..7bbc9af 100644 (file)
@@ -42,7 +42,7 @@ $("input,textarea").on('blur',function(event){
   //console.log(event.currentTarget.tagName);
   //console.log(event.currentTarget.type);
   if (event.currentTarget.type != "file"){
-    console.log(savefield);
+    console.log('savefield');
     savefield(event.currentTarget.id);
   }
 });
index 28e7dd2..fda2005 100644 (file)
@@ -1,13 +1,14 @@
 
 [% usercat = dksdb.prepare("select acc.id as access_id, acc.publicenabled, lc.id, lc.id_user, lc.surname, lc.prename, lc.company, lc.email, lc.phone, lc.address, lc.zip, lc.city, lc.description, lc.photo, lc.price, lc.profile_link, lc.court, lc.title, lc.country, lc.languages,lc.council,lc.website,lc.logo 
 from lawyercatalog lc join appaccess acc on (lc.id_user=acc.id_user and id_app in (select id from apps where app='annuaire')) where lc.id_user=? LIMIT 1;") %]
-[% lawyerspecs = dksdb.prepare("select lca.id,lca.selection,ca.id as id_category,category from categories ca  left join lawyercategories lca on (ca.id=lca.id_category and lca.id_catalog=?)  where ca.usertype='avocat' order by category asc;") %]
+[% lawyerspecs = dksdb.prepare("select lca.selection,ca.id as id_category,category from public.categories ca  
+left join public.lawyercategories lca on (ca.id=lca.id_category and lca.id_catalog=?)  where ca.usertype='avocat'  group by ca.id,lca.selection order by ca.category asc;") %]
 
 [% FOREACH cat = usercat.execute(session.id)  %]
 <header>
     <nav class="navbar navbar-expand-md navbar-light fixed-top bg-light">
     <ul class="navbar-nav mr-auto">
-      URL du profile:&nbsp;<a href="[% siteurl %]/avocat/[% cat.profile_link %]" target="_blank">[% siteurl %]/avocat/[% cat.profile_link %].html</a>
+      URL du profile:&nbsp;<a href="[% siteurl %]avocat/[% cat.profile_link %]" target="_blank">[% siteurl %]/avocat/[% cat.profile_link %].html</a>
     </ul>
     <ul class="navbar-nav ml-auto">
           <li class="nav-item">
@@ -190,8 +191,8 @@ from lawyercatalog lc join appaccess acc on (lc.id_user=acc.id_user and id_app i
       <div class="form-inline">
       [% FOREACH specs = lawyerspecs.execute(cat.id) %]
         <div class="custom-control custom-switch" style="width: 200px;"><!--  --><!-- -->
-          <input type="checkbox" class="custom-control-input" data-ident_lawyercategories_id="[% specs.id %]" data-lawyercategories_id_catalog="[% cat.id %]" data-lawyercategories_id_category="[% specs.id_category %]"  value="1" id="category_[% specs.id_category %]" name="lawyercategories_selection"
-          [% IF specs.id %]
+          <input type="checkbox" class="custom-control-input fieldsave" data-ident_lawyercategories_id_catalog="[% cat.id %]" data-ident_lawyercategories_id_category="[% specs.id_category %]"  value="1" id="category_[% specs.id_category %]" name="lawyercategories_selection"
+          [% IF specs.selection %]
           checked
           [% END %]
           >
index c7621fb..c5b38ec 100644 (file)
--- a/index.cgi
+++ b/index.cgi
@@ -9,6 +9,7 @@ use File::Basename qw/dirname basename/;
 use Template;
 # use Template::Constants qw( :debug );
 use CGI;
+use CGI::Carp qw(fatalsToBrowser);
 use CGI::Cookie;
 
 use JSON::PP;
index e68ab11..250b016 100644 (file)
@@ -3,7 +3,11 @@
       <ul class="cat">
         <li>
           <ol class="type">
-            [% FOREACH cats = dksdb.query("select cat.link,cat.category from lawyercategories lcat join categories cat on (lcat.id_category=cat.id) group by cat.id order by category;") %]
+            [% FOREACH cats = dksdb.query("select cat.link,cat.category from lawyercategories lcat 
+join categories cat on (lcat.id_category=cat.id) 
+join lawyercatalog lc on (lcat.id_catalog=lc.id)
+join appaccess ac on (ac.id_user=lc.id_user and ac.id_app='2' and ac.publicenabled = true)
+group by cat.id order by category;") %]
             <li><a href="[% abspath%]domaines/[% cats.link %].html" >[% cats.category %]</a></li>
             
          [% END %] 
index 8f3324c..af55166 100644 (file)
@@ -1,12 +1,12 @@
 <div id="annuairenav"></div>
-<nav class="navbar navbar-expand-lg ">
-  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExample08" aria-controls="navbarsExample08" aria-expanded="false" aria-label="Toggle navigation">
+<nav class="navbar navbar-expand-sm ">
+  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarjuridig" aria-controls="navbarjuridig" aria-expanded="false" aria-label="Toggle navigation">
     <span class="navbar-toggler-icon"></span>
   </button>
 
-  <div class="collapse navbar-collapse justify-content-md-center" id="navbarsExample08">
+  <div class="collapse navbar-collapse justify-content-center" id="navbarjuridig">
     <ul class="navbar-nav">
-     <li class="nav-item"> <a  class="nav-link" href="[% basepath %]">Annuaire</a> </li>
+     <li class="nav-item"> <a  class="nav-link" href="/">Annuaire</a> </li>
           <li class="nav-item"> <a   class="nav-link" href="[% basepath %]/backoffice/register.html">Vous êtes avocat?</a> </li>
           <li class="nav-item"> <a class="nav-link btn btn-secondary" href="[% basepath %]/backoffice/login.html">Se Connecter</a> </li>
       
index 2a4dd12..7e4dc0d 100644 (file)
@@ -19,7 +19,7 @@
         </div>
         <div class="col-sm-3">
             [% IF pr.council %]
-            <span style="text-decoration: underline;">enregistré dans le(s) barreaux:</span>
+            <span style="text-decoration: underline;">Barreau(x) (appartenance):</span>
             <ul style="list-style: none;">
             [% FOREACH cc IN pr.council.split(',') %]
             <li>[% cc %]</li>
@@ -80,7 +80,7 @@
                     </div>
               </div>
               <div class="col-lg-12" style="margin: 10px;">
-                  <h3>Je me présente</h3>
+                
                 <p style="text-align: left;">[% pr.description %]</p>
                 </div>
   [% IF pr.rendezvous %]
index a047e88..8aac4e9 100644 (file)
@@ -9,11 +9,11 @@
       <hr>
     </div>
     [% INCLUDE block/domaines.tt %]
-    <div class="section-title text-center center">
+    <!--<div class="section-title text-center center">
       <h3>Lieus</h3>
       <hr>
-    </div>
-    [% INCLUDE block/locations.tt %]    
+    </div>-->
+    [% INCLUDE block/locations.tt %]    
         
       </div>