123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- <?php
- /* For licensing terms, see /license.txt */
- use Chamilo\CoreBundle\Entity\Tag;
- require_once __DIR__.'/../global.inc.php';
- $action = isset($_GET['a']) ? $_GET['a'] : '';
- $type = isset($_REQUEST['type']) ? $_REQUEST['type'] : null;
- $fieldId = isset($_REQUEST['field_id']) ? $_REQUEST['field_id'] : null;
- switch ($action) {
- case 'delete_file':
- api_protect_admin_script();
- $itemId = isset($_REQUEST['item_id']) ? $_REQUEST['item_id'] : null;
- $extraFieldValue = new ExtraFieldValue($type);
- $data = $extraFieldValue->get_values_by_handler_and_field_id($itemId, $fieldId);
- if (!empty($data) && isset($data['id']) && !empty($data['value'])) {
- $extraFieldValue->deleteValuesByHandlerAndFieldAndValue($itemId, $data['field_id'], $data['value']);
- echo 1;
- break;
- }
- echo 0;
- break;
- case 'get_second_select_options':
- $option_value_id = isset($_REQUEST['option_value_id']) ? $_REQUEST['option_value_id'] : null;
- if (!empty($type) && !empty($fieldId) && !empty($option_value_id)) {
- $field_options = new ExtraFieldOption($type);
- echo $field_options->get_second_select_field_options_by_field(
- $option_value_id,
- true
- );
- }
- break;
- case 'search_tags':
- header('Content-Type: application/json');
- $tag = isset($_REQUEST['q']) ? $_REQUEST['q'] : null;
- $result = [];
- if (empty($tag)) {
- echo json_encode(['items' => $result]);
- exit;
- }
- $extraFieldOption = new ExtraFieldOption($type);
- $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();
- /** @var Tag $tag */
- foreach ($tags as $tag) {
- $result[] = [
- 'id' => $tag->getTag(),
- 'text' => $tag->getTag(),
- ];
- }
- echo json_encode(['items' => $result]);
- break;
- case 'search_options_from_tags':
- $type = isset($_REQUEST['type']) ? $_REQUEST['type'] : null;
- $fieldId = isset($_REQUEST['field_id']) ? $_REQUEST['field_id'] : null;
- $tag = isset($_REQUEST['tag']) ? $_REQUEST['tag'] : null;
- $extraFieldOption = new ExtraFieldOption($type);
- $from = isset($_REQUEST['from']) ? $_REQUEST['from'] : '';
- $search = isset($_REQUEST['search']) ? $_REQUEST['search'] : '';
- $options = isset($_REQUEST['options']) ? json_decode($_REQUEST['options']) : '';
- $extraField = new ExtraField('session');
- $result = $extraField->searchOptionsFromTags($from, $search, $options);
- $options = [];
- $groups = [];
- foreach ($result as $data) {
- // Try to get the translation
- $displayText = $data['display_text'];
- $valueToTranslate = str_replace('-', '', $data['value']);
- $valueTranslated = str_replace(['[=', '=]'], '', get_lang($valueToTranslate));
- if ($valueToTranslate != $valueTranslated) {
- $displayText = $valueTranslated;
- }
- $groups[$displayText][] = [
- 'id' => $data['id'],
- 'text' => $data['tag'],
- ];
- }
- foreach ($groups as $key => $data) {
- $options[] = [
- 'text' => $key,
- 'children' => $groups[$key],
- ];
- }
- echo json_encode($options);
- break;
- case 'order':
- $variable = isset($_REQUEST['field_variable']) ? $_REQUEST['field_variable'] : '';
- $save = isset($_REQUEST['save']) ? $_REQUEST['save'] : '';
- $values = isset($_REQUEST['values']) ? json_decode($_REQUEST['values']) : '';
- $extraField = new ExtraField('session');
- $extraFieldInfo = $extraField->get_handler_field_info_by_field_variable(str_replace('extra_', '', $variable));
- $em = Database::getManager();
- $search = [
- 'user' => api_get_user_id(),
- 'field' => $extraFieldInfo['id'],
- ];
- $extraFieldSavedSearch = $em->getRepository('ChamiloCoreBundle:ExtraFieldSavedSearch')->findOneBy($search);
- if ($save) {
- $extraField = new \Chamilo\CoreBundle\Entity\ExtraFieldSavedSearch('session');
- if ($extraFieldSavedSearch) {
- $extraFieldSavedSearch->setValue($values);
- $em->merge($extraFieldSavedSearch);
- $em->flush();
- }
- }
- if ($extraFieldInfo) {
- /** @var \Chamilo\CoreBundle\Entity\ExtraFieldSavedSearch $options */
- $extraFieldSavedSearch = $em->getRepository('ChamiloCoreBundle:ExtraFieldSavedSearch')->findOneBy($search);
- $values = $extraFieldSavedSearch->getValue();
- $url = api_get_self().'?a=order&save=1&field_variable='.$variable;
- $html = '
- <script>
- $(function() {
- $( "#sortable" ).sortable();
- $( "#sortable" ).disableSelection();
-
- $( "#link_'.$variable.'" ).on("click", function() {
- var newList = [];
- $("#sortable").find("li").each(function(){
- newList.push($(this).text());
- });
-
- var save = JSON.stringify(newList);
- $.ajax({
- url: "'.$url.'",
- dataType: "json",
- data: "values="+save,
- success: function(data) {
- console.log(data);
- }
- });
-
- alert("'.get_lang('Saved.').'");
-
- location.reload();
-
- return false;
-
- });
- });
- </script>';
- $html .= '<ul id="sortable">';
- foreach ($values as $value) {
- $html .= '<li class="ui-state-default">';
- $html .= $value;
- $html .= '</li>';
- }
- $html .= '</ul>';
- $html .= Display::url(get_lang('Save'), '#', ['id' => 'link_'.$variable, 'class' => 'btn btn-primary']);
- echo $html;
- }
- break;
- default:
- exit;
- break;
- }
- exit;
|