Move code to AbstractResource

pull/3939/head
Angel Fernando Quiroz Campos 4 years ago
parent 8bef8be613
commit b43c4ed2e6
  1. 3
      public/main/announcements/announcements.php
  2. 5
      public/main/inc/ajax/announcement.ajax.php
  3. 11
      public/main/inc/lib/AnnouncementManager.php
  4. 3
      public/main/survey/surveyUtil.class.php
  5. 37
      src/CoreBundle/Entity/AbstractResource.php

@ -2,6 +2,7 @@
/* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Entity\AbstractResource;
use Chamilo\CoreBundle\Framework\Container;
use Chamilo\CourseBundle\Entity\CAnnouncement;
@ -503,7 +504,7 @@ switch ($action) {
$to = AnnouncementManager::loadEditUsers($announcementInfo);
if (!empty($group_id)) {
$separated = CourseManager::separateUsersGroups($to);
$separated = AbstractResource::separateUsersGroups($to);
if (isset($separated['groups']) && count($separated['groups']) > 1) {
$form->freeze();
Display::addFlash(Display::return_message(get_lang('Disabled by trainer')));

@ -2,6 +2,7 @@
/* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Entity\AbstractResource;
use Chamilo\CoreBundle\Framework\Container;
require_once __DIR__.'/../global.inc.php';
@ -84,7 +85,7 @@ switch ($action) {
$previewGroups[] = $group['iid'];
}
} else {
$send_to = CourseManager::separateUsersGroups($users);
$send_to = AbstractResource::separateUsersGroups($users);
// Storing the selected groups
if (is_array($send_to['groups']) &&
!empty($send_to['groups'])
@ -104,7 +105,7 @@ switch ($action) {
}
}
} else {
$send_to_users = CourseManager::separateUsersGroups($users);
$send_to_users = AbstractResource::separateUsersGroups($users);
$sentToAllGroup = false;
if (empty($send_to_users['groups']) && empty($send_to_users['users'])) {
$previewGroups[] = $groupId;

@ -2,6 +2,7 @@
/* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Entity\AbstractResource;
use Chamilo\CoreBundle\Entity\ExtraField as ExtraFieldEntity;
use Chamilo\CoreBundle\Entity\ExtraFieldValues;
use Chamilo\CoreBundle\Framework\Container;
@ -677,7 +678,7 @@ class AnnouncementManager
$group
);
} else {
$send_to = CourseManager::separateUsersGroups($sentTo);
$send_to = AbstractResource::separateUsersGroups($sentTo);
// Storing the selected groups
if (is_array($send_to['groups']) && !empty($send_to['groups'])) {
foreach ($send_to['groups'] as $group) {
@ -756,7 +757,7 @@ class AnnouncementManager
$em->persist($announcement);
$sendToUsers = CourseManager::separateUsersGroups($to_users);
$sendToUsers = AbstractResource::separateUsersGroups($to_users);
// if nothing was selected in the menu then send to all the group
$sentToAllGroup = false;
if (empty($sendToUsers['groups']) && empty($sendToUsers['users'])) {
@ -879,7 +880,7 @@ class AnnouncementManager
// store, first the groups, then the users
if (!empty($to)) {
$send_to = CourseManager::separateUsersGroups($to);
$send_to = AbstractResource::separateUsersGroups($to);
// storing the selected groups
if (is_array($send_to['groups'])) {
@ -1705,7 +1706,7 @@ class AnnouncementManager
$groupReference = '';
$disableEdit = false;
$to = [];
$separated = CourseManager::separateUsersGroups($to);
$separated = AbstractResource::separateUsersGroups($to);
if (!empty($group_id)) {
// If the announcement was sent to many groups, disable edition inside a group
if (isset($separated['groups']) && count($separated['groups']) > 1) {
@ -1925,7 +1926,7 @@ class AnnouncementManager
if (empty($choosenUsers) || (isset($choosenUsers[0]) && 'everyone' === $choosenUsers[0])) {
$event->addCourseLink($course, $session, $group);
} else {
$sendTo = CourseManager::separateUsersGroups($choosenUsers);
$sendTo = AbstractResource::separateUsersGroups($choosenUsers);
if (is_array($sendTo['groups']) && !empty($sendTo['groups'])) {
$sendTo['groups'] = array_map('api_get_group_entity', $sendTo['groups']);

@ -2,6 +2,7 @@
/* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Entity\AbstractResource;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\Session as SessionEntity;
use Chamilo\CoreBundle\Entity\User;
@ -2376,7 +2377,7 @@ class SurveyUtil
$session_id = api_get_session_id();
if (false == $isAdditionalEmail) {
$result = CourseManager::separateUsersGroups($users_array);
$result = AbstractResource::separateUsersGroups($users_array);
$groupList = $result['groups'];
$users_array = $result['users'];

@ -11,10 +11,8 @@ use ApiPlatform\Core\Annotation\ApiSubresource;
use Chamilo\CoreBundle\Security\Authorization\Voter\ResourceNodeVoter;
use Chamilo\CoreBundle\Traits\UserCreatorTrait;
use Chamilo\CourseBundle\Entity\CGroup;
use Doctrine\Common\Collections\Criteria;
use Doctrine\ORM\Mapping as ORM;
use Exception;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
@ -485,4 +483,39 @@ abstract class AbstractResource
'groups' => $groups,
];
}
/**
* This function separates the users from the groups users have a value
* USER:XXX (with XXX the groups id have a value
* GROUP:YYY (with YYY the group id).
*
* @param array $to Array of strings that define the type and id of each destination
*
* @return array Array of groups and users (each an array of IDs)
*/
public static function separateUsersGroups(array $to): array
{
$send_to = ['groups' => [], 'users' => []];
foreach ($to as $to_item) {
if (empty($to_item)) {
continue;
}
$parts = explode(':', $to_item);
$type = $parts[0] ?? '';
$id = $parts[1] ?? '';
switch ($type) {
case 'GROUP':
$send_to['groups'][] = (int) $id;
break;
case 'USER':
$send_to['users'][] = (int) $id;
break;
}
}
return $send_to;
}
}

Loading…
Cancel
Save