<?php

/**
 * 新闻管理
 */

namespace Module\News;

use Pyramid\Component\HttpFoundation\Response;
use Pyramid\Component\HttpFoundation\RedirectResponse;
use Exception;

class News {

    /**
     * 新闻首页
     * @access news
     * @route /admin/news
     */
    public static function index($request) {
        return new RedirectResponse($request->getUriForPath('/admin/news/list'));
    }

    /**
     * 列表
     * @access news
     * @route /admin/news/list
     */
    public static function newsList($request) {
        $keywords = $request->getParameter('keywords');
        $page = $request->getParameter('page');
        $query = db_select('news', 'x')->extend('Pager')->size(32)->page($page);
        $pid = $request->getParameter('pid');
        if ($keywords) {
            $query->condition('title', '%'.db_like($keywords).'%', 'LIKE');
        }
        if (!is_null($pid)) {
            $query->condition('pid', $pid);
        }
        $query->fields('x', array('id'))->condition('status', 1)->orderBy('timeline', 'DESC')->orderBy('id', 'DESC');
        $ids   = $query->execute()->fetchCol();
        $pager = $query->fetchPager();
        $data  = entity_load('news', $ids);
        return new Response(render('/admin/news/news.list.html', array(
            'pager' => $pager,
            'data'  => $data,
            'pid'   => $pid,
            'path'  => is_null($pid) ? '/admin/news/list' : '/admin/news/list?pid='.$pid,
        )));
    }
    
    /**
     * 添加
     * @access news_add
     * @route /admin/news/add
     */
    public static function newsAdd($request) {
        if ($request->post->getParameters()) {
            $data = (object) $request->post->getParameters();
            $data->created = $data->updated = time();
            try {
                entity_insert('news', $data);
                return new RedirectResponse($request->getUriForPath('/admin/news/list'), 1, '添加成功');
            } catch (Exception $e) {
                return new RedirectResponse($request->getUriForPath('/admin/news/list'), 4, $e->getMessage());
            }
        }
        return new Response(render('/admin/news/news.add.html', array(
            
        )));
    }
    
    /**
     * 修改
     * @access news_edit
     * @route /admin/news/edit/{id}
     */
    public static function newsEdit($request) {
        $id = $request->route->getParameter('id');
        if (!$id) {
            return new RedirectResponse($request->getUriForPath('/admin/news/list'), 4, '无此记录');
        }
        if (!$data = entity_object('news', $id)) {
            return new RedirectResponse($request->getUriForPath('/admin/news/list'), 4, '无此记录');
        }
        if ($request->post->getParameters()) {
            $member = (object) $request->post->getParameters();
            $member->id = $id;
            $member->updated = time();
            try {
                entity_update('news', $member);
                return new RedirectResponse($request->getUriForPath('/admin/news/list'), 1, '更新成功');
            } catch (Exception $e) {
                return new RedirectResponse($request->getUriForPath('/admin/news/list'), 4, $e->getMessage());
            }
        }
        return new Response(render('/admin/news/news.edit.html', array(
            'data' => $data,
        )));
    }

    /**
     * 删除
     * @access news_delete
     * @route /admin/news/delete/{id}
     */
    public static function newsDelete($request) {
        validateRequestToken($request, 600);
        $id = $request->route->getParameter('id');
        if (!$id) {
            return new RedirectResponse($request->getUriForPath('/admin/news/list'), 4, '无此记录');
        }
        if (!$data = entity_object('news', $id)) {
            return new RedirectResponse($request->getUriForPath('/admin/news/list'), 4, '无此记录');
        }
        //$dataUpdate = (object) array('id'=>$data->id,'status'=>0);
        //entity_update('news', $dataUpdate);
        db_query("update {news} set status=0 where id=:id", array(':id'=>$data->id));
        return new RedirectResponse($request->getUriForPath('/admin/news/list'), 1, '操作成功');
    }

    

    /**
     * 列表
     * @access banner
     * @route /admin/banner
     * @route /admin/news/banner
     */
    public static function homepageimgList($request) {
        $filter = $request->getParameter('filter');
        $page = $request->getParameter('page');
        $query = db_select('banner', 'x')->extend('Pager')->size(32)->page($page);
        $query->fields('x', array('id'))->condition('status', 1)->orderBy('sortrank','DESC');
        $ids   = $query->execute()->fetchCol();
        $pager = $query->fetchPager();
        $data  = entity_load('banner', $ids);
        return new Response(render('/admin/news/banner.list.html', array(
            'pager' => $pager,
            'data'  => $data,
        )));
    }
    
    /**
     * 添加
     * @access banner_add
     * @route /admin/news/banner/add
     */
    public static function homepageimgAdd($request) {
        if ($request->post->getParameters()) {
            $data = (object) $request->post->getParameters();
            $data->created = $data->updated = time();
            try {
                entity_insert('banner', $data);
                return new RedirectResponse($request->getUriForPath('/admin/news/banner'), 1, '添加成功');
            } catch (Exception $e) {
                return new RedirectResponse($request->getUriForPath('/admin/news/banner'), 4, $e->getMessage());
            }
        }
        return new Response(render('/admin/news/banner.add.html', array(
            
        )));
    }
    
    /**
     * 修改
     * @access banner_edit
     * @route /admin/news/banner/edit/{id}
     */
    public static function homepageimgEdit($request) {
        $id = $request->route->getParameter('id');
        if (!$id) {
            return new RedirectResponse($request->getUriForPath('/admin/news/banner'), 4, '无此记录');
        }
        if (!$data = entity_object('banner', $id)) {
            return new RedirectResponse($request->getUriForPath('/admin/news/banner'), 4, '无此记录');
        }
        if ($request->post->getParameters()) {
            $member = (object) $request->post->getParameters();
            $member->id = $id;
            $member->updated = time();
            try {
                entity_update('banner', $member);
                return new RedirectResponse($request->getUriForPath('/admin/news/banner'), 1, '更新成功');
            } catch (Exception $e) {
                return new RedirectResponse($request->getUriForPath('/admin/news/banner'), 4, $e->getMessage());
            }
        }
        return new Response(render('/admin/news/banner.edit.html', array(
            'data' => $data,
        )));
    }

    /**
     * 删除
     * @access banner_delete
     * @route /admin/news/banner/delete/{id}
     */
    public static function homepageimgDelete($request) {
        validateRequestToken($request, 600);
        $id = $request->route->getParameter('id');
        if (!$id) {
            return new RedirectResponse($request->getUriForPath('/admin/news/banner'), 4, '无此记录');
        }
        if (!$data = entity_object('banner', $id)) {
            return new RedirectResponse($request->getUriForPath('/admin/news/banner'), 4, '无此记录');
        }
        $dataUpdate = (object) array('id'=>$data->id,'status'=>0);
        entity_update('banner', $dataUpdate);            
        return new RedirectResponse($request->getUriForPath('/admin/news/banner'), 1, '操作成功');
    }
    
}
