Add multiple url support in buycourse plugin session and course

See BT#12735
pull/2487/head
jmontoyaa 9 years ago
parent 6db64bd77f
commit 4a8471b4a8
  1. 31
      main/inc/lib/auth.lib.php
  2. 27
      plugin/buycourses/src/buy_course_plugin.class.php
  3. 2
      plugin/buycourses/src/configure_course.php
  4. 2
      plugin/buycourses/src/course_catalog.php
  5. 3
      plugin/buycourses/src/course_panel.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));

@ -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]
);

@ -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'])

@ -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',

@ -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();

Loading…
Cancel
Save