Merge branch '1.10.x' of ssh://github.com/chamilo/chamilo-lms into 1.10.x

1.10.x
Julio Montoya 10 years ago
commit 43764d5f67
  1. 21
      main/inc/ajax/extra_field.ajax.php
  2. 1
      main/inc/lib/database.constants.inc.php
  3. 34
      main/inc/lib/extra_field.lib.php
  4. 72
      main/inc/lib/extra_field_value.lib.php
  5. 118
      src/Chamilo/CoreBundle/Entity/ExtraFieldRelTag.php
  6. 68
      src/Chamilo/CoreBundle/Migrations/Schema/V110/Version20150608104600.php

@ -25,7 +25,26 @@ switch ($action) {
$fieldId = isset($_REQUEST['field_id']) ? $_REQUEST['field_id'] : null;
$tag = isset($_REQUEST['tag']) ? $_REQUEST['tag'] : null;
$extraFieldOption = new ExtraFieldOption($type);
echo $extraFieldOption->getSearchOptionsByField($tag, $fieldId, 10, 'json');
$result = [];
$tags = Database::getManager()
->getRepository('ChamiloCoreBundle:Tag')
->createQueryBuilder('t')
->where("t.tag LIKE :tag")
->andWhere('t.fieldId = :field')
->setParameter('field', $fieldId)
->setParameter('tag', "$tag%")
->getQuery()
->getResult();
foreach ($tags as $tag) {
$result[] = [
'caption' => $tag->getTag(),
'value' => $tag->getTag()
];
}
echo json_encode($result);
break;
default:
exit;

@ -78,6 +78,7 @@ define('TABLE_MAIN_CALENDAR_EVENT_VALUES', 'calendar_event_values');*/
//User tags
define('TABLE_MAIN_TAG', 'tag');
define('TABLE_MAIN_USER_REL_TAG', 'user_rel_tag');
define('TABLE_MAIN_EXTRA_FIELD_REL_TAG', 'extra_field_rel_tag');
//User groups
/*define('TABLE_MAIN_GROUP', 'groups');

@ -1192,19 +1192,33 @@ EOF;
}
$url = api_get_path(WEB_AJAX_PATH).'user_manager.ajax.php';
} else {
$extraFieldValue = new ExtraFieldValue($this->type);
$tags = array();
if (!empty($itemId)) {
$tags = $extraFieldValue->getAllValuesByItemAndField($itemId, $field_id);
}
$tag_list = '';
if (is_array($tags) && count($tags) > 0) {
$extraFieldOption = new ExtraFieldOption($this->type);
foreach ($tags as $tag) {
$option = $extraFieldOption->get($tag['value']);
$tag_list .= '<option value="'.$option['id'].'" class="selected">'.$option['display_text'].'</option>';
$em = Database::getManager();
$fieldTags = $em
->getRepository('ChamiloCoreBundle:ExtraFieldRelTag')
->findBy([
'fieldId' => $field_id,
'itemId' => $itemId
]);
foreach ($fieldTags as $fieldTag) {
$tag = $em->find('ChamiloCoreBundle:Tag', $fieldTag->getTagId());
if (empty($tag)) {
continue;
}
$tag_list .= Display::tag(
'option',
$tag->getTag(),
[
'value' => $tag->getTag(),
'class' => 'selected'
]
);
}
$url = api_get_path(WEB_AJAX_PATH).'extra_field.ajax.php';
}

@ -125,39 +125,55 @@ class ExtraFieldValue extends Model
$extraFieldInfo['id']
);
} else {
/* $old = self::getAllValuesByItemAndField(
$params['item_id'],
$extraFieldInfo['id']
);
$deleteItems = array();
if (!empty($old)) {
$oldIds = array();
foreach ($old as $oldItem) {
$oldIds[] = $oldItem['value'];
$em = Database::getManager();
$tagValues = is_array($value) ? $value : [$value];
$tags = [];
foreach ($tagValues as $tagValue) {
$tagsResult = $em->getRepository('ChamiloCoreBundle:Tag')->findBy([
'tag' => $tagValue,
'fieldId' => $extraFieldInfo['id']
]);
if (empty($tagsResult)) {
$tag = new \Chamilo\CoreBundle\Entity\Tag();
$tag->setCount(0);
$tag->setFieldId($extraFieldInfo['id']);
$tag->setTag($tagValue);
$tags[] = $tag;
} else {
$tags = array_merge($tags, $tagsResult);
}
$deleteItems = array_diff($oldIds, $value);
}
foreach ($value as $optionId) {
$newParams = array(
'item_id' => $params['item_id'],
'field_id' => $extraFieldInfo['id'],
'value' => $optionId,
'comment' => $comment
);
self::save($newParams);
}
foreach ($tags as $tag) {
$fieldTags = $em->getRepository('ChamiloCoreBundle:ExtraFieldRelTag')->findBy([
'fieldId' => $extraFieldInfo['id'],
'itemId' => $params['item_id'],
'tagId' => $tag->getId()
]);
if (!empty($deleteItems)) {
foreach ($deleteItems as $deleteFieldValue) {
self::deleteValuesByHandlerAndFieldAndValue(
$params['item_id'],
$extraFieldInfo['id'],
$deleteFieldValue
);
foreach ($fieldTags as $fieldTag) {
$em->remove($fieldTag);
$tag->setCount($tag->getCount() - 1);
$em->persist($tag);
$em->flush();
}
}*/
$tag->setCount($tag->getCount() + 1);
$em->persist($tag);
$em->flush();
$fieldRelTag = new Chamilo\CoreBundle\Entity\ExtraFieldRelTag();
$fieldRelTag->setFieldId($extraFieldInfo['id']);
$fieldRelTag->setItemId($params['item_id']);
$fieldRelTag->setTagId($tag->getId());
$em->persist($fieldRelTag);
$em->flush();
}
}
break;
case ExtraField::FIELD_TYPE_FILE_IMAGE:

@ -0,0 +1,118 @@
<?php
namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* FieldRelTag
*
* @ORM\Table(name="extra_field_rel_tag")
* @ORM\Entity
*/
class ExtraFieldRelTag
{
/**
* @var integer
*
* @ORM\Column(name="field_id", type="integer", nullable=false)
*/
private $fieldId;
/**
* @var integer
*
* @ORM\Column(name="tag_id", type="integer", nullable=false)
*/
private $tagId;
/**
* @var integer
*
* @ORM\Column(name="item_id", type="integer", nullable=false)
*/
private $itemId;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* Set fieldId
* @param integer $fieldId
* @return \Chamilo\CoreBundle\Entity\ExtraFieldRelTag
*/
public function setFieldId($fieldId)
{
$this->fieldId = $fieldId;
return $this;
}
/**
* Set tagId
* @param integer $tagId
* @return \Chamilo\CoreBundle\Entity\ExtraFieldRelTag
*/
public function setTagId($tagId)
{
$this->tagId = $tagId;
return $this;
}
/**
* Set itemId
* @param integer $itemId
* @return \Chamilo\CoreBundle\Entity\ExtraFieldRelTag
*/
public function setItemId($itemId)
{
$this->itemId = $itemId;
return $this;
}
/**
* Get fieldId
*
* @return integer
*/
public function getFieldId()
{
return $this->fieldId;
}
/**
* Get tagId
* @return integer
*/
public function getTagId()
{
return $this->tagId;
}
/**
* Get itemId
* @return integer
*/
public function getItemId()
{
return $this->itemId;
}
/**
* Get id
* @return integer
*/
public function getId()
{
return $this->id;
}
}

@ -0,0 +1,68 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Migrations\Schema\V110;
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Types\Type as TableColumnType;
/**
* Session date changes
*/
class Version20150608104600 extends AbstractMigrationChamilo
{
/**
* @param Schema $schema
*/
public function up(Schema $schema)
{
$extraFieldRelTag = $schema->createTable('extra_field_rel_tag');
$extraFieldRelTag->addColumn(
'id',
TableColumnType::INTEGER,
['unsigned' => true, 'autoincrement' => true, 'notnull' => true]
);
$extraFieldRelTag->addColumn(
'field_id',
TableColumnType::INTEGER,
['unsigned' => true, 'notnull' => true]
);
$extraFieldRelTag->addColumn(
'item_id',
TableColumnType::INTEGER,
['unsigned' => true, 'notnull' => true]
);
$extraFieldRelTag->addColumn(
'tag_id',
TableColumnType::INTEGER,
['unsigned' => true, 'notnull' => true]
);
$extraFieldRelTag->setPrimaryKey(['id']);
$extraFieldRelTag->addIndex(
['field_id'],
'idx_frt_field'
);
$extraFieldRelTag->addIndex(
['item_id'],
'idx_frt_item'
);
$extraFieldRelTag->addIndex(
['tag_id'],
'idx_frt_tag'
);
$extraFieldRelTag->addIndex(
['field_id', 'item_id', 'tag_id'],
'idx_frt_field_item_tag'
);
}
/**
* @param Schema $schema
*/
public function down(Schema $schema)
{
$schema->dropTable('extra_field_rel_tag');
}
}
Loading…
Cancel
Save