%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
| Server IP : 14.207.165.8 / Your IP : 216.73.216.101 Web Server : Apache/2.4.18 (Ubuntu) System : Linux 246 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : root ( 0) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/html/egp/controllers/ |
Upload File : |
<?php
namespace app\controllers;
use Yii;
use yii\helpers\Url;
use app\models\TblEgp;
use yii\data\ActiveDataProvider;
use Zend\Feed\Writer\Feed;
use app\models\TblEgpSearch;
use app\models\TblCategory;
class EgpController extends \yii\web\Controller {
public function actionRss() {
// $dataProvider = new ActiveDataProvider([
// 'query' => TblEgp::find(),
// 'pagination' => [
// 'pageSize' => 20
// ],
// ]);
$searchModel = new TblEgpSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->pagination = ['pageSize' => 20];
$dataProvider->sort = [
'defaultOrder' => [
'date' => SORT_DESC,
]
];
// $response = Yii::$app->getResponse();
// $headers = $response->getHeaders();
// $headers->set('Content-Type', 'application/rss+xml; charset=utf-8');
// \Yii::$app->response->getHeaders()->set('Content-Type', 'application/rss+xml');
// \Yii::$app->response->format = \yii\web\Response::FORMAT_XML;
// \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
\Yii::$app->response->format = \yii\web\Response::FORMAT_RAW;
// $headers = \Yii::$app->response->headers;
// $headers->add('Content-Type', 'text/xml');
// $headers = \Yii::$app->response->headers;
// $response = Yii::$app->getResponse();
// $headers = $response->getHeaders();
// $headers->add('Content-Type', 'application/rss+xml; charset=utf-8');
// \Yii::$app->response->getHeaders()->set('Content-Type', 'application/rss+xml; charset=utf-8');
$xml = \Zelenin\yii\extensions\Rss\RssView::widget([
'dataProvider' => $dataProvider,
'channel' => [
'title' => function ($widget, \Zelenin\Feed $feed) {
return 'ระบบจัดซื้อจัดจ้างภาครัฐ';
},
'description' => ' ',
'link' => Url::toRoute('/', true),
],
'items' => [
'title' => function ($model, $widget, \Zelenin\Feed $feed) {
return $model->egp_title;
},
'description' => function ($model, $widget, \Zelenin\Feed $feed) {
$rows = TblCategory::find()->where(['cat_id' => $model->cat_id])->one();
return $rows->cat_name;
},
'link' => function ($model, $widget, \Zelenin\Feed $feed) {
return $model->egp_detail;
},
'cat' => function ($model, $widget, \Zelenin\Feed $feed) {
return $model->cat_id;
},
'pubDate' => function ($model, $widget, \Zelenin\Feed $feed) {
return $model->date;
},
]
]);
return $xml;
}
public function actionRssnew() {
// $dataProvider = new ActiveDataProvider([
// 'query' => TblEgp::find(),
// 'pagination' => [
// 'pageSize' => 20
// ],
// ]);
$searchModel = new TblEgpSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->pagination = ['pageSize' => 100];
$dataProvider->sort = [
'defaultOrder' => [
'date' => SORT_DESC,
]
];
// $response = Yii::$app->getResponse();
// $headers = $response->getHeaders();
// $headers->set('Content-Type', 'application/rss+xml; charset=utf-8');
// \Yii::$app->response->getHeaders()->set('Content-Type', 'application/rss+xml');
// \Yii::$app->response->format = \yii\web\Response::FORMAT_XML;
// \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
\Yii::$app->response->format = \yii\web\Response::FORMAT_RAW;
// $headers = \Yii::$app->response->headers;
// $headers->add('Content-Type', 'text/xml');
// $headers = \Yii::$app->response->headers;
// $response = Yii::$app->getResponse();
// $headers = $response->getHeaders();
// $headers->add('Content-Type', 'application/rss+xml; charset=utf-8');
// \Yii::$app->response->getHeaders()->set('Content-Type', 'application/rss+xml; charset=utf-8');
$xml = \Zelenin\yii\extensions\Rss\RssView::widget([
'dataProvider' => $dataProvider,
'channel' => [
'title' => function ($widget, \Zelenin\Feed $feed) {
return 'ระบบจัดซื้อจัดจ้างภาครัฐ';
},
'description' => ' ',
'link' => Url::toRoute('/', true),
],
'items' => [
'title' => function ($model, $widget, \Zelenin\Feed $feed) {
return $model->egp_title;
},
'description' => function ($model, $widget, \Zelenin\Feed $feed) {
$rows = TblCategory::find()->where(['cat_id' => $model->cat_id])->one();
return $rows->cat_name;
},
'link' => function ($model, $widget, \Zelenin\Feed $feed) {
return $model->egp_detail;
},
'cat' => function ($model, $widget, \Zelenin\Feed $feed) {
return $model->cat_id;
},
'pubDate' => function ($model, $widget, \Zelenin\Feed $feed) {
//return $model->date;
//return Yii::$app->formatter->asDateTime($model->date, 'php:D, j M Y G:i:s T');
return Yii::$app->formatter->asDateTime($model->date, 'php:D, d M Y H:i:s T');
},
]
]);
return $xml;
}
public function actionRsss() {
$searchModel = new TblEgpSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->pagination = ['pageSize' => 20];
$dataProvider->sort = [
'defaultOrder' => [
'date' => SORT_DESC,
]
];
// \Yii::$app->response->format = \yii\web\Response::FORMAT_RAW;
// $headers = \Yii::$app->response->headers;
// $headers->add('Content-Type', 'text/xml');
$feed = \Yii::$app->feed->writer();
$feed->setTitle(\Yii::$app->params['title']);
$feed->setLink('http://example.com');
$feed->setFeedLink('http://example.com/rss', 'rss');
$feed->setDescription(Yii::t('app','Recent headlines'));
$feed->setGenerator('http://example.com/rss');
$feed->setDateModified(time());
/**
* Add one or more entries. Note that entries must
* be manually added once created.
*/
$posts=Post::find()->orderBy('id DESC')->limit(20)->all();
foreach($posts as $post){
$entry = $feed->createEntry();
$entry->setTitle($post->title);
$entry->setLink(Yii::$app->urlManager->createAbsoluteUrl('/post/view',['id'=>$post->id]));
$entry->setDateModified(intval($post->created));
$entry->setDateCreated(intval($post->created));
$entry->setContent(
$post->content
);
$entry->setEnclosure(
[
'uri'=>$post->image,
'type'=>'image/jpeg',
'length'=>filesize(Yii::getAlias('@webroot').$post->image)
]
);
$feed->addEntry($entry);
}
/**
* Render the resulting feed to Atom 1.0 and assign to $out.
* You can substitute "atom" with "rss" to generate an RSS 2.0 feed.
*/
$out = $feed->export('rss');
header('Content-type: text/xml');
echo $out;
die();
}
public function actionIndex($cat_id) {
return $this->render('index', [
'cat_id' => $cat_id,
]);
}
public function actionRss2() {
return $this->render('rss2');
}
public function actionRefresh() {
$depid = "2650101";
$aType = array('P0', '15', 'B0', 'D0', 'W0', 'D1', 'W1', 'D2', 'W2');
$aCat = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
date_default_timezone_set('Asia/Bangkok');
$begintime1 = strtotime("12:01:01");
$endtime1 = strtotime("12:59:00");
$begintime2 = strtotime("17:01:01");
$endtime2 = strtotime("23:59:59");
$begintime3 = strtotime("00:00:01");
$endtime3 = strtotime("08:59:59");
$now = time();
if (($now >= $begintime1 && $now <= $endtime1) || ($now >= $begintime2 && $now <= $endtime2) || ($now >= $begintime3 && $now <= $endtime3)) {
// --- ส่วนที่เพิ่มเข้ามา ---
// สร้าง context สำหรับปิดการตรวจสอบ SSL
$contextOptions = [
"ssl" => [
"verify_peer" => false,
"verify_peer_name" => false,
],
];
$context = stream_context_create($contextOptions);
// -------------------------
$i = 0;
foreach ($aType as $newsType) {
$url = "http://process3.gprocurement.go.th/EPROCRssFeedWeb/egpannouncerss.xml?deptId=" . $depid . "&anounceType=" . $newsType;
// ใช้ file_get_contents พร้อมกับ context ที่สร้างไว้
$xmlData = @file_get_contents($url, false, $context);
if ($xmlData === false) {
// ไม่สามารถดึงข้อมูลได้ อาจจะข้ามไปหรือบันทึก log
continue;
}
$doc = simplexml_load_string($xmlData);
if ($doc === false) {
libxml_clear_errors();
libxml_use_internal_errors($doc);
} else {
$items = $doc->xpath("/rss/channel/item");
foreach ($items as $item) {
$rows = TblEgp::find()->where(['egp_detail' => (string)$item->link])->andWhere(['cat_id' => $aCat[$i]])->count();
if ($rows == 0) {
$model = new TblEgp();
$model->egp_title = (string)$item->title;
$model->egp_detail = (string)$item->link;
$model->cat_id = $aCat[$i];
$model->date = (string)$item->pubDate;
$model->save(false);
}
}
$i++;
}
}
}
return $this->render('/site/index');
}
public function actionRefresh2() {
$depid = "2650101";
$aType = array('P0', '15', 'B0', 'D0', 'W0', 'D1', 'W1', 'D2', 'W2');
$aCat = array(1, 2, 3, 4, 5, 6, 7, 8, 9); //รหัสหมวดหมู่ สำหรับแยกประเภทประกาศ anounceType
date_default_timezone_set('Asia/Bangkok');
$begintime1 = strtotime("12:01:01");
$endtime1 = strtotime("12:59:00");
$begintime2 = strtotime("17:01:01");
$endtime2 = strtotime("23:59:59");
$begintime3 = strtotime("00:00:01");
$endtime3 = strtotime("08:59:59");
$now = time();
if (($now >= $begintime1 && $now <= $endtime1) || ($now >= $begintime2 && $now <= $endtime2) || ($now >= $begintime3 && $now <= $endtime3)) {
$i = 0;
foreach ($aType as $newsType) {
$url = "http://process3.gprocurement.go.th/EPROCRssFeedWeb/egpannouncerss.xml?deptId=" . $depid . "&anounceType=" . $newsType;
$doc = simplexml_load_string(file_get_contents($url));
if ($doc === false) {
libxml_clear_errors();
libxml_use_internal_errors($doc);
} else {
$items = $doc->xpath("/rss/channel/item");
foreach ($items as $item) {
$rows = TblEgp::find()->where(['egp_detail' => $item->link])->andWhere(['cat_id' => $aCat[$i]])->count();
if ($rows == 0) {
$model = new TblEgp();
$model->egp_title = $item->title;
$model->egp_detail = $item->link;
$model->cat_id = $aCat[$i];
$model->date = $item->pubDate;
$model->save(false);
}
}
$i++;
}
}
}
return $this->render('/site/index');
}
}