Index: openacs-4/packages/imsld/tcl/imsld-condition-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/tcl/imsld-condition-procs.tcl,v
diff -u -r1.4 -r1.5
--- openacs-4/packages/imsld/tcl/imsld-condition-procs.tcl	27 Jun 2006 16:28:46 -0000	1.4
+++ openacs-4/packages/imsld/tcl/imsld-condition-procs.tcl	28 Jun 2006 10:33:18 -0000	1.5
@@ -54,9 +54,116 @@
     foreach expressionNode $expression {
         switch -- [$expressionNode localName] {
 	    {complete} {
-	        foreach activityNode [$expressionNode childNodes] {
-	            # TODO
+
 		    return 1
+
+	        set activityNode [$expressionNode childNodes] 
+            switch -- [$activityNode localName] {
+            {learning-activity-ref} {
+                                     set la_ref [$activityNode getAttribute {ref}]
+                                     db_1row get_la_id {
+                                                    select ila.activity_id as la_id 
+                                                           iii.imsld_id as imsld_id
+                                                    from imsld_learning_activities ila, 
+                                                         imsld_imsldsi iii, 
+                                                         imsld_componentsi ici, 
+                                                         imsld_runs ir 
+                                                    where ir.run_id=:run_id and 
+                                                          ir.imsld_id=iii.imsld_id and 
+                                                          iii.item_id=ici.imsld_id and 
+                                                          ici.item_id=ila.component_id 
+                                                          and ila.identifier=:la_ref
+                                                      }
+                                    imsld::finish_component_element -imsld_id $imsld_id \
+                                                                    -run_id $run_id \
+                                                                    -element_id $la_id \
+                                                                    -type learning \
+                                                                    -user_id $user_id \
+                                                                    -code_call
+
+                                    }
+            {support-activity-ref} {
+                                   set sa_ref [$activityNode getAttribute {ref}]
+                                   db_1row get_sa_id {
+                                                     select isa.activity_id as sa_id 
+                                                            iii.imsld_id as imsld_id
+                                                            ir.run_id as run_id
+                                                     from imsld_support_activities isa, 
+                                                          imsld_imsldsi iii, 
+                                                          imsld_componentsi ici, 
+                                                          imsld_runs ir 
+                                                     where ir.run_id=:run_id and 
+                                                           ir.imsld_id=iii.imsld_id and 
+                                                           iii.item_id=ici.imsld_id and 
+                                                           ici.item_id=isa.component_id and 
+                                                           isa.identifier=:sa_ref 
+                                                     }
+                                     imsld::finish_component_element -imsld_id $imsld_id \
+                                                                    -run_id $run_id \
+                                                                    -element_id $sa_id \
+                                                                    -type support \
+                                                                    -user_id $user_id \
+                                                                    -code_call
+                                      
+                                   }
+            {unit-of-learning-href} {
+                                    #TODO 
+                                    }
+            {activity-structure-ref} {
+                                    se as_ref [$activityNode getAttribute {ref}]
+                                    db_1row get_as_id {
+                                                      select ias.structure_id as as_id
+                                                      from imsld_activity_structures ias, 
+                                                           imsld_componentsi ici, 
+                                                           imsld_imsldsi iii, 
+                                                           imsld_runs ir 
+                                                      where ir.run_id=:run_id and 
+                                                            ir.imsld_id=iii.imsld_id and 
+                                                            iii.item_id=ici.imsld_id and 
+                                                            ias.component_id=ici.item_id 
+                                                            ias.identifier=:as_ref
+                                                       }
+                                    #TODO meter la funci�n finish
+                                     }
+            {act-ref} {
+                       set actref [$activityNode getAttribute {ref}]
+                       db_1row get_act_id {
+                                          select iai.act_id as act_id
+                                                 imi.imsld_id as imsld_id
+                                                 ipi.play_id as play_id
+                                          from imsld_acts iai, 
+                                               imsld_imsldsi iii, 
+                                               imsld_playsi ipi, 
+                                               imsld_methodsi imi, 
+                                               imsld_runs ir 
+                                          where ir.run_id=:run_id and 
+                                                ir.imsld_id=iii.imsld_id and 
+                                                iii.item_id=imi.imsld_id and 
+                                                imi.item_id=ipi.method_id and 
+                                                ipi.item_id=iai.play_id and
+                                                iai.identifier=:actref
+                                          }
+                      imsld:mark_act_finished -play_id $play_id -imsld_id $imsld_id \
+                                              -act_id $act_id -run_id $run_id -user_id $user_id
+                      }
+            {play-ref} {
+                       set playref [$activityNode getAttribute {ref}]
+                       db_1row get_play_id {
+                                           select ipi.play_id as play_id
+                                                  iii.imsld_id as imsld_id
+                                           from imsld_imsldsi iii, 
+                                                imsld_plays ipi, 
+                                                imsld_methodsi imi, 
+                                                imsld_runs ir 
+                                           where ir.run_id=:run_id and 
+                                                 ir.imsld_id=iii.imsld_id and 
+                                                 iii.item_id=imi.imsld_id and 
+                                                 imi.item_id=ipi.method_id and 
+                                                 ipi.identifier=:playref                
+                                            }
+                       imsld::mark_play_finished -play_id $play_id -imsld_id $imsld_id \
+                                                 -run_id $run_id  -user_id $user_id 
+                       }
 	        }
 	    }
 	    {not} { return [expr ![imsld::expression::eval -run_id $run_id -expression $expressionNode]] }