/**
  * Акшен для крона проверяет доступность сайтов
  */
 public function checkAction()
 {
     $this->view->title = "Проверка сайтов";
     $this->view->headTitle($this->view->title, 'PREPEND');
     $mdlSite = new Application_Model_Sites();
     $sites = $mdlSite->fetchAll();
     $mdlSite->scanSites($sites, true);
     sleep(5);
 }
 /**
  * Просмотр логов ответов от сервера по конкретному сайту
  */
 public function checkAction()
 {
     // модель
     $mdlSite = new Application_Model_Sites();
     // данные
     $id = $this->_getParam('id');
     // действия
     $siteLogs = $mdlSite->checkSite($id);
     // вывод заголовков
     $this->view->title = "Логи сайта " . $siteLogs[0]['name'];
     $this->view->headTitle($this->view->title, 'PREPEND');
     // вывод в шаблон
     $this->view->siteLogs = $siteLogs;
 }
 /**
  * Редактирование параметров конкретного сайта 
  */
 public function editAction()
 {
     // вывод заголовков
     $this->view->title = "Изменить параметры сайта.";
     $this->view->headTitle($this->view->title, 'PREPEND');
     // модели
     $site = new Application_Model_Sites();
     $group = new Application_Model_SiteGroups();
     // форма
     $form = new Application_Form_EditSite();
     // костыль с валидатором
     $validator = new Zend_Validate_Hostname();
     // данные
     $post = $this->_request->getPost();
     $site_id = $this->_getParam('id');
     $site_params = $site->getSite($site_id);
     // заполняем форму
     $form->populate($site_params);
     if (isset($post) && !empty($post['url'])) {
         $url = parse_url($post['url'], PHP_URL_HOST);
         if ($form->isValid($post) && $validator->isValid($url)) {
             $url = $post['url'] . '/';
             if ($post['newgroup']) {
                 $id_group = $group->addGroup($post['newgroup']);
                 $site->editSite($site_id, $post['name'], $url, $id_group);
             } else {
                 $site->editSite($site_id, $post['name'], $url, $post['group']);
             }
             $this->_redirect('/');
         } else {
             // вывод в шаблон
             $this->view->message = 'Некорректная ссылка на сайт.';
             $form->populate($post);
         }
     }
     // вывод в шаблон
     $this->view->form = $form;
 }
Beispiel #4
0
 /**
  * Возвращает массив внутренних ссылок со страницы
  * 
  * @param type $urlPage адресс страницы
  * @return array массив ссылок
  */
 public function getLincPage($urlPage)
 {
     $urlPage = trim($urlPage);
     if (empty($urlPage)) {
         echo "Empty " . $urlPage;
         return array();
     }
     try {
         // получаем код страницы
         $mdlSites = new Application_Model_Sites();
         $page = $mdlSites->curlResponse($urlPage, TRUE);
         //curlResponse($url, $body=FALSE)
         $html = $page['body'];
         // file_get_contents($urlPage);
         // разбиваем по тегу ссылки
         $a = explode("<a", $html);
         // удаляем первый элемент он нам не нужен
         array_shift($a);
         // массив первичных результатов
         $res = array();
         // проганяем по циклу
         foreach ($a as $value) {
             // отрезаем полную часть ссылки
             $parts = explode('>', $value);
             // извлекаем href
             foreach ($parts as $val[0]) {
                 $match = array();
                 preg_match('/href="(.+)/', $val[0], $match);
                 if ($match) {
                     // обрезаем по кавычке ссылку
                     $str = explode('"', $match[1]);
                     // проверка на якоря и корень сайта
                     $str[0] = trim($str[0]);
                     $len = strlen($str[0]);
                     if ($str[0] != '/' && $str[0] != '' && $str[0][0] != '#') {
                         $res[] = $str[0];
                     }
                 }
             }
         }
         // массив результатов
         $finalRes = array();
         // парсим для проверки хоста
         $arrUrlPage = parse_url($urlPage);
         foreach ($res as $url) {
             $url = urldecode($url);
             $val = parse_url($url);
             if (isset($val['path']) && $this->getPathExp($val['path'])) {
                 // если начинается с хоста
                 if (!empty($val['host']) && $arrUrlPage['host'] === $val['host'] && !empty($val['scheme']) && $arrUrlPage['scheme'] === $val['scheme']) {
                     if ($val['host'] == $arrUrlPage['host'] && $val['path'] != '') {
                         $finalRes[] = $val['scheme'] . '://' . $val['host'] . $val['path'];
                     }
                 } else {
                     // иначе от корня
                     if (empty($val['host'])) {
                         if (!empty($val['path']) && $val['path'][0] == '/') {
                             $finalRes[] = $arrUrlPage['scheme'] . '://' . $arrUrlPage['host'] . $val['path'];
                         }
                     }
                 }
             }
         }
     } catch (Zend_Exception $e) {
         $finalRes = array();
     }
     $finalRes = array_unique($finalRes);
     return $finalRes;
 }