<?php /** * Created by PhpStorm. * User: csibi * Date: 2014.10.23. * Time: 16:23 */ $context = $runner->context; $tree = \runner::stack('tree'); $branch = \Routerunner\Helper::tree_route($tree, $context['route']); $accept = array(); if ($branch = \Routerunner\Helper::tree_route($tree, $context['route'])) { $accept = $branch; } $runner->context['accept'] = $accept; if ($runner->model) { $runner->model->accept = $accept; } $debug = 1;
private static function SQL_creator($select, $from, $primary_key, $leftJoin = array(), $where = array(), &$params = array(), $orderBy = false, $groupBy = false, $limit = false, $offset = false) { $ordering = $orderBy; $parents = \runner::stack("parents"); if (!$parents) { $parents = array(); } $prevs = \runner::stack("prevs"); if (!$prevs) { $prevs = array(); } $strict = false; $skip_state = false; $by_tree = false; $by_index = false; if ($orderBy === \Routerunner\Routerunner::BY_TREE || $orderBy === \Routerunner\Routerunner::BY_TREE_DESC || $orderBy === \Routerunner\Routerunner::BY_INDEX || $orderBy === \Routerunner\Routerunner::BY_INDEX_DESC || isset($where["direct"]) && $where["direct"] || isset($where["parent"]) && $where["parent"] || isset($where["self"]) && $where["self"] || isset($where["lang"]) && $where["lang"]) { $tree = array(); $params = array(); if (isset($where["direct"]) && is_numeric($where["direct"])) { $SQL = 'SELECT models.reference, NULL AS parent_ref, NULL AS prev, table_from, table_id ' . PHP_EOL; $SQL .= 'FROM {PREFIX}models AS models ' . PHP_EOL; $SQL .= 'WHERE models.reference = :reference'; $params = array(":reference" => $where["direct"]); $strict = true; $skip_state = true; $by_tree = true; } elseif (isset($where["direct"]) && is_array($where["direct"])) { $SQL = 'SELECT models.reference, NULL AS parent_ref, NULL AS prev, table_from, table_id ' . PHP_EOL; $SQL .= 'FROM {PREFIX}models AS models ' . PHP_EOL; $SQL .= 'WHERE models.model_class = :class AND models.table_id = :id'; if (is_numeric(current($where["direct"]))) { $params = array(":class" => key($where["direct"]), ":id" => current($where["direct"])); } else { $params = array(":class" => current($where["direct"]), ":id" => key($where["direct"])); } $strict = true; $skip_state = true; $by_tree = true; } else { $where_reference = array(); // get self reference if ($self_reference = self::resolve_model_reference('self', $where, true)) { $where_reference['model_traverse.reference IN (' . implode(',', $self_reference) . ')'] = null; $strict = true; $skip_state = true; $by_tree = true; } // get parent reference if ($parent_reference = self::resolve_model_reference('parent', $where, true)) { $where_reference['model_traverse.parent_ref IN (' . implode(',', $parent_reference) . ')'] = null; $strict = true; $skip_state = true; $by_tree = true; } // get lang condition if ($lang = self::resolve_model_reference('lang', $where, true)) { $where_reference['model_traverse.lang IN (' . implode(',', $lang) . ')'] = null; $strict = true; $skip_state = true; } if (!$where_reference && $where) { $SQL_reference = "SELECT models.reference FROM `" . $from . "` AS model_table " . PHP_EOL . "LEFT JOIN `" . $from . "` ON `" . $from . "`.`" . $primary_key . "` = model_table.`" . $primary_key . "`" . PHP_EOL . "LEFT JOIN `{PREFIX}models` AS models ON models.table_from = '" . $from . "' AND models.table_id = model_table.`" . $primary_key . "`" . PHP_EOL . " WHERE "; $conds_reference = array(); $params_reference = array(); foreach ($where as $cond_reference => $param_reference) { $conds_reference[] = preg_replace("~(:[a-z0-9\\-_\\.]+)~i", "?", $cond_reference); if (!is_null($param_reference)) { $params_reference[] = $param_reference; } } $SQL_reference .= implode(" AND ", $conds_reference); if ($result_reference = \db::query($SQL_reference, $params_reference)) { $row_reference = array_shift($result_reference); $reference_for_parent = $row_reference["reference"]; if (($parent_obj = \Routerunner\Bootstrap::parent($reference_for_parent)) && count($parent_obj)) { $parent_obj = array_pop($parent_obj); $parent_reference = $parent_obj["reference"]; $where_reference['model_traverse.parent_ref IN (' . $parent_reference . ')'] = null; } $strict = true; $skip_state = true; } } if ($orderBy === \Routerunner\Routerunner::BY_TREE || $orderBy === \Routerunner\Routerunner::BY_TREE_DESC) { // get previous sibling $prev_reference = self::resolve_model_reference('prev', $where, true); if ($prev_reference !== false) { $where_reference['model_traverse.prev_ref IN (' . implode(',', $prev_reference) . ')'] = null; $strict = true; $skip_state = true; } // get next sibling // todo: check --- is it ok? $next_reference = self::resolve_model_reference('next', $where, true); if ($next_reference !== false) { $where_reference['model_traverse.prev_ref IN (SELECT reference FROM {PREFIX}model_trees WHERE prev_ref IN (' . implode(',', $next_reference) . '))'] = null; $strict = true; $skip_state = true; } } if ($orderBy === \Routerunner\Routerunner::BY_INDEX) { // get order_no sibling $order_no_reference = self::resolve_model_reference('order_no', $where, true); if ($order_no_reference !== false) { $where_reference['model_traverse.order_no IN (' . implode(',', $order_no_reference) . ')'] = null; $strict = true; $skip_state = true; $by_index = true; } } if ($where_reference) { $SQL = 'SELECT models.reference, model_traverse.parent_ref' . PHP_EOL; if ($orderBy === \Routerunner\Routerunner::BY_TREE || $orderBy === \Routerunner\Routerunner::BY_TREE_DESC || $by_tree) { $SQL .= ', prev_ref AS prev' . PHP_EOL; } elseif ($orderBy === \Routerunner\Routerunner::BY_INDEX || $orderBy === \Routerunner\Routerunner::BY_INDEX_DESC || $by_index) { $SQL .= ', order_no AS prev' . PHP_EOL; } $SQL .= 'FROM {PREFIX}models AS models ' . PHP_EOL; if ($orderBy === \Routerunner\Routerunner::BY_TREE || $orderBy === \Routerunner\Routerunner::BY_TREE_DESC || $by_tree) { $SQL .= 'LEFT JOIN {PREFIX}model_trees AS model_traverse ON model_traverse.reference = models.reference ' . PHP_EOL; } elseif ($orderBy === \Routerunner\Routerunner::BY_INDEX || $orderBy === \Routerunner\Routerunner::BY_INDEX_DESC || $by_index) { $SQL .= 'LEFT JOIN {PREFIX}model_orders AS model_traverse ON model_traverse.reference = models.reference ' . PHP_EOL; } $SQL .= 'WHERE ' . implode(' AND ', array_keys($where_reference)) . PHP_EOL; if ($orderBy === \Routerunner\Routerunner::BY_INDEX || $by_index) { $SQL .= 'ORDER BY model_traverse.parent_ref, model_traverse.order_no, models.reference'; } } } if ($strict && !empty($SQL) && ($result = \db::query($SQL, $params))) { // modify SQL params if (!$leftJoin) { $leftJoin = array(); } if (strpos($from, '{PREFIX}models') !== false || $from == 'models') { $from = '`{PREFIX}models` AS models'; $model_class = 'models'; $primary_key = 'reference'; } else { array_unshift($leftJoin, '`' . $from . '` ON `' . $from . '`.`' . $primary_key . '` = models.table_id AND models.table_from = \'' . $from . '\''); $model_class = trim($from, '`'); $primary_key = trim($primary_key, '`'); $from = '{PREFIX}models AS models'; } if ($orderBy === \Routerunner\Routerunner::BY_INDEX || $orderBy === \Routerunner\Routerunner::BY_INDEX_DESC || $by_index) { foreach ($result as $reference_row) { $tree[] = $reference_row['reference']; $parents[$reference_row["reference"]] = $reference_row["parent_ref"]; $prevs[$reference_row["reference"]] = $reference_row["prev"]; } $orderBy = '`models`.`order_no`'; } elseif ($orderBy === \Routerunner\Routerunner::BY_TREE || $orderBy === \Routerunner\Routerunner::BY_TREE_DESC || $by_tree) { $orderByTree = $orderBy === \Routerunner\Routerunner::BY_TREE || $orderBy === \Routerunner\Routerunner::BY_TREE_DESC ? true : false; if ($orderByTree) { $orderBy = 'CASE `models`.`reference`'; } $reorder_tree = array(); foreach ($result as $reference_row) { $reorder_tree[$reference_row['prev']] = $reference_row; $parents[$reference_row["reference"]] = $reference_row["parent_ref"]; $prevs[$reference_row["reference"]] = $reference_row["prev"]; } if (count($reorder_tree) === 1) { $prev = key($reorder_tree); $index = 0; } else { $prev = 0; $index = 0; } while (isset($reorder_tree[$prev])) { $current = $reorder_tree[$prev]['reference']; $tree[] = $current; $prev = $current; if ($orderByTree) { $orderBy .= ' WHEN ' . $current . ' THEN ' . $index; } $index++; } if ($orderByTree) { $orderBy .= ' END'; } } elseif (isset($where["direct"])) { foreach ($result as $reference_row) { $tree[] = $reference_row['reference']; } } if ($ordering === \Routerunner\Routerunner::BY_INDEX_DESC || $ordering === \Routerunner\Routerunner::BY_TREE_DESC) { $orderBy .= ' DESC'; } if (!$where) { $where = array(); } $where['models.reference IN (' . implode(',', $tree) . ')'] = null; $where['`' . $model_class . '`.`' . $primary_key . '` IS NOT NULL'] = null; } elseif ($strict) { $where['1 = 0'] = null; } if ($config_reference = \runner::config('reference')) { $where['models.reference IN (' . $config_reference . ')'] = null; } } else { // join models table and filter to reference } \runner::stack("parents", $parents); \runner::stack("prevs", $prevs); $SQL = ''; unset($where["direct"]); $visible_references = array(); $params = array(); if (\runner::config("mode") != "backend" && \runner::config("mode") != "sitemap" && !\runner::now("skip_state_check") && !$skip_state) { $_from = $from; if (strpos($_from, "AS") !== false) { $_from = substr($_from, 0, strpos($_from, "AS")); } $SQL = "SELECT models.reference FROM " . $_from; if (strpos($_from, "models") !== false) { $SQL .= " AS models"; } $SQL .= PHP_EOL; if ($leftJoin) { foreach ($leftJoin as $join) { $SQL .= 'LEFT JOIN ' . $join . PHP_EOL; } } if (strpos($_from, "models") === false) { $SQL .= "LEFT JOIN {PREFIX}models AS models ON models.table_from = '" . $_from . "' AND models.table_id = " . $_from . "." . $primary_key . PHP_EOL; } $_where = array(); if (isset($where) && is_array($where)) { $_where = $where; } $time = time(); $_where["models.reference NOT IN (SELECT model FROM {PREFIX}model_states AS states WHERE states.active = 0 OR " . $time . " NOT BETWEEN COALESCE(begin, " . $time . ") AND COALESCE(end, " . $time . "))"] = null; if (is_array($_where) && count($_where)) { $SQL .= 'WHERE '; $i = 0; foreach ($_where as $filter => $param) { if (!is_numeric($filter)) { $SQL .= $filter; } if (preg_match('/(:[a-z0-9]+)/i', $filter, $match)) { $params[$match[0]] = $param; } elseif (strpos($filter, '?') !== false) { $params[] = $param; } $i++; if (!is_numeric($filter) && $i < count($_where)) { $SQL .= ' AND '; } $SQL .= PHP_EOL; } } elseif ($_where) { $SQL .= 'WHERE ' . $_where . PHP_EOL; } if ($state_results = \db::query($SQL, $params)) { foreach ($state_results as $state_result) { if (!empty($state_result["reference"])) { $visible_references[] = $state_result["reference"]; } } } $SQL = ''; $params = array(); } if ($orderBy !== \Routerunner\Routerunner::BY_INDEX && $orderBy !== \Routerunner\Routerunner::BY_INDEX_DESC && $orderBy !== \Routerunner\Routerunner::BY_TREE && $orderBy !== \Routerunner\Routerunner::BY_TREE_DESC || $where) { $SQL = 'SELECT '; array_walk($select, function (&$value, $key) { if (is_null($value)) { $value = 'NULL AS `' . trim($key, '`') . '`'; } else { $value = $value . ' AS `' . trim($key, '`') . '`'; } }); $SQL .= implode(', ', $select); $SQL .= PHP_EOL; $SQL .= 'FROM ' . $from . PHP_EOL; if ($leftJoin) { foreach ($leftJoin as $join) { $SQL .= 'LEFT JOIN ' . $join . PHP_EOL; } } if ($visible_references) { /* $SQL .= "LEFT JOIN {PREFIX}models AS models ON models.table_from = '" . $from . "' AND models.table_id = " . $from . "." . $primary_key . PHP_EOL; */ if (!isset($where) || !is_array($where)) { $where = array(); } $where["`" . $from . "`.`" . $primary_key . "` IN (SELECT models.table_id FROM {PREFIX}models AS models\nWHERE models.reference IN (" . implode(",", $visible_references) . "))"] = null; } if (is_array($where) && count($where)) { $SQL .= 'WHERE '; $i = 0; foreach ($where as $filter => $param) { if (!is_numeric($filter)) { $SQL .= $filter; } if (preg_match('/(:[a-z0-9]+)/i', $filter, $match)) { $params[$match[0]] = $param; } elseif (strpos($filter, '?') !== false) { $params[] = $param; } $i++; if (!is_numeric($filter) && $i < count($where)) { $SQL .= ' AND '; } $SQL .= PHP_EOL; } } elseif ($where) { $SQL .= 'WHERE ' . $where . PHP_EOL; } if ($groupBy) { $SQL .= 'GROUP BY ' . $groupBy . PHP_EOL; } if ($orderBy != "BY_TREE" && $orderBy != "BY_TREE_DESC" && $orderBy != "BY_INDEX" && $orderBy != "BY_INDEX_DESC") { if ($orderBy) { $SQL .= 'ORDER BY ' . $orderBy . PHP_EOL; } elseif ($orderBy !== false) { $SQL .= 'ORDER BY ' . $primary_key . PHP_EOL; } } if ($limit !== false) { $SQL .= 'LIMIT ' . $limit . PHP_EOL; if ($offset !== false) { $SQL .= 'OFFSET ' . $offset . PHP_EOL; } } elseif ($limit === false && $offset !== false) { $SQL .= 'LIMIT 18446744073709551615' . PHP_EOL; $SQL .= 'OFFSET ' . $offset . PHP_EOL; } } return $SQL; }
private static function set($user = null, $logout = false) { if (is_null($user)) { // logout user self::$me = false; self::$email = null; self::$name = null; self::$group = null; self::$scope = null; self::$auth = null; self::$custom = array(); self::$alias = 0; self::close_token(self::$token); if ($logout) { $flash_var = \runner::config('User.UserFlashVar') ? \runner::config('User.UserFlashVar') : 'UserFlashVar'; if (isset($_SESSION['routerunner-logout-' . $flash_var]) && $_SESSION['routerunner-logout-' . $flash_var] === true) { $cookie = \runner::config('User.TokenCookie') ? \runner::config('User.TokenCookie') : 'TokenCookie'; \Routerunner\Routerunner::$slim->setCookie($cookie, null, -1, '/'); $flash_var = \runner::config('User.UserFlashVar') ? \runner::config('User.UserFlashVar') : 'UserFlashVar'; \runner::now($flash_var, false); \runner::stack($flash_var, false); \runner::flash($flash_var, false); unset($_SESSION['slim.flash'][$flash_var]); setcookie($cookie, null, -1, '/'); unset($_COOKIE[$cookie]); unset($_SESSION['routerunner-logout-' . $flash_var]); } else { $_SESSION['routerunner-logout-' . $flash_var] = true; } } } elseif (isset($user) && !is_null($user) && is_array($user)) { self::set(); // clear user if exists $flash_var = \runner::config('User.UserFlashVar') ? \runner::config('User.UserFlashVar') : 'UserFlashVar'; if (\runner::now($flash_var)) { $flash = \runner::now($flash_var); } elseif (\runner::stack($flash_var)) { $flash = \runner::stack($flash_var); } else { $flash = \runner::flash($flash_var); } $array_to_translate = \runner::config('User.UserArrayToTranslate') ? \runner::config('User.UserArrayToTranslate') : array(); if ($flash === $user) { foreach ($user as $key => $value) { $var = isset($array_to_translate[$key]) ? $array_to_translate[$key] : $key; if ($var === 'email' || $var === 'name' || $var === 'alias') { self::${$var} = $value; } else { self::$custom[$var] = $value; } } if (self::get_user()) { self::open_token(); self::set_session_token(); } } } }
public static function prepareLoader($route, $class, $version = false, &$path = false, &$file = false, $scaffolded = false, $created = false, $router = false) { $route = substr($route, 0, 1) !== DIRECTORY_SEPARATOR ? DIRECTORY_SEPARATOR . $route : $route; if ($router && $router->scaffold_root && $router->scaffold_root != \Routerunner\Routerunner::$slim->config('templates.path')) { \Routerunner\Routerunner::$slim->config('templates.path', str_replace(\runner::config("SITEROOT"), '', $router->scaffold_root)); } $path = realpath($router->scaffold_root . $route) . DIRECTORY_SEPARATOR; $model_class = substr($route, strrpos($route, DIRECTORY_SEPARATOR) + 1); if ($file) { if (substr($file, 0, strlen($model_class) + 1) != $model_class . ".") { $file = $model_class . "." . $file; } } else { if (strpos($class, DIRECTORY_SEPARATOR) !== false) { $file = substr($class, strrpos($class, DIRECTORY_SEPARATOR) + 1) . (substr($class, -1) == '.' ? '' : '.') . 'php'; } elseif (substr($class, 0, strlen($model_class)) === $model_class) { $file = $class . (substr($class, -1) == '.' ? '' : '.') . 'php'; } else { $file = $model_class . '.' . $class . (substr($class, -1) == '.' ? '' : '.') . 'php'; } } $versionroute = ''; if ($version) { if (!is_array($version)) { $version = array($version); } while (($version_row = array_shift($version)) && !$versionroute) { $directory = $path . $version_row; if (file_exists($directory)) { $versionroute = $version_row . DIRECTORY_SEPARATOR; } } } if (\runner::config("mode") == "backend" && file_exists($path . $versionroute . 'backend' . DIRECTORY_SEPARATOR)) { $backendroute = 'backend' . DIRECTORY_SEPARATOR; if (!$created && \runner::stack("model_create")) { $created = \runner::stack("model_create"); } if ($created && file_exists($path . $versionroute . $backendroute . "create" . DIRECTORY_SEPARATOR . $file)) { $versionroute = $versionroute . $backendroute . "create" . DIRECTORY_SEPARATOR; } elseif (file_exists($path . $versionroute . $backendroute . $file)) { $versionroute = $versionroute . $backendroute; } } $model_root = $router->scaffold_root . DIRECTORY_SEPARATOR . "model" . DIRECTORY_SEPARATOR . $model_class . DIRECTORY_SEPARATOR; if (file_exists($path . $versionroute . $file)) { if ($scaffolded) { return str_replace($router->scaffold_root, '', $path) . $versionroute . $file; } else { return $path . $versionroute . $file; } } elseif (file_exists($model_root . $file)) { if ($scaffolded) { return str_replace($router->scaffold_root, '', $model_root) . $file; } else { return $model_root . $file; } } else { return false; } }
<?php $class = \runner::stack("testimonial_index") === 0 ? " active" : ""; \runner::stack("testimonial_index", \runner::stack("testimonial_index") + 1); ?> <div class="item testimonial-item<?php echo $class; ?> "> <p class="citation"><?php echo \model::property("brief"); ?> </p> <p class="author"><span class="name"><?php echo \model::property("label"); ?> </span> / <span class="position"><?php echo \model::property("position"); ?> </span> / <span class="company"><?php echo \model::property("company"); ?> </span></p> </div>
<?php /** * Created by PhpStorm. * User: csibi * Date: 2014.10.23. * Time: 16:23 */ \runner::stack("session_id", false, true);
$fields = array_merge($fields, $root_router->runner->backend_context["model"]["fields"]); } foreach ($fields as $field_name => $field_data) { if (isset($field_data["crop"])) { $crops[$field_name] = $field_data["crop"]; } } $field_data = $fields[$field]; } $parents = \Routerunner\Bootstrap::parent($reference); if (isset($parents[0]["model_class"]) && $parents[0]["model_class"] == "lang") { $lang = array_shift($parents); } $path_route = ''; while ($parent = array_shift($parents)) { $_model_context = array("direct" => $parent["reference"], "session" => \runner::stack("session_id")); $router = false; $route = '/model/' . $parent["model_class"]; \runner::redirect_route($route, \runner::config("scaffold"), true, $_model_context, $router, $parent_model); if (is_array($parent_model) && count($parent_model) == 1) { $parent_model = array_shift($parent_model); } if (isset($parent_model) && is_object($parent_model) && get_parent_class($parent_model) == "Routerunner\\BaseModel" && isset($parent_model->label)) { $path_route .= \runner::toAscii($parent_model->label) . DIRECTORY_SEPARATOR; } $debug = 1; } if (isset($value["src"])) { // crop image $src = $_SESSION["runner_config"]['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . $_SESSION["runner_config"]["SITEROOT"] . $value["src"]; $filename = substr($value["src"], strrpos($value["src"], DIRECTORY_SEPARATOR) + 1);
* User: csibi * Date: 2014.10.20. * Time: 10:33 */ require '../../../Routerunner/Routerunner.php'; use Routerunner\Routerunner as runner; $post = array_merge($_GET, $_POST); new runner(array('mode' => 'backend', 'params' => $post, 'method' => 'post', 'resource' => '/', 'bootstrap' => false), function () use($post) { $response = array("success" => false, "apply" => false, "change_id" => false, "error" => array()); $SQL = "CALL {PREFIX}change_get(:change_id, :session, :draft, :applied)"; $params = array(":change_id" => is_numeric($post["change_id"]) ? $post["change_id"] : null, ":session" => \runner::stack("session_id") ? \runner::stack("session_id") : null, ":draft" => 1, ":applied" => 0); if ($change_get = \db::query($SQL, $params)) { foreach ($change_get as $change) { $response["change_id"] = $change["change_id"]; $SQL_apply = "CALL `{PREFIX}change_apply`(:change_id, :session)"; $params_apply = array(":change_id" => $change["change_id"], ":session" => \runner::stack("session_id") ? \runner::stack("session_id") : 0); if ($change["state"] == "routerunner-page-properties" && ($changes = json_decode($change["changes"], true)) && ($resource = json_decode($change["resource"], true))) { foreach ($changes as $field => $value) { switch ($field) { case "url": case "urls": $condition = array(); $params = array(); if (isset($resource["reference"]) && $resource["reference"]) { $condition['reference'] = '`reference` = :reference'; $params[":reference"] = $resource["reference"]; } if (isset($resource["resource_uri"]) && $resource["resource_uri"]) { $condition['resource_uri'] = '`resource_uri` = :resource_uri'; $params[":resource_uri"] = $resource["resource_uri"]; }
<?php \runner::stack("testimonial_index", 0); ?> <h2 class="section-title" data-animate="fadeInDown">Testimonials</h2> <div id="carousel-testimonials" class="carousel-testimonials carousel slide" data-ride="carousel"> <!-- Wrapper for slides --> <div class="carousel-inner text-center testimonials">
} \runner::stack("model_create", false); $models_created = \runner::stack("models_created"); if (!$models_created) { $models_created = array(); } $parent = array(); if (isset($post["parent"])) { $parents = \Routerunner\Bootstrap::parent($post["parent"]); foreach ($parents as $cur_parent) { $parent[] = $cur_parent["reference"]; } $parent[] = $post["parent"]; } $models_created[$model->reference] = array("class" => $model->class, "route" => $model->route, "table_from" => $model->table_from, "table_id" => $model->table_id, "backend_ref" => $model->backend_ref, "parent" => $parent, "permission" => $model->permission); \runner::stack("models_created", $models_created, true); $return['success'] = true; if (isset($model->reference)) { $return['reference'] = $model->reference; $return['model'] = $model; } elseif (is_array($model) && count($model) == 1) { $return['reference'] = $model[0]->reference; $return['model'] = $model[0]; } elseif (is_array($model) && count($model) > 1) { $return['reference'] = array(); foreach ($model as $row) { if (isset($row->reference)) { $return['reference'][] = $row->reference; } } $return['model'] = $model;
<?php /** * Created by PhpStorm. * User: csibi * Date: 2014.10.23. * Time: 16:23 */ $runner->backend_context['parents'] = \Routerunner\Bootstrap::parent($runner->context['reference']); $current = $runner->context['reference']; $runner->backend_context['siblings'] = \Routerunner\Bootstrap::siblings($runner->context['reference'], false, $current); $runner->backend_context['current'] = $runner->backend_context['siblings'][$current]; $parents_ref = array(); foreach ($runner->backend_context['parents'] as $parent) { $parents_ref[] = $parent['reference']; } $runner->backend_context['parents_ref'] = $parents_ref; \runner::stack('traverse', $runner->backend_context);
$model->{$attr} = $value; } $new_model = true; } $tree = \runner::stack('tree'); $route = false; if ($branch = \Routerunner\Helper::tree_route($tree, $context['route'])) { if (isset($branch['children']['#' . $context['reference']])) { $route = '#' . $context['reference']; } elseif (isset($branch['children'][$context['model_class'] . '/' . $context['table_id']])) { $route = $context['model_class'] . '/' . $context['table_id']; } elseif (isset($branch['children'][$context['model_class']])) { $route = $context['model_class']; } } $traverse = \runner::stack('traverse'); if ($route) { $context['route'][] = $route; if ($node = \Routerunner\Helper::tree_route($tree, $context['route'])) { $parsed = \Routerunner\Helper::parse_array($node, $model, array("children")); $jstree = array('type' => $context['model_class']); if ($new_model) { $jstree['icon'] = 'fa fa-folder icon-state-warning'; } elseif (isset($parsed['icon'])) { $jstree['icon'] = $parsed['icon']; } if (isset($traverse['current']['reference']) && $traverse['current']['reference'] == $context['reference']) { $jstree['selected'] = true; } $classes = array(); // todo: or children in memory
<?php /** * Created by PhpStorm. * User: csibi * Date: 2014.10.20. * Time: 10:33 */ header('Content-Type: application/json'); require '../../../Routerunner/Routerunner.php'; use Routerunner\Routerunner as runner; $post = array_merge($_GET, $_POST); new runner(array('mode' => 'backend', 'params' => $post, 'method' => 'post', 'resource' => '/', 'bootstrap' => false), function () use($post) { $response = array("success" => false, "change_id" => false); $SQL = "CALL {PREFIX}change_log(:change_id, :session, :reference, :resource, :changes, :state)"; $params = array(":change_id" => is_numeric($post["change_id"]) ? $post["change_id"] : 0, ":session" => \runner::stack("session_id"), ":reference" => is_numeric($post["reference"]) ? $post["reference"] : 0, ":resource" => json_encode($post["resource"]), ":changes" => json_encode($post["changes"]), ":state" => $post["state"]); if ($result = \db::query($SQL, $params)) { $response["success"] = true; $response["change_id"] = $result[0]["change_id"]; $response["date"] = $result[0]["date"]; $response["state"] = $result[0]["state"]; } echo json_encode($response); });
</div> <!-- Indicators --> <ol class="carousel-indicators"> <?php for ($i = 0; $i < \runner::stack("testimonial_index"); $i++) { $class = $i == 0 ? ' class="active"' : ''; echo ' <li data-target="#carousel-testimonials" data-slide-to="' . $i . '"' . $class . '></li>' . PHP_EOL; } ?> </ol> <!-- Controls --> <a class="left carousel-control" href="#carousel-testimonials" data-slide="prev"> <span></span> </a> <a class="right carousel-control" href="#carousel-testimonials" data-slide="next"> <span></span> </a> </div> <!-- carousel -->
} } $element = isset($accept['panel']['element']) ? $accept['panel']['element'] : 'ul'; $html = ''; $parsed = \Routerunner\Helper::parse_array($accept, $model, array("children")); if (isset($parsed['panel']['attr']) && is_array($parsed['panel']['attr'])) { foreach ($parsed['panel']['attr'] as $attr => $value) { $html .= ' ' . $attr . '="' . $value . '"'; } } elseif (isset($parsed['panel']['attr']) && is_string($parsed['panel']['attr'])) { $html .= ' ' . $parsed['panel']['attr']; } $open = false; $select = false; $traverse = \runner::stack('traverse'); $models_created = \runner::stack("models_created"); $open = isset($runner->context['open']) ? $runner->context['open'] : false; $debug = 1; ?> <<?php echo $element . $html; ?> > <?php $router = false; if ($open) { $removed = array(); $children = \Routerunner\Bootstrap::children($runner->context['reference']); foreach ($children as $index => $child) { $open = in_array($child['reference'], $traverse['parents_ref']) ? true : false; if ($models_created) {
public function plugins($script, $callback = 'false') { $plugins_loaded = \runner::stack("plugins_loaded"); if (!is_array($plugins_loaded)) { $plugins_loaded = array(); } if (!isset($plugins_loaded[$script])) { $plugin_dir = \runner::config("BASE") . \runner::config("ROUTERUNNER_BASE"); $plugins_loaded[$script] = true; \runner::stack("plugins_loaded", $plugins_loaded); \runner::stack_js(<<<HTML if (typeof routerunner_base != "function") { \tvar script_elem = document.createElement("script"); \tscript_elem.setAttribute("type", "text/javascript"); \tscript_elem.setAttribute("src", "{$plugin_dir}plugins/base.min.js"); \tdocument.getElementsByTagName("head")[0].appendChild(script_elem); \tscript_elem.addEventListener("load", function() { \t\trouterunner_base().load_script("{$plugin_dir}plugins/{$script}", {$callback}, true); \t}); } else { \trouterunner_base().load_script("{$plugin_dir}plugins/{$script}", {$callback}, true); } HTML ); } }
break; } } } if ($model && is_object($model) && $model->permission && !$model->movable()) { $allowed = false; } elseif ($model && !is_object($model)) { $allowed = false; } } if ($allowed) { $traverse = $runner->backend_context; $scaffold = \Routerunner\Helper::$scaffold_root; $tree = @(include $scaffold . '/model/tree.php'); \runner::stack('traverse', $traverse, true); \runner::stack('tree', $tree, true); ?> <form name="routerunner-movement" id="routerunner-movement" class="row" role="form" data-jstreetypes='<?php echo json_encode($jstree_types); ?> '> <div id="routerunner-tree" data-traverse='<?php echo json_encode($traverse); ?> ' class="col-xs-12"> </div> </form> <?php } else { echo ' <h3 class="text-danger">Movement not allowed for this model!</h3>';
<?php /** * Created by PhpStorm. * User: csibi * Date: 2014.10.23. * Time: 17:31 */ session_start(); require $_SESSION["runner_config"]['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . $_SESSION["runner_config"]["SITEROOT"] . $_SESSION["runner_config"]["BACKEND_ROOT"] . 'Routerunner/Routerunner.php'; use Routerunner\Routerunner as runner; new runner(array('mode' => 'backend', 'bootstrap' => false), function () { $debug = 1; $response = array('session_id' => false, 'session_open_date' => false); if ($session_id = \runner::stack('session_id')) { $response['session_id'] = $session_id; } else { $token = \user::token(); $SQL = 'CALL `{PREFIX}session_open`(0, :label, :token)'; if ($session_result = \db::query($SQL, array(':label' => NULL, ':token' => $token))) { $response['session_id'] = $session_result[0]['session_opened']; $response['session_open_date'] = time(); \runner::stack("models_created", array(), true); \runner::stack('session_id', $response['session_id'], true); //\runner::stack('session_id', 1, true); } } echo json_encode($response); });
} if (($resource = json_decode($change["resource"], true)) && isset($resource["route"])) { $model_route = $resource["route"]; } else { $model_class = "get_the_proper_model_class"; $model_route = "/model"; } if ($model_class && substr($model_route, -1 * (strlen($model_class) + 1)) != '/' . $model_class) { $model_route .= '/' . $model_class; } $context = array("direct" => $change["reference"], "session" => \runner::stack("session_id"), "silent" => true); $router = false; $model = false; \runner::stack("model_create", array("class" => $model_class)); \runner::redirect_route($model_route, \runner::config("scaffold"), true, $context, $router, $model); \runner::stack("model_create", false); if ($model && is_array($model)) { $model = array_shift($model); } if (is_object($model) && get_parent_class($model) == "Routerunner\\BaseModel" && ($changes = json_decode($change["changes"], true))) { switch ($change["state"]) { case "property": foreach ($changes as $field => $value) { if (property_exists($model, $field) && isset($model->table_from) && isset($model->table_id)) { $model->{$field} = $value; $pk = false; if (isset($router->runner->model_context["primary_key"])) { $pk = $router->runner->model_context["primary_key"]; } else { $SQL = <<<SQL SELECT k.column_name
public static function siblings($reference, $lang = false, &$find = null) { $SQL = 'CALL `{PREFIX}tree_siblings`(:reference, :lang, NULL, NULL, :session)'; $session_id = \runner::stack('session_id'); if (empty($session_id)) { $session_id = 0; } if ($siblings = \Routerunner\Db::query($SQL, array(':reference' => $reference, ':lang' => $lang ? $lang : NULL, ':session' => $session_id))) { if (!is_null($find)) { $found = null; foreach ($siblings as $index => $sibling) { if ($sibling['reference'] == $find) { $found = $index; break; } } $find = $found; } return $siblings; } return array(); }
$model_route = "/model/" . $runner->context["model_class"]; \runner::redirect_route($model_route, \runner::config("scaffold"), true, $context, $router, $model); if (is_array($model)) { $model = array_shift($model); } $runner->context["model"] = $model; } } elseif (isset($runner->context["reference"], $runner->context["model_class"])) { $router = false; $model = false; /* $context = array( "self" => array("reference" => $runner->context["reference"]) ); */ $context = array("direct" => $runner->context["reference"], "session" => \runner::stack("session_id"), "silent" => true); $model_route = "/model/" . $runner->context["model_class"]; \runner::redirect_route($model_route, \runner::config("scaffold"), true, $context, $router, $model); if (is_array($model)) { $model = array_shift($model); } $runner->context["model"] = $model; if ($model && $model->permission && !$model->writable()) { $allowed = false; } } ?> <div class="portlet light"> <div class="portlet-title"> <div class="caption font-red col-md-6"> <i class="fa fa-file-text-o font-red"></i>
public static function form($formname, $runner, $repost_form_after_submit = false) { $repost = $repost_form_after_submit; \Routerunner\Helper::loader($runner, trim($runner->route, '\\') . '.' . $formname . '.input', $output); if (isset($runner->form_override)) { $output = array_merge($output, $runner->form_override); if (isset($runner->form_override['input'])) { $runner->form_context[$formname]['input'] = $runner->form_override['input']; } } $html = ''; if (isset($output['form'], $output['input'])) { $form = new \Routerunner\Form($runner, $formname, $output, $repost_form_after_submit); $html = $form->render($runner); $form_addon = $form->field($form->id_field) . $form->field('_routerunner_form_nonce'); $html = str_replace('</form>', $form_addon . '</form>', $html); if (\runner::stack("form_failed:" . $formname) === true) { $repost = true; \runner::stack("form_failed:" . $formname, false); } if ($repost && $repost_form_after_submit == 'submit') { $repost_form_after_submit = 'get'; $form = new \Routerunner\Form($runner, $formname, $output, $repost_form_after_submit); $html .= $form->render($runner); } } return $html; }