Adding "comment" field to the extraFieldValues class see BT#6174. The comment is also saved in the using loggable extension.

skala
Julio Montoya 12 years ago
parent 35f1e21120
commit 30b7ccca64
  1. 31
      main/inc/Entity/ExtraFieldValues.php
  2. 36
      main/inc/lib/extra_field.lib.php
  3. 17
      main/inc/lib/extra_field_value.lib.php
  4. 22
      main/install/1.10.0/db_main.sql
  5. 7
      main/install/1.10.0/migrate-db-1.9.0-1.10.0-pre.sql

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

@ -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').'<br />';
$html = '<b>'.get_lang('LatestChanges').'</b><br /><br />';
$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());
}
}
}

@ -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));

@ -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';

@ -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';

Loading…
Cancel
Save