public function test_str_to_bool() { $this->assertTrue(util::str_to_bool('true')); $this->assertTrue(util::str_to_bool('yes')); $this->assertTrue(util::str_to_bool('y')); $this->assertTrue(util::str_to_bool('oui')); $this->assertTrue(util::str_to_bool('vrai')); $this->assertFalse(util::str_to_bool('false')); $this->assertFalse(util::str_to_bool('no')); $this->assertFalse(util::str_to_bool('n')); $this->assertFalse(util::str_to_bool('non')); $this->assertFalse(util::str_to_bool('faux')); $this->assertFalse(util::str_to_bool('test', false)); }
public function getUri($title, $id = 0, $contenttypeslug = "", $fulluri = true, $allowempty = true) { $contenttype = $this->getContentType($contenttypeslug); $tablename = $this->getTablename($contenttype['slug']); $id = intval($id); $fulluri = \utilphp\util::str_to_bool($fulluri); $slug = makeSlug($title); // don't allow strictly numeric slugs. if (is_numeric($slug)) { $slug = $contenttype['singular_slug'] . "-" . $slug; } // Only add 'entry/' if $full is requested. if ($fulluri) { $prefix = "/" . $contenttype['singular_slug'] . "/"; } else { $prefix = ""; } $query = sprintf("SELECT id from %s WHERE slug=? and id!=?", $tablename); $res = $this->app['db']->executeQuery($query, array($slug, $id), array(\PDO::PARAM_STR, \PDO::PARAM_INT))->fetch(); if (!$res) { $uri = $prefix . $slug; } else { for ($i = 1; $i <= 10; $i++) { $newslug = $slug . '-' . $i; $res = $this->app['db']->executeQuery($query, array($newslug, $id), array(\PDO::PARAM_STR, \PDO::PARAM_INT))->fetch(); if (!$res) { $uri = $prefix . $newslug; break; } } // otherwise, just get a random slug. if (empty($uri)) { $slug = trimText($slug, 32, false, false) . "-" . $this->app['randomgenerator']->generateString(6, 'abcdefghijklmnopqrstuvwxyz01234567890'); $uri = $prefix . $slug; } } // When storing, we should never have an empty slug/URI. If we can't make a nice one, set it to 'slug-XXXX'. if (!$allowempty && empty($uri)) { $uri = 'slug-' . $this->app['randomgenerator']->generateString(6, 'abcdefghijklmnopqrstuvwxyz01234567890'); } return $uri; }