diff --git a/plugin/buycourses/src/service_process.php b/plugin/buycourses/src/service_process.php
index 48a2434e9d..59ea1f9f19 100644
--- a/plugin/buycourses/src/service_process.php
+++ b/plugin/buycourses/src/service_process.php
@@ -1,220 +1,238 @@
-get('include_services');
-$paypalEnabled = $plugin->get('paypal_enable') === 'true';
-$transferEnabled = $plugin->get('transfer_enable') === 'true';
-$culqiEnabled = $plugin->get('culqi_enable') === 'true';
-$wizard = true;
-$additionalQueryString = '';
-if ($includeServices !== 'true') {
- api_not_allowed(true);
-}
-
-$typeUser = intval($_REQUEST['t']) === BuyCoursesPlugin::SERVICE_TYPE_USER;
-$typeCourse = intval($_REQUEST['t']) === BuyCoursesPlugin::SERVICE_TYPE_COURSE;
-$typeSession = intval($_REQUEST['t']) === BuyCoursesPlugin::SERVICE_TYPE_SESSION;
-$typeFinalLp = intval($_REQUEST['t']) === BuyCoursesPlugin::SERVICE_TYPE_LP_FINAL_ITEM;
-$queryString = 'i='.intval($_REQUEST['i']).'&t='.intval($_REQUEST['t']).$additionalQueryString;
-
-$serviceInfo = $plugin->getServices(intval($_REQUEST['i']));
-$userInfo = api_get_user_info($currentUserId);
-
-$form = new FormValidator('confirm_sale');
-
-if ($form->validate()) {
- $formValues = $form->getSubmitValues();
-
- if (!$formValues['payment_type']) {
- Display::addFlash(
- Display::return_message($plugin->get_lang('NeedToSelectPaymentType'), 'error', false)
- );
- header('Location:'.api_get_self().'?'.$queryString);
- exit;
- }
-
- if (!$formValues['info_select']) {
- Display::addFlash(
- Display::return_message($plugin->get_lang('AdditionalInfoRequired'), 'error', false)
- );
- header('Location:'.api_get_self().'?'.$queryString);
- exit;
- }
-
- $serviceSaleId = $plugin->registerServiceSale(
- $serviceId,
- $formValues['payment_type'],
- $formValues['info_select'],
- $formValues['enable_trial']
- );
-
- if ($serviceSaleId !== false) {
- $_SESSION['bc_service_sale_id'] = $serviceSaleId;
-
- header('Location: '.api_get_path(WEB_PLUGIN_PATH).'buycourses/src/service_process_confirm.php');
- }
-
- exit;
-}
-
-$paymentTypesOptions = $plugin->getPaymentTypes();
-
-if (!$paypalEnabled) {
- unset($paymentTypesOptions[BuyCoursesPlugin::PAYMENT_TYPE_PAYPAL]);
-}
-
-if (!$transferEnabled) {
- unset($paymentTypesOptions[BuyCoursesPlugin::PAYMENT_TYPE_TRANSFER]);
-}
-
-if (!$culqiEnabled) {
- unset($paymentTypesOptions[BuyCoursesPlugin::PAYMENT_TYPE_CULQI]);
-}
-
-$form->addHeader('');
-$form->addRadio('payment_type', null, $paymentTypesOptions);
-$form->addHtml('
'.$plugin->get_lang('AdditionalInfo').'
');
-$form->addHeader('');
-$form->addHtml(
- Display::return_message(
- $plugin->get_lang('PleaseSelectTheCorrectInfoToApplyTheService'),
- 'info'
- )
-);
-$selectOptions = [
- 0 => get_lang('None')
-];
-
-if ($typeUser) {
- $users = $em->getRepository('ChamiloUserBundle:User')->findAll();
- $selectOptions[$userInfo['user_id']] = api_get_person_name($userInfo['firstname'], $userInfo['lastname']).' ('.get_lang('Myself').')';
- if (!empty($users)) {
- foreach ($users as $user) {
- if (intval($userInfo['user_id']) !== intval($user->getId())) {
- $selectOptions[$user->getId()] = $user->getCompleteNameWithUsername();
- }
- }
- }
- $form->addSelect('info_select', get_lang('User'), $selectOptions);
-} elseif ($typeCourse) {
- $user = $em->getRepository('ChamiloUserBundle:User')->find($currentUserId);
- $courses = $user->getCourses();
- $checker = false;
- foreach ($courses as $course) {
- $checker = true;
- $selectOptions[$course->getCourse()->getId()] = $course->getCourse()->getTitle();
- }
- if (!$checker) {
- $form->addHtml(Display::return_message($plugin->get_lang('YouNeedToBeRegisteredInAtLeastOneCourse'), 'error'));
- }
- $form->addSelect('info_select', get_lang('Course'), $selectOptions);
-} elseif ($typeSession) {
- $user = $em->getRepository('ChamiloUserBundle:User')->find($currentUserId);
- $sessions = $user->getSessionCourseSubscriptions();
- $checker = false;
- foreach ($sessions as $session) {
- $checker = true;
- $selectOptions[$session->getSession()->getId()] = $session->getSession()->getName();
- }
- if (!$checker) {
- $form->addHtml(Display::return_message($plugin->get_lang('YouNeedToBeRegisteredInAtLeastOneSession'), 'error'));
- }
- $form->addSelect('info_select', get_lang('Session'), $selectOptions);
-} elseif ($typeFinalLp) {
- // We need here to check the current user courses first
- $user = $em->getRepository('ChamiloUserBundle:User')->find($currentUserId);
- $courses = $user->getCourses();
- $courseLpList = [];
- $sessionLpList = [];
- $checker = false;
- foreach ($courses as $course) {
- // Now get all the courses lp's
- $thisLpList = $em->getRepository('ChamiloCourseBundle:CLp')->findBy(['cId' => $course->getCourse()->getId()]);
- foreach ($thisLpList as $lp) {
- $courseLpList[$lp->getCId()] = $lp->getName().' ('.$course->getCourse()->getTitle().')';
- }
- }
-
- // Here now checking the current user sessions
- $sessions = $user->getSessionCourseSubscriptions();
- foreach ($sessions as $session) {
- $thisLpList = $em->getRepository('ChamiloCourseBundle:CLp')->findBy(['sessionId' => $session->getSession()->getId()]);
-
- //Here check all the lpItems
- foreach ($thisLpList as $lp) {
- $thisLpItems = $em->getRepository('ChamiloCourseBundle:CLpItem')->findBy(['lpId' => $lp->getId()]);
-
- foreach ($thisLpItems as $item) {
- //Now only we need the final item and return the current LP
- if ($item->getItemType() == TOOL_LP_FINAL_ITEM) {
- $checker = true;
- $sessionLpList[$lp->getCId()] = $lp->getName().' ('.$session->getSession()->getName().')';
- }
- }
- }
-
- $thisLpList = $em->getRepository('ChamiloCourseBundle:CLp')->findBy(['cId' => $session->getCourse()->getId()]);
-
- //Here check all the lpItems
- foreach ($thisLpList as $lp) {
- $thisLpItems = $em->getRepository('ChamiloCourseBundle:CLpItem')->findBy(['lpId' => $lp->getId()]);
-
- foreach ($thisLpItems as $item) {
- //Now only we need the final item and return the current LP
- if ($item->getItemType() == TOOL_LP_FINAL_ITEM) {
- $checker = true;
- $sessionLpList[$lp->getCId()] = $lp->getName().' ('.$session->getSession()->getName().')';
- }
- }
- }
- }
-
- $selectOptions = $selectOptions + $courseLpList + $sessionLpList;
-
- if (!$checker) {
- $form->addHtml(Display::return_message($plugin->get_lang('YourCoursesNeedAtLeastOneLearningPath'), 'error'));
- }
- $form->addSelect('info_select', get_lang('LearningPath'), $selectOptions);
-}
-
-$form->addHidden('t', intval($_GET['t']));
-$form->addHidden('i', intval($_GET['i']));
-
-$form->addButton('submit', $plugin->get_lang('ConfirmOrder'), 'check', 'success');
-
-// View
-$templateName = $plugin->get_lang('PaymentMethods');
-$interbreadcrumb[] = array(
- "url" => "service_catalog.php",
- "name" => $plugin->get_lang('ListOfServicesOnSale'),
-);
-
-$tpl = new Template($templateName);
-$tpl->assign('buying_service', true);
-$tpl->assign('service', $serviceInfo);
-$tpl->assign('user', api_get_user_info());
-$tpl->assign('form', $form->returnForm());
-$content = $tpl->fetch('buycourses/view/process.tpl');
-$tpl->assign('content', $content);
-$tpl->display_one_col_template();
+get('include_services');
+$paypalEnabled = $plugin->get('paypal_enable') === 'true';
+$transferEnabled = $plugin->get('transfer_enable') === 'true';
+$culqiEnabled = $plugin->get('culqi_enable') === 'true';
+$wizard = true;
+$additionalQueryString = '';
+if ($includeServices !== 'true') {
+ api_not_allowed(true);
+}
+
+$typeUser = intval($_REQUEST['t']) === BuyCoursesPlugin::SERVICE_TYPE_USER;
+$typeCourse = intval($_REQUEST['t']) === BuyCoursesPlugin::SERVICE_TYPE_COURSE;
+$typeSession = intval($_REQUEST['t']) === BuyCoursesPlugin::SERVICE_TYPE_SESSION;
+$typeFinalLp = intval($_REQUEST['t']) === BuyCoursesPlugin::SERVICE_TYPE_LP_FINAL_ITEM;
+$queryString = 'i='.intval($_REQUEST['i']).'&t='.intval($_REQUEST['t']).$additionalQueryString;
+
+$serviceInfo = $plugin->getServices(intval($_REQUEST['i']));
+$userInfo = api_get_user_info($currentUserId);
+
+$form = new FormValidator('confirm_sale');
+
+if ($form->validate()) {
+ $formValues = $form->getSubmitValues();
+
+ if (!$formValues['payment_type']) {
+ Display::addFlash(
+ Display::return_message($plugin->get_lang('NeedToSelectPaymentType'), 'error', false)
+ );
+ header('Location:'.api_get_self().'?'.$queryString);
+ exit;
+ }
+
+ if (!$formValues['info_select']) {
+ Display::addFlash(
+ Display::return_message($plugin->get_lang('AdditionalInfoRequired'), 'error', false)
+ );
+ header('Location:'.api_get_self().'?'.$queryString);
+ exit;
+ }
+
+ $serviceSaleId = $plugin->registerServiceSale(
+ $serviceId,
+ $formValues['payment_type'],
+ $formValues['info_select'],
+ $formValues['enable_trial']
+ );
+
+ if ($serviceSaleId !== false) {
+ $_SESSION['bc_service_sale_id'] = $serviceSaleId;
+
+ header('Location: '.api_get_path(WEB_PLUGIN_PATH).'buycourses/src/service_process_confirm.php');
+ }
+
+ exit;
+}
+
+$paymentTypesOptions = $plugin->getPaymentTypes();
+
+if (!$paypalEnabled) {
+ unset($paymentTypesOptions[BuyCoursesPlugin::PAYMENT_TYPE_PAYPAL]);
+}
+
+if (!$transferEnabled) {
+ unset($paymentTypesOptions[BuyCoursesPlugin::PAYMENT_TYPE_TRANSFER]);
+}
+
+if (!$culqiEnabled) {
+ unset($paymentTypesOptions[BuyCoursesPlugin::PAYMENT_TYPE_CULQI]);
+}
+
+$form->addHeader('');
+$form->addRadio('payment_type', null, $paymentTypesOptions);
+$form->addHtml(''.$plugin->get_lang('AdditionalInfo').'
');
+$form->addHeader('');
+$form->addHtml(
+ Display::return_message(
+ $plugin->get_lang('PleaseSelectTheCorrectInfoToApplyTheService'),
+ 'info'
+ )
+);
+$selectOptions = [
+ 0 => get_lang('None')
+];
+
+if ($typeUser) {
+ $users = $em->getRepository('ChamiloUserBundle:User')->findAll();
+ $selectOptions[$userInfo['user_id']] = api_get_person_name($userInfo['firstname'], $userInfo['lastname']).' ('.get_lang('Myself').')';
+ if (!empty($users)) {
+ /** @var User $user */
+ foreach ($users as $user) {
+ if (intval($userInfo['user_id']) !== intval($user->getId())) {
+ $selectOptions[$user->getId()] = $user->getCompleteNameWithUsername();
+ }
+ }
+ }
+ $form->addSelect('info_select', get_lang('User'), $selectOptions);
+} elseif ($typeCourse) {
+ /** @var User $user */
+ $user = $em->getRepository('ChamiloUserBundle:User')->find($currentUserId);
+ $courses = $user->getCourses();
+ $checker = false;
+ foreach ($courses as $course) {
+ $checker = true;
+ $selectOptions[$course->getCourse()->getId()] = $course->getCourse()->getTitle();
+ }
+ if (!$checker) {
+ $form->addHtml(Display::return_message($plugin->get_lang('YouNeedToBeRegisteredInAtLeastOneCourse'), 'error'));
+ }
+ $form->addSelect('info_select', get_lang('Course'), $selectOptions);
+} elseif ($typeSession) {
+ $sessions = [];
+ /** @var User $user */
+ $user = $em->getRepository('ChamiloUserBundle:User')->find($currentUserId);
+ $userSubscriptions = $user->getSessionCourseSubscriptions();
+
+ /** @var SessionRelCourseRelUser $userSubscription */
+ foreach ($userSubscriptions as $userSubscription) {
+ $sessions[$userSubscription->getSession()->getId()] = $userSubscription->getSession()->getName();
+ }
+
+ $sessionsAsGeneralCoach = $user->getSessionAsGeneralCoach();
+ /** @var Session $sessionAsGeneralCoach */
+ foreach ($sessionsAsGeneralCoach as $sessionAsGeneralCoach) {
+ $sessions[$sessionAsGeneralCoach->getId()] = $sessionAsGeneralCoach->getName();
+ }
+
+ if (!$sessions) {
+ $form->addHtml(Display::return_message($plugin->get_lang('YouNeedToBeRegisteredInAtLeastOneSession'), 'error'));
+ } else {
+ $selectOptions = $sessions;
+ $form->addSelect('info_select', get_lang('Session'), $selectOptions);
+ }
+} elseif ($typeFinalLp) {
+ // We need here to check the current user courses first
+ /** @var User $user */
+ $user = $em->getRepository('ChamiloUserBundle:User')->find($currentUserId);
+ $courses = $user->getCourses();
+ $courseLpList = [];
+ $sessionLpList = [];
+ $checker = false;
+ foreach ($courses as $course) {
+ // Now get all the courses lp's
+ $thisLpList = $em->getRepository('ChamiloCourseBundle:CLp')->findBy(['cId' => $course->getCourse()->getId()]);
+ foreach ($thisLpList as $lp) {
+ $courseLpList[$lp->getCId()] = $lp->getName().' ('.$course->getCourse()->getTitle().')';
+ }
+ }
+
+ // Here now checking the current user sessions
+ $sessions = $user->getSessionCourseSubscriptions();
+ foreach ($sessions as $session) {
+ $thisLpList = $em->getRepository('ChamiloCourseBundle:CLp')->findBy(['sessionId' => $session->getSession()->getId()]);
+
+ //Here check all the lpItems
+ foreach ($thisLpList as $lp) {
+ $thisLpItems = $em->getRepository('ChamiloCourseBundle:CLpItem')->findBy(['lpId' => $lp->getId()]);
+
+ foreach ($thisLpItems as $item) {
+ //Now only we need the final item and return the current LP
+ if ($item->getItemType() == TOOL_LP_FINAL_ITEM) {
+ $checker = true;
+ $sessionLpList[$lp->getCId()] = $lp->getName().' ('.$session->getSession()->getName().')';
+ }
+ }
+ }
+
+ $thisLpList = $em->getRepository('ChamiloCourseBundle:CLp')->findBy(['cId' => $session->getCourse()->getId()]);
+
+ //Here check all the lpItems
+ foreach ($thisLpList as $lp) {
+ $thisLpItems = $em->getRepository('ChamiloCourseBundle:CLpItem')->findBy(['lpId' => $lp->getId()]);
+
+ foreach ($thisLpItems as $item) {
+ //Now only we need the final item and return the current LP
+ if ($item->getItemType() == TOOL_LP_FINAL_ITEM) {
+ $checker = true;
+ $sessionLpList[$lp->getCId()] = $lp->getName().' ('.$session->getSession()->getName().')';
+ }
+ }
+ }
+ }
+
+ $selectOptions = $selectOptions + $courseLpList + $sessionLpList;
+
+ if (!$checker) {
+ $form->addHtml(Display::return_message($plugin->get_lang('YourCoursesNeedAtLeastOneLearningPath'), 'error'));
+ }
+ $form->addSelect('info_select', get_lang('LearningPath'), $selectOptions);
+}
+
+$form->addHidden('t', intval($_GET['t']));
+$form->addHidden('i', intval($_GET['i']));
+
+$form->addButton('submit', $plugin->get_lang('ConfirmOrder'), 'check', 'success');
+
+// View
+$templateName = $plugin->get_lang('PaymentMethods');
+$interbreadcrumb[] = array(
+ "url" => "service_catalog.php",
+ "name" => $plugin->get_lang('ListOfServicesOnSale'),
+);
+
+$tpl = new Template($templateName);
+$tpl->assign('buying_service', true);
+$tpl->assign('service', $serviceInfo);
+$tpl->assign('user', api_get_user_info());
+$tpl->assign('form', $form->returnForm());
+$content = $tpl->fetch('buycourses/view/process.tpl');
+$tpl->assign('content', $content);
+$tpl->display_one_col_template();
diff --git a/src/Chamilo/UserBundle/Entity/User.php b/src/Chamilo/UserBundle/Entity/User.php
index c70b1555fc..43f9c0a91d 100644
--- a/src/Chamilo/UserBundle/Entity/User.php
+++ b/src/Chamilo/UserBundle/Entity/User.php
@@ -404,6 +404,7 @@ class User implements UserInterface //implements ParticipantInterface, ThemeUser
protected $portals;
/**
+ * @var ArrayCollection
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\Session", mappedBy="generalCoach")
**/
protected $sessionAsGeneralCoach;
@@ -2433,4 +2434,13 @@ class User implements UserInterface //implements ParticipantInterface, ThemeUser
return $this;
}
+
+ /**
+ * Get sessionAsGeneralCoach
+ * @return ArrayCollection
+ */
+ public function getSessionAsGeneralCoach()
+ {
+ return $this->sessionAsGeneralCoach;
+ }
}