コード例 #1
0
 /**
  * recheck all the links in the page and update those links status code
  * 
  * @param array          $recheckLinks rechecking links
  * @param array          $inputArray   default input values
  * @param \HTTP_Request2 $request      http_request object
  */
 public function recheckPage($recheckLinks, $inputArray, \HTTP_Request2 $request)
 {
     if (is_array($recheckLinks) && $request) {
         foreach ($recheckLinks as $link => $text) {
             $linkAlreadyExist = $this->linkRepository->getLinkByPath($link);
             if (!$linkAlreadyExist) {
                 try {
                     $request->setUrl($link);
                     $request->setConfig(array('ssl_verify_peer' => false, 'ssl_verify_host' => false, 'follow_redirects' => true));
                     $response = $request->send();
                     $urlStatus = $response->getStatus();
                 } catch (\Exception $e) {
                     $urlStatus = preg_match('#^[mailto:|javascript:]# i', $link) ? 200 : 0;
                 }
                 $objFWUser = \FWUser::getFWUserObject();
                 $internalFlag = \Cx\Core_Modules\LinkManager\Controller\Url::isInternalUrl($link);
                 $flagStatus = $urlStatus == '200' ? 1 : 0;
                 $linkType = $internalFlag ? 'internal' : 'external';
                 $inputArray['requestedPath'] = contrexx_raw2db($link);
                 $inputArray['linkStatusCode'] = contrexx_raw2db($urlStatus);
                 $inputArray['flagStatus'] = contrexx_raw2db($flagStatus);
                 $inputArray['linkRecheck'] = 1;
                 $inputArray['requestedLinkType'] = contrexx_raw2db($linkType);
                 $inputArray['linkStatus'] = 1;
                 $inputArray['updatedBy'] = contrexx_raw2db($objFWUser->objUser->getId());
                 $inputArray['moduleName'] = '';
                 $inputArray['moduleAction'] = '';
                 $inputArray['moduleParams'] = '';
                 $inputArray['brokenLinkText'] = contrexx_raw2db($text);
                 $this->modifyLink($inputArray);
             }
         }
     }
 }
コード例 #2
0
 /**
  * Recheck all the links in the page and update those links status code
  * 
  * @param \Cx\Core_Modules\LinkManager\Model\Entity\Link    $link       Parent link obejct
  * @param array                                             $subLinks   Links in the parent link
  *
  * @return null
  */
 public function recheckPage(\Cx\Core_Modules\LinkManager\Model\Entity\Link $link, $subLinks = array())
 {
     //If there is no recheck links then return
     if (!$subLinks) {
         return;
     }
     foreach ($subLinks as $subLinkUrl => $subLinkName) {
         //If the link already exists then proceed with next link
         if ($this->linkRepository->getLinkByPath($subLinkUrl)) {
             continue;
         }
         $urlStatus = $this->getUrlStatus($subLinkUrl);
         $isInternalLink = $this->getController('Url')->isInternalUrl($subLinkUrl);
         $subLink = new \Cx\Core_Modules\LinkManager\Model\Entity\Link();
         $subLink->setLang($link->getLang());
         $subLink->setRefererPath($link->getRefererPath());
         $subLink->setLeadPath($link->getLeadPath());
         $subLink->setEntryTitle($link->getEntryTitle());
         $subLink->setDetectedTime($link->getDetectedTime());
         $subLink->setUpdatedBy(\FWUser::getFWUserObject()->objUser->getId());
         $subLink->setBrokenLinkText($subLinkName);
         $subLink->setRequestedPath($subLinkUrl);
         $subLink->setLinkStatusCode($urlStatus);
         $subLink->setFlagStatus($urlStatus == 200 ? 1 : 0);
         $subLink->setLinkRecheck(1);
         $subLink->setRequestedLinkType($isInternalLink ? 'internal' : 'external');
         $subLink->setLinkStatus(1);
         $this->em->persist($subLink);
     }
     $this->em->flush();
 }