<?php

/**
 * 
 */

namespace Module\Pages;

use Pyramid\Component\HttpFoundation\Response;
use Pyramid\Component\HttpFoundation\RedirectResponse;
use Exception;

class Pages {
    
    /**
     * 模块首页
     * @access pages
     * @route /admin/pages
     */
    public static function index($request) {
        return new RedirectResponse($request->getUriForPath('/admin/pages/list'));
    }

    /**
     * 列表
     * @access pages
     * @route /admin/pages/list
     */
    public static function pagesList($request) {
        $filter = $request->getParameter('filter');
        $page = $request->getParameter('page');
        $query = db_select('pages', 'x')->extend('Pager')->size(32)->page($page);
        $query->fields('x', array('id'))->condition('status', 1);
        $ids   = $query->execute()->fetchCol();
        $pager = $query->fetchPager();
        $data  = entity_load('pages', $ids);
        return new Response(render('/admin/pages/list.html', array(
            'pager' => $pager,
            'data'  => $data,
        )));
    }
    
    /**
     * 添加
     * @access pages_add
     * @route /admin/pages/add
     */
    public static function pagesAdd($request) {
        if ($request->post->getParameters()) {
            $data = (object) $request->post->getParameters();
            $data->created = $data->updated = time();
            try {
                entity_insert('pages', $data);
                return new RedirectResponse($request->getUriForPath('/admin/pages/list'), 1, '添加成功');
            } catch (Exception $e) {
                return new RedirectResponse($request->getUriForPath('/admin/pages/list'), 4, $e->getMessage());
            }
        }
        return new Response(render('/admin/pages/add.html', array(
            
        )));
    }
    
    /**
     * 修改
     * @access pages_edit
     * @route /admin/pages/edit/{id}
     */
    public static function pagesEdit($request) {
        $id = $request->route->getParameter('id');
        if (!$id) {
            return new RedirectResponse($request->getUriForPath('/admin/pages/list'), 4, '无此记录');
        }
        if (!$data = entity_object('pages', $id)) {
            return new RedirectResponse($request->getUriForPath('/admin/pages/list'), 4, '无此记录');
        }
        if ($request->post->getParameters()) {
            $data = (object) $request->post->getParameters();
            $data->id = $id;
            $data->updated = time();
            try {
                entity_update('pages', $data);
                return new RedirectResponse($request->getUriForPath('/admin/pages/list'), 1, '更新成功');
            } catch (Exception $e) {
                return new RedirectResponse($request->getUriForPath('/admin/pages/list'), 4, $e->getMessage());
            }
        }
        return new Response(render('/admin/pages/edit.html', array(
            'data' => $data,
        )));
    }

    /**
     * 删除
     * @access pages_delete
     * @route /admin/pages/delete/{id}
     */
    public static function pagesDelete($request) {
        validateRequestToken($request, 600);
        $id = $request->route->getParameter('id');
        if (!$id) {
            return new RedirectResponse($request->getUriForPath('/admin/pages/list'), 4, '无此记录');
        }
        if (!$data = entity_object('pages', $id)) {
            return new RedirectResponse($request->getUriForPath('/admin/pages/list'), 4, '无此记录');
        }
        $dataUpdate = (object) array('id'=>$data->id,'status'=>0);
        entity_update('pages', $dataUpdate);            
        return new RedirectResponse($request->getUriForPath('/admin/pages/list'), 1, '操作成功');
    }

}

permission_register(array(
    'pages' => array(
        'bundle'        => '页面管理',
        'title'         => '页面管理',
        'description'   => '',
    ),
    'pages_add' => array(
        'bundle'        => '页面管理',
        'title'         => '添加页面',
        'description'   => '',
    ),
    'pages_edit' => array(
        'bundle'        => '页面管理',
        'title'         => '修改页面',
        'description'   => '',
    ),
    'pages_delete' => array(
        'bundle'        => '页面管理',
        'title'         => '删除页面',
        'description'   => '',
    ),
    
));
