function action_url($action, $type, $params) { global $_ACTION_VIEW, $_ACTION_REVERSE; if (isset($_ACTION_REVERSE[$action])) { if ($type == 'get') { needed_params(array('values'), $params); list($base, $params_) = view($_ACTION_VIEW[$_ACTION_REVERSE[$action]], $params, true); if (REWRITE_URL) { if (count($params['values']) > 1) { die('Only support one value as action parameter'); } return build_url($base . ($base != '' && $base[strlen($base) - 1] != '/' ? '/' : '') . 'action/' . $action . '/' . encode_url($params['values'][0]), $params_); } else { return build_url($base, array_replace($params_, array('action' => $action, 'values' => $params['values']))); } } elseif ($type == 'post') { return view($_ACTION_VIEW[$action], $params); } else { die('action type sould be "get" or "post", not ' . $type); } } else { print_r($_ACTION_REVERSE); die('Unknow action ' . $action); } }
function view($page, $params = array(), $raw = false) { global $_VIEW; if (isset($_VIEW[$page])) { needed_params($_VIEW[$page]['params'], $params); if (REWRITE_URL && isset($_VIEW[$page]['url_rewrite'])) { $base = call_user_func_array($_VIEW[$page]['url_rewrite'], sub_array($_VIEW[$page]['params'], $params)); $params = array(); } else { $base = $_VIEW[$page]['php_file']; $params = sub_array($_VIEW[$page]['params'], $params); } if ($raw) { return array($base, $params); } else { return build_url($base, $params); } } }