/** * @file * @brief Others concerned card in an action * @see Follow_Up */ /** * @class Follow_Up_Other_Concerned * @brief Others concerned card in an action * @see Follow_Up */ class Follow_Up_Other_Concerned { private $ag_id; /* !< action_gestion.ag_id */ private $db; /* !< Database handle */ function __construct($p_database, $p_action_gestion_id) { $this->db=$p_database; $this->ag_id=$p_action_gestion_id; } public function get_ag_id() { return $this->ag_id; } public function set_ag_id($ag_id) { $this->ag_id=$ag_id; return $this; } public function get_db() { return $this->db; } public function set_db($cn) { $this->db=$cn; return $this; } /** * Remove another concerned (tiers, supplier...) * @remark type $g_user * @param type $p_fiche_id */ function remove_linked_card($p_fiche_id) { global $g_user; if ($g_user->can_write_action($this->ag_id)) { $this->db->exec_sql('delete from action_person where ag_id = $1 and f_id = $2', array($this->ag_id, $p_fiche_id)); return true; } return false; } /** * Display the count of other concerned card (tiers, supplier...) in button which call * @return string */ function display_linked_count() { $a_linked=$this->db->get_array('select ap_id,f_id from action_person where ag_id=$1', array($this->ag_id)); if (count($a_linked)==0) return "0"; $dossier_id=Dossier::id(); $javascript=<<ag_id};action_concerned_list(obj); EOF; echo HtmlInput::anchor_action(count($a_linked), $javascript, 'linked_card_bt', "button"); } /** * Add another concerned (tiers, supplier...) * @remark type $g_user * @param type $p_fiche_id */ function insert_linked_card($p_fiche_id) { global $g_user; if ($g_user->can_write_action($this->ag_id)) { /** * insert into action_person */ $count=$this->db->get_value('select count(*) from action_person where f_id=$1 and ag_id=$2', array($p_fiche_id, $this->ag_id)); if ($count==0) { $this->db->exec_sql('insert into action_person (ag_id,f_id) values ($1,$2)', array($this->ag_id, $p_fiche_id)); } } } /** * Return a HTML string with a button for adding other cards * @return type */ function button_action_add_concerned_card() { $dossier=Dossier::id(); $javascript=<<ag_id};action_concerned_search_card(obj); EOF; $js=HtmlInput::button_action(_('Ajout autres'), $javascript, 'xx', 'smallbutton'); return $js; } /** * Display one row for all the option of a card * @param int $p_fid card if (fiche.f_id) * @param int $p_row index of the row used for alternate the color of the rows * @param array $aOther Column of the options */ function display_row($p_fid, $p_row, $pa_Column) { static $dossier_id; $dossier_id=Dossier::id(); $action_person_id=$this->db->get_value("select ap_id from action_person where f_id=$1 and ag_id=$2", [$p_fid, $this->ag_id]); // Name , first & quick code from fiche $row=$this->db->get_row("select (select ad_value from fiche_detail fd2 where fd2.f_id=ap.f_id and fd2.ad_id = 1) as xname, (select ad_value from fiche_detail fd2 where fd2.f_id=ap.f_id and fd2.ad_id = 32) as xfirst_name, (select ad_value from fiche_detail fd2 where fd2.f_id=ap.f_id and fd2.ad_id = 23) as xqcode from fiche ap where ap.f_id=$1 ", [$p_fid]); // Detail for this one $detail=HtmlInput::anchor($row['xqcode'], "", sprintf("onclick=\"linked_card_option('%s','%s')\"", $action_person_id, $dossier_id), 'class="line"', _("Options")); // remove card $js_remove=sprintf("action_remove_concerned('%s','%s','%s')", dossier::id(), $p_fid, $this->ag_id); $remove=Icon_Action::trash(uniqid(), $js_remove); $r=<< {$detail} {$row['xname']} {$row['xfirst_name']} EOF; $nb_other=count($pa_Column); for ($i=0; $i<$nb_other; $i++) { $value=$this->db->get_value(" select apo2.ap_value from action_person_option apo2 join action_person ap on (apo2.action_person_id=ap.ap_id) where apo2.contact_option_ref_id =$1 and ap.f_id=$2 and ap.ag_id=$3 ", array($pa_Column[$i]['cor_id'], $p_fid, $this->ag_id)); $r.=td($value); } $r.=''.$remove.''; $r.=''; return $r; } /** * Display all the person with option in a html table */ function display_table() { require_once NOALYSS_TEMPLATE."/follow_up_other_concerned_display_table.php"; } /** * Get Available options */ function get_option() { $aColumn=$this->db->get_array("select cor_id,cor_label,jdoc.jdoc_enable from contact_option_ref cor join jnt_document_option_contact jdoc on (cor.cor_id=jdoc.contact_option_ref_id ) join action_gestion ag on (ag.ag_type=jdoc.document_type_id ) where ag_id=$1 and jdoc.jdoc_enable=1 order by upper(cor_label)", [$this->ag_id]); return $aColumn; } } ?>