Example #1
0
 /**
  * Устанавливает ноду с данными о том где лежат постеры и превьющки
  */
 public function getHttpPath()
 {
     $rootNode = \Difra\Action::getInstance()->controller->root;
     $videoManagerNode = $rootNode->appendChild($rootNode->ownerDocument->createElement('video-preview'));
     $videoManagerNode->setAttribute('thumbs', '/' . $this->httpThumbs);
     $videoManagerNode->setAttribute('posters', '/' . $this->httpPosters);
 }
Example #2
0
 /**
  * Определяет соответствует ли текущая страница странице с формой
  * @static
  */
 public static function find()
 {
     $uri = '/' . \Difra\Action::getInstance()->getUri();
     $Cache = \Difra\Cache::getInstance();
     $data = $Cache->get('fp_forms');
     if (!$data) {
         // нет данных в кэше? установить!
         $db = \Difra\MySQL::getInstance();
         $query = "SELECT * FROM `fp_forms`";
         $res = $db->fetch($query);
         if (!empty($res)) {
             foreach ($res as $k => $fData) {
                 $data[$fData['id']] = $fData;
             }
             $Cache->put('fp_forms', $data, 10800);
         }
     }
     // ищем нужную страницу
     if (!empty($data)) {
         foreach ($data as $k => $form) {
             if (isset($form['uri']) && $form['uri'] == $uri && $form['hidden'] == 0) {
                 return $form['id'];
             }
         }
     }
     return false;
 }
Example #3
0
 /**
  * Выбирает рабочий cdn хост
  */
 public function selectHost()
 {
     $this->_getSettings();
     $db = \Difra\MySQL::getInstance();
     $res = null;
     $stage = null;
     // stage 1 — select from 'ok' hosts with softer load of new cdn hosts
     try {
         $queryWrk = "SELECT `id`, `host`, `port` FROM `cdn_hosts_work`\n\t\t\t\tWHERE (`status`='ok'\n\t\t\t\tOR `failed`<DATE_SUB(NOW(),INTERVAL " . intval($this->settings['failtime']) . " MINUTE))\n\t\t\t\tAND `created`<DATE_SUB(NOW(),INTERVAL " . intval(rand(0, 24)) . " HOUR)\n\t\t\t\tORDER BY `selected`\n\t\t\t\tLIMIT 1";
         $res = $db->fetchRow($queryWrk);
         if (!$res) {
             $db->query('REPLACE INTO `cdn_hosts_work` SELECT * FROM `cdn_hosts`');
             $res = $db->fetchRow($queryWrk);
         }
         $stage = 1;
     } catch (\Difra\Exception $ex) {
     }
     // stage 2 — select from 'ok' hosts without softer load of new cdn hosts
     if (!$res) {
         try {
             $query = "SELECT `id`, `host`, `port` FROM `cdn_hosts_work`\n\t\t\t\tWHERE `status`='ok'\n\t\t\t\tAND `failed`<DATE_SUB(NOW(),INTERVAL " . intval($this->settings['failtime']) . " MINUTE)\n\t\t\t\tORDER BY `selected`\n\t\t\t\tLIMIT 1";
             $res = $db->fetchRow($query);
             $stage = 2;
         } catch (\Difra\Exception $ex) {
         }
     }
     // stage 3 — select from busy hosts
     if (!$res) {
         try {
             $query = "SELECT `id`, `host`, `port` FROM `cdn_hosts_work`\n\t\t\t\tWHERE `status`='busy'\n\t\t\t\tORDER BY `selected` DESC\n\t\t\t\tLIMIT 1";
             $res = $db->fetchRow($query);
             $stage = 3;
         } catch (\Difra\Exception $ex) {
         }
     }
     // stage 4 - select from hosts that haven't been checked for a long time
     if (!$res) {
         try {
             $query = "SELECT `id`, `host`, `port` FROM `cdn_hosts`\n\t\t\t\tWHERE `failed`<DATE_SUB(NOW(),INTERVAL " . intval($this->settings['failtime']) . " MINUTE)\n\t\t\t\tORDER BY `selected`\n\t\t\t\tLIMIT 1";
             $res = $db->fetchRow($query);
             $stage = 4;
         } catch (\Difra\Exception $ex) {
         }
     }
     if (!empty($res)) {
         $rootNode = \Difra\Action::getInstance()->controller->root;
         $rootNode->setAttribute('cdn_host', $res['host'] . ':' . $res['port']);
         $rootNode->setAttribute('cdn_host_id', $res['id']);
         $this->_updateSelected($res['id'], $res['host'] . ':' . $res['port']);
         if (\Difra\Debugger::getInstance()->isEnabled()) {
             $rootNode->setAttribute('cdn_stage', $stage);
         }
         return;
     }
 }
Example #4
0
 /**
  * Определяет зашел ли пользователь на страницу формы и запускает все нужные процесса для её отображения
  */
 public function run()
 {
     if ($formId = \Difra\Plugins\FormProcessor\Form::find()) {
         $action = \Difra\Action::getInstance();
         $action->className = '\\Difra\\Plugins\\FormProcessor\\Controller';
         $action->method = 'formAction';
         $action->parameters = [$formId];
     }
 }