diff --git a/main/inc/Entity/ExtraFieldValues.php b/main/inc/Entity/ExtraFieldValues.php index 98f246f8d6..048a8ec558 100644 --- a/main/inc/Entity/ExtraFieldValues.php +++ b/main/inc/Entity/ExtraFieldValues.php @@ -43,6 +43,37 @@ class ExtraFieldValues */ private $userId; + /** + * @var string + * @Gedmo\Versioned + * + * @ORM\Column(name="comment", type="string", precision=0, scale=0, nullable=true, unique=false) + */ + private $comment; + + /** + * Set comment + * + * @param string $comment + * @return ExtraFieldValues + */ + public function setComment($comment) + { + $this->comment = $comment; + + return $this; + } + + /** + * Get comment + * + * @return string + */ + public function getComment() + { + return $this->comment; + } + /** * Get id diff --git a/main/inc/lib/extra_field.lib.php b/main/inc/lib/extra_field.lib.php index 0c60f6745a..ea3394ca20 100644 --- a/main/inc/lib/extra_field.lib.php +++ b/main/inc/lib/extra_field.lib.php @@ -664,44 +664,54 @@ class ExtraField extends Model array('id' => 'extra_'.$field_details['field_variable']) ); - if ($optionsExists && $field_details['field_loggeable'] && !empty($defaultValueId)) { + $form->addElement( + 'textarea', + 'extra_'.$field_details['field_variable'].'_comment', + $field_details['field_display_text'].' '.get_lang('Comment') + ); + /*$extraField = new Extrafield($field_details['field_type']); $link = Display::url();*/ $extraFieldValue = new ExtraFieldValue($this->type); $repo = $app['orm.em']->getRepository($extraFieldValue->entityName); $repoLog = $app['orm.em']->getRepository('Gedmo\Loggable\Entity\LogEntry'); $newEntity = $repo->findOneBy( - array( - $this->handlerEntityId => $itemId, - 'fieldId' => $field_details['id'] - )); - - + array( + $this->handlerEntityId => $itemId, + 'fieldId' => $field_details['id'] + ) + ); + // @todo move this in a function inside the class if ($newEntity) { $logs = $repoLog->getLogEntries($newEntity); if (!empty($logs)) { - $html = get_lang('LatestChanges').'
'; + $html = ''.get_lang('LatestChanges').'

'; $table = new HTML_Table(array('class' => 'data_table')); $table->setHeaderContents(0, 0, get_lang('Value')); - $table->setHeaderContents(0, 1, get_lang('ModifyDate')); - $table->setHeaderContents(0, 2, get_lang('Username')); + $table->setHeaderContents(0, 1, get_lang('Comment')); + $table->setHeaderContents(0, 2, get_lang('ModifyDate')); + $table->setHeaderContents(0, 3, get_lang('Username')); $row = 1; foreach ($logs as $log) { $column = 0; $data = $log->getData(); - $table->setCellContents($row, $column, $data['fieldValue']); + $fieldValue = isset($data['fieldValue']) ? $data['fieldValue'] : null; + $comment = isset($data['comment']) ? $data['comment'] : null; + + $table->setCellContents($row, $column, $fieldValue); + $column++; + $table->setCellContents($row, $column, $comment); $column++; $table->setCellContents($row, $column, api_get_local_time($log->getLoggedAt()->format('Y-m-d H:i:s'))); $column++; $table->setCellContents($row, $column, $log->getUsername()); $row++; } - $form->addElement('label', null, $table->toHtml()); + $form->addElement('label', null, $html.$table->toHtml()); } - } } diff --git a/main/inc/lib/extra_field_value.lib.php b/main/inc/lib/extra_field_value.lib.php index dcea376df6..f18bb9f34c 100644 --- a/main/inc/lib/extra_field_value.lib.php +++ b/main/inc/lib/extra_field_value.lib.php @@ -13,8 +13,9 @@ class ExtraFieldValue extends Model { public $type = null; - public $columns = array('id', 'field_id', 'field_value', 'tms'); - public $handler_id = null;//session_id, course_code, user_id + public $columns = array('id', 'field_id', 'field_value', 'tms', 'comment'); + /** @var string session_id, course_code, user_id, question id */ + public $handler_id = null; public $entityName; /** @@ -87,17 +88,20 @@ class ExtraFieldValue extends Model if (empty($params[$this->handler_id])) { return false; } - //Parse params + // Parse params. foreach ($params as $key => $value) { if (substr($key, 0, 6) == 'extra_') { // An extra field. $field_variable = substr($key, 6); $extra_field_info = $extra_field->get_handler_field_info_by_field_variable($field_variable); if ($extra_field_info) { + $commentVariable = 'extra_'.$field_variable.'_comment'; + $comment = isset($params[$commentVariable]) ? $params[$commentVariable] : null; $new_params = array( $this->handler_id => $params[$this->handler_id], 'field_id' => $extra_field_info['id'], - 'field_value' => $value + 'field_value' => $value, + 'comment' => $comment ); self::save($new_params); } @@ -207,12 +211,14 @@ class ExtraFieldValue extends Model break; } if (isset($extraFieldValue)) { + $extraFieldValue->setComment($params['comment']); $extraFieldValue->setFieldValue($params['field_value']); $extraFieldValue->setFieldId($params['field_id']); $extraFieldValue->setTms(api_get_utc_datetime(null, false, true)); $app['orm.em']->persist($extraFieldValue); $app['orm.em']->flush(); } + } else { return parent::save($params, $show_query); } @@ -244,8 +250,9 @@ class ExtraFieldValue extends Model $extraFieldValue->setSessionId($params[$this->handler_id]); break; } - if (isset($extraFieldValue)) { + if (isset($extraFieldValue)) { + $extraFieldValue->setComment($params['comment']); $extraFieldValue->setFieldValue($params['field_value']); $extraFieldValue->setFieldId($params['field_id']); $extraFieldValue->setTms(api_get_utc_datetime(null, false, true)); diff --git a/main/install/1.10.0/db_main.sql b/main/install/1.10.0/db_main.sql index d95f0d46f3..8537f9cb8a 100644 --- a/main/install/1.10.0/db_main.sql +++ b/main/install/1.10.0/db_main.sql @@ -242,11 +242,12 @@ CREATE TABLE IF NOT EXISTS course_field_options ( DROP TABLE IF EXISTS course_field_values; CREATE TABLE IF NOT EXISTS course_field_values( - id int NOT NULL auto_increment, + id bigint NOT NULL auto_increment, course_code varchar(40) NOT NULL, field_id int NOT NULL, field_value text, user_id INT unsigned NOT NULL default 0, + comment VARCHAR(100) default '', tms DATETIME NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY(id) ); @@ -571,11 +572,12 @@ CREATE TABLE IF NOT EXISTS session_field_options( DROP TABLE IF EXISTS session_field_values; CREATE TABLE IF NOT EXISTS session_field_values( - id int NOT NULL auto_increment, + id bigint NOT NULL auto_increment, session_id int NOT NULL, field_id int NOT NULL, field_value text, user_id INT unsigned NOT NULL default 0, + comment VARCHAR(100) default '', tms DATETIME NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY(id) ); @@ -1490,6 +1492,7 @@ CREATE TABLE IF NOT EXISTS user_field_values( field_id int NOT NULL, field_value text, author_id INT unsigned NOT NULL default 0, + comment VARCHAR(100) default '', tms DATETIME NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY(id) ); @@ -2593,11 +2596,11 @@ CREATE TABLE IF NOT EXISTS specific_field ( DROP TABLE IF EXISTS specific_field_values; CREATE TABLE IF NOT EXISTS specific_field_values ( - id INT NOT NULL AUTO_INCREMENT PRIMARY KEY , - course_code VARCHAR(40) NOT NULL , - tool_id VARCHAR(100) NOT NULL , - ref_id INT NOT NULL , - field_id INT NOT NULL , + id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, + course_code VARCHAR(40) NOT NULL, + tool_id VARCHAR(100) NOT NULL, + ref_id INT NOT NULL, + field_id INT NOT NULL, value VARCHAR(200) NOT NULL ); ALTER TABLE specific_field ADD CONSTRAINT unique_specific_field__code UNIQUE (code); @@ -3487,11 +3490,12 @@ CREATE TABLE IF NOT EXISTS question_field_options( DROP TABLE IF EXISTS question_field_values; CREATE TABLE IF NOT EXISTS question_field_values( - id int NOT NULL auto_increment, + id bigint NOT NULL auto_increment, question_id int NOT NULL, field_id int NOT NULL, field_value text, user_id INT unsigned NOT NULL default 0, + comment VARCHAR(100) default '', tms DATETIME NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY(id) ); @@ -3517,4 +3521,4 @@ CREATE TABLE ext_log_entries ( ) DEFAULT CHARSET=utf8; -- Do not move this -UPDATE settings_current SET selected_value = '1.10.0.009' WHERE variable = 'chamilo_database_version'; +UPDATE settings_current SET selected_value = '1.10.0.010' WHERE variable = 'chamilo_database_version'; diff --git a/main/install/1.10.0/migrate-db-1.9.0-1.10.0-pre.sql b/main/install/1.10.0/migrate-db-1.9.0-1.10.0-pre.sql index 46c3761f60..eccbb1f040 100755 --- a/main/install/1.10.0/migrate-db-1.9.0-1.10.0-pre.sql +++ b/main/install/1.10.0/migrate-db-1.9.0-1.10.0-pre.sql @@ -272,5 +272,10 @@ ALTER TABLE session_field ADD COLUMN field_loggeable int default 0; ALTER TABLE course_field ADD COLUMN field_loggeable int default 0; ALTER TABLE question_field ADD COLUMN field_loggeable int default 0; +ALTER TABLE user_field_values ADD COLUMN comment VARCHAR(100) default ''; +ALTER TABLE session_field_values ADD COLUMN comment VARCHAR(100) default ''; +ALTER TABLE course_field_values ADD COLUMN comment VARCHAR(100) default ''; +ALTER TABLE question_field_values ADD COLUMN comment VARCHAR(100) default ''; + -- Do not move this -UPDATE settings_current SET selected_value = '1.10.0.009' WHERE variable = 'chamilo_database_version'; +UPDATE settings_current SET selected_value = '1.10.0.010' WHERE variable = 'chamilo_database_version';