Browse Source

Add multiple url support in buycourse plugin session and course

See BT#12735
jmontoyaa 7 years ago
parent
commit
4a8471b4a8

+ 23 - 8
main/inc/lib/auth.lib.php

@@ -664,20 +664,29 @@ class Auth
     {
         $em = Database::getManager();
         $qb = $em->createQueryBuilder();
+        $urlId = api_get_current_access_url_id();
 
-        $_sessions = $qb->select('s')->from('ChamiloCoreBundle:Session', 's');
+        $query = $qb->select('s')->from('ChamiloCoreBundle:Session', 's');
+
+        $qb->innerJoin(
+            'ChamiloCoreBundle:AccessUrlRelSession',
+            'ars',
+            \Doctrine\ORM\Query\Expr\Join::WITH,
+            's = ars.sessionId'
+        );
 
         if (!empty($limit)) {
-            $_sessions->setFirstResult($limit['start'])
+            $query->setFirstResult($limit['start'])
                 ->setMaxResults($limit['length']);
         }
 
-        $_sessions->where(
-            $qb->expr()->gt('s.nbrCourses', 0)
-        );
+        $query
+            ->where($qb->expr()->gt('s.nbrCourses', 0))
+            ->andWhere($qb->expr()->eq('ars.accessUrlId', $urlId))
+        ;
 
         if (!is_null($date)) {
-            $_sessions
+            $query
                 ->andWhere(
                     $qb->expr()->orX(
                         $qb->expr()->between(':date', 's.accessStartDate', 's.accessEndDate'),
@@ -692,7 +701,7 @@ class Auth
                 ->setParameter('date', $date);
         }
 
-        return $_sessions->getQuery()->getResult();
+        return $query->getQuery()->getResult();
     }
 
     /**
@@ -704,7 +713,9 @@ class Auth
     {
         $count = 0;
         $sessionTable = Database::get_main_table(TABLE_MAIN_SESSION);
+        $url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
         $date = Database::escape_string($date);
+        $urlId = api_get_current_access_url_id();
         $dateFilter = '';
         if (!empty($date)) {
             $dateFilter = <<<SQL
@@ -714,7 +725,11 @@ class Auth
                 s.access_end_date IS NOT NULL AND s.access_end_date > '$date')
 SQL;
         }
-        $sql = "SELECT COUNT(*) FROM $sessionTable s WHERE 1 = 1 $dateFilter";
+        $sql = "SELECT COUNT(*) 
+                FROM $sessionTable s
+                INNER JOIN $url u
+                ON (s.id = u.session_id)
+                WHERE u.access_url_id = $urlId $dateFilter";
         $res = Database::query($sql);
         if ($res !== false && Database::num_rows($res) > 0) {
             $count = current(Database::fetch_row($res));

+ 20 - 7
plugin/buycourses/src/buy_course_plugin.class.php

@@ -171,7 +171,7 @@ class BuyCoursesPlugin extends Plugin
         $transfer = $this->get('transfer_enable') === 'true';
 
         if ($paypal || $transfer) {
-            $item = $this->getItemByProduct(intval($productId), $productType);
+            $item = $this->getItemByProduct($productId, $productType);
             $return['html'] = '<div class="buycourses-price">';
             if ($item) {
                 $return['html'] .= '<span class="label label-primary"><b>'.$item['iso_code'].' '.$item['price'].'</b></span>';
@@ -341,6 +341,7 @@ class BuyCoursesPlugin extends Plugin
     {
         $entityManager = Database::getManager();
         $query = $entityManager->createQueryBuilder();
+        $urlId = api_get_current_access_url_id();
 
         $courses = $query
             ->select('c')
@@ -350,10 +351,14 @@ class BuyCoursesPlugin extends Plugin
                 'sc',
                 \Doctrine\ORM\Query\Expr\Join::WITH,
                 'c = sc.course'
+            )->innerJoin(
+                'ChamiloCoreBundle:AccessUrlRelCourse',
+                'ac',
+                \Doctrine\ORM\Query\Expr\Join::WITH,
+                'c = ac.course'
             )
-            ->where(
-                $query->expr()->isNull('sc.course')
-            )
+            ->where($query->expr()->isNull('sc.course'))
+            ->andWhere($query->expr()->eq('ac.url', $urlId))
             ->getQuery()
             ->getResult();
 
@@ -608,7 +613,6 @@ class BuyCoursesPlugin extends Plugin
         }
 
         $courseCatalog = [];
-
         foreach ($courses as $course) {
             $item = $this->getItemByProduct(
                 $course->getId(),
@@ -1139,11 +1143,13 @@ class BuyCoursesPlugin extends Plugin
 
         $itemTable = Database::get_main_table(self::TABLE_ITEM);
         $courseTable = Database::get_main_table(TABLE_MAIN_COURSE);
+        $urlTable = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
+
+        $urlId = api_get_current_access_url_id();
 
         $min = floatval($min);
         $max = floatval($max);
 
-        $innerJoin = "$itemTable i ON c.id = i.product_id";
         $whereConditions = [
             'i.product_type = ? ' => self::PRODUCT_TYPE_COURSE
         ];
@@ -1160,9 +1166,16 @@ class BuyCoursesPlugin extends Plugin
             $whereConditions['AND i.price <= ?'] = $max;
         }
 
+        $whereConditions['AND url.access_url_id = ?'] = $urlId;
+
         $courseIds = Database::select(
             'c.id',
-            "$courseTable c INNER JOIN $innerJoin",
+            "$courseTable c 
+            INNER JOIN $itemTable i 
+            ON c.id = i.product_id 
+            INNER JOIN $urlTable url 
+            ON c.id = url.c_id
+            ",
             ['where' => $whereConditions]
         );
 

+ 1 - 1
plugin/buycourses/src/configure_course.php

@@ -255,7 +255,7 @@ if ($form->validate()) {
             );
         } else {
             $itemId = $plugin->registerItem([
-                'currency_id' => $currency['id'],
+                'currency_id' => (int) $currency['id'],
                 'product_type' => $formValues['t'],
                 'product_id' => intval($formValues['i']),
                 'price' => floatval($_POST['price'])

+ 1 - 1
plugin/buycourses/src/course_catalog.php

@@ -35,7 +35,7 @@ if ($form->validate()) {
 }
 
 $form->addHeader($plugin->get_lang('SearchFilter'));
-$form->addText('name', get_lang('SessionName'), false);
+$form->addText('name', get_lang('CourseName'), false);
 $form->addElement(
     'number',
     'min',

+ 2 - 1
plugin/buycourses/src/course_panel.php

@@ -1,5 +1,6 @@
 <?php
 /* For license terms, see /license.txt */
+
 /**
  * User Panel
  * @package chamilo.plugin.buycourses
@@ -61,4 +62,4 @@ $tpl->assign(
 );
 $tpl->assign('header', $templateName);
 $tpl->assign('content', $content);
-$tpl->display_one_col_template();
+$tpl->display_one_col_template();