Query) ? $this->Query : 'Search'; $fields = new FieldSet( new TextField("Search", "", $searchText) ); $actions = new FieldSet( new FormAction('results', 'Go') ); return new SearchForm($this, "SearchForm", $fields, $actions); } function getLang(){ if(Translatable::current_lang() =='es') return 0; if(Translatable::current_lang() =='en') return 1; if(Translatable::current_lang() =='ca') return 2; } function TrasnlateStrings(){ $data = array(); $data['area'] = array( "Área temática","Subject area","Àrea temàtica" ); $data['Language'] = array( "Idioma","Language","Idioma" ); $data['publication_type'] = array( "Tipo de publicación","Type of publication","Tipus de publicació" ); $data['Year'] = array( 'Año',"Year","Any" ); $data['investigation_type'] = array( 'Tipo de investigación',"Type of research","Tipus d'investigació" ); $data['cases'] = array("Casos de estudio","Case studies","Casos d'estudi"); $data['Title'] = array("Título","Title","Títol"); $data['autor'] = array("Autor","Author","Autor"); $data['buscar'] = array("Buscar","Search","Cercar"); $data['LangResult'] = array( false, array("","English","Spanish","Catalan"), array("","Anglès","Castellà","Català") ); $data['AreaStr'] = array( false, array( "Corporate governance", "CSR strategy and management", "Human resources", "Negotiations with stakeholders", "Innovation", "Environment", "Social action", "Communication and reporting", "Socially responsible investing" ), array( "Govern corporatiu", "Estratègia i gestió RSC", "Recursos humans", "Diàleg amb stakeholders", "Innovació", "Medi ambient", "Acció social", "Comunicació i reporting", "Inversió socialment responsable") ); $data['LangStr'] = array( false, array( "Select","English","Spanish","Catalan" ), array( "Selecciona","Anglès", "Castellà", "català") ); $data['TypeResearchStr']= array( false, array("Select", "Qualitative","Quantitative","Qualitative/quantitative"), array("Selecciona","Qualitativa","Quantitativa","Qualitativa/quantitativa") ); $data['PublicationStr'] =array( false, array("Select", "Book", "Book chapter", "Article in an academic magazine", "Article in specialized magazine", "Own publication"), array("Selecciona","Llibre","Capítol de llibre","Article en revista acadèmica","Article en revista especialitzada","Publicació pròpia") ); $data['CasesStr'] =array( false, array("Select", "Large enterprises", "SMEs","Large enterprises and SMEs","Other organizations"), array("Selecciona","Empreses grans","PIMES","Empreses grans i PIMES","Altres organitzacions") ); return $data; } function Form() { //VARS $area = array( "Área temática","Subject area","Àrea temàtica" ); $Language = array( "Idioma","Language","Idioma" ); $publication_type = array( "Tipo de publicación","Type of publication","Tipus de publicació" ); $Year = array( 'Año',"Year","Any" ); $investigation_type = array( 'Tipo de investigación',"Type of research","Tipus d'investigació" ); $cases = array("Casos de estudio","Case studies","Casos d'estudi"); $Title = array("Título","Title","Títol"); $autor = array("Autor","Author","Autor"); $buscar = array("Buscar","Search","Cercar"); $AreaStr = array( false, array( "Corporate governance", "CSR strategy and management", "Human resources", "Stakeholder dialogue", "Innovation", "Environment", "Community engagement", "Communication and reporting", "Socially responsible investing" ), array( "Govern corporatiu", "Estratègia i gestió RSC", "Recursos humans", "Diàleg amb stakeholders", "Innovació", "Medi ambient", "Acció social", "Comunicació i reporting", "Inversió socialment responsable") ); $TypeResearchStr= array( false, array("Select","Qualitative","Quantitative","Qualitative/quantitative"), array("Selecciona","Qualitativa","Quantitativa","Qualitativa/quantitativa") ); $ano = array( false, array( "Select","2011","2010","2009","2008","2007", "2006", "2005", "2004", "2003", "2002", "2001", "2000" ), array( "Selecciona","2011","2010", "2009", "2008", "2007", "2006", "2005", "2004", "2003", "2002", "2001", "2000") ); $PublicationStr =array( false, array( "Select", "Book", "Book chapter", "Article in an academic journal", "Article in specialized press", "Own publication" ), array( "Selecciona", "Llibre", "Capítol de llibre", "Article en revista acadèmica", "Article en revista especialitzada", "Publicació pròpia" ) ); $LangStr = array( false, array("Select", "English", "Spanish", "Catalan"), array( "Selecciona", "Anglès", "Castellà", "Català")); $CasesStr =array( false, array( "Select", "Large enterprises", "SMEs", "Large enterprises and SMEs", "Other organizations"), array( "Selecciona", "Empreses grans", "PIMES", "Empreses grans i PIMES", "Altres organitzacions") ); $count=0; foreach ( singleton('MyObject')->dbObject('Area')->enumValues() as $key => $value) { $AreaDropDown[$key] = $x =($AreaStr[$this->getLang()]) ? $AreaStr[$this->getLang()][$count] : $value; $count++; } $c=0; foreach ( singleton('MyObject')->dbObject('publication_type')->enumValues() as $key => $value) { $publication[$key] = $x =($PublicationStr[$this->getLang()]) ? $PublicationStr[$this->getLang()][$c] : $value; $c++; } $c=0; foreach ( singleton('MyObject')->dbObject('cases')->enumValues() as $key => $value) { $cas[$key] = $x =($CasesStr[$this->getLang()]) ? $CasesStr[$this->getLang()][$c] : $value; $c++; } $c=0; foreach ( singleton('MyObject')->dbObject('investigation_type')->enumValues() as $key => $value) { $investigation[$key] = $x =($TypeResearchStr[$this->getLang()]) ? $TypeResearchStr[$this->getLang()][$c] : $value; $c++; } $c=0; foreach ( singleton('MyObject')->dbObject('Lang')->enumValues() as $key => $value) { $Lng[$key] = $x =($LangStr[$this->getLang()]) ? $LangStr[$this->getLang()][$c] : $value; $c++; } $c=0; foreach ( singleton('MyObject')->dbObject('year')->enumValues() as $key => $value) { $an[$key] = $x =($ano[$this->getLang()]) ? $ano[$this->getLang()][$c] : $value; $c++; } return new Form($this, "Form", new FieldSet( new CheckboxSetField($name = "Area", $title = $area[$this->getLang()],$source = $AreaDropDown, $value = "0" ), // List your fields here new TextField("Titulo", $Title[$this->getLang()]), new TextField("Autor", $autor[$this->getLang()]), new DropdownField( 'Lang', $Language[$this->getLang()], $Lng ), new DropdownField( 'publication_type', $publication_type[$this->getLang()] , $publication ), new DropdownField( 'year', $Year[$this->getLang()], $an ), new DropdownField( 'investigation_type', $investigation_type[$this->getLang()], $investigation ), new DropdownField( 'cases', $cases[$this->getLang()], $cas ) ), new FieldSet( // List the action buttons here new FormAction("Resultados", $buscar[$this->getLang()]) ), new RequiredFields( )); } function GetData () { /***VARIABLES POR POST ***/ $numero2 = count($_POST); $tags2 = array_keys($_POST); // obtiene los nombres de las varibles $valores2 = array_values($_POST);// obtiene los valores de las varibles $data['url'] = "/base-de-datos-sobre-estudios-en-rsc/"; $data ['executeForm'] = "Form"; for($i=0;$i<$numero2;$i++){ $data[$tags2[$i]] = $valores2[$i]; } #print_r($data); return $data; } function getParameters () { } function EmptyParams( $arr ) { $co = 0; foreach ( $arr as $key => $item ){ if( $key == "Titulo" || $key == "Autor" || $key == "Lang" || $key == "publication_type" || $key == "year" || $key == "investigation_type" || $key == "cases" || $key == "Area" || $key == "Order" || $key == "lang" ) { if( $item == "" || $item == "Selecciona" ){ } else { $co +=1;} } } return $co; } function Resultados($data, $form=false) { $data = $this -> GetData (); $TrasnlateStrings =$this->TrasnlateStrings(); if( $this -> EmptyParams( $data ) > 0 ) { $Nores =''; $hidden = ''; $autor = $v = (isset($data['Autor'])) ? $data['Autor'] : false; $filter = null; $order = null; $Title = $v = (isset($data['Titulo'])) ? $data['Titulo'] : false; $c=0; foreach($data as $key => $value){ if( $key == 'Titulo' && $value != '' ) { $hidden .="" ; } if( $key == 'Autor' && $value != '' ) { $hidden .="" ; } if( $key == 'investigation_type' && $value != 'Selecciona' ) { $filter .= "AND investigation_type = '$value' "; $hidden .="" ; } if( $key == 'publication_type' && $value != 'Selecciona' ) { $filter .= "AND publication_type = '$value' "; $hidden .="" ; } if( $key == 'cases' && $value != 'Selecciona' ) { $filter .= "AND cases = '$value' "; $hidden .="" ; } if( $key == 'year' && $value != 'Selecciona' ) { $filter .= "AND year = '$value' "; $hidden .="" ; } if( $key == 'Lang' && $value != 'Selecciona' ) { $filter .= "AND lang = '$value' "; $hidden .="" ; } if( $key == 'Area' && $value != '') { $area = is_array( $data['Area']) ? implode(",", $value) : $value; $hidden .="" ; } } /* QUERY */ if ( isset($_REQUEST['Order'])) if($_REQUEST['Order'] == 'year') $order = ' ORDER BY '. $_REQUEST['Order']. ' ASC'; else $order = ' ORDER BY '. $_REQUEST['Order']. ' DESC'; $AutorFilert = " WHERE Autor LIKE '%$autor%' "; if($Title !='') $TitleFilert = "AND Titulo LIKE '%$Title%' "; else $TitleFilert =""; $q ="SELECT * FROM fichaDbDataObject ". $AutorFilert. $TitleFilert. $filter. $order; $records = DB::query($q); $doSet = new DataObjectSet(); $dt = is_array( $data['Area']) ? $data['Area'] : $this ->toArray ( $data['Area'] ) ; $ReferenciaStr = array( "Referencia publicación","Publication reference","Referència de publicació"); $SelectYear = array("Año","Year","Any"); $SelAutor = array("Autor","Author","Autor"); $SelTitle = array("Título","Title","Títol"); $SelSel = array("Selecciona","Select", "Selecciona"); ////if (!$records) { $cuentarecords = 0; foreach ( $records as $key =>$value ){ $areas = $this -> relevance ($dt , $value['Area'] ) ; $area = $value['Area']; if( $areas > 0 || !is_numeric($areas)) { $c=0; foreach ( singleton('MyObject')->dbObject('publication_type')->enumValues() as $key => $v) { if($value['publication_type'] == $key){ $publication = $x =($TrasnlateStrings['PublicationStr'][$this->getLang()][$c] ) ? $TrasnlateStrings['PublicationStr'][$this->getLang()][$c] : $value['publication_type'] ; } $c++; } //// $c=0; foreach ( singleton('MyObject')->dbObject('investigation_type')->enumValues() as $key => $v) { if($value['investigation_type'] == $key){ $TypeResearch = $x =($TrasnlateStrings['TypeResearchStr'][$this->getLang()][$c] ) ? $TrasnlateStrings['TypeResearchStr'][$this->getLang()][$c] : $value['investigation_type'] ; } $c++; } //// $c=0; foreach ( singleton('MyObject')->dbObject('cases')->enumValues() as $k => $v) { if($value['cases'] == $k){ $casos = $x =($TrasnlateStrings['CasesStr'][$this->getLang()][$c] ) ? $TrasnlateStrings['CasesStr'][$this->getLang()][$c] : $value['cases'] ; } $c++; } $c=0; foreach ( singleton('MyObject')->dbObject('Lang')->enumValues() as $k => $v) { if($value['Lang'] == $k){ $LangResult = $x =($TrasnlateStrings['LangResult'][$this->getLang()][$c] ) ? $TrasnlateStrings['LangResult'][$this->getLang()][$c] : $value['Lang'] ; } $c++; } //////// $ReferenciaStr = array( "Referencia publicación","Publication reference","Referència de publicació"); if($this->getLang() > 0) $listaAreas = explode(",",$area); # $DefaultArea = singleton('MyObject')->dbObject('Area')->enumValues(); # $TrasnlateStrings['AreaStr'][$this->getLang()] ; $c=0; $str=''; $AreaStr = array( array( "Gobierno corporativo", "Estrategia y gestión RSC", "Recursos humanos", "Diálogo con stakeholders", "Innovación", "Medio ambiente", "Acción social", "Comunicación y reporting", "Inversión socialmente responsable" ), array( "Corporate governance", "CSR strategy and management", "Human resources", "Stakeholder dialogue", "Innovation", "Environment", "Community engagement", "Communication and reporting", "Socially responsible investing" ), array( "Govern corporatiu", "Estratègia i gestió RSC", "Recursos humans", "Diàleg amb stakeholders", "Innovació", "Medi ambient", "Acció social", "Comunicació i reporting", "Inversió socialment responsable") ); if (($this->getLang())==0) { $str=$area; } else { $str=''; } foreach ($listaAreas as $selectedArea ){ $cd=0; foreach ($AreaStr[0] as $areas ){ if($selectedArea == $areas){ #echo ' 1 -> ' .$AreaStr[$this->getLang()][$cd] .' 2 -> '. $cd .'
'; $str .= $AreaStr[$this->getLang()][$cd].', '; } $cd++; } } #if() $record = array( 'relevance' => $areas , 'Autor' => $value['Autor'], 'area' =>$str, 'investigation_type' => $TypeResearch, 'publication_type' =>$publication, 'URL' => $value['URL'], 'referencia' => $value['referencia'], 'cases' => $casos, 'year' => $value['year'], 'Titulo' => $value['Titulo'], 'Lang' => $LangResult, 'ano' => $TrasnlateStrings['Year'][$this->getLang()], 'Language' => $TrasnlateStrings['Language'][$this->getLang()], 'publication_typeStr' => $TrasnlateStrings['publication_type'][$this->getLang()], 'investigation_typeStr' => $TrasnlateStrings['investigation_type'][$this->getLang()], 'casesStr' => $TrasnlateStrings['cases'][$this->getLang()], 'Title' => $TrasnlateStrings['Title'][$this->getLang()], 'Area' => $TrasnlateStrings['area'][$this->getLang()], 'autor' => $TrasnlateStrings['autor'][$this->getLang()], 'ReferenciaStr'=> $ReferenciaStr[$this->getLang()], ); $fichas[] = $record ; } } foreach ( $fichas as $value ){ $cuentarecords++; $doSet->push(new ArrayData($value)); } /*} else { $msj =array("No se han encontrado resultados con los criterios introducidos.", "No results have been found for the introduced criteria.","No s'han trobat resultats amb els criteris introduïts."); $m = $msj[$this->getLang()]; $Nores = "



$m



"; }*/ if ($cuentarecords==0){ $msj =array("No se han encontrado resultados con los criterios introducidos.", "No results have been found for the introduced criteria.","No s'han trobat resultats amb els criteris introduïts."); $m = $msj[$this->getLang()]; $Nores = "



$m



"; } } else { $msj =array("No se han encontrado resultados con los criterios introducidos.", "No results have been found for the introduced criteria.","No s'han trobat resultats amb els criteris introduïts."); $m = $msj[$this->getLang()]; $Nores = "



$m



"; } $order = array("Ordenar por","Sort by","Ordenar per"); $new = array("Nueva búsqueda","New search" ,"Nova recerca"); $data = array( 'SelectYear'=> $SelectYear[$this->getLang()], 'SelAutor'=> $SelAutor[$this->getLang()], 'SelTitle'=> $SelTitle[$this->getLang()], 'SelSel'=> $SelSel[$this->getLang()], 'Nores' => $Nores , 'order' => $order[$this->getLang()] , 'new' => $new[$this->getLang()] , 'records' => $doSet, 'Hidden' => $hidden ); return $this->customise($data)->renderWith(array('page_results', 'Page')); } function toArray ($value) { $array = explode(",", $value); return $array; } function sortMe( $array ){ $volumen=array(); foreach ( $array as $llave => $fila ) { $volumen[$llave] = $fila['relevance']; } return $volumen; } function relevance ( $areasSearch , $value ) { $areas = $this ->toArray ( $value ) ; $rate = ( $areasSearch[0] ==NULL)? NULL :0 ; foreach ( $areasSearch as $areaSearch ) { foreach ( $areas as $area ) { if( $areaSearch == $area ) $rate++; } } return $rate; } // STRINGS PARA TEMPLATES } ?>