g(802)),'CHECKBOX', 'BLOB (FILE)','DATE','RADIOBUTTON','QRCODE'); $sql_type_accountinfo=array('VARCHAR(255)','LONGTEXT','VARCHAR(255)', 'VARCHAR(255)','VARCHAR(255)','BLOB','VARCHAR(10)', 'VARCHAR(255)','VARCHAR(255)'); $convert_type=array('0','1','2','3','5','8','0','11','12'); $array_qr_values=array('URL'=>$l->g(646), 'NAME'=>$l->g(35), 'UID'=>$l->g(1268), 'IPADDR'=>$l->g(34)); $array_qr_action=array('URL'=>array('TYPE'=>'url','VALUE'=>OCSREPORT_URL."/index.php?".PAG_INDEX."=".$pages_refs['ms_computer']."&head=1&systemid=".$_GET['systemid']), 'NAME'=>array('TYPE'=>'bdd','VALUE'=>"hardware.name"), 'UID'=>array('TYPE'=>'bdd','VALUE'=>"hardware.uuid"), 'IPADDR'=>array('TYPE'=>'bdd','VALUE'=>"hardware.ipaddr")); function accountinfo_tab($id){ global $type_accountinfo; $info_tag=find_info_accountinfo($id); if ($info_tag[$id]['type'] == 2 or $info_tag[$id]['type'] == 4 or $info_tag[$id]['type'] == 7){ $info=find_value_field('ACCOUNT_VALUE_'.$info_tag[$id]['name']); return $info; }elseif ( $info_tag[$id]['type'] == 5) return false; return true; //if () } function max_order($table,$field){ $sql="SELECT max(%s) as max_id FROM %s"; $arg=array($field,$table); $result=mysql2_query_secure($sql,$_SESSION['OCS']["readServer"],$arg); $val = mysql_fetch_array( $result ); return $val['max_id']+1; } /* * When you add a new accountinfo * you need to add few fields on * some tables * * */ function add_accountinfo($newfield,$newtype,$newlbl,$tab,$type='COMPUTERS',$default_value){ global $l,$sql_type_accountinfo; if ($type == 'COMPUTERS') $table="accountinfo"; elseif ($type == 'SNMP') $table="snmp_accountinfo"; else{ //msg_error($type); return array('ERROR'=>$type); } //can not contain special characters if(preg_match('/[^0-9A-Za-z]/',$newfield)) return array('ERROR'=> $l->g(1178).' : ' . $l->g(1070) . " " . $l->g(1179) . "
"); $ERROR=dde_exist($newfield,'',$type); $id_order=max_order('accountinfo_config','SHOW_ORDER'); if ($ERROR == ''){ $sql_insert_config="INSERT INTO accountinfo_config (TYPE,NAME,ID_TAB,COMMENT,SHOW_ORDER,ACCOUNT_TYPE,DEFAULT_VALUE) values(%s,'%s',%s,'%s',%s,'%s','%s')"; $arg_insert_config=array($newtype, $newfield, $tab, $newlbl,$id_order,$type,$default_value); mysql2_query_secure($sql_insert_config,$_SESSION['OCS']["writeServer"],$arg_insert_config); $sql_add_column="ALTER TABLE ".$table." ADD COLUMN fields_%s %s default NULL"; $arg_add_column=array(mysql_insert_id($_SESSION['OCS']["writeServer"]),$sql_type_accountinfo[$newtype]); mysql2_query_secure($sql_add_column,$_SESSION['OCS']["writeServer"],$arg_add_column); unset($newfield,$newlbl,$_SESSION['OCS']['TAG_LBL']); //msg_success($l->g(1069)); return array('SUCCESS'=>$l->g(1069)); }else return array('ERROR'=>$ERROR); //msg_error($ERROR); } /* * Del an accountinfo * * */ function del_accountinfo($id){ global $l; //SNMP or COMPUTERS? $sql_found_account_type="SELECT account_type FROM accountinfo_config WHERE id = '%s'"; $arg_found_account_type=$id; $result= mysql2_query_secure($sql_found_account_type,$_SESSION['OCS']["readServer"],$arg_found_account_type); $val = mysql_fetch_array( $result ); if ($val['account_type'] == "SNMP") $table="snmp_accountinfo"; elseif ($val['account_type'] == "COMPUTERS") $table="accountinfo"; else return FALSE; //DELETE INTO CONFIG TABLE $sql_delete_config="DELETE FROM accountinfo_config WHERE ID = '%s'"; $arg_delete_config=$id; mysql2_query_secure($sql_delete_config,$_SESSION['OCS']["writeServer"],$arg_delete_config); //ALTER TABLE ACCOUNTINFO $sql_DEL_column="ALTER TABLE ".$table." DROP COLUMN fields_%s"; $arg_DEL_column=$id; mysql2_query_secure($sql_DEL_column,$_SESSION['OCS']["writeServer"],$arg_DEL_column); unset($_SESSION['OCS']['TAG_LBL']); } /* * * Find all categories of accountinfo * if $onlyactiv exist, return only categories with data inside * */ function find_all_account_tab($tab_value,$onlyactiv='',$first=''){ $sql_tab_account="select IVALUE,TVALUE from config "; if ($onlyactiv != ''){ $sql_tab_account .= ", accountinfo_config"; } $sql_tab_account .= " where config.name like '%s'"; if ($onlyactiv != ''){ $sql_tab_account .= " and accountinfo_config.id_tab=config.ivalue and accountinfo_config.account_type='".$onlyactiv."'"; } $arg_tab_account=$tab_value.'%'; $result_tab_account=mysql2_query_secure($sql_tab_account,$_SESSION['OCS']["readServer"],$arg_tab_account); while ($val_tab_account = mysql_fetch_array( $result_tab_account )){ if (!isset($array_tab_account['FIRST']) and $first != '') $array_tab_account['FIRST']=$val_tab_account['IVALUE']; $array_tab_account[$val_tab_account['IVALUE']]=$val_tab_account['TVALUE']; } return $array_tab_account; } function find_value_field($name){ $array_tab_account=array(); $data= look_config_default_values($name.'\_%',true); if (isset($data['name'])){ foreach ($data['name'] as $field=>$value) { $array_tab_account[$data['ivalue'][$field]]=$data['tvalue'][$field]; } } return $array_tab_account; } /* * Find detail of an accountinfo. * You can have $id = accountinfo_id * or $id=array(accountinfo_id1,accountinfo_id2,accountinfo_id2...) * */ function find_info_accountinfo($id = '',$type='',$exclu_type=''){ $list_field=array('id','type','name','id_tab','comment','show_order','account_type','default_value'); if ($type != ''){ $where=" where account_type='".$type."' "; $and=" and account_type='".$type."' "; }else{ $where=""; $and=""; } if ($exclu_type != ''){ if ($where != ''){ $where.=" and type not in (".$exclu_type.") "; $and.=" and type not in (".$exclu_type.")"; } } if (is_array($id)){ $sql_info_account="select " . implode(',',$list_field) . " from accountinfo_config where id in (%s) ".$and." order by show_order DESC"; $arg_info_account=array(implode(',',$id)); }elseif ($id != ''){ $sql_info_account="select " . implode(',',$list_field) . " from accountinfo_config where id=%s ".$and." order by show_order DESC"; $arg_info_account=array($id); }else{ $sql_info_account="select " . implode(',',$list_field) . " from accountinfo_config ".$where." order by show_order DESC"; $arg_info_account=array(); } $result_info_account=mysql2_query_secure($sql_info_account,$_SESSION['OCS']["readServer"],$arg_info_account); while ($val_info_account = mysql_fetch_array( $result_info_account )){ $array_info_account[$val_info_account['id']]=$val_info_account; } return $array_info_account; } function witch_field_more($account_type = ''){ $list_field=array('ID','TYPE','NAME','COMMENT'); $list_fields=array(); $list_name=array(); $list_type=array(); $sql_accountinfo="select " . implode(',',$list_field) . " from accountinfo_config "; if ($account_type != '') $sql_accountinfo.= " where account_type = '".$account_type."' "; $result_accountinfo = mysql2_query_secure($sql_accountinfo,$_SESSION['OCS']["readServer"]); while($item = mysql_fetch_object($result_accountinfo)){ $list_fields[$item->ID]=$item->COMMENT; $list_name[$item->ID]=$item->NAME; $list_type[$item->ID]=$item->TYPE; } return array('LIST_FIELDS'=>$list_fields,'LIST_NAME'=>$list_name,'LIST_TYPE'=>$list_type); } function update_accountinfo_config($id,$array_new_values){ //Update global $sql_type_accountinfo; $sql_update_config="UPDATE accountinfo_config SET "; $arg_update_config=array(); foreach ($array_new_values as $field=>$value){ if ($field == "TYPE"){ $new_type_field=$sql_type_accountinfo[$value]; } $sql_update_config.="%s='%s', "; array_push($arg_update_config,$field); array_push($arg_update_config,$value); } $sql_update_config = substr($sql_update_config,0,-2); if (is_numeric($id)){ $sql_update_config.=" WHERE ID = '%s'"; array_push($arg_update_config,$id); }else{ $temp_id=explode(',',$id); $sql_update_config.=" WHERE ID IN ("; foreach ($temp_id as $key=>$value){ $sql_update_config.=$value . "%s,"; array_push($arg_update_config,$value); } $sql_update_config = substr($sql_update_config,0,-1) . ")"; } mysql2_query_secure($sql_update_config,$_SESSION['OCS']["writeServer"],$arg_update_config); unset($_SESSION['OCS']['TAG_LBL']); return $new_type_field; } function find_new_order($updown,$id,$type,$onglet){ $tab_order=array(); if (!is_numeric($id) or !is_numeric($onglet)) return false; $sql="select ID,SHOW_ORDER from accountinfo_config where account_type='%s' and id_tab=%s order by show_order"; $arg=array($type,$onglet); $result = mysql2_query_secure($sql,$_SESSION['OCS']["readServer"],$arg); while($item = mysql_fetch_object($result)){ $array_id[]=$item->ID; $array_order[]=$item->SHOW_ORDER; } foreach($array_id as $key=>$value){ if ($array_id[$key] == $id){ if ($updown == 'UP'){ $tab_order['NEW']=$array_id[$key-1]; $tab_order['NEW_VALUE']=$array_order[$key-1]; }else{ $tab_order['NEW']=$array_id[$key+1]; $tab_order['NEW_VALUE']=$array_order[$key+1]; } $tab_order['OLD']=$value; $tab_order['OLD_VALUE']=$array_order[$key]; } } return $tab_order; } /* * update an accountinfo * * */ function update_accountinfo($id,$array_new_values,$type){ global $l,$sql_type_accountinfo; //print_r($array_new_values); $error=dde_exist($array_new_values['NAME'],$id,$type); if ($error == ''){ //Update $new_type_field=update_accountinfo_config($id,$array_new_values); //update column type in accountinfo table $sql_update_column="ALTER TABLE accountinfo change fields_%s fields_%s %s"; $arg_update_column=array($id,$id,$new_type_field); mysql2_query_secure($sql_update_column,$_SESSION['OCS']["writeServer"],$arg_update_column); return array('SUCCESS'=>$l->g(711)); }else{ return array('ERROR'=>$error); } } /* * * Function : is this name of accountinfo exist? * if you put a value to $id, you add a condition * and restraint your search to all other id * */ function dde_exist($name,$id='',$type){ global $l; if (trim($name) != ''){ $sql_verif="SELECT count(*) c FROM accountinfo_config WHERE NAME = '%s' and ACCOUNT_TYPE='%s'"; $arg_verif=array($name,$type); if ($id != '' and is_numeric($id)){ $sql_verif.=" AND ID != %s"; array_push($arg_verif,$id); } $res_verif=mysql2_query_secure($sql_verif,$_SESSION['OCS']["readServer"],$arg_verif); $val_verif = mysql_fetch_array( $res_verif ); //this name is already exist if ($val_verif['c'] > 0) return $l->g(1067); }else //name can't be null return $l->g(1068); return; } /* * *Find all accountinfo for * a computer * */ function admininfo_computer($id = ""){ global $l; if (!is_numeric($id) and $id != "") return $l->g(623); $arg_account_data=array(); $sql_account_data="SELECT * FROM accountinfo "; if (is_numeric($id)){ $sql_account_data.= " WHERE hardware_id=%s"; $arg_account_data=array($id); }else $sql_account_data.= " LIMIT 1 "; $res_account_data=mysql2_query_secure($sql_account_data,$_SESSION['OCS']["readServer"],$arg_account_data); $val_account_data = mysql_fetch_array( $res_account_data ); if (is_array($val_account_data)) return $val_account_data; else return $l->g(1093); } function updateinfo_computer($id,$values,$list=''){ global $l; if (!is_numeric($id) and $list == '') return $l->g(623); $arg_account_data=array(); $sql_account_data="UPDATE accountinfo SET "; foreach ($values as $field=>$val){ $sql_account_data .= " %s='%s', "; array_push($arg_account_data,$field); array_push($arg_account_data,$val); } $sql_account_data = substr($sql_account_data,0,-2); if (is_numeric($id) and $list == '') $sql_account_data.=" WHERE hardware_id=%s"; if ($list != '') $sql_account_data.=" WHERE hardware_id in (%s)"; array_push($arg_account_data,$id); mysql2_query_secure($sql_account_data,$_SESSION['OCS']["readServer"],$arg_account_data); return $l->g(1121); } function updown($field,$type){ global $form_name; if ($type == 'UP'){ return ""; }elseif ($type == 'DOWN'){ return ""; } } function show_accountinfo($id='',$type='',$exclu_type =''){ global $convert_type,$protectedPost; $data=find_info_accountinfo($id,$type,$exclu_type); $i=0; foreach($data as $k=>$v){ foreach ($v as $key=>$value){ switch ($key){ case "id": if ($v['name'] != 'TAG') $name_field[$i]='fields_'.$value; else{ $name_field[$i]=$v['name']; $value_field[$i]=$protectedPost[$v['name']]; } break; case "type": $type_field[$i]=$convert_type[$value]; switch ($value){ case '6': $comment_behing[$i]=datePick('fields_'.$v['id']); $config[$i]['CONFIG']['JAVASCRIPT']="READONLY ".dateOnClick('fields_'.$v['id']); $config[$i]['CONFIG']['SIZE']=7; break; case '4': case '2': case '7': $value_field[$i]=find_value_field("ACCOUNT_VALUE_".$v['name']); $comment_behing[$i]=''; $config[$i]['CONFIG']['DEFAULT']='YES'; break; case '1': $config[$i]['CONFIG']['COLS']=40; $config[$i]['CONFIG']['ROWS']=5; break; default: $comment_behing[$i]=''; $config[$i]['CONFIG']['SIZE']=20; break; } break; case "comment": $tab_name[$i]=$value; break; } } if (!isset($value_field[$i])) $value_field[$i]=$protectedPost['fields_'.$v['id']]; $i++; } return array('FIELDS'=>array('name_field'=>$name_field, 'tab_name'=>$tab_name, 'type_field'=> $type_field, 'value_field'=>$value_field), 'CONFIG'=>$config, 'COMMENT_BEHING'=>$comment_behing); } function insertinfo_computer($id,$fields,$values){ array_push($fields,'hardware_id'); array_push($values,$id); $sql="insert into accountinfo "; $arg_sql=array(); $sql=mysql2_prepare($sql,$arg_sql,$fields,$nocot=true); $sql['SQL'].=" values "; $sql=mysql2_prepare($sql['SQL'],$sql['ARG'],$values); mysql2_query_secure($sql['SQL'],$_SESSION['OCS']["writeServer"],$sql['ARG']); } function replace_tag_value($type='',$option=array()){ $info_tag=find_info_accountinfo('',$type); if (is_array($info_tag)){ foreach ($info_tag as $key=>$value){ $info_value_tag= accountinfo_tab($value['id']); if (is_array($info_value_tag)){ $comment = ''; if (isset($option['comment_be'])) $comment .= $option['comment_be']; $comment .= $value['comment']; if (isset($option['comment_aft'])) $comment .= $option['comment_aft']; $tab_options[$comment] = $info_value_tag; } } } return $tab_options; } function find_value_in_field($tag,$value_2_find,$type='COMPUTERS'){ $p=find_info_accountinfo($tag,$type); $values=look_config_default_values('ACCOUNT_VALUE_'.$p[$tag]['name']."_%",true); if (is_array($values['tvalue'])){ foreach ($values['tvalue'] as $key=>$value){ if (stristr($value, $value_2_find)){ $decoup=explode('_',$key); $fr = array_pop($decoup); $list_tag_id[]=$fr; } } return $list_tag_id; }else return false; } function interprete_accountinfo($list_fields,$tab_options){ global $l; $info_tag=find_info_accountinfo('','COMPUTERS'); if (is_array($info_tag)){ foreach ($info_tag as $key=>$value){ $value['comment']=$l->g(1210)." ".$value['comment']; $info_value_tag= accountinfo_tab($value['id']); if (is_array($info_value_tag)){ $tab_options['REPLACE_VALUE'][$value['comment']]=$info_value_tag; } if ($value['name'] != 'TAG' and $info_value_tag) $list_fields[$value['comment']]='a.fields_'.$value['id']; elseif ($value['name'] == 'TAG'){ $list_fields[$value['comment']]='a.TAG'; $default_value[$value['comment']]=$value['comment']; } } } return array('TAB_OPTIONS'=>$tab_options,'LIST_FIELDS'=>$list_fields,'DEFAULT_VALUE'=>$default_value); } ?>