/** * Check if input file meet requirements * * @param string $filename File name * * @return boolean */ private function _check($filename) { //deal with mac e-o-l encoding -- see if needed //@ini_set('auto_detect_line_endings', true); $handle = fopen(self::DEFAULT_DIRECTORY . '/' . $filename, 'r'); if (!$handle) { Analog::log('File ' . $filename . ' cannot be open!', Analog::ERROR); $this->addError(str_replace('%filename', $filename, _T('File %filename cannot be open!'))); return false; } if ($handle !== false) { $cnt_fields = count($this->_fields); //check required fields $fc = new FieldsConfig(Adherent::TABLE, $this->_members_fields, $members_fields_cats); $config_required = $fc->getRequired(); $this->_required = array(); foreach (array_keys($config_required) as $field) { if (in_array($field, $this->_fields)) { $this->_required[$field] = $field; } } $row = 0; while (($data = fgetcsv($handle, 1000, self::DEFAULT_SEPARATOR, self::DEFAULT_QUOTE)) !== false) { //check fields count $count = count($data); if ($count != $cnt_fields) { $this->addError(str_replace(array('%should_count', '%count', '%row'), array($cnt_fields, $count, $row), _T("Fields count mismatch... There should be %should_count fields and there are %count (row %row)"))); return false; } //check required fields if ($row > 0) { //header line is the first one. Here comes data $col = 0; foreach ($data as $column) { if (in_array($this->_fields[$col], $this->_required) && trim($column) == '') { $this->addError(str_replace(array('%field', '%row'), array($this->_fields[$col], $row), _T("Field %field is required, but missing in row %row"))); return false; } $col++; } } $row++; } fclose($handle); if (!($row > 1)) { //no data in file, just headers line $this->addError(_T("File is empty!")); return false; } else { return true; } } return false; }
/** @ignore */ require_once 'includes/galette.inc.php'; if (!$preferences->pref_bool_selfsubscribe) { header('location:index.php'); die; } $dyn_fields = new DynamicFields(); $member = new Adherent(); //mark as self membership $member->setSelfMembership(); // flagging required fields $fc = new FieldsConfig(Adherent::TABLE, $members_fields, $members_fields_cats); // flagging required fields invisible to members $fc->setNotRequired('activite_adh'); $fc->setNotRequired('id_statut'); $required = $fc->getRequired(); // flagging fields visibility $visibles = $fc->getVisibilities(); // disable some fields $disabled = $member->disabled_fields; // DEBUT parametrage des champs // On recupere de la base la longueur et les flags des champs // et on initialise des valeurs par defaut $update_string = ''; $insert_string_fields = ''; $insert_string_values = ''; $has_register = false; $fields = Adherent::getDbFields(); if (isset($_POST["nom_adh"])) { // dynamic fields $adherent['dyn'] = $dyn_fields->extractPosted($_POST, $_FILES, $disabled, $member->id);