135 lines
4.5 KiB
PHP
Executable File
135 lines
4.5 KiB
PHP
Executable File
<?php
|
|
|
|
namespace IpSupply\DataSheet\Block\Widget;
|
|
|
|
use Magento\Framework\View\Element\Template;
|
|
use Magento\Widget\Block\BlockInterface;
|
|
use Magento\Framework\View\Element\Template\Context;
|
|
use Magento\Framework\App\ObjectManager;
|
|
use Magento\Framework\UrlInterface;
|
|
use Magento\Framework\App\Request\Http;
|
|
use Magento\Framework\HTTP\Client\Curl;
|
|
|
|
class DataSheetWidget extends Template implements BlockInterface {
|
|
protected $_objectManager;
|
|
protected $_urlInterface;
|
|
protected $_request;
|
|
protected $_curl;
|
|
protected $_apiURL;
|
|
protected $_sheetPerPage;
|
|
|
|
public function __construct(Http $request, UrlInterface $urlInterface, Curl $curl, Context $context, array $data = []) {
|
|
$this->_objectManager = ObjectManager::getInstance();
|
|
$this->_urlInterface = $urlInterface;
|
|
$this->_request = $request;
|
|
$this->_curl = $curl;
|
|
$this->_apiURL = "https://disti.nswteam.net/api/getListDataSheet";
|
|
$this->_sheetPerPage = 20;
|
|
parent::__construct($context, $data);
|
|
}
|
|
|
|
function getDataSheet() {
|
|
$response = array();
|
|
|
|
// Get data sheet
|
|
$pageNumber = $this->_request->getParam("page") ? $this->_request->getParam("page") : 1;
|
|
$searchKey = $this->_request->getParam("search") ? $this->_request->getParam("search") : "";
|
|
$pageURL = $pageNumber - 1;
|
|
$source= empty($this->getData('source')) ? "" : urlencode($this->getData('source'));
|
|
$url = $this->_apiURL."?limit=".$this->_sheetPerPage."&page=".$pageURL."&search=".urlencode($searchKey)."&source=".$source;
|
|
$this->_curl->get($url);
|
|
$dataSheet = json_decode($this->_curl->getBody());
|
|
$response["data"] = $dataSheet->data;
|
|
|
|
// return active page
|
|
$response["activePage"] = $pageNumber;
|
|
// return search key
|
|
$response["searchKey"] = $searchKey;
|
|
|
|
// Total pagination
|
|
$currentURL = $this->_urlInterface->getCurrentUrl();
|
|
$haveLeft = FALSE;
|
|
$haveRight = FALSE;
|
|
$pagination = array();
|
|
$totalPagination = ceil($dataSheet->totalProduct/$this->_sheetPerPage);
|
|
if($totalPagination > 5) {
|
|
if($pageNumber - 2 > 1 && $totalPagination - $pageNumber > 2){
|
|
$index = $pageNumber - 2;
|
|
for($i = 1; $i <= 5; $i++) {
|
|
$item = $this->_request->getParam("page")
|
|
? str_replace("page=".$pageNumber, "page=".$index, $currentURL)
|
|
: $currentURL."?page=".$index;
|
|
array_push($pagination, array(
|
|
"index" => $index,
|
|
"url" => $item,
|
|
));
|
|
$index++;
|
|
}
|
|
$haveLeft = TRUE;
|
|
$haveRight = TRUE;
|
|
}
|
|
else if($pageNumber - 2 <= 1 && $totalPagination - $pageNumber > 2) {
|
|
$index = 1;
|
|
for($i = 1; $i <= 5; $i++) {
|
|
$item = $this->_request->getParam("page")
|
|
? str_replace("page=".$pageNumber, "page=".$index, $currentURL)
|
|
: $currentURL."?page=".$index;
|
|
array_push($pagination, array(
|
|
"index" => $index,
|
|
"url" => $item,
|
|
));
|
|
$index++;
|
|
}
|
|
$haveRight = TRUE;
|
|
}
|
|
else if($pageNumber - 2 > 1 && $totalPagination - $pageNumber <= 2) {
|
|
$index = $pageNumber - 2 - (2 - ($totalPagination - $pageNumber));
|
|
for($i = 1; $i <= 5; $i++) {
|
|
$item = $this->_request->getParam("page")
|
|
? str_replace("page=".$pageNumber, "page=".$index, $currentURL)
|
|
: $currentURL."?page=".$index;
|
|
array_push($pagination, array(
|
|
"index" => $index,
|
|
"url" => $item,
|
|
));
|
|
$index++;
|
|
}
|
|
$haveLeft = TRUE;
|
|
}
|
|
}
|
|
else {
|
|
for($i = 1; $i <= $totalPagination; $i++) {
|
|
$item = $this->_request->getParam("page")
|
|
? str_replace("page=".$pageNumber, "page=".$i, $currentURL)
|
|
: $currentURL."?page=".$i;
|
|
array_push($pagination, array(
|
|
"index" => $i,
|
|
"url" => $item,
|
|
));
|
|
}
|
|
}
|
|
$response["pagination"] = $pagination;
|
|
$response["haveLeft"] = $haveLeft;
|
|
$response["haveRight"] = $haveRight;
|
|
$response["previousPage"] = $this->_request->getParam("page")
|
|
? $pageNumber > 1
|
|
? str_replace("page=".$pageNumber, "page=".$pageNumber - 1, $currentURL)
|
|
: str_replace("page=".$pageNumber, "page=".$totalPagination, $currentURL)
|
|
: $currentURL."?page=".$index;
|
|
|
|
$response["nextPage"] = $this->_request->getParam("page")
|
|
? $pageNumber < $totalPagination
|
|
? str_replace("page=".$pageNumber, "page=".$pageNumber + 1, $currentURL)
|
|
: str_replace("page=".$pageNumber, "page=1", $currentURL)
|
|
: $currentURL."?page=".$i;
|
|
|
|
|
|
return $response;
|
|
}
|
|
|
|
function getAssetUrl($asset) {
|
|
$assetRepository = $this->_objectManager->get('Magento\Framework\View\Asset\Repository');
|
|
return $assetRepository->createAsset($asset)->getUrl();
|
|
}
|
|
}
|