* @copyright Badiu
*/
class local_badiunetclient_user_cohort_fielddata_upadte {
/**
* Atualiza ou insere dados de um campo de perfil para todos os usuarios do grupo cohort
*
* @param [type] $param
* @return void
*/
function exec($param){
$cohortid=$param->cohortid;
$fieldshortname=$param->fieldshortname;
$fieldvalue =$param->fieldvalue;
$exec= $param->exec;
if(empty($cohortid)){$this->show_error("Esta faltando o parametro cohortid - id do grupo cohort ");}
if(empty($fieldshortname)){$this->show_error("Esta faltando o parametro fieldshortname - nome breve do campo de perfil ");}
if(empty($fieldvalue)){$this->show_error("Esta faltando o parametro fieldvalue - valor a ser inserido ou atualizado no campo de perfil ");}
$labelexec="Nao";
if($exec){ $labelexec="Sim";}
$this->show_log("Parametros passados");
$this->show_log("Id do grupo cohort: $cohortid");
$this->show_log("Nome breve do campo de perfil: $fieldshortname");
$this->show_log("Valor a ser adicionando no campo de perfil: $fieldvalue");
$this->show_log("Processar alteracao: $labelexec");
$listusers=$this-> get_members_by_cohort($cohortid);
$listuserscount=sizeof($listusers);
$this->show_log("Quant. de usuarios serem processados: $listuserscount");
$this->show_log("Executar cadastro / alteracao do campo de perfil: $exec
");
$countchange=0;
if($exec){
$contp=0;
foreach ($listusers as $urow){
$userid=$urow->userid;
$r=$this->add_data_profile($fieldshortname,$userid,$fieldvalue);
if($r){$contp++;}
}
$this->show_log("
---------------FIM DO PROCESSAMENTO--------------");
$this->show_log("Total de cadastro / alteracao do campo de perfil: $contp");
} //end if exec
// werwradddatefields
}
/**
* Esta funcao consulta no banco os usuarios vinculados ao grupo cohort pelo id
* @param [integer] $cohortid - id do grupo cohort
* @return array
*/
function get_members_by_cohort($cohortid){
global $CFG,$DB;
if(empty($cohortid)){return null;}
$sql ="SELECT userid FROM {$CFG->prefix}cohort_members WHERE cohortid=$cohortid ";
$rows = $DB->get_records_sql($sql);
return $rows;
}
function get_fieldid_profile($fieldkey) {
global $DB, $CFG;
$sql="SELECT id FROM {$CFG->prefix}user_info_field WHERE shortname='".$fieldkey."'";
$r= $DB->get_record_sql($sql);
return $r->id;
}
function exist_data_profile($fieldid,$userid) {
global $DB, $CFG;
$r= $DB->get_record_sql("SELECT COUNT(id) AS qreg FROM {$CFG->prefix}user_info_data WHERE fieldid=$fieldid AND userid= $userid ");
return $r->qreg;
}
function get_id_data_profile($fieldid,$userid) {
global $DB, $CFG;
$r= $DB->get_record_sql("SELECT id FROM {$CFG->prefix}user_info_data WHERE fieldid=$fieldid AND userid= $userid ");
return $r->id;
}
function save_data_profile($fieldid,$userid,$data) {
global $DB, $CFG;
if(empty($data)){$data='';}
$dto= new stdClass();
$dto->fieldid=$fieldid;
$dto->userid=$userid;
$dto->data=$data;
return $DB->insert_record('user_info_data', $dto);
}
function update_data_profile($fieldid,$userid,$data) {
global $DB, $CFG;
if(empty($data)){$data='';}
$dto= new stdClass();
$dto->fieldid=$fieldid;
$dto->userid=$userid;
$dto->data=$data;
$dto->id=$this->get_id_data_profile($fieldid,$userid) ;
return $DB->update_record('user_info_data', $dto);
}
function add_data_profile($fieldkey,$userid,$data) {
$data=addslashes($data);
if(empty($fieldkey)){return null;}
if(empty($userid)){return null;}
if(empty($data)){return null;}
$result=null;
$fieldid=$this->get_fieldid_profile($fieldkey);
if(empty( $fieldid)){return null;}
//verificar se já existe
$exist=$this->exist_data_profile($fieldid,$userid);
// echo "
exist $exist ";
//gravar se não existe
if(!$exist){
$result= $this->save_data_profile($fieldid,$userid,$data);
}
//atualiza se existir
else{
$result= $this->update_data_profile($fieldid,$userid,$data);
}
return $result;
}
/**
* exibe mensagem de erro e finaliza o processamento
*
* @param [string] $message
* @return void
*/
function show_error($message){
echo "--------------ERRO NO PROCESSAMENTO ------------------
";
print_r($message);
exit;
}
/**
* exibe mensagem de log sobre precesamento
*
* @param [string] $message
* @return void
*/
function show_log($message){
echo "
";
print_r($message);
}
}
/**
* receber parametros e invocar a classe para execucao
*
*/
require_once("../config.php");
require_login();
if (!has_capability('moodle/site:config',context_system::instance())) {
echo "Requer acesso de administrador";exit;
}
$lib=new local_badiunetclient_user_cohort_fielddata_upadte();
$param = new stdClass;
$param->cohortid = optional_param('cohortid', NULL,PARAM_TEXT);
$param->fieldshortname = optional_param('fieldshortname', NULL,PARAM_TEXT);
$param->fieldvalue = optional_param('fieldvalue',null,PARAM_TEXT);
$param->exec = optional_param('exec', 0,PARAM_INT);
$lib->exec($param);
//example url para consultar o que sera executdo
//MOODLE_URL/_extra/user_cohort_upate_fielddata.php?cohortid=?&fieldshortname=?&fieldvalue=?&exec=0
//example url para processar a execucao
//MOODLE_URL/_extra/user_cohort_upate_fielddata.php?cohortid=?&fieldshortname=?&fieldvalue=?&exec=1
?>