Mapeo de un campo tipo lista de constantes a varios campos tipo checkbox
Función que sirve para exportar los campos de una lista de ítems. En particular hay un campo tipo lista de constantes de la tabla de origen que debe mapearse con varios campos tipo de checkbox de la tabla destino. Con este fin se establece una relación de mapeo entre el campo origen y los campos destino a través de un array programado en una función personalizada de las AA. Se usa un script de php.net.
########################################
#tomado de http://www.php.net/array_search
#Author: mjaning at gmail dot com
#Date: 05-Feb-2008 11:42
function array_search_recursive($needle, $haystack,&$tree=Array(),$index=""){
if (is_array($haystack)){
if (count($tree)==0) $tree=array_merge(Array(),$haystack);
foreach($haystack as $k=>$current){
if (is_array($current)){
array_search_recursive($needle,$current,$tree,$index."[$k]");
eval("\$a=\$tree{$index}[{$k}];"); // unset all elements = empty array
if (count($a)==0) //is empty?
eval("unset(\$tree{$index}[$k]);"); // unset array
}
else{
if ($current!=$needle){
eval("unset(\$tree{$index}[{$k}]);");
}
}
}
}
return $tree;
}
##################################################################
function usr_mftypeofwork ($columns, $col, $param) {
#{alias:campo...:f_u:usr_mftypeofwork:typeofwork_fund}
$campo = $columns[$col][0][value];
$parametros = split(":",$param);
list($func,$tema_mf) = $parametros; # $tema_mf es el nombre del tipo de trabajo del MF en ingles
$temas=array(
"typeofwork_fund"=>"Financiamiento",
"typeofwork_res_tech"=>"Investigación",
"typeofwork_capbuilding"=>array("Capacitación / Educación","Docencia"),
"typeofwork_ruraldev"=>"Liderazgo comunitario",
"typeofwork_infoshaing"=>"Periodismo / Media",
"typeofwork_business"=>"Negocios / Emprendimientos",
"typeofwork_advocacy"=>"Activismo",
"typeofwork_network"=>"Trabajo en redes",
"typeofwork_policy"=>array("Desarrollo de políticas","Implementación del proyecto"),
"typeofwork_other"=>array("Incidencia / Conciencia p&uacte;blica","Estudiante","Arte / Filmación","Consultor&iacte;a","Administración")
);
$categorias = split(",",$campo);
$result=array();
foreach ($categorias as $clave=>$valor) {
$result=array_keys(array_search_recursive(htmlentities($valor),$temas)); # busca si el tema en espanol tiene un equiv en ingles
if ($tema_mf==$result[0]) {
//print "lo halle ".$result[0]." ".$valor;
return 1;
break;
}
}
}
===========================
Ejemplo,
Sea el campo Actividades que sera mapeado con tres campos typeofwork_network, typeofwork_advocac, typeofwork_other
|Actividades|
Trabajo en redes,Activismo,Arte
|typeofwork_network|typeofwork_advocacy|typeofwork_other
1 1 1
El campo typeofwork_network sera un campo calculado así
{alias:campo...:f_u:usr_mftypeofwork:typeofwork_fund}
que si encuentra que el campo Actividades tiene correspondencia con el entonces bota el numero 1.
El campo typeofwork_advocacy sera un campo calculado así
{alias:campo...:f_u:usr_mftypeofwork:typeofwork_advocacy}
que si encuentra que el campo Actividades tiene correspondencia con el entonces bota el numero 1.
El campo typeofwork_othersera un campo calculado así
{alias:campo...:f_u:usr_mftypeofwork:typeofwork_other}
que si encuentra que el campo Actividades tiene correspondencia con el entonces bota el numero 1.
El numero 1 equivaldrá a la marca de un checkbox en la tabla destino.
- Inicie sesión o regístrese para enviar comentarios