*
Document ".$doc->anchor().'
'; $doc_ref.=$h2->input().$d_id->input('d_id', $this->d_id); } } // title $title=new IText(); $title->readOnly=$readonly; $title->name="ag_title"; $title->value=$this->ag_title; $title->size=60; $title->style='style="font-size:2rem;font-weight:bold"'; // Priority of the ag_priority $ag_priority=new ISelect(); $ag_priority->readOnly=$readonly; $ag_priority->name="ag_priority"; $ag_priority->selected=$this->ag_priority; $ag_priority->value=array(array('value'=>1, 'label'=>_('Haute')), array('value'=>2, 'label'=>_('Normale')), array('value'=>3, 'label'=>_('Basse')) ); $str_ag_priority=$ag_priority->input(); // hour of the action (meeting) ag_hour $ag_hour=new IText(); $ag_hour->readOnly=$readonly; $ag_hour->name="ag_hour"; $ag_hour->value=$this->ag_hour; $ag_hour->size=6; $ag_hour->javascript=" onblur=check_hour('ag_hour');"; $str_ag_hour=$ag_hour->input(); // Profile in charged of the action $ag_dest=new ISelect(); $ag_dest->readOnly=$readonly; $ag_dest->name="ag_dest"; // select profile $aAg_dest=$this->db->make_array("select p_id as value, ". "p_name as label ". " from profile where p_id in ".$g_user->sql_writable_profile()." order by 2"); $ag_dest->value=$aAg_dest; $ag_dest->selected=$this->ag_dest; $str_ag_dest=$ag_dest->input(); // ag_ref // Always false for update $client_label=new ISpan(); /* Add button */ $f_add_button=new IButton('add_card'); $f_add_button->label=_('Créer une nouvelle fiche'); $f_add_button->set_attribute('ipopup', 'ipop_newcard'); $filter=$this->db->make_list('select fd_id from fiche_def '); $f_add_button->set_attribute('filter', $filter); $f_add_button->javascript=" select_card_type(this);"; $str_add_button=$f_add_button->input(); // f_id_dest sender if ($this->qcode_dest!=NOTFOUND&&noalyss_strlentrim($this->qcode_dest)!=0) { $tiers=new Fiche($this->db); $tiers->get_by_qcode($this->qcode_dest); $qcode_dest_label=strtoupper($tiers->get_attribute(1)); $qcode_dest_label.=" ".$tiers->get_attribute(ATTR_DEF_FIRST_NAME,0); $this->f_id_dest=$tiers->id; } else { $qcode_dest_label=($this->f_id_dest==0||trim($this->qcode_dest??"")=="")?'Interne ':'Error'; } $h_ag_id=new IHidden(); // if concerns another action : show the link otherwise nothing // // sender $w=new ICard(); $w->readOnly=$readonly; $w->jrn=0; $w->name='qcode_dest'; $w->value=($this->f_id_dest!=0)?$this->qcode_dest:""; $w->label=""; $list_recipient=$this->db->make_list('select fd_id from fiche_def'); $w->extra=$list_recipient; $w->set_attribute('typecard', $list_recipient); $w->set_dblclick("fill_ipopcard(this);"); $w->set_attribute('ipopup', 'ipopcard'); // name of the field to update with the name of the card $w->set_attribute('label', 'qcode_dest_label'); // name of the field to update with the name of the card $w->set_attribute('typecard', $w->extra); $w->set_function('fill_data'); $w->javascript=sprintf(' onchange="fill_data_onchange(\'%s\');" ', $w->name); $sp=new ISpan(); $sp->extra='class="text-"'; $sp->name='qcode_dest_label'; $sp->value=$qcode_dest_label; // autre - a refaire pour avoir plusieurs fiches // Sur le modèle des tags $ag_contact=new ICard(); $ag_contact->readOnly=$readonly; $ag_contact->jrn=0; $ag_contact->name='ag_contact'; $ag_contact->value=''; $ag_contact->set_attribute('ipopup', 'ipopcard'); if ($this->ag_contact!=0) { $contact=new Fiche($this->db, $this->ag_contact); $ag_contact->value=$contact->get_quick_code(); } $ag_contact->label=""; $list_contact=$this->db->make_list('select fd_id from fiche_def where frd_id=16'); $ag_contact->extra=$list_contact; $ag_contact->set_dblclick("fill_ipopcard(this);"); // name of the field to update with the name of the card $ag_contact->set_attribute('label', 'ag_contact_label'); // name of the field to update with the name of the card $ag_contact->set_attribute('typecard', $list_contact); $ag_contact->set_function('fill_data'); $ag_contact->javascript=sprintf(' onchange="fill_data_onchange(\'%s\');" ', $ag_contact->name); $spcontact=new ISpan(); $spcontact->name='ag_contact_label'; $spcontact->value=''; $fiche_contact=new Fiche($this->db,$this->ag_contact); if ($fiche_contact->id!=0) { $spcontact->value=strtoupper($fiche_contact->get_attribute(ATTR_DEF_NAME)??""); $spcontact->value.=" ".$fiche_contact->get_attribute(ATTR_DEF_FIRST_NAME,0); } $h_agrefid=new IHidden(); $iag_ref=new IText("ag_ref"); $iag_ref->value=$this->ag_ref; $iag_ref->readOnly=false; $iag_ref->css_size="100%"; $str_ag_ref=$iag_ref->input(); // Preparing the return string $r=""; /* for new files */ $upload=new IFile(); $upload->name="file_upload[]"; $upload->set_multiple(true); $upload->setAlertOnSize(true); $upload->readOnly=$readonly; $upload->value=""; $aAttachedFile=$this->db->get_array('select d_id,d_filename,d_description,d_mimetype,'. '\'export.php?act=RAW:document&'. Dossier::get().'&d_id=\'||d_id as link'. ' from document where ag_id=$1', array($this->ag_id)); /* create the select for document */ $aDocMod=new ISelect(); $aDocMod->name='doc_mod'; $aDocMod->value=$this->db->make_array('select md_id,dt_value||\' : \'||md_name as md_name'. ' from document_modele join document_type on (md_type=dt_id)'. " where md_affect ='GES' and md_type = $1 ". ' order by md_name',0,[$this->dt_id]); $str_select_doc=$aDocMod->input(); /* if no document then do not show the generate button */ if (empty($aDocMod->value)) $str_submit_generate=""; else $str_submit_generate=HtmlInput::submit("generate", _("Génére le document")); $ag_id=$this->ag_id; /* fid = Icard */ $icard=new ICard(); $icard->jrn=0; $icard->table=0; $icard->extra2='QuickCode'; $icard->noadd="no"; $icard->extra='all'; /* Text desc */ $text=new IText(); $num=new INum(); /* Add the needed hidden values */ $r.=dossier::hidden(); $r.=HtmlInput::request_to_hidden(array("closed_action", "remind_date_end", "remind_date", "sag_ref", "only_internal", "state", "qcode", "ag_dest_query", "action_query", "tdoc", "date_start", "date_end", "hsstate", "searchtag")); $a_tag=$this->tag_get(); $menu=new Default_Menu(); /* get template */ ob_start(); require NOALYSS_TEMPLATE.'/follow_up-display.php'; $content=ob_get_contents(); ob_end_clean(); $r.=$content; //hidden $r.=""; $r.=$h2->input(); $r.=$h_ag_id->input('ag_id', $this->ag_id); $hidden2=new IHidden(); $r.=$hidden2->input('f_id_dest', $this->f_id_dest); $r.="
"; return $r; } //---------------------------------------------------------------------- /** * \brief This function shows the detail of an action thanks the ag_id */ function get() { $sql="select ag_id,to_char (ag_timestamp,'DD.MM.YYYY') as ag_timestamp,". " f_id_dest,ag_title,ag_ref,d_id,ag_type,ag_state, ag_owner, ". " ag_dest, ag_hour, ag_priority, ag_contact,to_char (ag_remind_date,'DD.MM.YYYY') as ag_remind_date ". " from action_gestion left join document using (ag_id) where ag_id=".$this->ag_id; $r=$this->db->exec_sql($sql); $row=Database::fetch_all($r); if ($row==false) { $this->ag_id=0; return; } $this->ag_timestamp=$row[0]['ag_timestamp']; $this->ag_contact=$row[0]['ag_contact']; $this->f_id_dest=$row[0]['f_id_dest']; $this->ag_title=$row[0]['ag_title']; $this->ag_type=$row[0]['ag_type']; $this->ag_ref=$row[0]['ag_ref']; $this->ag_state=$row[0]['ag_state']; $this->d_id=$row[0]['d_id']; $this->ag_dest=$row[0]['ag_dest']; $this->ag_hour=$row[0]['ag_hour']; $this->ag_priority=$row[0]['ag_priority']; $this->ag_remind_date=$row[0]['ag_remind_date']; $this->ag_owner=$row[0]['ag_owner']; $action_detail=new Follow_Up_Detail($this->db); $action_detail->set_parameter('ag_id', $this->ag_id); $this->aAction_detail=$action_detail->load_all(); // if there is no document set 0 to d_id if ($this->d_id=="") $this->d_id=0; // if there is a document fill the object if ($this->d_id!=0) { $this->state=$row['0']['ag_state']; $this->ag_state=$row[0]['ag_state']; } $this->dt_id=$this->ag_type; $aexp=new Fiche($this->db, $this->f_id_dest); $this->qcode_dest=$aexp->get_attribute(ATTR_DEF_QUICKCODE); } /** * \brief Save the document and propose to save the generated document or * to upload one, the data are included except the file. Temporary the generated * document is save. * The files into $_FILES['file_upload'] will be saved * @note the array $_POST['input_desc'] must be set, contains the description * of the uploaded files * * \return */ function save() { $str_file=""; $add_file=''; // f_id exp $exp=new Fiche($this->db); $exp->get_by_qcode($this->qcode_dest); $exp->id=($exp->id==0)?null:$exp->id; $contact=new Fiche($this->db); $contact->get_by_qcode($this->ag_contact); if (trim($this->ag_title??"")=="") { $doc_mod=new document_type($this->db); $doc_mod->dt_id=$this->dt_id; $doc_mod->get(); $this->ag_title=$doc_mod->dt_value; } $this->ag_id=$this->db->get_next_seq('action_gestion_ag_id_seq'); $seq_name="seq_doc_type_".$this->dt_id; // to avoid duplicate do { // Create the reference $ag_ref=$this->db->get_value('select dt_prefix from document_type where dt_id=$1', array($this->dt_id)).'-'.$this->db->get_next_seq($seq_name); // if reference does not exist , finish the loop if ( $this->db->get_value("select count(*) from action_gestion where ag_ref = $1",array($ag_ref)) == 0) break; } while (1); // check if the reference already exist and try to compute new one $this->ag_ref=$ag_ref; // save into the database if ($this->ag_remind_date!=null||$this->ag_remind_date!='') { $sql="insert into action_gestion". "(ag_id,ag_timestamp,ag_type,ag_title,f_id_dest,ag_ref, ag_dest, ". " ag_hour, ag_priority,ag_owner,ag_contact,ag_state,ag_remind_date) ". " values ($1,to_date($2,'DD.MM.YYYY'),$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,to_date($13,'DD.MM.YYYY'))"; } else { $this->ag_remind_date=null; $sql="insert into action_gestion". "(ag_id,ag_timestamp,ag_type,ag_title,f_id_dest,ag_ref, ag_dest, ". " ag_hour, ag_priority,ag_owner,ag_contact,ag_state,ag_remind_date) ". " values ($1,to_date($2,'DD.MM.YYYY'),$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13)"; } $this->db->exec_sql($sql, array($this->ag_id, /* 1 */ $this->ag_timestamp, /* 2 */ $this->dt_id, /* 3 */ $this->ag_title, /* 4 */ $exp->id, /* 5 */ $this->ag_ref, /* 6 */ $this->ag_dest, /* 7 */ $this->ag_hour, /* 8 */ $this->ag_priority, /* 9 */ $_SESSION[SESSION_KEY.'g_user'], /* 10 */ $contact->id, /* 11 */ $this->ag_state, /* 12 */ $this->ag_remind_date /* 13 */ ) ); $http=new HttpInput(); $nb_item=$http->post("nb_item","number",0); /* insert also the details */ for ($i=0; $i<$nb_item; $i++) { $act=new Follow_Up_Detail($this->db); $act->from_array($_POST, $i); if ($act->f_id==0) continue; $act->ag_id=$this->ag_id; $act->save(); } /* upload the documents */ $doc=new Document($this->db); $doc->upload($this->ag_id); if (noalyss_trim($this->ag_comment??"")!='' && Document_Option::can_add_comment($this->ag_id)) { $this->db->exec_sql("insert into action_gestion_comment (ag_id,tech_user,agc_comment,agc_comment_raw) values ($1,$2,$3,$4)" , array($this->ag_id, $_SESSION[SESSION_KEY.'g_user'], strip_tags($this->ag_description),$this->ag_comment)); } if (noalyss_trim($this->ag_description)!='' && Document_Option::can_add_comment($this->ag_id)) { $this->db->exec_sql("insert into action_gestion_comment (ag_id,tech_user,agc_comment,agc_comment_raw) values ($1,$2,$3,$4)" , array($this->ag_id, $_SESSION[SESSION_KEY.'g_user'],strip_tags($this->ag_description), $this->ag_description)); } $this->insert_operation(); $this->insert_action(); } /** * @brief return the SQL to make a list of actions * Colum : * - my_date string date action format DD.MM.YYYY * - my_remind string date reminder format DD.MM.YYYY * - last_comment_date_str string last colemnt format DD.MM.YYYY * - last_comment_date date last comment * - f_id_dest int fiche.f_id concerned card * - s_value string state of the action (cloturé, à suivre ,...) * - s_id int id of document_state * - ag_title string Title of the follow-up * - dt_value string Type of document * - ag_ref, string ref of the action * - ag_priority int priority of the action * - ag_state, int state of the followup (see table : document_state ) * - dest string profil group * - name string name of the recipient * - qcode string qcode of the recipient * - tag string list of tags separated by comma * - tags_color string list of tag colors separated by comma * @returns a SQL string to retrieve list of actions */ public static function SQL_list_action():string { $sql = " select ag.ag_id,to_char(ag.ag_timestamp,'DD.MM.YYYY') as my_date, to_char(ag_remind_date,'DD.MM.YYYY') as my_remind, f_id_dest, s_id, s_value, ag_title,dt_value,ag_ref, ag_priority,ag_state, coalesce((select p_name from profile where p_id=ag_dest),'Aucun groupe') as dest, (select ad_value from fiche_Detail where f_id=ag.f_id_dest and ad_id=1) as name, (select ad_value from fiche_Detail where f_id=ag.f_id_dest and ad_id=23) as qcode, array_to_string((select array_agg(t1.t_tag) from action_tags as a1 join tags as t1 on (a1.t_id=t1.t_id) where a1.ag_id=ag.ag_id ),',') as tags, array_to_string((select array_agg(t1.t_color) from action_tags as a1 join tags as t1 on (a1.t_id=t1.t_id) where a1.ag_id=ag.ag_id ),',') as tags_color, last_comment_date, to_char(last_comment_date,'DD.MM.YY') last_comment_date_str from action_gestion as ag join document_type on (ag_type=dt_id) join document_state on (ag_state=s_id) left join (select agc.ag_id,max(agc.agc_date) last_comment_date from action_gestion_comment agc group by agc.ag_id) last_comment on (last_comment.ag_id=ag.ag_id) "; return $sql; } /** * @brief myList($p_base, $p_filter = "", $p_search = "") * Show list of action by default if sorted on date * @param $p_base base url with ac... * @param $p_filter filters on the document_type * @param $p_search must a valid sql command ( ex 'and ag_title like upper('%hjkh%')) * @see Follow_Up::create_query() * @return string containing html code */ function myList($p_base, $p_filter="", $p_search="") { // for the sort $arg=HtmlInput::get_to_string(array("closed_action", "remind_date_end", "remind_date", "sag_ref", "only_internal", "state", "qcode", "ag_dest_query", "action_query", "tdoc", "date_start", "date_end", "hsstate", "searchtag"),""); $arg=($arg!="")?"&$arg":""; $url=$p_base.$arg; $table=new Sort_Table(); // 0 $table->add(_('Date Doc.'), $url, 'order by ag_timestamp asc', 'order by ag_timestamp desc', 'da', 'dd'); //1 $table->add(_('Date Limite'), $url, 'order by ag_remind_date asc nulls last', 'order by ag_remind_date desc nulls last', 'ra', 'rd'); //2 $table->add(_('Réf.'), $url, 'order by ag_ref asc', 'order by ag_ref desc', 'ra', 'rd'); //3 $table->add(_('Etiquette'), $url, 'order by tags asc nulls last', 'order by tags desc nulls last', 'taa', 'tad'); //4 $table->add(_('Groupe'), $url, "order by coalesce((select p_name from profile where p_id=ag_dest),'Aucun groupe')", "order by coalesce((select p_name from profile where p_id=ag_dest),'Aucun groupe') desc", 'dea', 'ded'); //5 $table->add(_('Dest/Exp'), $url, 'order by qcode asc nulls last', 'order by qcode desc nulls last', 'ea', 'ed'); //6 $table->add(_('Titre'), $url, 'order by ag_title asc', 'order by ag_title desc', 'ta', 'td'); //7 $table->add(_('Etat'), $url, 'order by s_value asc', 'order by s_value desc', 'ea', 'ed'); // 8 $table->add(_('Dernier comm.'), $url, 'order by coalesce(last_comment_date, ag.ag_timestamp) asc', 'order by coalesce(last_comment_date, ag.ag_timestamp) desc', 'dca', 'dcd'); // 9 $table->add(_('Priorité'), $url, 'order by ag_priority ', 'order by ag_priority desc ', 'pra', 'prd'); $http=new HttpInput(); $ord=$http->get("ord","string","dcd"); $sort=$table->get_sql_order($ord); if (noalyss_strlentrim($p_filter)!=0) $p_filter_doc=" dt_id in ( $p_filter )"; else $p_filter_doc=" 1=1 "; // make SQL to find the action $sql=Follow_Up::SQL_list_action()." where $p_filter_doc $p_search $sort"; $max_line=$this->db->count_sql($sql); $step=$_SESSION[SESSION_KEY.'g_pagesize']; $http=new HttpInput(); $page=(isset($_GET['offset']))?$http->get("page","number"):1; $offset=(isset($_GET['offset']))?Database::escape_string($http->get('offset',"number")):0; if ($step!=-1) $limit=" LIMIT $step OFFSET $offset "; else $limit=''; $bar=navigation_bar($offset, $max_line, $step, $page); $Res=$this->db->exec_sql($sql.$limit); $a_row=Database::fetch_all($Res); $r=""; $r.=HtmlInput::filter_table('mylist_tb', '1,2,3,4,5,6,7,8,9',1); $r.=''.$bar.'
'; $r.=''.$bar.'
'; $r.=ICheckBox::javascript_set_range("action_followup_ck"); return $r; } /** * @brief display list of followup , used with card * @param $query string SQL query * @param $extra_sql string extra to add to the query , example "limit 20" * @return void */ function view_list($query,$extra_sql="") { $sql=Follow_Up::SQL_list_action(); $sql = " $sql $query order by ag_timestamp desc $extra_sql"; require_once NOALYSS_TEMPLATE."/follow_up-view_list.php"; } //---------------------------------------------------------------------- /** * \brief Update the data into the database, the field ag_description could contain some HTML tags and must be * saved in 2 column : one without formatting , one with. * @code [p_jrn] => [sa] => [gDossier] => 25 [p_jrn_deb_max_line] => 10 [p_ech_lib] => echeance [p_jrn_type] => FIN [p_jrn_name] => Financier [bank] => COMPTE [min_row] => 5 [p_description] => Concerne tous les mouvements financiers (comptes en banque, caisses, visa...) [jrn_def_pj_pref] => FIN [jrn_def_pj_seq] => 0 [jrn_enable] => 1 [FIN_FICHEDEB] => (fd_id ) [defaultCurrency] * [action_frm] => update @endcode * * @note [defaultCurrency] => 0 exists in the array if the bank account has no operation and the currency can * be set * * \return true on success otherwise false */ function update() { // if ag_id == 0 nothing to do if ($this->ag_id==0) return; // retrieve customer // f_id if (trim($this->qcode_dest??"")=="") { // internal document $this->f_id_dest=null; // internal document } else { $tiers=new Fiche($this->db); if ($tiers->get_by_qcode($this->qcode_dest)== 1) // Error we cannot retrieve this qcode $this->f_id_dest=null; // internal document else $this->f_id_dest=$tiers->id; } $contact=new Fiche($this->db); if ($contact->get_by_qcode($this->ag_contact)== 1) $contact->id=null; // reload the old one $old=new Follow_Up($this->db); $old->ag_id=$this->ag_id; $old->get(); // If ag_ref changed then check if unique if ($old->ag_ref!=$this->ag_ref) { $nAg_ref=$this->db->get_value("select count(*) from action_gestion where ag_ref=$1", array($this->ag_ref)); if ($nAg_ref!=0) { echo h2("Référence en double, référence non sauvée", 'class="error"'); $this->ag_ref=$old->ag_ref; } } if ($this->ag_remind_date!=null) { $this->db->exec_sql("update action_gestion set ". " ag_timestamp=to_date($1,'DD.MM.YYYY'),". " ag_title=$2,". " ag_type=$3, ". " f_id_dest=$4, ". "ag_state=$5,". " ag_hour = $7 ,". " ag_priority = $8 ,". " ag_dest = $9 , ". " ag_contact = $10, ". " ag_ref = $11, ". " ag_remind_date=to_date($12,'DD.MM.YYYY') ". " where ag_id = $6", array( $this->ag_timestamp, /* 1 */ $this->ag_title, /* 2 */ $this->dt_id, /* 3 */ $this->f_id_dest, /* 4 */ $this->ag_state, /* 5 */ $this->ag_id, /* 6 */ $this->ag_hour, /* 7 */ $this->ag_priority, /* 8 */ $this->ag_dest, /* 9 */ $contact->id, /* 10 */ $this->ag_ref, /* 11 */ $this->ag_remind_date /* 12 */ )); } else { $this->db->exec_sql("update action_gestion set ". " ag_timestamp=to_date($1,'DD.MM.YYYY'),". " ag_title=$2,". " ag_type=$3, ". " f_id_dest=$4, ". "ag_state=$5,". " ag_hour = $7 ,". " ag_priority = $8 ,". " ag_dest = $9 , ". " ag_contact = $10, ". " ag_ref = $11, ". " ag_remind_date=null ". " where ag_id = $6", array( $this->ag_timestamp, /* 1 */ $this->ag_title, /* 2 */ $this->dt_id, /* 3 */ $this->f_id_dest, /* 4 */ $this->ag_state, /* 5 */ $this->ag_id, /* 6 */ $this->ag_hour, /* 7 */ $this->ag_priority, /* 8 */ $this->ag_dest, /* 9 */ $contact->id, /* 10 */ $this->ag_ref /* 11 */ )); } // upload documents $doc=new Document($this->db); $document_saved=$doc->upload($this->ag_id); /* save action details */ $http=new HttpInput(); $nb_item=$http->post("nb_item","number",0); for ($i=0; $i< $nb_item ; $i++) { $act=new Follow_Up_Detail($this->db); $act->from_array($_POST, $i); if ($act->f_id==0&&$act->ad_id!=0) $act->delete(); if ($act->f_id==0) continue; $act->save(); } if (trim(strip_tags($this->ag_comment??"")) !='') { $notag_comment=strip_tags($this->ag_comment); $action_comment_id=$this->db->get_value("insert into action_gestion_comment (ag_id,tech_user,agc_comment,agc_comment_raw) values ($1,$2,$3,$4) returning agc_id" , array($this->ag_id, $_SESSION[SESSION_KEY.'g_user'], $notag_comment,$this->ag_comment)); // saved also documents for this comment if ( ! empty ($document_saved) && Document_Option::is_enable_comment($this->dt_id)) { foreach ($document_saved as $document_id) { $this->db->exec_sql("insert into action_comment_document(document_id,action_gestion_comment_id) values ($1,$2)", [$document_id,$action_comment_id]); } } } if (trim(strip_tags($this->ag_description??""))!='' ) { if ( $this->ag_description_id <0) $this->ag_description_id = $this->db->get_value(" insert into action_gestion_comment (ag_id,tech_user,agc_comment,agc_comment_raw) values ($1,$2,$3,$4) returning agc_id" , array($this->ag_id, $_SESSION[SESSION_KEY.'g_user'],strip_tags($this->ag_description), $this->ag_description)); else $this->db->exec_sql(" update action_gestion_comment set agc_comment = $1 , agc_comment_raw = $2, tech_user= $3 where agc_id = $4 " , array(strip_tags($this->ag_description), $this->ag_description, $_SESSION[SESSION_KEY.'g_user'], $this->ag_description_id)); if ( ! empty ($document_saved)) { foreach ($document_saved as $document_id) { $this->db->exec_sql("insert into action_comment_document(document_id,action_gestion_comment_id) values ($1,$2)", [$document_id,$this->ag_description_id]); } } } $this->insert_operation(); $this->insert_action(); return true; } /** * \brief generate the document and add it to the action * \param md_id is the id of the document_modele * \param $p_array contains normally the $_POST */ function generate_document($md_id, $p_array) { $doc=new Document($this->db); $mod=new Document_Modele($this->db, $md_id); $mod->load(); $doc->f_id=$this->f_id_dest; $doc->md_id=$md_id; $doc->ag_id=$this->ag_id; $doc->Generate($p_array,$this->ag_id); } /** * \brief put an array in the variable member, the indice * is the member name * \param $p_array to parse * - ag_id id of the Follow_up * - ag_ref reference of the action * - qcode_dest quick_code of the card of dest * - f_id_dest f_id of the card of dest * - dt_id Document_Modele::dt_id * - ag_state document_state::s_id (default:2) * - ag_title title of the action * - ag_hour * - ag_dest Profile, profile of the user * - ag_comment comment * - ag_remind_date Remind Date * - operation related operation * - action related action * - op deprecated * \return nothing */ function fromArray($p_array) { global $g_user; $http=new HttpInput(); $http->set_array($p_array); $this->ag_id=$http->extract("ag_id","number",0); $this->ag_ref=$http->extract("ag_ref","string",""); $this->qcode_dest=$http->extract("qcode_dest","string",""); $this->f_id_dest=$http->extract("f_id_dest","string",null); $this->ag_timestamp=$http->extract("ag_timestamp","string",date('d.m.Y')); $this->ag_timestamp=(isDate($this->ag_timestamp)==0)?date('d.m.Y'):$this->ag_timestamp; $this->dt_id=$http->extract("dt_id","string",""); $this->ag_state=$http->extract("ag_state","number",2); $this->ag_title=$http->extract("ag_title","string",""); $this->ag_hour=$http->extract("ag_hour","string",""); $this->ag_dest=$http->extract("ag_dest","string",$g_user->get_profile()); $this->ag_priority=$http->extract("ag_priority","string","2"); $this->ag_contact=$http->extract("ag_contact","string",""); $ag_comment=trim($http->extract("ag_comment","raw","")); if ( strip_tags($ag_comment) == '') $this->ag_comment=''; else $this->ag_comment=$ag_comment; $ag_description=trim($http->extract("ag_description","raw","")); if ( strip_tags($ag_description) == '') $this->ag_description=''; else $this->ag_description=$ag_description; $this->ag_description_id=$http->extract("ag_description_id","string",-1); $this->ag_remind_date=$http->extract("ag_remind_date","string",null); $this->operation=$http->extract("operation","string",null); $this->action=$http->extract("action","string",null); } /** * \brief remove the action * */ function remove() { $this->get(); // remove the key $sql="delete from action_gestion where ag_id=$1"; $this->db->exec_sql($sql, array($this->ag_id)); /* check the number of attached document */ $doc=new Document($this->db); $aDoc=$doc->get_all($this->ag_id); if (!empty($aDoc)) { // if there are documents for ($i=0; $i- -
'; } } function tag_clear() { $this->db->exec_sql('delete from action_tags where ag_id=$1', array($this->ag_id)); } static function action_set_state($cn, $p_array) { global $g_user; $mag_id=$p_array['mag_id']; $state=$p_array['ag_state']; for ($i=0; $i