@@ -23,7 +23,7 @@ |
||
| 23 | 23 | if ($this->modeAuto) { |
| 24 | 24 | return true; |
| 25 | 25 | } |
| 26 | - $ask = readline(Color::LIGHT_MAGENTA . '*** '.$question.' [y/n/auto]' . Color::NORMAL); |
|
| 26 | + $ask = readline(Color::LIGHT_MAGENTA.'*** '.$question.' [y/n/auto]'.Color::NORMAL); |
|
| 27 | 27 | if ('auto' === $ask) { |
| 28 | 28 | $this->modeAuto = true; |
| 29 | 29 | |
@@ -24,7 +24,7 @@ discard block |
||
| 24 | 24 | FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES |
| 25 | 25 | ); |
| 26 | 26 | } catch (Throwable $e) { |
| 27 | - $this->log->critical("Can't parse ARTICLE_ANALYZED_FILENAME : " . $e->getMessage()); |
|
| 27 | + $this->log->critical("Can't parse ARTICLE_ANALYZED_FILENAME : ".$e->getMessage()); |
|
| 28 | 28 | $analyzed = []; |
| 29 | 29 | } |
| 30 | 30 | $this->pastAnalyzed = ($analyzed !== false) ? $analyzed : []; |
@@ -34,7 +34,7 @@ discard block |
||
| 34 | 34 | { |
| 35 | 35 | if (!$this->checkAlreadyAnalyzed($title)) { |
| 36 | 36 | $this->pastAnalyzed[] = $title; // skip doublon title |
| 37 | - @file_put_contents(static::ARTICLE_ANALYZED_FILENAME, $title . PHP_EOL, FILE_APPEND); |
|
| 37 | + @file_put_contents(static::ARTICLE_ANALYZED_FILENAME, $title.PHP_EOL, FILE_APPEND); |
|
| 38 | 38 | } |
| 39 | 39 | } |
| 40 | 40 | |
@@ -52,7 +52,7 @@ |
||
| 52 | 52 | protected function printTitle(string $title): void |
| 53 | 53 | { |
| 54 | 54 | echo "---------------------\n"; |
| 55 | - echo date('d-m-Y H:i:s') . ' ' . Color::BG_CYAN . " $title " . Color::NORMAL . "\n"; |
|
| 55 | + echo date('d-m-Y H:i:s').' '.Color::BG_CYAN." $title ".Color::NORMAL."\n"; |
|
| 56 | 56 | } |
| 57 | 57 | |
| 58 | 58 | protected function canProcessTitleArticle(string $title, ?string $text): bool |
@@ -32,7 +32,7 @@ discard block |
||
| 32 | 32 | public const SLEEP_AFTER_EDITION = 60; |
| 33 | 33 | public const MINUTES_DELAY_AFTER_LAST_HUMAN_EDIT = 15; |
| 34 | 34 | public const CHECK_EDIT_CONFLICT = true; |
| 35 | - public const ARTICLE_ANALYZED_FILENAME = __DIR__ . '/resources/article_edited.txt'; |
|
| 35 | + public const ARTICLE_ANALYZED_FILENAME = __DIR__.'/resources/article_edited.txt'; |
|
| 36 | 36 | public const SKIP_LASTEDIT_BY_BOT = true; |
| 37 | 37 | public const SKIP_NOT_IN_MAIN_WIKISPACE = true; |
| 38 | 38 | public const SKIP_ADQ = true; |
@@ -86,7 +86,7 @@ discard block |
||
| 86 | 86 | $this->initializePastAnalyzedTitles(); |
| 87 | 87 | |
| 88 | 88 | // @throw exception on "Invalid CSRF token" |
| 89 | - $this->run();//todo delete that and use (Worker)->run($duration) or process management |
|
| 89 | + $this->run(); //todo delete that and use (Worker)->run($duration) or process management |
|
| 90 | 90 | } |
| 91 | 91 | |
| 92 | 92 | protected function setUpInConstructor(): void |
@@ -101,7 +101,7 @@ discard block |
||
| 101 | 101 | */ |
| 102 | 102 | final public function run(): void |
| 103 | 103 | { |
| 104 | - echo date('d-m-Y H:i:s') . " *** NEW WORKER ***\n"; |
|
| 104 | + echo date('d-m-Y H:i:s')." *** NEW WORKER ***\n"; |
|
| 105 | 105 | foreach ($this->getTitles() as $title) { |
| 106 | 106 | try { |
| 107 | 107 | $this->titleProcess($title); |
@@ -202,14 +202,14 @@ discard block |
||
| 202 | 202 | |
| 203 | 203 | // If not a critical edition error |
| 204 | 204 | // example : Wiki Conflict : Page has been edited after getText() |
| 205 | - echo "Error : " . $e->getMessage() . "\n"; |
|
| 205 | + echo "Error : ".$e->getMessage()."\n"; |
|
| 206 | 206 | $this->log->warning($e->getMessage()); |
| 207 | 207 | |
| 208 | 208 | return; |
| 209 | 209 | } |
| 210 | 210 | |
| 211 | 211 | dump($result); |
| 212 | - echo "Sleep " . static::SLEEP_AFTER_EDITION . "\n"; |
|
| 212 | + echo "Sleep ".static::SLEEP_AFTER_EDITION."\n"; |
|
| 213 | 213 | sleep(static::SLEEP_AFTER_EDITION); |
| 214 | 214 | } |
| 215 | 215 | |
@@ -23,8 +23,8 @@ discard block |
||
| 23 | 23 | class TalkBotConfig extends WikiBotConfig |
| 24 | 24 | { |
| 25 | 25 | public const BOT_TALK_SUMMARY = 'Réponse artificielle'; |
| 26 | - public const BOT_TALK_FILE = __DIR__ . '/resources/phrases_zizibot.txt'; |
|
| 27 | - public const TALKCONFIG_FILENAME = __DIR__ . '/resources/botTalk_config.json'; |
|
| 26 | + public const BOT_TALK_FILE = __DIR__.'/resources/phrases_zizibot.txt'; |
|
| 27 | + public const TALKCONFIG_FILENAME = __DIR__.'/resources/botTalk_config.json'; |
|
| 28 | 28 | |
| 29 | 29 | /** |
| 30 | 30 | * Add a freaky response in the bottom of the talk page. |
@@ -37,7 +37,7 @@ discard block |
||
| 37 | 37 | // ugly dependency |
| 38 | 38 | $wiki = ServiceFactory::getMediawikiFactory(); |
| 39 | 39 | if (!$pageTitle) { |
| 40 | - $pageTitle = 'Discussion utilisateur:' . $this::getBotName(); |
|
| 40 | + $pageTitle = 'Discussion utilisateur:'.$this::getBotName(); |
|
| 41 | 41 | } |
| 42 | 42 | $page = new WikiPageAction($wiki, $pageTitle); |
| 43 | 43 | $last = $page->page->getRevisions()->getLatest(); |
@@ -57,13 +57,13 @@ discard block |
||
| 57 | 57 | |
| 58 | 58 | // No response if time < 24h since last bot owner response |
| 59 | 59 | if ($last->getUser() == self::getBotOwner()) { |
| 60 | - $talkConfig['owner_last_time'] = (int)strtotime($last->getTimestamp()); |
|
| 60 | + $talkConfig['owner_last_time'] = (int) strtotime($last->getTimestamp()); |
|
| 61 | 61 | file_put_contents(self::TALKCONFIG_FILENAME, json_encode($talkConfig, JSON_THROW_ON_ERROR)); |
| 62 | 62 | |
| 63 | 63 | return false; |
| 64 | 64 | } |
| 65 | 65 | // No response if time < 24h since last owner response |
| 66 | - if (isset($talkConfig['owner_last_time']) && (int)$talkConfig['owner_last_time'] > (time() - 60 * 60 * 48)) { |
|
| 66 | + if (isset($talkConfig['owner_last_time']) && (int) $talkConfig['owner_last_time'] > (time() - 60 * 60 * 48)) { |
|
| 67 | 67 | echo "No response if time < 24h after last owner response\n"; |
| 68 | 68 | |
| 69 | 69 | return false; |
@@ -79,7 +79,7 @@ discard block |
||
| 79 | 79 | $editInfo = new EditInfo(static::BOT_TALK_SUMMARY); |
| 80 | 80 | $success = $page->addToBottomOfThePage($addText, $editInfo); |
| 81 | 81 | |
| 82 | - return (bool)$success; |
|
| 82 | + return (bool) $success; |
|
| 83 | 83 | } |
| 84 | 84 | |
| 85 | 85 | /** |
@@ -110,13 +110,13 @@ discard block |
||
| 110 | 110 | $lines = explode("\n", trim($text)); |
| 111 | 111 | $lastLine = $lines[count($lines) - 1]; |
| 112 | 112 | if (preg_match('#^(:*).+#', $lastLine, $matches) && !empty($matches[1])) { |
| 113 | - $nextIdent = $matches[1] . ':'; |
|
| 113 | + $nextIdent = $matches[1].':'; |
|
| 114 | 114 | if (empty($author)) { |
| 115 | 115 | return $nextIdent; |
| 116 | 116 | } |
| 117 | 117 | // search author signature link to check that he wrote on the page bottom |
| 118 | 118 | if (preg_match( |
| 119 | - '#\[\[(?:User|Utilisateur|Utilisatrice):' . preg_quote($author, '#') . '[|\]]#i', |
|
| 119 | + '#\[\[(?:User|Utilisateur|Utilisatrice):'.preg_quote($author, '#').'[|\]]#i', |
|
| 120 | 120 | $matches[0] |
| 121 | 121 | ) |
| 122 | 122 | ) { |
@@ -137,7 +137,7 @@ discard block |
||
| 137 | 137 | throw new ConfigException('Pas de phrases disponibles pour TalkBot'); |
| 138 | 138 | } |
| 139 | 139 | |
| 140 | - return (string)trim($sentences[array_rand($sentences)]); |
|
| 140 | + return (string) trim($sentences[array_rand($sentences)]); |
|
| 141 | 141 | } |
| 142 | 142 | |
| 143 | 143 | /** |
@@ -147,7 +147,7 @@ discard block |
||
| 147 | 147 | public function botContribs(): string |
| 148 | 148 | { |
| 149 | 149 | $url |
| 150 | - = 'https://fr.wikipedia.org/w/api.php?action=query&list=usercontribs&ucuser=' . $this::getBotName() |
|
| 150 | + = 'https://fr.wikipedia.org/w/api.php?action=query&list=usercontribs&ucuser='.$this::getBotName() |
|
| 151 | 151 | . '&ucnamespace=0&uclimit=40&ucprop=title|timestamp|comment&format=json'; |
| 152 | 152 | |
| 153 | 153 | return file_get_contents($url); |
@@ -63,7 +63,7 @@ discard block |
||
| 63 | 63 | $this->page = $wiki->newPageGetter()->getFromTitle($title); |
| 64 | 64 | $this->ns = $this->page->getPageIdentifier()->getTitle()->getNs(); |
| 65 | 65 | } catch (Throwable $e) { |
| 66 | - throw new Exception('Erreur construct WikiPageAction ' . $e->getMessage() . $e->getFile() . $e->getLine(), $e->getCode(), $e); |
|
| 66 | + throw new Exception('Erreur construct WikiPageAction '.$e->getMessage().$e->getFile().$e->getLine(), $e->getCode(), $e); |
|
| 67 | 67 | } |
| 68 | 68 | } |
| 69 | 69 | |
@@ -131,7 +131,7 @@ discard block |
||
| 131 | 131 | public function getRedirect(): ?string |
| 132 | 132 | { |
| 133 | 133 | if ($this->getText() && preg_match('/^#REDIRECT(?:ION)? ?\[\[([^]]+)]]/i', $this->getText(), $matches)) { |
| 134 | - return (string)trim($matches[1]); |
|
| 134 | + return (string) trim($matches[1]); |
|
| 135 | 135 | } |
| 136 | 136 | |
| 137 | 137 | return null; |
@@ -222,7 +222,7 @@ discard block |
||
| 222 | 222 | throw new Exception('That page does not exist'); |
| 223 | 223 | } |
| 224 | 224 | $oldText = $this->getText(); |
| 225 | - $newText = $oldText . "\n" . $addText; |
|
| 225 | + $newText = $oldText."\n".$addText; |
|
| 226 | 226 | |
| 227 | 227 | return $this->editPage($newText, $editInfo); |
| 228 | 228 | } |
@@ -239,7 +239,7 @@ discard block |
||
| 239 | 239 | throw new Exception('That page does not exist'); |
| 240 | 240 | } |
| 241 | 241 | $oldText = $this->getText(); |
| 242 | - $newText = $addText . $oldText; |
|
| 242 | + $newText = $addText.$oldText; |
|
| 243 | 243 | |
| 244 | 244 | return $this->editPage($newText, $editInfo); |
| 245 | 245 | } |
@@ -254,7 +254,7 @@ discard block |
||
| 254 | 254 | // "{{en}} {{zh}} {{ouvrage...}}" |
| 255 | 255 | // todo test U |
| 256 | 256 | if (preg_match_all( |
| 257 | - '#(?<langTemp>{{[a-z][a-z]}} ?{{[a-z][a-z]}}) ?' . preg_quote($tplOrigin, '#') . '#i', |
|
| 257 | + '#(?<langTemp>{{[a-z][a-z]}} ?{{[a-z][a-z]}}) ?'.preg_quote($tplOrigin, '#').'#i', |
|
| 258 | 258 | $text, |
| 259 | 259 | $matches |
| 260 | 260 | ) |
@@ -268,7 +268,7 @@ discard block |
||
| 268 | 268 | // hack // todo: autres patterns {{en}} ? |
| 269 | 269 | // OK : {{en}} \n {{ouvrage}} |
| 270 | 270 | if (preg_match_all( |
| 271 | - "#(?<langTemp>{{(?<lang>[a-z][a-z])}} *\n?)?" . preg_quote($tplOrigin, '#') . '#i', |
|
| 271 | + "#(?<langTemp>{{(?<lang>[a-z][a-z])}} *\n?)?".preg_quote($tplOrigin, '#').'#i', |
|
| 272 | 272 | $text, |
| 273 | 273 | $matches |
| 274 | 274 | ) > 0 |
@@ -283,7 +283,7 @@ discard block |
||
| 283 | 283 | // example : {{en}} {{template|lang=ru}} |
| 284 | 284 | if (!empty($lang) && self::SKIP_LANG_INDICATOR !== $lang |
| 285 | 285 | && preg_match('#langue *=#', $tplReplace) |
| 286 | - && !preg_match('#langue *= ?' . $lang . '#i', $tplReplace) |
|
| 286 | + && !preg_match('#langue *= ?'.$lang.'#i', $tplReplace) |
|
| 287 | 287 | && !preg_match('#\| ?langue *= ?\n?\|#', $tplReplace) |
| 288 | 288 | ) { |
| 289 | 289 | echo sprintf( |
@@ -306,7 +306,7 @@ discard block |
||
| 306 | 306 | // FIX dirty : {{en}} mais langue= avec value non définie sur new template... |
| 307 | 307 | if (!empty($lang) && preg_match('#\| ?(langue *=) ?\n? ?\|#', $tplReplace, $matchLangue) > 0) { |
| 308 | 308 | $previousTpl = $tplReplace; |
| 309 | - $tplReplace = str_replace($matchLangue[1], 'langue=' . $lang, $tplReplace); |
|
| 309 | + $tplReplace = str_replace($matchLangue[1], 'langue='.$lang, $tplReplace); |
|
| 310 | 310 | //dump('origin', $tplOrigin); |
| 311 | 311 | $text = str_replace($previousTpl, $tplReplace, $text); |
| 312 | 312 | } |
@@ -321,7 +321,7 @@ discard block |
||
| 321 | 321 | // replace {template} and {{lang}} {template} |
| 322 | 322 | $text = str_replace($mention, $tplReplace, $text); |
| 323 | 323 | $text = str_replace( |
| 324 | - $matches['langTemp'][$num] . $tplReplace, |
|
| 324 | + $matches['langTemp'][$num].$tplReplace, |
|
| 325 | 325 | $tplReplace, |
| 326 | 326 | $text |
| 327 | 327 | ); // si 1er replace global sans |
@@ -21,7 +21,7 @@ discard block |
||
| 21 | 21 | */ |
| 22 | 22 | class InternetDomainParser implements InternetDomainParserInterface |
| 23 | 23 | { |
| 24 | - private const PATH_CACHE_PUBLIC_SUFFIX_LIST = __DIR__ . '/resources/public_suffix_list.dat'; |
|
| 24 | + private const PATH_CACHE_PUBLIC_SUFFIX_LIST = __DIR__.'/resources/public_suffix_list.dat'; |
|
| 25 | 25 | |
| 26 | 26 | /** @var Rules */ |
| 27 | 27 | private $rules; |
@@ -55,7 +55,7 @@ discard block |
||
| 55 | 55 | public static function extractSubdomainString(string $httpURL): string |
| 56 | 56 | { |
| 57 | 57 | if (!ExternHttpClient::isHttpURL($httpURL)) { |
| 58 | - throw new Exception('string is not an URL ' . $httpURL); |
|
| 58 | + throw new Exception('string is not an URL '.$httpURL); |
|
| 59 | 59 | } |
| 60 | 60 | |
| 61 | 61 | return parse_url($httpURL, PHP_URL_HOST); |
@@ -60,13 +60,13 @@ discard block |
||
| 60 | 60 | // idn_to_ascii('teßt.com',IDNA_NONTRANSITIONAL_TO_ASCII,INTL_IDNA_VARIANT_UTS46) |
| 61 | 61 | // checkdnsrr($string, "A") // check DNS record |
| 62 | 62 | if (!self::isHttpURL($url)) { |
| 63 | - throw new DomainException('URL not compatible : ' . $url); |
|
| 63 | + throw new DomainException('URL not compatible : '.$url); |
|
| 64 | 64 | } |
| 65 | 65 | $response = $this->client->get($url); |
| 66 | 66 | |
| 67 | 67 | if (200 !== $response->getStatusCode()) { |
| 68 | - echo 'HTTP error ' . $response->getStatusCode(); |
|
| 69 | - $this->log->error('HTTP error ' . $response->getStatusCode() . ' ' . $response->getReasonPhrase()); |
|
| 68 | + echo 'HTTP error '.$response->getStatusCode(); |
|
| 69 | + $this->log->error('HTTP error '.$response->getStatusCode().' '.$response->getReasonPhrase()); |
|
| 70 | 70 | |
| 71 | 71 | return null; |
| 72 | 72 | } |
@@ -82,7 +82,7 @@ discard block |
||
| 82 | 82 | */ |
| 83 | 83 | public static function isHttpURL(string $url): bool |
| 84 | 84 | { |
| 85 | - return (bool)preg_match('#^https?://[^ ]+$#i', $url); |
|
| 85 | + return (bool) preg_match('#^https?://[^ ]+$#i', $url); |
|
| 86 | 86 | } |
| 87 | 87 | |
| 88 | 88 | /** |
@@ -104,7 +104,7 @@ discard block |
||
| 104 | 104 | $charset = $this->extractCharset($html) ?? 'WINDOWS-1252'; |
| 105 | 105 | |
| 106 | 106 | if (empty($charset)) { |
| 107 | - throw new DomainException('normalized html error and no charset found : ' . $url); |
|
| 107 | + throw new DomainException('normalized html error and no charset found : '.$url); |
|
| 108 | 108 | } |
| 109 | 109 | try { |
| 110 | 110 | $html2 = iconv($charset, 'UTF-8//TRANSLIT', $html); |
@@ -113,7 +113,7 @@ discard block |
||
| 113 | 113 | return ''; |
| 114 | 114 | } |
| 115 | 115 | } catch (Throwable $e) { |
| 116 | - throw new DomainException("error converting : $charset to UTF-8 on " . $url, $e->getCode(), $e); |
|
| 116 | + throw new DomainException("error converting : $charset to UTF-8 on ".$url, $e->getCode(), $e); |
|
| 117 | 117 | } |
| 118 | 118 | |
| 119 | 119 | return $html2; |
@@ -69,7 +69,7 @@ discard block |
||
| 69 | 69 | ) |
| 70 | 70 | { |
| 71 | 71 | if (!ExternHttpClient::isHttpURL($url)) { |
| 72 | - throw new Exception('string is not an URL ' . $url); |
|
| 72 | + throw new Exception('string is not an URL '.$url); |
|
| 73 | 73 | } |
| 74 | 74 | $this->url = $url; |
| 75 | 75 | $this->html = $html; |
@@ -189,7 +189,7 @@ discard block |
||
| 189 | 189 | { |
| 190 | 190 | try { |
| 191 | 191 | if (!ExternHttpClient::isHttpURL($this->url)) { |
| 192 | - throw new Exception('string is not an URL ' . $this->url); |
|
| 192 | + throw new Exception('string is not an URL '.$this->url); |
|
| 193 | 193 | } |
| 194 | 194 | if (!$this->domainParser instanceof InternetDomainParserInterface) { |
| 195 | 195 | $this->log->notice('InternetDomainParser is not set'); |
@@ -200,7 +200,7 @@ discard block |
||
| 200 | 200 | return $this->domainParser->getRegistrableDomainFromURL($this->url); |
| 201 | 201 | } catch (Exception $e) { |
| 202 | 202 | if ($this->log !== null) { |
| 203 | - $this->log->warning('InternetDomainParser->getRegistrableDomainFromURL NULL ' . $this->url); |
|
| 203 | + $this->log->warning('InternetDomainParser->getRegistrableDomainFromURL NULL '.$this->url); |
|
| 204 | 204 | } |
| 205 | 205 | throw new Exception('InternetDomainParser->getRegistrableDomainFromURL NULL', $e->getCode(), $e); |
| 206 | 206 | } |