[TASK] Merge linkvalidator for RC1
authorPhilipp Gampe <forge.typo3.org@philippgampe.info>
Mon, 10 Oct 2011 20:32:18 +0000 (22:32 +0200)
committerXavier Perseguers <xavier@typo3.org>
Tue, 11 Oct 2011 06:58:01 +0000 (08:58 +0200)
Changes included:
3b062e3 [TASK] Prepare merge for 4.6-RC1 (part 2)
27e93d6 Merge "[BUGFIX] Invalid target language in localization file"
ba0178b [BUGFIX] Invalid target language in localization file
36f1b21 [BUGFIX][SECURITY] SQL Injection in Scheduler Task of
Linkvalidator
9636b77 [TASK] Merge Changes from core since last sync
709531e [TASK] Prepare merge for 4.6-RC1
5607748 Merge "[BUGFIX] SQL error if a task is run on a disabled page"
e2bb756 [TASK] Update manual
79b4741 [BUGFIX] SQL error if a task is run on a disabled page
6856163 Merge "[BUGFIX] It is not possible to set page 0 to schedular
task"
28a38da Merge "[BUGFIX] SQL error if opening a disabled page with
module"
0fece3f [BUGFIX] It is not possible to set page 0 to schedular task
df464d4 [BUGFIX] Revert change in interface signature
4335331 [BUGFIX] SQL error if opening a disabled page with module
c12d8f5 [TASK] Fix CGL issues
74a9c14 [BUGFIX] Initialize $currentR in analyseTypoLinks
e5d6b19 [TASK] Bump version number

Change-Id: Ia3a9583112b601c21f58e9b782ecb5b03e331fe4
Resolves: #30756
Reviewed-on: http://review.typo3.org/5685
Reviewed-by: Xavier Perseguers
Tested-by: Xavier Perseguers
16 files changed:
typo3/sysext/linkvalidator/.gitignore [new file with mode: 0644]
typo3/sysext/linkvalidator/ChangeLog
typo3/sysext/linkvalidator/classes/class.tx_linkvalidator_processor.php
typo3/sysext/linkvalidator/classes/linktype/class.tx_linkvalidator_linktype_abstract.php
typo3/sysext/linkvalidator/classes/linktype/class.tx_linkvalidator_linktype_external.php
typo3/sysext/linkvalidator/classes/linktype/class.tx_linkvalidator_linktype_file.php
typo3/sysext/linkvalidator/classes/linktype/class.tx_linkvalidator_linktype_interface.php
typo3/sysext/linkvalidator/classes/linktype/class.tx_linkvalidator_linktype_internal.php
typo3/sysext/linkvalidator/classes/linktype/class.tx_linkvalidator_linktype_linkhandler.php
typo3/sysext/linkvalidator/classes/tasks/class.tx_linkvalidator_tasks_validator.php
typo3/sysext/linkvalidator/classes/tasks/class.tx_linkvalidator_tasks_validatoradditionalfieldprovider.php
typo3/sysext/linkvalidator/doc/manual.sxw
typo3/sysext/linkvalidator/doc/manual.txt
typo3/sysext/linkvalidator/ext_emconf.php
typo3/sysext/linkvalidator/modfuncreport/class.tx_linkvalidator_modfuncreport.php
typo3/sysext/linkvalidator/modfuncreport/locallang.xlf

diff --git a/typo3/sysext/linkvalidator/.gitignore b/typo3/sysext/linkvalidator/.gitignore
new file mode 100644 (file)
index 0000000..349a4d9
--- /dev/null
@@ -0,0 +1,23 @@
+#########################
+# Linkvalidator
+# global ignore file
+########################
+# ignoring temporary files (left by e.g. vim)
+# ignoring by common IDE's used directories/files
+# dont ignore .rej and .orig as we want to see/clean files after conflict resolution
+#
+# for local exclude patterns please edit .git/info/exclude
+#
+*~
+*.bak
+*.idea
+*.project
+*.swp
+.buildpath
+.cache
+.project
+.session
+.settings
+.TemporaryItems
+.webprj
+nbproject
index 8b80b76..b2bec79 100644 (file)
@@ -1,8 +1,51 @@
-2011-08-30 Philipp Gampe <forge.typo3.org@philippgampe.info>
+2011-10-11 TYPO3 4.6-RC1 (linkvalidator 1.5.0-rc1)
+
+27e93d6    Merge "[BUGFIX] Invalid target language in localization file" (Philipp Gampe)
+ba0178b    [BUGFIX] Invalid target language in localization file (Xavier Perseguers)
+36f1b21    [BUGFIX][SECURITY] SQL Injection in Scheduler Task of Linkvalidator (Oliver Hader)
+9636b77    [TASK] Merge Changes from core since last sync (Philipp Gampe)
+709531e    [TASK] Prepare merge for 4.6-RC1 (Philipp Gampe)
+5607748    Merge "[BUGFIX] SQL error if a task is run on a disabled page" (Philipp Gampe)
+e2bb756    [TASK] Update manual (Philipp Gampe)
+79b4741    [BUGFIX] SQL error if a task is run on a disabled page (Philipp Gampe)
+6856163    Merge "[BUGFIX] It is not possible to set page 0 to schedular task" (Philipp Gampe)
+28a38da    Merge "[BUGFIX] SQL error if opening a disabled page with module" (Philipp Gampe)
+0fece3f    [BUGFIX] It is not possible to set page 0 to schedular task (Philipp Gampe)
+df464d4    [BUGFIX] Revert change in interface signature (Philipp Gampe)
+4335331    [BUGFIX] SQL error if opening a disabled page with module (Philipp Gampe)
+c12d8f5    [TASK] Fix CGL issues (Philipp Gampe)
+74a9c14    [BUGFIX] Initialize $currentR in analyseTypoLinks (Bjoern Pedersen)
+e5d6b19    [TASK] Bump version number (Christopher)
+0c69001    [TASK] Release linkvalidator 1.0.4 (Philipp Gampe)
+defb32e    [TASK] Fix phpdoc and method signatures (Philipp Gampe)
+2f1f5e0    [BUGFIX] Fatal error with E_STRICT: Declarations of fetchType and checkLink must be compatible with interface
+64769ad    [BUGFIX] XLIFF: Approved attribute is on wrong element (Christopher)
+11b6535    [TASK] Unify table layouts (Christopher)
+fb76d81    [TASK] Update ChangeLog (Christopher)
+5096f76    [TASK] Refactor to t3lib_http_Request for external URLs (Philipp Gampe)
+ad08acf    [TASK] Add XLIFF files (Philipp Gampe)
+267122e    [TASK] Fix localization handling to support XLIFF (Christopher)
+2a9f3ff    [TASK] Merge changes from 4.5 upstream to master (Philipp Gampe)
+6b026f3    [BUGFIX] Correct initialisation of BACK_PATH (Stefan Neufeind)
+79e5177    [TASK] Add .gitignore file. (Christopher)
+
+
+Since linkvalidator witched to git, you can always get the full changelog via:
+http://git.typo3.org/TYPO3v4/Extensions/linkvalidator.git
+
+For you convenience the git log is included above.
+
+
+
+2011-10-05  Philipp Gampe  <forge.typo3.org@philippgampe.info>
+
+       * [TASK] Fix CGL issues
+
+2011-08-30  Philipp Gampe  <forge.typo3.org@philippgampe.info>
 
        * [TASK] Release linkvalidator 1.0.4
 
-2011-08-26 Philipp Gampe <forge.typo3.org@philippgampe.info>
+2011-08-26  Philipp Gampe  <forge.typo3.org@philippgampe.info>
 
        * [BUGFIX] Fatal error with E_STRICT: Declaration of fetchType must be compatible with interface
        * [TASK] Fix phpdoc and method signatures
        * Fixed bug #26731: The info module does not show up in IE 7 and 8 (Michael Miousse)
        * Fixed bug #13368: Content of Tab is not scrollable (Michael Miousse)
 
-2011-04-26     Michael Miousse  <michael.miousse@infoglobe.ca>
+2011-04-26  Michael Miousse  <michael.miousse@infoglobe.ca>
 
        * Fixed bug #13757: Scheduler task does not work at all
 
-2011-04-21     Michael Miousse  <michael.miousse@infoglobe.ca>
+2011-04-21  Michael Miousse  <michael.miousse@infoglobe.ca>
 
        * Fixed bug #13953: Third-party classes cannot be checked due to dynamicConfigFile in TCA (thanks to Jan Philipp Timme)
-       
+
 2011-02-24  Michael Miousse  <michael.miousse@infoglobe.ca>
 
        * Fixed bug #13340: Regression in TYPO3 4.5.1: pid and uid database fields are always 0
        * Fixed bug #12649: Split up analyzeRecord()
        * Cleaned emconf for the release of TYPO3 4.5.1
        * Release linkvalidator 1.0.1
-       
-2011-02-15     Michael Miousse  <michael.miousse@infoglobe.ca>
 
-       * Fixed bug #12652:     If none of the link types are marked to be checked, all of them are checked
-       * Fixed bug #12650:     tx_linkvalidator_tasks_validator: exec() is too long
+2011-02-15  Michael Miousse  <michael.miousse@infoglobe.ca>
+
+       * Fixed bug #12652: If none of the link types are marked to be checked, all of them are checked
+       * Fixed bug #12650: tx_linkvalidator_tasks_validator: exec() is too long
        * Fixed bug #12454: Use setting "defaultMailFromName" and "defaultMailFromAddress"
-       
+
 2011-02-06  Christopher Stelmaszyk  <chrissitopher@gmx.de>
 
        * Fixed bug #12517: Replace exec_SELECTgetRows with exec_SELECTgetSingleRow whenever a single record is expected (thanks to Jo Hasenau)
index 2a7ae59..4b60177 100644 (file)
@@ -121,20 +121,20 @@ class tx_linkvalidator_Processor {
         */
        public function getLinkStatistics($checkOptions = array(), $considerHidden = FALSE) {
                $results = array();
-               if(count($checkOptions) > 0) {
+               if (count($checkOptions) > 0) {
                        $checkKeys = array_keys($checkOptions);
-                       $checkLinkTypeCondition = ' and link_type in (\'' . implode('\',\'',$checkKeys) . '\')';
+                       $checkLinkTypeCondition = ' and link_type in (\'' . implode('\',\'', $checkKeys) . '\')';
 
                        $GLOBALS['TYPO3_DB']->exec_DELETEquery('tx_linkvalidator_link',
-                               '(record_pid in (' . $this->pidList . ') or ( record_uid IN (' . $this->pidList . ') and table_name like \'pages\')) '
-                               . $checkLinkTypeCondition);
+                                                                       '(record_pid in (' . $this->pidList . ')'
+                                                                       . ' or ( record_uid IN (' . $this->pidList . ') and table_name like \'pages\')) '
+                                                                       . $checkLinkTypeCondition);
 
                                // Traverse all configured tables
                        foreach ($this->searchFields as $table => $fields) {
-                               if($table == 'pages'){
+                               if ($table === 'pages') {
                                        $where = 'deleted = 0 AND uid IN (' . $this->pidList . ')';
-                               }
-                               else{
+                               } else {
                                        $where = 'deleted = 0 AND pid IN (' . $this->pidList . ')';
                                }
                                if (!$considerHidden) {
@@ -150,10 +150,11 @@ class tx_linkvalidator_Processor {
                                        // TODO: only select rows that have content in at least one of the relevant fields (via OR)
                                $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($selectFields, $table, $where);
                                        // Get record rows of table
-                               while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
-                                       // Analyse each record
+                               while (($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) !== FALSE) {
+                                               // Analyse each record
                                        $this->analyzeRecord($results, $table, $fields, $row);
                                }
+                               $GLOBALS['TYPO3_DB']->sql_free_result($res);
                        }
 
                        foreach ($this->hookObjectsArr as $key => $hookObj) {
@@ -284,9 +285,8 @@ class tx_linkvalidator_Processor {
        private function analyseLinks(array $resultArray, array &$results, array $record, $field, $table) {
                foreach ($resultArray['elements'] as $element) {
                        $r = $element['subst'];
-                       $title = '';
                        $type = '';
-                       $idRecord = $record['uid'];
+                       $idRecord = $record['uid'];
                        if (!empty($r)) {
                                        // Parse string for special TYPO3 <link> tag:
                                foreach ($this->hookObjectsArr as $keyArr => $hookObj) {
@@ -319,29 +319,29 @@ class tx_linkvalidator_Processor {
                $idRecord = $record['uid'];
                for ($i = 1; $i < count($linkTags); $i += 2) {
                        $referencedRecordType = '';
-                       foreach($resultArray['elements'] as $element) {
-                                       $type = '';
-                                       $r = $element['subst'];
-
-                                       if (!empty($r['tokenID'])) {
-                                               if (substr_count($linkTags[$i], $r['tokenID'])) {
-                                                               // Type of referenced record
-                                                       if (strpos($r['recordRef'], 'pages') !== FALSE) {
-                                                               $currentR = $r;
-                                                                       // Contains number of the page
-                                                               $referencedRecordType = $r['tokenValue'];
-                                                               $wasPage = TRUE;
-                                                       }
-                                                               // Append number of content element to the page saved in the last loop
-                                                       elseif ((strpos($r['recordRef'], 'tt_content') !== FALSE) && ($wasPage === TRUE)) {
-                                                               $referencedRecordType = $referencedRecordType . '#c' . $r['tokenValue'];
-                                                               $wasPage = FALSE;
-                                                       } else {
-                                                               $currentR = $r;
-                                                       }
-                                                       $title = strip_tags($linkTags[$i]);
+                       foreach ($resultArray['elements'] as $element) {
+                               $type = '';
+                               $r = $element['subst'];
+
+                               if (!empty($r['tokenID'])) {
+                                       if (substr_count($linkTags[$i], $r['tokenID'])) {
+                                                       // Type of referenced record
+                                               if (strpos($r['recordRef'], 'pages') !== FALSE) {
+                                                       $currentR = $r;
+                                                               // Contains number of the page
+                                                       $referencedRecordType = $r['tokenValue'];
+                                                       $wasPage = TRUE;
+
+                                                       // Append number of content element to the page saved in the last loop
+                                               } elseif ((strpos($r['recordRef'], 'tt_content') !== FALSE) && (isset($wasPage) && $wasPage === TRUE)) {
+                                                       $referencedRecordType = $referencedRecordType . '#c' . $r['tokenValue'];
+                                                       $wasPage = FALSE;
+                                               } else {
+                                                       $currentR = $r;
                                                }
+                                               $title = strip_tags($linkTags[$i]);
                                        }
+                               }
                        }
                        foreach ($this->hookObjectsArr as $keyArr => $hookObj) {
                                $type = $hookObj->fetchType($currentR, $type, $keyArr);
@@ -366,17 +366,24 @@ class tx_linkvalidator_Processor {
         */
        public function getLinkCounts($curPage) {
                $markerArray = array();
+
+               if (empty($this->pidList)) {
+                       $this->pidList = $curPage;
+               }
+
                if (($res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
-                               'count(uid) as nbBrokenLinks,link_type',
-                               'tx_linkvalidator_link',
-                               'record_pid in (' . $this->pidList . ')',
-                               'link_type'
-               ))) {
-                       while (($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))) {
+                       'count(uid) as nbBrokenLinks,link_type',
+                       'tx_linkvalidator_link',
+                       'record_pid in (' . $this->pidList . ')',
+                       'link_type'
+               ))
+               ) {
+                       while (($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) !== FALSE) {
                                $markerArray[$row['link_type']] = $row['nbBrokenLinks'];
                                $markerArray['brokenlinkCount'] += $row['nbBrokenLinks'];
                        }
                }
+               $GLOBALS['TYPO3_DB']->sql_free_result($res);
                return $markerArray;
        }
 
@@ -395,7 +402,7 @@ class tx_linkvalidator_Processor {
         * @param boolean $considerHidden Whether to consider hidden pages or not
         * @return string Returns the list with a comma in the end (if any pages selected!)
         */
-       public function extGetTreeList($id, $depth, $begin = 0, $permsClause,  $considerHidden = FALSE) {
+       public function extGetTreeList($id, $depth, $begin = 0, $permsClause, $considerHidden = FALSE) {
                $depth = intval($depth);
                $begin = intval($begin);
                $id = intval($id);
@@ -408,16 +415,17 @@ class tx_linkvalidator_Processor {
                                'pid=' . $id . ' AND deleted=0 AND ' . $permsClause
                        );
 
-                       while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
-                               if ($begin <= 0 && ($row['hidden']==0 || $considerHidden == 1)) {
+                       while (($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) !== FALSE) {
+                               if ($begin <= 0 && ($row['hidden'] == 0 || $considerHidden == 1)) {
                                        $theList .= $row['uid'] . ',';
                                        $this->extPageInTreeInfo[] = array($row['uid'], htmlspecialchars($row['title'], $depth));
                                }
-                               if ($depth > 1 && (!($row['hidden']==1 && $row['extendToSubpages']==1) || $considerHidden == 1)) {
+                               if ($depth > 1 && (!($row['hidden'] == 1 && $row['extendToSubpages'] == 1) || $considerHidden == 1)) {
                                        $theList .= $this->extGetTreeList($row['uid'], $depth - 1, $begin - 1, $permsClause, $considerHidden);
                                }
                        }
                }
+               $GLOBALS['TYPO3_DB']->sql_free_result($res);
                return $theList;
        }
 
@@ -425,9 +433,9 @@ class tx_linkvalidator_Processor {
         * @param array $pageInfo Array with uid, title, hidden, extendToSubpages from pages table
         * @return boolean TRUE if rootline contains a hidden page, FALSE if not
         */
-       public function getRootLineIsHidden(array $pageInfo){
+       public function getRootLineIsHidden(array $pageInfo) {
                $hidden = FALSE;
-               if ($pageInfo['extendToSubpages'] == 1 && $pageInfo['hidden'] == 1){
+               if ($pageInfo['extendToSubpages'] == 1 && $pageInfo['hidden'] == 1) {
                        $hidden = TRUE;
                } else {
                        if ($pageInfo['pid'] > 0) {
@@ -437,11 +445,11 @@ class tx_linkvalidator_Processor {
                                        'uid=' . $pageInfo['pid']
                                );
 
-                               while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
+                               while (($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) !== FALSE) {
                                        $hidden = $this->getRootLineIsHidden($row);
                                }
-                       }
-                       else {
+                               $GLOBALS['TYPO3_DB']->sql_free_result($res);
+                       else {
                                $hidden = FALSE;
                        }
                }
@@ -454,4 +462,4 @@ class tx_linkvalidator_Processor {
 if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/linkvalidator/classes/class.tx_linkvalidator_processor.php'])) {
        include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/linkvalidator/classes/class.tx_linkvalidator_processor.php']);
 }
-?>
+?>
\ No newline at end of file
index 9223dbd..e75f8f8 100644 (file)
@@ -46,7 +46,7 @@ abstract class tx_linkvalidator_linktype_Abstract implements tx_linkvalidator_li
         * @param string $key Validator hook name
         * @return string Fetched type
         */
-       public function fetchType(array $value, $type, $key) {
+       public function fetchType($value, $type, $key) {
                if ($value['type'] == $key) {
                        $type = $value['type'];
                }
@@ -59,7 +59,7 @@ abstract class tx_linkvalidator_linktype_Abstract implements tx_linkvalidator_li
         * @param array $value All parameters needed for the rendering of the error message
         * @return void
         */
-       protected function setErrorParams(array $value) {
+       protected function setErrorParams($value) {
                $this->errorParams = $value;
        }
 
@@ -78,7 +78,7 @@ abstract class tx_linkvalidator_linktype_Abstract implements tx_linkvalidator_li
         * @param array $row Broken link record
         * @return string Parsed broken url
         */
-       public function getBrokenUrl(array $row) {
+       public function getBrokenUrl($row) {
                return $row['url'];
        }
 }
index d5324cd..37079ba 100644 (file)
@@ -63,12 +63,12 @@ class tx_linkvalidator_linktype_External extends tx_linkvalidator_linktype_Abstr
         * @param tx_linkvalidator_Processor $reference Parent instance of tx_linkvalidator_Processor
         * @return boolean TRUE on success or FALSE on error
         */
-       public function checkLink($url, array $softRefEntry, tx_linkvalidator_Processor $reference) {
+       public function checkLink($url, $softRefEntry, $reference) {
                $errorParams = array();
                $isValidUrl = TRUE;
 
                if (isset($this->urlReports[$url])) {
-                       if(!$this->urlReports[$url]) {
+                       if (!$this->urlReports[$url]) {
                                if(is_array($this->urlErrorParams[$url])) {
                                    $this->setErrorParams($this->urlErrorParams[$url]);
                                }
@@ -121,7 +121,7 @@ class tx_linkvalidator_linktype_External extends tx_linkvalidator_linktype_Abstr
                        $errorParams['message'] = $response->getReasonPhrase();
                }
 
-               if(!$isValidUrl) {
+               if (!$isValidUrl) {
                        $this->setErrorParams($errorParams);
                }
 
@@ -179,7 +179,7 @@ class tx_linkvalidator_linktype_External extends tx_linkvalidator_linktype_Abstr
         * @param string $key Validator hook name
         * @return string Fetched type
         */
-       public function fetchType(array $value, $type, $key) {
+       public function fetchType($value, $type, $key) {
                preg_match_all('/((?:http|https))(?::\/\/)(?:[^\s<>]+)/i', $value['tokenValue'], $urls, PREG_PATTERN_ORDER);
 
                if (!empty($urls[0][0])) {
index 354a13c..11d7057 100644 (file)
@@ -40,7 +40,7 @@ class tx_linkvalidator_linktype_File extends tx_linkvalidator_linktype_Abstract
         * @param tx_linkvalidator_Processor $reference Parent instance of tx_linkvalidator_Processor
         * @return boolean TRUE on success or FALSE on error
         */
-       public function checkLink($url, array $softRefEntry, tx_linkvalidator_Processor $reference) {
+       public function checkLink($url, $softRefEntry, $reference) {
                if (!@file_exists(PATH_site . rawurldecode($url))) {
                        return FALSE;
                }
@@ -66,7 +66,7 @@ class tx_linkvalidator_linktype_File extends tx_linkvalidator_linktype_Abstract
         * @param array $row Broken link record
         * @return string Parsed broken url
         */
-       public function getBrokenUrl(array $row) {
+       public function getBrokenUrl($row) {
                $brokenUrl = t3lib_div::getIndpEnv('TYPO3_SITE_URL') . $row['url'];
                return $brokenUrl;
        }
index e57bc23..9747dab 100644 (file)
@@ -39,7 +39,7 @@ interface tx_linkvalidator_linktype_Interface {
         * @param tx_linkvalidator_Processor $reference Parent instance of tx_linkvalidator_Processor
         * @return string Validation error message or success code
         */
-       public function checkLink($url, array $softRefEntry, tx_linkvalidator_Processor $reference);
+       public function checkLink($url, $softRefEntry, $reference);
 
        /**
         * Base type fetching method, based on the type that softRefParserObj returns.
@@ -49,7 +49,7 @@ interface tx_linkvalidator_linktype_Interface {
         * @param string $key Validator hook name
         * @return string Fetched type
         */
-       public function fetchType(array $value, $type, $key);
+       public function fetchType($value, $type, $key);
 
        /**
         * Get the value of the private property errorParams.
@@ -64,7 +64,7 @@ interface tx_linkvalidator_linktype_Interface {
         * @param array $row Broken link record
         * @return string Parsed broken url
         */
-       public function getBrokenUrl(array $row);
+       public function getBrokenUrl($row);
 
 }
 
index 41ae15c..e004677 100644 (file)
@@ -66,10 +66,8 @@ class tx_linkvalidator_linktype_Internal extends tx_linkvalidator_linktype_Abstr
         * @param tx_linkvalidator_Processor $reference Parent instance of tx_linkvalidator_Processor
         * @return boolean TRUE on success or FALSE on error
         */
-       public function checkLink($url, array $softRefEntry, tx_linkvalidator_Processor $reference) {
-               $page = '';
+       public function checkLink($url, $softRefEntry, $reference) {
                $anchor = '';
-               $response = TRUE;
                $this->responseContent = TRUE;
 
                        // Might already contain values - empty it
@@ -117,7 +115,7 @@ class tx_linkvalidator_linktype_Internal extends tx_linkvalidator_linktype_Abstr
         * @param tx_linkvalidator_Processor $reference Parent instance of tx_linkvalidator_Processor
         * @return boolean TRUE on success or FALSE on error
         */
-       protected function checkPage($page, array $softRefEntry, tx_linkvalidator_Processor $reference) {
+       protected function checkPage($page, $softRefEntry, $reference) {
                $row = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow(
                        'uid, title, deleted, hidden, starttime, endtime',
                        'pages',
@@ -213,7 +211,7 @@ class tx_linkvalidator_linktype_Internal extends tx_linkvalidator_linktype_Abstr
         * @param array $errorParams All parameters needed for the rendering of the error message
         * @return string Validation error message
         */
-       public function getErrorMessage(array $errorParams) {
+       public function getErrorMessage($errorParams) {
                $errorType = $errorParams['errorType'];
 
                if (is_array($errorParams['page'])) {
@@ -284,7 +282,7 @@ class tx_linkvalidator_linktype_Internal extends tx_linkvalidator_linktype_Abstr
         * @param array $row Broken link record
         * @return string Parsed broken url
         */
-       public function getBrokenUrl(array $row) {
+       public function getBrokenUrl($row) {
                $domain = rtrim(t3lib_div::getIndpEnv('TYPO3_SITE_URL'), '/');
                $rootLine = t3lib_BEfunc::BEgetRootLine($row['record_pid']);
                        // checks alternate domains
@@ -303,4 +301,4 @@ if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLA
        include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/linkvalidator/classes/linktypes/class.tx_linkvalidator_linktypes_internal.php']);
 }
 
-?>
+?>
\ No newline at end of file
index cd0616e..313efc3 100644 (file)
@@ -56,7 +56,7 @@ class tx_linkvalidator_linktype_LinkHandler extends tx_linkvalidator_linktype_Ab
         * @param tx_linkvalidator_Processor $reference Parent instance of tx_linkvalidator_Processor
         * @return boolean TRUE on success or FALSE on error
         */
-       public function checkLink($url, array $softRefEntry, tx_linkvalidator_Processor $reference) {
+       public function checkLink($url, $softRefEntry, $reference) {
                $response = TRUE;
                $errorParams = array();
                $parts = explode(":", $url);
@@ -98,7 +98,7 @@ class tx_linkvalidator_linktype_LinkHandler extends tx_linkvalidator_linktype_Ab
         * @param string $key Validator hook name
         * @return string fetched type
         */
-       public function fetchType(array $value, $type, $key) {
+       public function fetchType($value, $type, $key) {
                if ($type == 'string' && strtolower(substr($value['tokenValue'], 0, 7)) == 'record:') {
                        $type = 'linkhandler';
                }
index 5499c04..d0e2970 100644 (file)
@@ -132,7 +132,7 @@ class tx_linkvalidator_tasks_Validator extends tx_scheduler_Task {
         * @return void
         */
        public function setEmail($email) {
-               $this->email=$email;
+               $this->email = $email;
        }
 
        /**
@@ -170,7 +170,7 @@ class tx_linkvalidator_tasks_Validator extends tx_scheduler_Task {
         * @return void
         */
        public function setPage($page) {
-               $this->page =$page;
+               $this->page = $page;
        }
 
        /**
@@ -278,33 +278,50 @@ class tx_linkvalidator_tasks_Validator extends tx_scheduler_Task {
         * @return string $pageSections Content of page section
         */
        protected function checkPageLinks($page) {
+               $page = intval($page);
                $pageSections = '';
+               $pageIds = '';
+               $oldLinkCounts = array();
+
                $modTS = $this->loadModTSconfig($page);
                $searchFields = $this->getSearchField($modTS);
                $linkTypes = $this->getLinkTypes($modTS);
+
+                       /** @var tx_linkvalidator_processor $processor */
                $processor = t3lib_div::makeInstance('tx_linkvalidator_Processor');
-               $pageRow = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow('*', 'pages', 'uid=' . $page);
-               $rootLineHidden = $processor->getRootLineIsHidden($pageRow);
+
+               if ($page === 0) {
+                       $rootLineHidden = FALSE;
+               } else {
+                       $pageRow = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow('*', 'pages', 'uid=' . $page);
+                       $rootLineHidden = $processor->getRootLineIsHidden($pageRow);
+               }
+
                if (!$rootLineHidden || $modTS['checkhidden'] == 1) {
                        $pageIds = $processor->extGetTreeList($page, $this->depth, 0, '1=1', $modTS['checkhidden']);
                        if ($pageRow['hidden'] == 0 || $modTS['checkhidden'] == 1) {
+                                       // tx_linkvalidator_Processor::extGetTreeList always adds trailing comma:
                                $pageIds .= $page;
                        }
+               }
 
+               if (!empty($pageIds)) {
                        $processor->init($searchFields, $pageIds);
+
                        if (!empty($this->email)) {
                                $oldLinkCounts = $processor->getLinkCounts($page);
                                $this->oldTotalBrokenLink += $oldLinkCounts['brokenlinkCount'];
                        }
-               }
 
-               $processor->getLinkStatistics($linkTypes, $modTS['checkhidden']);
+                       $processor->getLinkStatistics($linkTypes, $modTS['checkhidden']);
 
-               if (!empty($this->email)) {
-                       $linkCounts = $processor->getLinkCounts($page);
-                       $this->totalBrokenLink += $linkCounts['brokenlinkCount'];
-                       $pageSections = $this->buildMail($page, $pageIds, $linkCounts, $oldLinkCounts);
+                       if (!empty($this->email)) {
+                               $linkCounts = $processor->getLinkCounts($page);
+                               $this->totalBrokenLink += $linkCounts['brokenlinkCount'];
+                               $pageSections = $this->buildMail($page, $pageIds, $linkCounts, $oldLinkCounts);
+                       }
                }
+
                return $pageSections;
        }
 
@@ -318,9 +335,9 @@ class tx_linkvalidator_tasks_Validator extends tx_scheduler_Task {
                $modTS = t3lib_BEfunc::getModTSconfig($page, 'mod.linkvalidator');
                $parseObj = t3lib_div::makeInstance('t3lib_TSparser');
                $parseObj->parse($this->configuration);
-               if(count($parseObj->errors) > 0){
+               if (count($parseObj->errors) > 0) {
                        $parseErrorMessage = $GLOBALS['LANG']->sL('LLL:EXT:linkvalidator/locallang.xml:tasks.error.invalidTSconfig') . '<br />';
-                       foreach($parseObj->errors as $errorInfo){
+                       foreach ($parseObj->errors as $errorInfo) {
                                $parseErrorMessage .= $errorInfo[0] . '<br />';
                        }
                        throw new Exception(
@@ -344,7 +361,7 @@ class tx_linkvalidator_tasks_Validator extends tx_scheduler_Task {
         * @return array $searchFields List of fields
         */
        protected function getSearchField(array $modTS) {
-                       // Get the searchFields from TypoScript
+               // Get the searchFields from TypoScript
                foreach ($modTS['searchFields.'] as $table => $fieldList) {
                        $fields = t3lib_div::trimExplode(',', $fieldList);
                        foreach ($fields as $field) {
@@ -365,7 +382,7 @@ class tx_linkvalidator_tasks_Validator extends tx_scheduler_Task {
                $typesTmp = t3lib_div::trimExplode(',', $modTS['linktypes'], 1);
                if (is_array($typesTmp)) {
                        if (!empty($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'])
-                                       && is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'])) {
+                               && is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'])) {
                                foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'] as $type => $value) {
                                        if (in_array($type, $typesTmp)) {
                                                $linkTypes[$type] = 1;
@@ -385,38 +402,38 @@ class tx_linkvalidator_tasks_Validator extends tx_scheduler_Task {
         */
        protected function reportEmail($pageSections, array $modTS) {
                $content = t3lib_parsehtml::substituteSubpart($this->templateMail, '###PAGE_SECTION###', $pageSections);
-                       /** @var array $markerArray */
+               /** @var array $markerArray */
                $markerArray = array();
-                       /** @var array $validEmailList */
+               /** @var array $validEmailList */
                $validEmailList = array();
-                       /** @var boolean $sendEmail */
+               /** @var boolean $sendEmail */
                $sendEmail = TRUE;
 
                $markerArray['totalBrokenLink'] = $this->totalBrokenLink;
                $markerArray['totalBrokenLink_old'] = $this->oldTotalBrokenLink;
                $content = t3lib_parsehtml::substituteMarkerArray($content, $markerArray, '###|###', TRUE, TRUE);
 
-                       /** @var t3lib_mail_Message $mail */
+               /** @var t3lib_mail_Message $mail */
                $mail = t3lib_div::makeInstance('t3lib_mail_Message');
-               if(empty($modTS['mail.']['fromemail'])) {
+               if (empty($modTS['mail.']['fromemail'])) {
                        $modTS['mail.']['fromemail'] = t3lib_utility_Mail::getSystemFromAddress();
                }
-               if(empty($modTS['mail.']['fromname'])) {
+               if (empty($modTS['mail.']['fromname'])) {
                        $modTS['mail.']['fromname'] = t3lib_utility_Mail::getSystemFromName();
                }
                if (t3lib_div::validEmail($modTS['mail.']['fromemail'])) {
                        $mail->setFrom(array($modTS['mail.']['fromemail'] => $modTS['mail.']['fromname']));
-               }  else {
+               } else {
                        throw new Exception(
                                $GLOBALS['LANG']->sL('LLL:EXT:linkvalidator/locallang.xml:tasks.error.invalidFromEmail'),
                                '1295476760'
                        );
                }
-               if(t3lib_div::validEmail($modTS['mail.']['replytoemail'])) {
+               if (t3lib_div::validEmail($modTS['mail.']['replytoemail'])) {
                        $mail->setReplyTo(array($modTS['mail.']['replytoemail'] => $modTS['mail.']['replytoname']));
                }
 
-               if(!empty($modTS['mail.']['subject'])) {
+               if (!empty($modTS['mail.']['subject'])) {
                        $mail->setSubject($modTS['mail.']['subject']);
                } else {
                        throw new Exception(
@@ -443,8 +460,8 @@ class tx_linkvalidator_tasks_Validator extends tx_scheduler_Task {
                        $sendEmail = FALSE;
                }
 
-               if($sendEmail) {
-                       $mail->setBody($content,'text/html');
+               if ($sendEmail) {
+                       $mail->setBody($content, 'text/html');
                        $mail->send();
                }
 
index ba96b75..ef4d51a 100644 (file)
@@ -102,7 +102,8 @@ class tx_linkvalidator_tasks_ValidatorAdditionalFieldProvider implements tx_sche
 
 
                $fieldID = 'task_page';
-               $fieldCode = '<input type="text" name="tx_scheduler[linkvalidator][page]"  id="' . $fieldID . '" value="' . htmlspecialchars($taskInfo['page']) . '"/>';
+               $fieldCode = '<input type="text" name="tx_scheduler[linkvalidator][page]"  id="' . $fieldID . '" value="'
+                                        . htmlspecialchars($taskInfo['page']) . '"/>';
                $label = $GLOBALS['LANG']->sL('LLL:EXT:linkvalidator/locallang.xml:tasks.validate.page');
                $label = t3lib_BEfunc::wrapInHelp('linkvalidator', $fieldID, $label);
                $additionalFields[$fieldID] = array(
@@ -123,7 +124,9 @@ class tx_linkvalidator_tasks_ValidatorAdditionalFieldProvider implements tx_sche
                $fieldCode = '<select name="tx_scheduler[linkvalidator][depth]" id="' . $fieldID . '">';
 
                foreach ($fieldValueArray as $depth => $label) {
-                       $fieldCode .= "\t" . '<option value="' .  htmlspecialchars($depth) . '"' . (($depth ==$taskInfo['depth']) ? ' selected="selected"' : '') . '>' . $label . '</option>';
+                       $fieldCode .= "\t" . '<option value="' . htmlspecialchars($depth) . '"'
+                                                 . (($depth == $taskInfo['depth']) ? ' selected="selected"' : '')
+                                                 . '>' . $label . '</option>';
                }
 
                $fieldCode .= '</select>';
@@ -135,7 +138,8 @@ class tx_linkvalidator_tasks_ValidatorAdditionalFieldProvider implements tx_sche
                );
 
                $fieldID = 'task_configuration';
-               $fieldCode = '<textarea  name="tx_scheduler[linkvalidator][configuration]" id="' . $fieldID . '" >' . htmlspecialchars($taskInfo['configuration']) . '</textarea>';
+               $fieldCode = '<textarea  name="tx_scheduler[linkvalidator][configuration]" id="' . $fieldID . '" >'
+                                        . htmlspecialchars($taskInfo['configuration']) . '</textarea>';
                $label = $GLOBALS['LANG']->sL('LLL:EXT:linkvalidator/locallang.xml:tasks.validate.conf');
                $label = t3lib_BEfunc::wrapInHelp('linkvalidator', $fieldID, $label);
                $additionalFields[$fieldID] = array(
@@ -144,7 +148,8 @@ class tx_linkvalidator_tasks_ValidatorAdditionalFieldProvider implements tx_sche
                );
 
                $fieldID = 'task_email';
-               $fieldCode = '<input type="text"  name="tx_scheduler[linkvalidator][email]" id="' . $fieldID . '" value="' . htmlspecialchars($taskInfo['email']) . '" />';
+               $fieldCode = '<input type="text"  name="tx_scheduler[linkvalidator][email]" id="' . $fieldID . '" value="'
+                                        . htmlspecialchars($taskInfo['email']) . '" />';
                $label = $GLOBALS['LANG']->sL('LLL:EXT:linkvalidator/locallang.xml:tasks.validate.email');
                $label = t3lib_BEfunc::wrapInHelp('linkvalidator', $fieldID, $label);
                $additionalFields[$fieldID] = array(
@@ -152,7 +157,8 @@ class tx_linkvalidator_tasks_ValidatorAdditionalFieldProvider implements tx_sche
                        'label' => $label
                );
                $fieldID = 'task_emailOnBrokenLinkOnly';
-               $fieldCode = '<input type="checkbox"  name="tx_scheduler[linkvalidator][emailOnBrokenLinkOnly]" id="' . $fieldID . '" ' . (htmlspecialchars($taskInfo['emailOnBrokenLinkOnly']) ? 'checked="checked"' : '') . ' />';
+               $fieldCode = '<input type="checkbox"  name="tx_scheduler[linkvalidator][emailOnBrokenLinkOnly]" id="' . $fieldID . '" '
+                                        . (htmlspecialchars($taskInfo['emailOnBrokenLinkOnly']) ? 'checked="checked"' : '') . ' />';
                $label = $GLOBALS['LANG']->sL('LLL:EXT:linkvalidator/locallang.xml:tasks.validate.emailOnBrokenLinkOnly');
                $label = t3lib_BEfunc::wrapInHelp('linkvalidator', $fieldID, $label);
                $additionalFields[$fieldID] = array(
@@ -161,7 +167,8 @@ class tx_linkvalidator_tasks_ValidatorAdditionalFieldProvider implements tx_sche
                );
 
                $fieldID = 'task_emailTemplateFile';
-               $fieldCode = '<input type="text"  name="tx_scheduler[linkvalidator][emailTemplateFile]" id="' . $fieldID . '" value="' . htmlspecialchars($taskInfo['emailTemplateFile']) . '" />';
+               $fieldCode = '<input type="text"  name="tx_scheduler[linkvalidator][emailTemplateFile]" id="' . $fieldID
+                                        . '" value="' . htmlspecialchars($taskInfo['emailTemplateFile']) . '" />';
                $label = $GLOBALS['LANG']->sL('LLL:EXT:linkvalidator/locallang.xml:tasks.validate.emailTemplateFile');
                $label = t3lib_BEfunc::wrapInHelp('linkvalidator', $fieldID, $label);
                $additionalFields[$fieldID] = array(
@@ -202,7 +209,7 @@ class tx_linkvalidator_tasks_ValidatorAdditionalFieldProvider implements tx_sche
        public function validateAdditionalFields(array &$submittedData, tx_scheduler_Module $schedulerModule) {
                $isValid = TRUE;
 
-               //TODO add validation to validate the $submittedData['configuration'] which is normally a comma separated string
+                       //TODO add validation to validate the $submittedData['configuration'] which is normally a comma separated string
                if (!empty($submittedData['linkvalidator']['email'])) {
                        $emailList = t3lib_div::trimExplode(',', $submittedData['linkvalidator']['email']);
                        foreach ($emailList as $emailAdd) {
@@ -216,7 +223,7 @@ class tx_linkvalidator_tasks_ValidatorAdditionalFieldProvider implements tx_sche
                        }
                }
 
-               if ($res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'pages', 'uid = ' . $submittedData['linkvalidator']['page'])) {
+               if ($res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'pages', 'uid = ' . intval($submittedData['linkvalidator']['page']))) {
                        if ($GLOBALS['TYPO3_DB']->sql_num_rows($res) == 0 && $submittedData['linkvalidator']['page'] > 0) {
                                $isValid = FALSE;
                                $schedulerModule->addMessage(
@@ -224,6 +231,7 @@ class tx_linkvalidator_tasks_ValidatorAdditionalFieldProvider implements tx_sche
                                        t3lib_FlashMessage::ERROR
                                );
                        }
+                       $GLOBALS['TYPO3_DB']->sql_free_result($res);
                } else {
                        $isValid = FALSE;
                        $schedulerModule->addMessage(
@@ -256,10 +264,9 @@ class tx_linkvalidator_tasks_ValidatorAdditionalFieldProvider implements tx_sche
                $task->setDepth($submittedData['linkvalidator']['depth']);
                $task->setPage($submittedData['linkvalidator']['page']);
                $task->setEmail($submittedData['linkvalidator']['email']);
-               if($submittedData['linkvalidator']['emailOnBrokenLinkOnly']){
+               if ($submittedData['linkvalidator']['emailOnBrokenLinkOnly']) {
                        $task->setEmailOnBrokenLinkOnly(1);
-               }
-               else{
+               } else {
                        $task->setEmailOnBrokenLinkOnly(0);
                }
                $task->setConfiguration($submittedData['linkvalidator']['configuration']);
index d37288f..470a67e 100644 (file)
Binary files a/typo3/sysext/linkvalidator/doc/manual.sxw and b/typo3/sysext/linkvalidator/doc/manual.sxw differ
index d6bd307..1662ef9 100644 (file)
@@ -1,7 +1,7 @@
 Manual for Linkvalidator
 Extension Key: linkvalidator
 Language: en
-Version: 1.0.0
+Version: 1.5.0
 Keywords: forEditors, forAdmins, forBeginners, forIntermediates, forAdvanced
 Copyright 2000-2011, Linkvalidator Team, <j.rieger@connecta.ag>, <mmiousse@infoglobe.ca>
 
@@ -71,12 +71,15 @@ The type and ID of the content containing the broken link become visible when yo
 Linkvalidator features full support of the TYPO3 scheduler. This is the linkvalidator task: 
 
 With this task you can run linkvalidator regularly via cron without having to manually update the stored information on broken links. 
-You can e.g. overwrite the TypoScript configuration. Without any change, the linkvalidator settings which apply for the respective pages will be used. If you set values there, the former will be overwritten. 
+You can e.g. overwrite the TSconfig configuration. Without any change, the linkvalidator settings which apply for the respective pages will be used. If you set values there, the former will be overwritten. 
 The linkvalidator task can send you a status report via email. You can create an own email template as needed. The default template is located in typo3/sysext/linkvalidator/res/mailtemplate.html. 
 Administration
 Use the extension manager to install linkvalidator. It is not installed by default. 
 Apply the needed changes to the database. 
 
+You are advised to use cURL to check for links. Linkvalidator uses the HTTP request library shipped with TYPO3. Please have a look in the Install Tool at the section “All Configuration” which includes an HTTP section at the end.
+There you may define a default timeout and you may change from using sockets to using the cURL library.
+
 
 Configuration
 You find the standard configuration in typo3/sysext/linkvalidator/res/pagetsconfig.txt. 
@@ -108,10 +111,12 @@ db: Check links to database records.
 file: Check links to files located in your local TYPO3 installation. 
 external: Check links to external files. 
 linkhandler: Check links provided by the extension "linkhandler". 
+
+This list may be extended by other extensions providing a linktype checker, e.g. DAM.
 db,file,external
 checkhidden
 boolean
-If set, hidden content elements are checked for broken links, too. 
+If set, disabled pages and content elements are checked for broken links, too.
 0
 showCheckLinkTab
 boolean
@@ -125,11 +130,13 @@ Note: Linkvalidator uses a database table to store information about the broken
 mail.fromname
 string
 Set the from name of the report mail sent by the cron script. 
-Linkvalidator
+Install Tool
+defaultMailFromName
 mail.fromemail
 string
 Set the from email of the report mail sent by the cron script. 
-Linkvalidator@example.com
+Install Tool
+defaultMailFromAddress
 mail.replytoname
 string
 Set the replyto name of the report mail sent by the cron script. 
index 08b5993..3a38862 100644 (file)
@@ -3,7 +3,7 @@
 ########################################################################
 # Extension Manager/Repository config file for ext "linkvalidator".
 #
-# Auto generated 10-10-2011 14:47
+# Auto generated 11-10-2011 08:32
 #
 # Manual updates:
 # Only the data in the array - everything else is removed by next
@@ -29,7 +29,7 @@ $EM_CONF[$_EXTKEY] = array(
        'clearCacheOnLoad' => 0,
        'lockType' => '',
        'author_company' => 'Connecta AG / cab services ag / Infoglobe',
-       'version' => '1.0.4',
+       'version' => '1.5.0-rc1',
        'constraints' => array(
                'depends' => array(
                        'typo3' => '4.5.0-0.0.0',
@@ -40,9 +40,9 @@ $EM_CONF[$_EXTKEY] = array(
                'suggests' => array(
                ),
        ),
-       '_md5_values_when_last_written' => 'a:26:{s:9:"ChangeLog";s:4:"2617";s:16:"ext_autoload.php";s:4:"4efa";s:12:"ext_icon.gif";s:4:"838b";s:17:"ext_localconf.php";s:4:"5e6f";s:14:"ext_tables.php";s:4:"e7a3";s:14:"ext_tables.sql";s:4:"2489";s:13:"locallang.xlf";s:4:"194d";s:44:"classes/class.tx_linkvalidator_processor.php";s:4:"8440";s:61:"classes/linktype/class.tx_linkvalidator_linktype_abstract.php";s:4:"4424";s:61:"classes/linktype/class.tx_linkvalidator_linktype_external.php";s:4:"cf9c";s:57:"classes/linktype/class.tx_linkvalidator_linktype_file.php";s:4:"e6d1";s:62:"classes/linktype/class.tx_linkvalidator_linktype_interface.php";s:4:"f98a";s:61:"classes/linktype/class.tx_linkvalidator_linktype_internal.php";s:4:"18a1";s:64:"classes/linktype/class.tx_linkvalidator_linktype_linkhandler.php";s:4:"2e5a";s:56:"classes/tasks/class.tx_linkvalidator_tasks_validator.php";s:4:"6061";s:79:"classes/tasks/class.tx_linkvalidator_tasks_validatoradditionalfieldprovider.php";s:4:"c7ef";s:14:"doc/manual.sxw";s:4:"a197";s:14:"doc/manual.txt";s:4:"6862";s:54:"modfuncreport/class.tx_linkvalidator_modfuncreport.php";s:4:"2da8";s:27:"modfuncreport/locallang.xlf";s:4:"85a0";s:31:"modfuncreport/locallang_csh.xlf";s:4:"4569";s:31:"modfuncreport/locallang_mod.xlf";s:4:"a999";s:31:"modfuncreport/mod_template.html";s:4:"4c0f";s:21:"res/linkvalidator.css";s:4:"77b4";s:21:"res/mailtemplate.html";s:4:"c425";s:20:"res/pagetsconfig.txt";s:4:"93e0";}',
+       '_md5_values_when_last_written' => 'a:26:{s:9:"ChangeLog";s:4:"0b50";s:16:"ext_autoload.php";s:4:"4efa";s:12:"ext_icon.gif";s:4:"838b";s:17:"ext_localconf.php";s:4:"5e6f";s:14:"ext_tables.php";s:4:"e7a3";s:14:"ext_tables.sql";s:4:"2489";s:13:"locallang.xlf";s:4:"194d";s:44:"classes/class.tx_linkvalidator_processor.php";s:4:"f8f6";s:61:"classes/linktype/class.tx_linkvalidator_linktype_abstract.php";s:4:"1186";s:61:"classes/linktype/class.tx_linkvalidator_linktype_external.php";s:4:"f1b8";s:57:"classes/linktype/class.tx_linkvalidator_linktype_file.php";s:4:"917a";s:62:"classes/linktype/class.tx_linkvalidator_linktype_interface.php";s:4:"3eec";s:61:"classes/linktype/class.tx_linkvalidator_linktype_internal.php";s:4:"9d5f";s:64:"classes/linktype/class.tx_linkvalidator_linktype_linkhandler.php";s:4:"d5d2";s:56:"classes/tasks/class.tx_linkvalidator_tasks_validator.php";s:4:"36d6";s:79:"classes/tasks/class.tx_linkvalidator_tasks_validatoradditionalfieldprovider.php";s:4:"375c";s:14:"doc/manual.sxw";s:4:"996f";s:14:"doc/manual.txt";s:4:"6872";s:54:"modfuncreport/class.tx_linkvalidator_modfuncreport.php";s:4:"3f9f";s:27:"modfuncreport/locallang.xlf";s:4:"e542";s:31:"modfuncreport/locallang_csh.xlf";s:4:"4569";s:31:"modfuncreport/locallang_mod.xlf";s:4:"a999";s:31:"modfuncreport/mod_template.html";s:4:"4c0f";s:21:"res/linkvalidator.css";s:4:"77b4";s:21:"res/mailtemplate.html";s:4:"c425";s:20:"res/pagetsconfig.txt";s:4:"93e0";}',
        'suggests' => array(
        ),
 );
 
-?>
\ No newline at end of file
+?>
index fb87bde..a8e9605 100644 (file)
@@ -108,7 +108,8 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
        protected $refreshListHtml;
 
        /**
-        * Html for the statistics table with the checkboxes of the link types and the numbers of broken links for report tab
+        * Html for the statistics table with the checkboxes of the link types
+        * and the numbers of broken links for report tab
         *
         * @var string
         */
@@ -116,7 +117,8 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
 
 
        /**
-        * Html for the statistics table with the checkboxes of the link types and the numbers of broken links for check links tab
+        * Html for the statistics table with the checkboxes of the link types
+        * and the numbers of broken links for check links tab
         *
         * @var string
         */
@@ -129,6 +131,9 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
         */
        protected $content;
 
+       /** @var t3lib_pageRenderer $pageRenderer */
+       protected $pageRenderer;
+
        /**
         * Main method of modfuncreport
         *
@@ -151,7 +156,7 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
                $set = t3lib_div::_GP($prefix . 'SET');
                $this->pObj->handleExternalFunctionValue();
 
-               if(isset($this->searchLevel)) {
+               if (isset($this->searchLevel)) {
                        $this->pObj->MOD_SETTINGS['searchlevel'] = $this->searchLevel;
                } else {
                        $this->searchLevel = $this->pObj->MOD_SETTINGS['searchlevel'];
@@ -178,42 +183,41 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
                $this->initialize();
                        // Setting up the context sensitive menu
                $this->resPath = $this->doc->backPath . t3lib_extMgm::extRelPath('linkvalidator') . 'res/';
-                       /** @var t3lib_pageRenderer $pageRenderer */
                $this->pageRenderer = $this->doc->getPageRenderer();
 
                        // Localization
                $this->pageRenderer->addInlineLanguageLabelFile(t3lib_extMgm::extPath('linkvalidator', 'modfuncreport/locallang.xml'));
 
 
-       $this->pageRenderer->addJsInlineCode('linkvalidator','function toggleActionButton(prefix) {
+               $this->pageRenderer->addJsInlineCode('linkvalidator', 'function toggleActionButton(prefix) {
                        var buttonDisable = true;
                        Ext.select(\'.\' + prefix ,false).each(function(checkBox,i){
                        checkDom = checkBox.dom;
-                       if(checkDom.checked){
+                       if (checkDom.checked){
                                buttonDisable = false;
                        }
 
                        });
-                       if(prefix == \'check\'){
+                       if (prefix == \'check\'){
                                checkSub = document.getElementById(\'updateLinkList\');
-                       }
-                       else{
+                       } else {
                                checkSub = document.getElementById(\'refreshLinkList\');
                        }
                        checkSub.disabled = buttonDisable;
-
-
                }');
+
                        // Add JS
                $this->pageRenderer->addJsFile($this->doc->backPath . '../t3lib/js/extjs/ux/Ext.ux.FitToParent.js');
                $this->pageRenderer->addJsFile($this->doc->backPath . '../t3lib/js/extjs/ux/flashmessages.js');
                $this->pageRenderer->addJsFile($this->doc->backPath . 'js/extjs/iframepanel.js');
 
                if ($this->modTS['showCheckLinkTab'] == 1) {
-                       $this->updateListHtml = '<input type="submit" name="updateLinkList" id="updateLinkList" value="' . $GLOBALS['LANG']->getLL('label_update') . '"/>';
+                       $this->updateListHtml = '<input type="submit" name="updateLinkList" id="updateLinkList" value="'
+                                                                       . $GLOBALS['LANG']->getLL('label_update') . '"/>';
                }
 
-               $this->refreshListHtml = '<input type="submit" name="refreshLinkList" id="refreshLinkList"  value="' . $GLOBALS['LANG']->getLL('label_refresh') . '"/>';
+               $this->refreshListHtml = '<input type="submit" name="refreshLinkList" id="refreshLinkList"  value="'
+                                                                . $GLOBALS['LANG']->getLL('label_refresh') . '"/>';
 
                $this->processor = t3lib_div::makeInstance('tx_linkvalidator_Processor');
                $this->updateBrokenLinks();
@@ -234,8 +238,8 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
                $panelCheck = '';
                if ($this->modTS['showCheckLinkTab'] == 1) {
                        $panelCheck = "{
-                      title: TYPO3.l10n.localize('CheckLink'),
-                      html: " . json_encode($this->flush()) . ",
+                               title: TYPO3.l10n.localize('CheckLink'),
+                               html: " . json_encode($this->flush()) . ",
                        }";
                }
 
@@ -266,7 +270,7 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
         * @return array Module menu
         */
        public function modMenu() {
-               $modMenu = array (
+               $modMenu = array(
                        'checkAllLink' => 0,
                );
 
@@ -342,7 +346,7 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
                        );
 
 
-                       if ($this->pObj->pageinfo['hidden'] == 0 || $this->modTS['checkhidden'] == 1){
+                       if ($this->pObj->pageinfo['hidden'] == 0 || $this->modTS['checkhidden'] == 1) {
                                $pageList .= $this->pObj->id;
                        }
 
@@ -389,7 +393,7 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
                $content = $this->doc->moduleBody(
                        $this->pageRecord,
                        $this->getDocHeaderButtons(),
-                       ($form) ? $this->getTemplateMarkers(): $this->getTemplateMarkersCheck()
+                       ($form) ? $this->getTemplateMarkers() : $this->getTemplateMarkersCheck()
                );
 
                return $content;
@@ -413,7 +417,11 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
                );
 
                foreach ($parts as $kv => $label) {
-                       $opt[] = '<option value="' . $kv . '"' . ($kv == intval($this->searchLevel) ? ' selected="selected"' : '') . '>' . htmlspecialchars($label) . '</option>';
+                       $opt[] = '<option value="' . $kv . '"'
+                                       . ($kv == intval($this->searchLevel)
+                                       ? ' selected="selected"'
+                                       : '') . '>' . htmlspecialchars($label)
+                                       . '</option>';
                }
                $lMenu = '<select name="search_levels">' . implode('', $opt) . '</select>';
                return $lMenu;
@@ -442,9 +450,9 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
                                $GLOBALS['BE_USER']->getPagePermsClause(1),
                                $this->modTS['checkhidden']
                        );
-                       if ($this->pObj->pageinfo['hidden'] == 0 || $this->modTS['checkhidden'] == 1){
-                               $pageList .= $this->pObj->id;
-                       }
+
+                               // Always add the current page, because we are just displaying the results
+                       $pageList .= $this->pObj->id;
 
                        if (($res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
                                '*',
@@ -463,7 +471,7 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
                                        $brokenLinksMarker = $this->startTable();
 
                                                // Table rows containing the broken links
-                                       while (($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))) {
+                                       while (($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) !== FALSE) {
                                                $items[] = $this->renderTableRow($row['table_name'], $row, $brokenLinksItemTemplate);
                                        }
                                        $brokenLinkItems = implode(chr(10), $items);
@@ -483,7 +491,7 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
                return $content;
        }
 
-       protected  function getNoBrokenLinkMessage($brokenLinksMarker){
+       protected function getNoBrokenLinkMessage($brokenLinksMarker) {
                $brokenLinksMarker['LIST_HEADER'] = $this->doc->sectionHeader($GLOBALS['LANG']->getLL('list.header'));
                $message = t3lib_div::makeInstance(
                        't3lib_FlashMessage',
@@ -514,7 +522,7 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
                $makerTableHead['tablehead_lastcheck'] = $GLOBALS['LANG']->getLL('list.tableHead.lastCheck');
 
                        // Add CSH to the header of each column
-               foreach($makerTableHead as $column => $label) {
+               foreach ($makerTableHead as $column => $label) {
                        $label = t3lib_BEfunc::wrapInHelp('linkvalidator', $column, $label);
                        $makerTableHead[$column] = $label;
                }
@@ -544,13 +552,13 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
 
                $params = '&edit[' . $table . '][' . $row['record_uid'] . ']=edit';
                $actionLinks = '<a href="#" onclick="' .
-                               t3lib_BEfunc::editOnClick(
-                                       $params,
-                                       $GLOBALS['BACK_PATH'],
-                                       t3lib_div::getIndpEnv('REQUEST_URI') . '?id=' . $this->pObj->id . '&search_levels=' . $this->searchLevel
-                               ) . '"' .
-                               ' title="' . $GLOBALS['LANG']->getLL('list.edit') . '">' .
-                               t3lib_iconWorks::getSpriteIcon('actions-document-open') . '</a>';
+                                          t3lib_BEfunc::editOnClick(
+                                                  $params,
+                                                  $GLOBALS['BACK_PATH'],
+                                                  t3lib_div::getIndpEnv('REQUEST_URI') . '?id=' . $this->pObj->id . '&search_levels=' . $this->searchLevel
+                                          ) . '"' .
+                                          ' title="' . $GLOBALS['LANG']->getLL('list.edit') . '">' .
+                                          t3lib_iconWorks::getSpriteIcon('actions-document-open') . '</a>';
 
                $elementHeadline = $row['headline'];
                if (empty($elementHeadline)) {
@@ -563,7 +571,7 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
                        $fieldName = $GLOBALS['LANG']->sL($fieldName);
                                // Crop colon from end if present
                        if (substr($fieldName, '-1', '1') === ':') {
-                               $fieldName = substr($fieldName, '0', strlen($fieldName)-1);
+                               $fieldName = substr($fieldName, '0', strlen($fieldName) - 1);
                        }
                }
                        // Fallback, if there is no label
@@ -608,7 +616,7 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
        protected function getCheckOptions(array $brokenLinkOverView, $prefix = '') {
                $markerArray = array();
                $additionalAttr = '';
-               if(!empty($prefix)) {
+               if (!empty($prefix)) {
                        $additionalAttr = ' onclick="toggleActionButton(\'' . $prefix . '\');" class="' . $prefix . '" ';
                }
                else {
@@ -616,7 +624,6 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
                }
                $checkOptionsTemplate = t3lib_parsehtml::getSubpart($this->doc->moduleTemplate, '###CHECKOPTIONS_SECTION###');
 
-               $hookSectionContent = '';
                $hookSectionTemplate = t3lib_parsehtml::getSubpart($checkOptionsTemplate, '###HOOK_SECTION###');
 
                $markerArray['statistics_header'] = $this->doc->sectionHeader($GLOBALS['LANG']->getLL('report.statistics.header'));
@@ -648,8 +655,10 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
                                                }
                                                $translation = $GLOBALS['LANG']->getLL('hooks.' . $type);
                                                $translation = $translation ? $translation : $type;
-                                               $option =  '<input type="checkbox" ' . $additionalAttr . '  id="' . $prefix . 'SET_' . $type . '" name="' . $prefix . 'SET[' . $type . ']" value="1"' . ($this->pObj->MOD_SETTINGS[$type]  ? ' checked="checked"' : '') .
-                                                       '/>'.'<label for="' . $prefix . 'SET[' . $type . ']">' . htmlspecialchars( $translation ) . '</label>';
+                                               $option = '<input type="checkbox" ' . $additionalAttr . '  id="' . $prefix . 'SET_' . $type
+                                                                 . '" name="' . $prefix . 'SET[' . $type . ']" value="1"' . ($this->pObj->MOD_SETTINGS[$type]
+                                                                 ? ' checked="checked"' : '') . '/>' . '<label for="' . $prefix . 'SET[' . $type . ']">'
+                                                                 . htmlspecialchars($translation) . '</label>';
                                                $hookSectionMarker['option'] = $option;
                                                $hookSectionContent .= t3lib_parsehtml::substituteMarkerArray($hookSectionTemplate, $hookSectionMarker, '###|###', TRUE, TRUE);
                                        }
@@ -710,15 +719,15 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
         */
        protected function getTemplateMarkers() {
                $markers = array(
-                       'FUNC_TITLE'            => $GLOBALS['LANG']->getLL('report.func.title'),
-                       'CHECKOPTIONS_TITLE'    => $GLOBALS['LANG']->getLL('report.statistics.header'),
-                       'FUNC_MENU'             => $this->getLevelSelector(),
-                       'CONTENT'               => $this->content,
-                       'CHECKALLLINK'          => $this->checkAllHtml,
-                       'CHECKOPTIONS'          => $this->checkOptHtml,
-                       'ID'                    => '<input type="hidden" name="id" value="' . $this->pObj->id . '" />',
-                       'REFRESH'               => $this->refreshListHtml,
-                       'UPDATE'                => ''
+                       'FUNC_TITLE' => $GLOBALS['LANG']->getLL('report.func.title'),
+                       'CHECKOPTIONS_TITLE' => $GLOBALS['LANG']->getLL('report.statistics.header'),
+                       'FUNC_MENU' => $this->getLevelSelector(),
+                       'CONTENT' => $this->content,
+                       'CHECKALLLINK' => $this->checkAllHtml,
+                       'CHECKOPTIONS' => $this->checkOptHtml,
+                       'ID' => '<input type="hidden" name="id" value="' . $this->pObj->id . '" />',
+                       'REFRESH' => $this->refreshListHtml,
+                       'UPDATE' => ''
                );
 
                return $markers;
@@ -731,15 +740,15 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
         */
        protected function getTemplateMarkersCheck() {
                $markers = array(
-                       'FUNC_TITLE'                    =>$GLOBALS['LANG']->getLL('checklinks.func.title'),
-                       'CHECKOPTIONS_TITLE'    =>$GLOBALS['LANG']->getLL('checklinks.statistics.header'),
-                       'FUNC_MENU'             => $this->getLevelSelector(),
-                       'CONTENT'               => '',
-                       'CHECKALLLINK'          => $this->checkAllHtml,
-                       'CHECKOPTIONS'          => $this->checkOptHtmlCheck,
-                       'ID'                    => '<input type="hidden" name="id" value="' . $this->pObj->id . '" />',
-                       'REFRESH'               => '',
-                       'UPDATE'                => $this->updateListHtml
+                       'FUNC_TITLE' => $GLOBALS['LANG']->getLL('checklinks.func.title'),
+                       'CHECKOPTIONS_TITLE' => $GLOBALS['LANG']->getLL('checklinks.statistics.header'),
+                       'FUNC_MENU' => $this->getLevelSelector(),
+                       'CONTENT' => '',
+                       'CHECKALLLINK' => $this->checkAllHtml,
+                       'CHECKOPTIONS' => $this->checkOptHtmlCheck,
+                       'ID' => '<input type="hidden" name="id" value="' . $this->pObj->id . '" />',
+                       'REFRESH' => '',
+                       'UPDATE' => $this->updateListHtml
                );
 
                return $markers;
@@ -752,7 +761,7 @@ class tx_linkvalidator_ModFuncReport extends t3lib_extobjbase {
         * @return boolean Whether the current user is admin
         */
        protected function isCurrentUserAdmin() {
-               return ((bool) $GLOBALS['BE_USER']->user['admin']);
+               return ((bool)$GLOBALS['BE_USER']->user['admin']);
        }
 }
 
index fd6bfbc..abcf45e 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <xliff version="1.0">
-       <file source-language="EN" target-language="vn" datatype="plaintext" original="messages" date="Tue Jun  7 20:26:51 UTC 2011" product-name="linkvalidator">
+       <file source-language="EN" target-language="en" datatype="plaintext" original="messages" date="Tue Jun  7 20:26:51 UTC 2011" product-name="linkvalidator">
                <header/>
                <body>
                        <trans-unit id="menu.introduction" approved="yes">