|
@@ -12,6 +12,7 @@ use Chamilo\CoreBundle\Entity\Course;
|
|
|
* @author Alex Aragón <alex.aragon@beeznest.com>
|
|
|
* @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
|
|
|
* @author José Loguercio Silva <jose.loguercio@beeznest.com>
|
|
|
+ * @author Julio Montoya
|
|
|
*/
|
|
|
class BuyCoursesPlugin extends Plugin
|
|
|
{
|
|
@@ -49,16 +50,18 @@ class BuyCoursesPlugin extends Plugin
|
|
|
const CULQI_PRODUCTION_TYPE = 'PRODUC';
|
|
|
|
|
|
/**
|
|
|
- *
|
|
|
- * @return StaticPlugin
|
|
|
+ * @return BuyCoursesPlugin
|
|
|
*/
|
|
|
- static function create()
|
|
|
+ public static function create()
|
|
|
{
|
|
|
static $result = null;
|
|
|
return $result ? $result : $result = new self();
|
|
|
}
|
|
|
|
|
|
- protected function __construct()
|
|
|
+ /**
|
|
|
+ * BuyCoursesPlugin constructor.
|
|
|
+ */
|
|
|
+ public function __construct()
|
|
|
{
|
|
|
parent::__construct(
|
|
|
'1.0',
|
|
@@ -69,6 +72,7 @@ class BuyCoursesPlugin extends Plugin
|
|
|
Imanol Losada - BeezNest (introduction of sessions purchase) <br/>
|
|
|
Angel Fernando Quiroz Campos - BeezNest (cleanup and new reports) <br/>
|
|
|
José Loguercio Silva - BeezNest (Payouts and buy Services)
|
|
|
+ Julio Montoya
|
|
|
",
|
|
|
array(
|
|
|
'show_main_menu_tab' => 'boolean',
|
|
@@ -83,10 +87,19 @@ class BuyCoursesPlugin extends Plugin
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Check if plugin is enabled
|
|
|
+ * @return bool
|
|
|
+ */
|
|
|
+ public function isEnabled()
|
|
|
+ {
|
|
|
+ return $this->get('paypal_enable') || $this->get('transfer_enable') || $this->get('culqi_enable');
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* This method creates the tables required to this plugin
|
|
|
*/
|
|
|
- function install()
|
|
|
+ public function install()
|
|
|
{
|
|
|
$tablesToBeCompared = array(
|
|
|
self::TABLE_PAYPAL,
|
|
@@ -117,7 +130,7 @@ class BuyCoursesPlugin extends Plugin
|
|
|
/**
|
|
|
* This method drops the plugin tables
|
|
|
*/
|
|
|
- function uninstall()
|
|
|
+ public function uninstall()
|
|
|
{
|
|
|
$tablesToBeDeleted = array(
|
|
|
self::TABLE_PAYPAL,
|
|
@@ -150,7 +163,8 @@ class BuyCoursesPlugin extends Plugin
|
|
|
* @param int $productType course or session type
|
|
|
* @return mixed bool|string html
|
|
|
*/
|
|
|
- public function buyCoursesForGridCatalogVerificator($productId, $productType) {
|
|
|
+ public function buyCoursesForGridCatalogValidator($productId, $productType)
|
|
|
+ {
|
|
|
$return = [];
|
|
|
$paypal = $this->get('paypal_enable') === 'true';
|
|
|
$transfer = $this->get('transfer_enable') === 'true';
|
|
@@ -179,7 +193,8 @@ class BuyCoursesPlugin extends Plugin
|
|
|
* @param int $productType
|
|
|
* @return string $html
|
|
|
*/
|
|
|
- public function returnBuyCourseButton($productId, $productType) {
|
|
|
+ public function returnBuyCourseButton($productId, $productType)
|
|
|
+ {
|
|
|
$url = api_get_path(WEB_PLUGIN_PATH) .
|
|
|
'buycourses/src/process.php?i=' .
|
|
|
intval($productId) .
|
|
@@ -406,11 +421,8 @@ class BuyCoursesPlugin extends Plugin
|
|
|
{
|
|
|
$auth = new Auth();
|
|
|
$sessions = $auth->browseSessions();
|
|
|
-
|
|
|
$currency = $this->getSelectedCurrency();
|
|
|
-
|
|
|
$items = [];
|
|
|
-
|
|
|
foreach ($sessions as $session) {
|
|
|
$items[] = $this->getSessionForConfiguration($session, $currency);
|
|
|
}
|
|
@@ -537,7 +549,6 @@ class BuyCoursesPlugin extends Plugin
|
|
|
private function getUserStatusForCourse($userId, Course $course)
|
|
|
{
|
|
|
if (empty($userId)) {
|
|
|
-
|
|
|
return 'NO';
|
|
|
}
|
|
|
|
|
@@ -598,7 +609,10 @@ class BuyCoursesPlugin extends Plugin
|
|
|
$courseCatalog = [];
|
|
|
|
|
|
foreach ($courses as $course) {
|
|
|
- $item = $this->getItemByProduct($course->getId(), self::PRODUCT_TYPE_COURSE);
|
|
|
+ $item = $this->getItemByProduct(
|
|
|
+ $course->getId(),
|
|
|
+ self::PRODUCT_TYPE_COURSE
|
|
|
+ );
|
|
|
|
|
|
if (empty($item)) {
|
|
|
continue;
|
|
@@ -793,7 +807,6 @@ class BuyCoursesPlugin extends Plugin
|
|
|
}
|
|
|
|
|
|
$entityManager = Database::getManager();
|
|
|
-
|
|
|
$item = $this->getItem($itemId);
|
|
|
|
|
|
if (empty($item)) {
|
|
@@ -933,7 +946,6 @@ class BuyCoursesPlugin extends Plugin
|
|
|
switch ($sale['product_type']) {
|
|
|
case self::PRODUCT_TYPE_COURSE:
|
|
|
$course = api_get_course_info_by_id($sale['product_id']);
|
|
|
-
|
|
|
$saleIsCompleted = CourseManager::subscribe_user($sale['user_id'], $course['code']);
|
|
|
break;
|
|
|
case self::PRODUCT_TYPE_SESSION:
|
|
@@ -1158,7 +1170,6 @@ class BuyCoursesPlugin extends Plugin
|
|
|
}
|
|
|
|
|
|
$courses = [];
|
|
|
-
|
|
|
foreach ($courseIds as $courseId) {
|
|
|
$courses[] = Database::getManager()->find('ChamiloCoreBundle:Course', $courseId);
|
|
|
}
|
|
@@ -1179,8 +1190,7 @@ class BuyCoursesPlugin extends Plugin
|
|
|
$lowercase = true,
|
|
|
$uppercase = true,
|
|
|
$numbers = true
|
|
|
- )
|
|
|
- {
|
|
|
+ ) {
|
|
|
$salt = $lowercase ? 'abchefghknpqrstuvwxyz' : '';
|
|
|
$salt .= $uppercase ? 'ACDEFHKNPRSTUVWXYZ' : '';
|
|
|
$salt .= $numbers ? (strlen($salt) ? '2345679' : '0123456789') : '';
|
|
@@ -1259,7 +1269,6 @@ class BuyCoursesPlugin extends Plugin
|
|
|
*/
|
|
|
public function getSaleListByUserId($id)
|
|
|
{
|
|
|
-
|
|
|
if (empty($id)) {
|
|
|
return [];
|
|
|
}
|
|
@@ -1387,7 +1396,7 @@ class BuyCoursesPlugin extends Plugin
|
|
|
/**
|
|
|
* Get all beneficiaries for a item
|
|
|
* @param int $itemId The item ID
|
|
|
- * @return array The beneficiries. Otherwise return false
|
|
|
+ * @return array The beneficiaries. Otherwise return false
|
|
|
*/
|
|
|
public function getItemBeneficiaries($itemId)
|
|
|
{
|
|
@@ -1410,7 +1419,6 @@ class BuyCoursesPlugin extends Plugin
|
|
|
public function deleteItem($itemId)
|
|
|
{
|
|
|
$itemTable = Database::get_main_table(BuyCoursesPlugin::TABLE_ITEM);
|
|
|
-
|
|
|
$affectedRows = Database::delete(
|
|
|
$itemTable,
|
|
|
['id = ?' => intval($itemId)]
|
|
@@ -1519,21 +1527,18 @@ class BuyCoursesPlugin extends Plugin
|
|
|
*/
|
|
|
public function getBeneficiariesBySale($saleId)
|
|
|
{
|
|
|
-
|
|
|
- $userTable = Database::get_main_table(TABLE_MAIN_USER);
|
|
|
-
|
|
|
- $beneficiaries = [];
|
|
|
$sale = $this->getSale($saleId);
|
|
|
$item = $this->getItemByProduct($sale['product_id'], $sale['product_type']);
|
|
|
$itemBeneficiaries = $this->getItemBeneficiaries($item['id']);
|
|
|
- return $itemBeneficiaries;
|
|
|
|
|
|
+ return $itemBeneficiaries;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* gets all payouts
|
|
|
* @param int $status - default 0 - pending
|
|
|
* @param int $payoutId - for get an individual payout if want all then false
|
|
|
+ * @param int $userId
|
|
|
* @return array
|
|
|
*/
|
|
|
public function getPayouts($status = self::PAYOUT_STATUS_PENDING, $payoutId = false, $userId = false)
|
|
@@ -1605,7 +1610,6 @@ class BuyCoursesPlugin extends Plugin
|
|
|
}
|
|
|
|
|
|
$paypalFieldId = $paypalExtraField['id'];
|
|
|
-
|
|
|
$paypalAccount = Database::select(
|
|
|
"value",
|
|
|
$extraFieldValues,
|
|
@@ -1671,7 +1675,6 @@ class BuyCoursesPlugin extends Plugin
|
|
|
['status' => intval($status)],
|
|
|
['id = ?' => intval($payoutId)]
|
|
|
);
|
|
|
-
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1704,8 +1707,9 @@ class BuyCoursesPlugin extends Plugin
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Register addicional service
|
|
|
- * @param array params $service
|
|
|
+ * Register additional service
|
|
|
+ * @param array $service params
|
|
|
+ *
|
|
|
* @return mixed response
|
|
|
*/
|
|
|
public function storeService($service)
|
|
@@ -1728,7 +1732,9 @@ class BuyCoursesPlugin extends Plugin
|
|
|
]
|
|
|
);
|
|
|
|
|
|
- if ($return && !empty($service['picture_crop_image_base_64']) && !empty($service['picture_crop_result'])) {
|
|
|
+ if ($return && !empty($service['picture_crop_image_base_64'])
|
|
|
+ && !empty($service['picture_crop_result'])
|
|
|
+ ) {
|
|
|
$img = str_replace('data:image/png;base64,', '', $service['picture_crop_image_base_64']);
|
|
|
$img = str_replace(' ', '+', $img);
|
|
|
$data = base64_decode($img);
|
|
@@ -1799,7 +1805,7 @@ class BuyCoursesPlugin extends Plugin
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * List adicional services
|
|
|
+ * List additional services
|
|
|
* @param integer $id service id
|
|
|
* @return array
|
|
|
*/
|
|
@@ -1888,8 +1894,14 @@ class BuyCoursesPlugin extends Plugin
|
|
|
* @param boolean $hot enable hot services
|
|
|
* @return array
|
|
|
*/
|
|
|
- public function getServiceSale($id = null, $buyerId = null, $status = null, $nodeType = null, $nodeId = null, $hot = false)
|
|
|
- {
|
|
|
+ public function getServiceSale(
|
|
|
+ $id = null,
|
|
|
+ $buyerId = null,
|
|
|
+ $status = null,
|
|
|
+ $nodeType = null,
|
|
|
+ $nodeId = null,
|
|
|
+ $hot = false
|
|
|
+ ) {
|
|
|
$servicesTable = Database::get_main_table(BuyCoursesPlugin::TABLE_SERVICES);
|
|
|
$servicesSaleTable = Database::get_main_table(BuyCoursesPlugin::TABLE_SERVICES_SALE);
|
|
|
|
|
@@ -1942,7 +1954,6 @@ class BuyCoursesPlugin extends Plugin
|
|
|
$servicesSale = [];
|
|
|
|
|
|
if ($id) {
|
|
|
-
|
|
|
$owner = api_get_user_info($return['owner_id']);
|
|
|
$buyer = api_get_user_info($return['buyer_id']);
|
|
|
|
|
@@ -1976,9 +1987,7 @@ class BuyCoursesPlugin extends Plugin
|
|
|
return $servicesSale;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
foreach ($return as $index => $service) {
|
|
|
-
|
|
|
$owner = api_get_user_info($service['owner_id']);
|
|
|
$buyer = api_get_user_info($service['buyer_id']);
|
|
|
|
|
@@ -2020,6 +2029,7 @@ class BuyCoursesPlugin extends Plugin
|
|
|
public function cancelServiceSale($serviceSaleId)
|
|
|
{
|
|
|
$this->updateServiceSaleStatus($serviceSaleId, self::SERVICE_STATUS_CANCELLED);
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -2031,7 +2041,6 @@ class BuyCoursesPlugin extends Plugin
|
|
|
public function completeServiceSale($serviceSaleId)
|
|
|
{
|
|
|
$serviceSale = $this->getServiceSale($serviceSaleId);
|
|
|
-
|
|
|
if ($serviceSale['status'] == self::SERVICE_STATUS_COMPLETED) {
|
|
|
return true;
|
|
|
}
|
|
@@ -2102,7 +2111,6 @@ class BuyCoursesPlugin extends Plugin
|
|
|
}
|
|
|
|
|
|
return $services;
|
|
|
-
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -2137,7 +2145,6 @@ class BuyCoursesPlugin extends Plugin
|
|
|
}
|
|
|
|
|
|
$userId = api_get_user_id();
|
|
|
-
|
|
|
$service = $this->getServices($serviceId);
|
|
|
|
|
|
if (empty($service)) {
|
|
@@ -2254,5 +2261,4 @@ class BuyCoursesPlugin extends Plugin
|
|
|
|
|
|
return $paths[$var];
|
|
|
}
|
|
|
-
|
|
|
}
|