*
* @return mixed the version code from the repository if available, else 'false'
*/
- public static function getLatestGitVersionCode($url, $timeout=2)
+ public static function getLatestGitVersionCode($url, $timeout = 2)
{
list($headers, $data) = get_http_response($url, $timeout);
*
* @return mixed the new version code if available and greater, else 'false'
*/
- public static function checkUpdate($currentVersion,
- $updateFile,
- $checkInterval,
- $enableCheck,
- $isLoggedIn,
- $branch='stable')
- {
+ public static function checkUpdate(
+ $currentVersion,
+ $updateFile,
+ $checkInterval,
+ $enableCheck,
+ $isLoggedIn,
+ $branch = 'stable'
+ ) {
// Do not check versions for visitors
// Do not check if the user doesn't want to
// Do not check with dev version
namespace Shaarli;
-
/**
* URL-safe Base64 operations
*
*
* @return string Base64Url-encoded data
*/
- public static function encode($data) {
+ public static function encode($data)
+ {
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
*
* @return string Decoded data
*/
- public static function decode($data) {
+ public static function decode($data)
+ {
return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));
}
}
$upDate = $link['updated'];
$link['up_iso_date'] = $this->getIsoDate($upDate, DateTime::ATOM);
} else {
- $link['up_iso_date'] = $this->getIsoDate($pubDate, DateTime::ATOM);;
+ $link['up_iso_date'] = $this->getIsoDate($pubDate, DateTime::ATOM);
+ ;
}
// Save the more recent item.
}
if ($this->feedType == self::$FEED_RSS) {
return $date->format(DateTime::RSS);
-
}
return $date->format(DateTime::ATOM);
}
}
// General cURL settings
- curl_setopt($ch, CURLOPT_AUTOREFERER, true);
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
- curl_setopt($ch, CURLOPT_HEADER, true);
+ curl_setopt($ch, CURLOPT_AUTOREFERER, true);
+ curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
+ curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt(
$ch,
CURLOPT_HTTPHEADER,
array('Accept-Language: ' . $acceptLanguage)
);
- curl_setopt($ch, CURLOPT_MAXREDIRS, $maxRedirs);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
- curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
+ curl_setopt($ch, CURLOPT_MAXREDIRS, $maxRedirs);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
+ curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
if (is_callable($curlWriteFunction)) {
curl_setopt($ch, CURLOPT_WRITEFUNCTION, $curlWriteFunction);
}
// Max download size management
- curl_setopt($ch, CURLOPT_BUFFERSIZE, 1024*16);
- curl_setopt($ch, CURLOPT_NOPROGRESS, false);
- curl_setopt($ch, CURLOPT_PROGRESSFUNCTION,
- function($arg0, $arg1, $arg2, $arg3, $arg4 = 0) use ($maxBytes)
- {
+ curl_setopt($ch, CURLOPT_BUFFERSIZE, 1024*16);
+ curl_setopt($ch, CURLOPT_NOPROGRESS, false);
+ curl_setopt(
+ $ch,
+ CURLOPT_PROGRESSFUNCTION,
+ function ($arg0, $arg1, $arg2, $arg3, $arg4 = 0) use ($maxBytes) {
if (version_compare(phpversion(), '5.5', '<')) {
// PHP version lower than 5.5
// Callback has 4 arguments
&& !empty($headers)
&& (strpos($headers[0], '301') !== false || strpos($headers[0], '302') !== false)
&& !empty($headers['Location'])) {
-
$redirection = is_array($headers['Location']) ? end($headers['Location']) : $headers['Location'];
if ($redirection != $url) {
$redirection = getAbsoluteUrl($url, $redirection);
/**
* Initialize the translator using php gettext extension (gettext dependency act as a wrapper).
*/
- protected function initGettextTranslator ()
+ protected function initGettextTranslator()
{
$this->translator = new GettextTranslator();
$this->translator->setLanguage($this->language);
$translations = $translations->addFromPoFile('inc/languages/'. $this->language .'/LC_MESSAGES/shaarli.po');
$translations->setDomain('shaarli');
$this->translator->loadTranslations($translations);
- } catch (\InvalidArgumentException $e) {}
+ } catch (\InvalidArgumentException $e) {
+ }
// Default extension translation from the current theme
$theme = $this->conf->get('theme');
);
$translations->setDomain($theme);
$this->translator->loadTranslations($translations);
- } catch (\InvalidArgumentException $e) {}
+ } catch (\InvalidArgumentException $e) {
+ }
}
// Extension translations (plugins, themes, etc.).
$extension = Translations::fromPoFile($translationPath . $this->language .'/LC_MESSAGES/'. $domain .'.po');
$extension->setDomain($domain);
$this->translator->loadTranslations($extension);
- } catch (\InvalidArgumentException $e) {}
+ } catch (\InvalidArgumentException $e) {
+ }
}
}
$hidePublicLinks,
$redirector = '',
$redirectorEncode = true
- )
- {
+ ) {
$this->datastore = $datastore;
$this->loggedIn = $isLoggedIn;
$this->hidePublicLinks = $hidePublicLinks;
} else {
$link['real_url'] .= $link['url'];
}
- }
- else {
+ } else {
$link['real_url'] = $link['url'];
}
*
* @return array list of shaare found.
*/
- public function filterDay($request) {
+ public function filterDay($request)
+ {
$linkFilter = new LinkFilter($this->links);
return $linkFilter->filter(LinkFilter::$FILTER_DAY, $request);
}
$delete = empty($to);
// True for case-sensitive tag search.
$linksToAlter = $this->filterSearch(['searchtags' => $from], true);
- foreach($linksToAlter as $key => &$value)
- {
+ foreach ($linksToAlter as $key => &$value) {
$tags = preg_split('/\s+/', trim($value['tags']));
if (($pos = array_search($from, $tags)) !== false) {
if ($delete) {
{
$order = $order === 'ASC' ? -1 : 1;
// Reorder array by dates.
- usort($this->links, function($a, $b) use ($order) {
+ usort($this->links, function ($a, $b) use ($order) {
if (isset($a['sticky']) && isset($b['sticky']) && $a['sticky'] !== $b['sticky']) {
return $a['sticky'] ? -1 : 1;
}
$visibility = 'all';
}
- switch($type) {
+ switch ($type) {
case self::$FILTER_HASH:
return $this->filterSmallHash($request);
case self::$FILTER_TAG | self::$FILTER_TEXT: // == "vuotext"
// Iterate over every stored link.
foreach ($this->links as $id => $link) {
-
// ignore non private links when 'privatonly' is on.
if ($visibility !== 'all') {
if (! $link['private'] && $visibility === 'private') {
private static function tag2regex($tag)
{
$len = strlen($tag);
- if(!$len || $tag === "-" || $tag === "*"){
+ if (!$len || $tag === "-" || $tag === "*") {
// nothing to search, return empty regex
return '';
}
- if($tag[0] === "-") {
+ if ($tag[0] === "-") {
// query is negated
$i = 1; // use offset to start after '-' character
$regex = '(?!'; // create negative lookahead
}
$regex .= '.*(?:^| )'; // before tag may only be a space or the beginning
// iterate over string, separating it into placeholder and content
- for(; $i < $len; $i++){
- if($tag[$i] === '*'){
+ for (; $i < $len; $i++) {
+ if ($tag[$i] === '*') {
// placeholder found
$regex .= '[^ ]*?';
} else {
// regular characters
$offset = strpos($tag, '*', $i);
- if($offset === false){
+ if ($offset === false) {
// no placeholder found, set offset to end of string
$offset = $len;
}
{
// get single tags (we may get passed an array, even though the docs say different)
$inputTags = $tags;
- if(!is_array($tags)) {
+ if (!is_array($tags)) {
// we got an input string, split tags
$inputTags = preg_split('/(?:\s+)|,/', $inputTags, -1, PREG_SPLIT_NO_EMPTY);
}
- if(!count($inputTags)){
+ if (!count($inputTags)) {
// no input tags
return $this->noFilter($visibility);
}
// build regex from all tags
$re = '/^' . implode(array_map("self::tag2regex", $inputTags)) . '.*$/';
- if(!$casesensitive) {
+ if (!$casesensitive) {
// make regex case insensitive
$re .= 'i';
}
}
}
$search = $link['tags']; // build search string, start with tags of current link
- if(strlen(trim($link['description'])) && strpos($link['description'], '#') !== false){
+ if (strlen(trim($link['description'])) && strpos($link['description'], '#') !== false) {
// description given and at least one possible tag found
$descTags = array();
// find all tags in the form of #tag in the description
$link['description'],
$descTags
);
- if(count($descTags[1])){
+ if (count($descTags[1])) {
// there were some tags in the description, add them to the search string
$search .= ' ' . implode(' ', $descTags[1]);
}
};
// match regular expression with search string
- if(!preg_match($re, $search)){
+ if (!preg_match($re, $search)) {
// this entry does _not_ match our regex
continue;
}
*
* @return int|bool length of $data or false if we need to stop the download
*/
- return function(&$ch, $data) use ($curlGetInfo, &$charset, &$title, &$isRedirected) {
+ return function (&$ch, $data) use ($curlGetInfo, &$charset, &$title, &$isRedirected) {
$responseCode = $curlGetInfo($ch, CURLINFO_RESPONSE_CODE);
if (!empty($responseCode) && in_array($responseCode, [301, 302])) {
$isRedirected = true;
* @return string formatted description.
*/
-function format_description($description, $redirector = '', $urlEncode = true, $indexUrl = '') {
+function format_description($description, $redirector = '', $urlEncode = true, $indexUrl = '')
+{
return nl2br(space2nbsp(hashtag_autolink(text2clickable($description, $redirector, $urlEncode), $indexUrl)));
}
private static function importStatus(
$filename,
$filesize,
- $importCount=0,
- $overwriteCount=0,
- $skipCount=0,
- $duration=0
- )
- {
+ $importCount = 0,
+ $overwriteCount = 0,
+ $skipCount = 0,
+ $duration = 0
+ ) {
$status = sprintf(t('File %s (%d bytes) '), $filename, $filesize);
if ($importCount == 0 && $overwriteCount == 0 && $skipCount == 0) {
$status .= t('has an unknown file format. Nothing was imported.');
);
$this->tpl->assign('newVersion', escape($version));
$this->tpl->assign('versionError', '');
-
} catch (Exception $exc) {
logm($this->conf->get('resource.log'), $_SERVER['REMOTE_ADDR'], $exc->getMessage());
$this->tpl->assign('newVersion', '');
$this->initialize();
}
- if (empty($data) || !is_array($data)){
+ if (empty($data) || !is_array($data)) {
return false;
}
try {
$this->loadPlugin($dirs[$index], $plugin);
- }
- catch (PluginFileNotFoundException $e) {
+ } catch (PluginFileNotFoundException $e) {
error_log($e->getMessage());
}
}
}
}
- try{
+ try {
$this->conf->write($this->isLoggedIn);
return true;
} catch (IOException $e) {
*/
function cleanup_url($url)
{
- $obj_url = new Url($url);
- return $obj_url->cleanup();
+ $obj_url = new Url($url);
+ return $obj_url->cleanup();
}
/**
*/
function get_url_scheme($url)
{
- $obj_url = new Url($url);
- return $obj_url->getScheme();
+ $obj_url = new Url($url);
+ return $obj_url->getScheme();
}
/**
}
$this->parts['query'] = implode('&', $queryParams);
- }
+ }
/**
* Removes undesired fragments
*
* @return string the URL scheme or false if none is provided.
*/
- public function getScheme() {
+ public function getScheme()
+ {
if (!isset($this->parts['scheme'])) {
return false;
}
*
* @return string the URL host or false if none is provided.
*/
- public function getHost() {
+ public function getHost()
+ {
if (empty($this->parts['host'])) {
return false;
}
*
* @return true is HTTP, false otherwise.
*/
- public function isHttp() {
+ public function isHttp()
+ {
return strpos(strtolower($this->parts['scheme']), 'http') !== false;
}
}
if (is_array($input)) {
$out = array();
- foreach($input as $key => $value) {
+ foreach ($input as $key => $value) {
$out[$key] = escape($value);
}
return $out;
$val = trim($val);
$last = strtolower($val[strlen($val)-1]);
$val = intval(substr($val, 0, -1));
- switch($last) {
- case 'g': $val *= 1024;
- case 'm': $val *= 1024;
- case 'k': $val *= 1024;
+ switch ($last) {
+ case 'g':
+ $val *= 1024;
+ case 'm':
+ $val *= 1024;
+ case 'k':
+ $val *= 1024;
}
return $val;
}
*
* @return string Text translated.
*/
-function t($text, $nText = '', $nb = 1, $domain = 'shaarli') {
+function t($text, $nText = '', $nb = 1, $domain = 'shaarli')
+{
return dn__($domain, $text, $nText, $nb);
}
try {
$this->checkRequest($request);
$response = $next($request, $response);
- } catch(ApiException $e) {
+ } catch (ApiException $e) {
$e->setResponse($response);
$e->setDebug($this->conf->get('dev.debug', false));
$response = $e->getApiResponse();
*
* @throws ApiAuthorizationException The token couldn't be validated.
*/
- protected function checkToken($request) {
+ protected function checkToken($request)
+ {
if (! $request->hasHeader('Authorization')) {
throw new ApiAuthorizationException('JWT token not provided');
}
/**
* ApiController constructor.
- *
+ *
* Note: enabling debug mode displays JSON with readable formatting.
*
* @param Container $ci Slim container.
$offset = $request->getParam('offset');
if (empty($offset)) {
$offset = 0;
- }
- elseif (ctype_digit($offset)) {
+ } elseif (ctype_digit($offset)) {
$offset = (int) $offset;
} else {
throw new ApiBadParametersException('Invalid offset');
/**
* Class Info
- *
+ *
* REST API Controller: /info
*
* @package Api\Controllers
{
/**
* Service providing various information about Shaarli instance.
- *
+ *
* @param Request $request Slim request.
* @param Response $response Slim response.
*
* Parent Exception related to the API, able to generate a valid Response (ResponseInterface).
* Also can include various information in debug mode.
*/
-abstract class ApiException extends \Exception {
+abstract class ApiException extends \Exception
+{
/**
* @var Response instance from Slim.
*
* @return Response Final response to give.
*/
- public abstract function getApiResponse();
+ abstract public function getApiResponse();
/**
* Creates ApiResponse body.
*
* @return array|string response body
*/
- protected function getApiResponseBody() {
+ protected function getApiResponseBody()
+ {
if ($this->debug !== true) {
return $this->getMessage();
}
namespace Shaarli\Api\Exceptions;
-
use Slim\Http\Response;
/**
namespace Shaarli\Api\Exceptions;
-
use Slim\Http\Response;
/**
// If there is no order, it means a disabled plugin has been enabled.
if (isset($formData['order_' . $key])) {
$plugins[(int) $formData['order_' . $key]] = $key;
- }
- else {
+ } else {
$newEnabledPlugins[] = $key;
}
}
// The user client has a valid stay-signed-in cookie
// Session information is updated with the current client information
$this->sessionManager->storeLoginInfo($clientIpId);
-
} elseif ($this->sessionManager->hasSessionExpired()
|| $this->sessionManager->hasClientIpChanged($clientIpId)
) {