Allow upload extra fields of image type - refs BT#9089

1.10.x
Angel Fernando Quiroz Campos 11 years ago
parent e99d75628a
commit 0bbb4e3503
  1. 16
      main/inc/lib/extra_field.lib.php
  2. 26
      main/inc/lib/extra_field_value.lib.php

@ -53,7 +53,7 @@ class ExtraField extends Model
const FIELD_TYPE_CHECKBOX = 13;
const FIELD_TYPE_MOBILE_PHONE_NUMBER = 14;
const FIELD_TYPE_INTEGER = 15;
const FIELD_TYPE_FILE = 16;
const FIELD_TYPE_FILE_IMAGE = 16;
public $type = 'user'; //or session or course
public $handler_id = 'user_id';
@ -232,7 +232,7 @@ class ExtraField extends Model
$types[self::FIELD_TYPE_MOBILE_PHONE_NUMBER] = get_lang('FieldTypeMobilePhoneNumber');
$types[self::FIELD_TYPE_CHECKBOX] = get_lang('FieldTypeCheckbox');
$types[self::FIELD_TYPE_INTEGER] = get_lang('FieldTypeInteger');
$types[self::FIELD_TYPE_FILE] = get_lang('FieldTypeFile');
$types[self::FIELD_TYPE_FILE_IMAGE] = get_lang('FieldTypeFile');
switch ($handler) {
case 'course':
@ -1013,17 +1013,25 @@ EOF;
}
}
break;
case ExtraField::FIELD_TYPE_FILE:
case ExtraField::FIELD_TYPE_FILE_IMAGE:
$form->addElement(
'file',
'extra_'.$field_details['field_variable'],
$field_details['field_display_text'],
array('class' => 'span8')
array('class' => 'span8', 'accept' => 'image/*')
);
$form->applyFilter('extra_'.$field_details['field_variable'], 'stripslashes');
$form->applyFilter('extra_'.$field_details['field_variable'], 'trim');
$allowed_picture_types = array ('jpg', 'jpeg', 'png', 'gif');
$form->addRule(
'extra_'.$field_details['field_variable'],
get_lang('OnlyImagesAllowed') . ' ('.implode(',', $allowed_picture_types).')',
'filetype',
$allowed_picture_types
);
if (!$admin_permissions) {
if ($field_details['field_visible'] == 0) {
$form->freeze(

@ -152,6 +152,32 @@ class ExtraFieldValue extends Model
}
}
break;
case ExtraField::FIELD_TYPE_FILE_IMAGE:
$dirPermissions = api_get_permissions_for_new_directories();
$sysCodePath = api_get_path(SYS_CODE_PATH);
$fileDir = "upload/extrafields/{$this->type}/";
$fileName = ExtraField::FIELD_TYPE_FILE_IMAGE . "_{$params[$this->handler_id]}.png";
if (!file_exists($sysCodePath . $fileDir)) {
mkdir($sysCodePath . $fileDir, $dirPermissions, true);
}
$imageExtraField = new Image($value['tmp_name']);
$imageExtraField->send_image($sysCodePath . $fileDir . $fileName, -1, 'png');
$new_params = array(
$this->handler_id => $params[$this->handler_id],
'field_id' => $extra_field_info['id'],
'field_value' => $fileDir . $fileName
);
if ($this->handler_id !== 'session_id' && $this->handler_id !== 'course_code') {
$new_params['comment'] = $comment;
}
self::save($new_params);
break;
default;
$new_params = array(
$this->handler_id => $params[$this->handler_id],

Loading…
Cancel
Save