public function testResource() { Route::context("user_id", 7); $params = array('book_id' => 3); $r = Route::resource("users/:user_id/friends", $params); $this->assertEquals($r, "users/7/friends"); }
function smarty_function_action_attributes($params, &$view) { $availableMethods = array('get', 'post', 'put', 'delete'); $methodsParams = array_intersect($availableMethods, array_keys($params)); $method = reset($methodsParams); if (empty($method)) { return; } $assign = ''; if (isset($params['assign'])) { $assign = $params['assign']; unset($params['assign']); } $pattern = $params[$method]; unset($params[$method]); $resource = Route::resource($pattern, $params); $prefix = App::getLinkPrefix($params); $result = ' data-method="' . $method . '"'; $result .= ' data-resource="' . $prefix . ltrim($resource, '/') . '"'; list($preg, $map) = Url::preg($pattern); $result .= ' data-params="' . http_build_query(array_diff_key($params, array_flip($map))) . '"'; $result .= ' '; if ($assign) { $view->assign($assign, $result); $link = ''; } return $result; }
function smarty_block_form($ps, $content, &$view, &$repeat) { if ($repeat) { return; } $r = '<form'; $prefix = ''; $app = !empty($ps['app']) ? $ps['app'] : App::get(); $apps = App::apps(); if (!empty($apps[$app])) { $prefix = $apps[$app] . "/"; } $ps['action'] = $prefix . $ps['action']; $add = ''; $ps['action'] = Route::resource($ps['action'], $ps); $resource = $ps['action']; if (!empty($ps['action']) && !empty($ps['method'])) { $ps['method'] = strtolower($ps['method']); $add .= '<input type="hidden" name="' . $ps['method'] . '" value="' . $ps['action'] . '" />'; $ps['action'] = '/pina.php'; if ($ps['method'] != 'get') { $ps['method'] = 'post'; } } if (!empty($ps["action"])) { $r .= ' action="' . $ps["action"] . '"'; } if (!empty($ps["method"])) { $r .= ' method="' . $ps["method"] . '"'; } if (!empty($ps["id"])) { $r .= ' id="' . $ps["id"] . '"'; } if (!empty($ps["name"])) { $r .= ' name="' . $ps["name"] . '"'; } if (!empty($ps["class"])) { $r .= ' class="' . $ps["class"] . '"'; } if (!empty($ps["enctype"])) { $r .= ' enctype="' . $ps["enctype"] . '"'; } if (!empty($ps["novalidate"])) { $r .= ' novalidate="' . $ps["novalidate"] . '"'; } if (!empty($ps["role"])) { $r .= ' role="' . $ps["role"] . '"'; } if (!empty($ps["target"])) { $r .= ' target="' . $ps["target"] . '"'; } $r .= '>'; $r .= $add; $ps['resource'] = $resource; $r .= Composer::draw('templater::form', $ps, $view); //$r .= CSRFToken::formField($resource, $ps["method"]); return $r . $content . '</form>'; }
function smarty_block_iflocation($params, $content, &$view, &$repeat) { if (empty($content) || empty($params['get'])) { return ''; } $pattern = Url::trim($params['get']); $needed = Route::resource($pattern, $params); if (empty($needed)) { return ''; } $resource = Url::trim(\Pina\Core::resource()); if (strpos($resource, $needed) !== 0) { return ''; } list($preg, $map) = Url::preg($params['get']); $data = \Pina\Core::getRequestData(); unset($params['get']); $params = array_diff_key($params, array_flip($map)); unset($data['get']); if (array_diff_assoc($data, $params) || array_diff_assoc($params, $data)) { return ''; } return $content; }