* @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 ?>