public function execute() { $session = \Libs\Session::current(); // Include debug info: $session->actors()->{'info'} = 'Actors\\Info'; parent::execute(); }
public function execute() { $session = \Libs\Session::current(); $session->headers()->{'content-type'} = 'application/xml'; $session->actors()->{'create'} = 'Actors\\Create'; parent::execute(); }
public function execute(\Libs\DOM\Element $element) { parent::execute($element); $session = \Libs\Session::current(); $db = $session->app()->database(); $id = trim(isset($session->parameters()->{'data'}) ? $session->parameters()->{'data'} : ''); // Ignore null values: if ($id == '') { exit; } // Lookup the URL of the id: $query = ' SELECT url FROM urls WHERE id = "%s" LIMIT 1 '; $data = $db->query($query, $id); // Redirect home if the URL doesn't exist: if ($data === false) { header('Location: ' . SERVER_URL); exit; } // Increment the number of hits for this id: $query = ' UPDATE urls SET hits = 1 + ( SELECT hits FROM urls WHERE id = "%1$s" ) WHERE id = "%1$s" '; $db->exec($query, $id); // Record this hit: $address = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''; $referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; $agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; $query = ' INSERT INTO hits ( id, address, timestamp, referrer, agent ) VALUES ( "%s", "%s", "%s", "%s", "%s" ) '; $db->exec($query, $id, $address, gmdate('U'), $referrer, $agent); // Make sure the URL begins with a protocol: if (!preg_match('%^(https?|ftp)://%', $data->url)) { $data->url = 'http://' . $data->url; } // Redirect to the URL: header('Location: ' . $data->url); }
public function __set($name, $value) { if (!$value instanceof \Libs\Actor) { // Relative to current App: if (strpos($value, '\\') !== 0) { $app = \Libs\Session::current()->app(); $dir = $app->dir(); $namespace = $app->namespace(); $file = sprintf('%s/%s.php', $dir, strtr($value, '\\_', '/.')); $class = sprintf('\\%s\\%s', $namespace, $value); require_once $file; $value = $class::instance(); } } $this->values[$name] = $value; $this->iterator = new \ArrayIterator($this->values); }
public function execute() { $session = \Libs\Session::current(); // Create sub session to render the request: $simulate = \Libs\Session::open(); // Copy Apps: foreach ($session->apps() as $key => $app) { if ($app instanceof \Apps\Debug\App) { continue; } $simulate->registerApp($app); unset($session->apps()->{$key}); } foreach ($session->instances() as $key => $value) { if ($value instanceof \Apps\Debug\App) { continue; } if ($value instanceof \Apps\Debug\Views\Main) { continue; } $simulate->instances()->{$key} = $value; unset($session->instances()->{$key}); } // Copy parameters: foreach ($session->parameters() as $key => $value) { if ($key == 'debug') { continue; } $simulate->parameters()->{$key} = $value; } // Execute session: $simulate->execute(); $simulate->render(); self::$session = $simulate; \Libs\Session::close($simulate); // Continue with main session: parent::execute(); }
public function execute() { $session = \Libs\Session::current(); $session->actors()->{'create'} = 'Actors\\Redirect'; parent::execute(); }
public function execute(\Libs\DOM\Element $element) { parent::execute($element); $session = \Libs\Session::current(); $document = $session->view()->document(); $db = $session->app()->database(); $url = trim(isset($session->parameters()->{'data'}) ? $session->parameters()->{'data'} : ''); // Ignore null values: if ($url == '') { exit; } // Make sure the URL begins with a protocol: if (!preg_match('%^(https?|ftp)://%', $url)) { $url = 'http://' . $url; } // Lookup the id of an existing URL: $query = ' SELECT id FROM urls WHERE url = "%s" LIMIT 1 '; $data = $db->query($query, $url); // No id found, create a new one: if ($data === false) { $generate = function () { return base_convert(rand(46656, 1679615), 10, 36); }; // Get current timestamp in GMT: $timestamp = gmdate('U'); // Create a random 4 character string: $id = $generate(); $query = ' SELECT COUNT(*) == 0 as `count` FROM urls WHERE id = "%s" LIMIT 1 '; // Make sure the ID is not in use: while (true) { $taken = $db->query($query, $id); if ($taken->count) { break; } $id = $generate(); } // Write new URL to database: $query = ' INSERT INTO urls ( id, url, timestamp, hits ) VALUES ( "%s", "%s", "%s", 0 ) '; $db->exec($query, $id, $url, $timestamp); } else { $id = $data->id; } $element->setAttribute('id', $id); }