public function isCodeInUse($code, $period_start, $period_end, $force_no_ajax = false)
 {
     $use = false;
     $period_start = $period_start instanceof DateTime ? $period_start : date_create($period_start);
     $period_end = $period_end instanceof DateTime ? $period_end : date_create($period_end);
     //        dump($period_start, $period_end);
     $vc = new Vks_controller();
     //how much digits in num
     $digits = strlen((string) $code);
     $vkses = Vks::with('connection_codes')->where('start_date_time', '<=', $period_end->modify("+" . Settings_controller::getOther('pause_gap') . " minutes"))->where('end_date_time', '>=', $period_start->modify("-" . Settings_controller::getOther('pause_gap') . " minutes"))->approved()->get(['id', 'title', 'start_date_time', 'end_date_time', 'date']);
     //        dump($vkses);
     foreach ($vkses as $vks) {
         if (count($vks->connection_codes)) {
             foreach ($vks->connection_codes as $vcode) {
                 if (substr($vcode->value, -$digits) == $code) {
                     $vks = $vc->humanize($vks);
                     $use = $vks;
                     break;
                 }
             }
         }
     }
     if ($force_no_ajax) {
         return $use;
     }
     //        ST::makeDebug($use);
     if (ST::isAjaxRequest()) {
         if ($use) {
             $use = $use->toJson();
         }
         print json_encode($use);
     } else {
         return $use;
     }
 }
 public function run()
 {
     //add counter
     $params = count($this->params) ? "/" . implode("/", $this->params) : "";
     $mskTime = date_create()->setTimezone(new DateTimeZone(App::$instance->opt->ca_timezone));
     Counter::create(['origin' => MY_NODE, 'ip' => App::$instance->user->ip, 'request' => $this->controller . "/" . $this->action . urlencode($params), 'type' => ST::isAjaxRequest() ? REQUEST_AJAX : REQUEST_REGULAR, 'created_at' => $mskTime, 'updated_at' => $mskTime]);
     call_user_func_array(array(new $this->controller(), $this->action), $this->params);
 }
 public function search($phrase)
 {
     if (ST::isAjaxRequest()) {
         $vksWSC = new Vks_controller();
         $result = [];
         $result['ws'] = Vks::where("id", $phrase)->whereIn('status', [VKS_STATUS_APPROVED, VKS_STATUS_PENDING])->take(1)->get();
         foreach ($result['ws'] as $vks) {
             $vksWSC->humanize($vks);
         }
         print json_encode($result);
     }
 }
 public function isExist($key)
 {
     $result = false;
     if (file_exists(self::SAVE_PATH . App::$instance->user->id . "_" . $key)) {
         $result = true;
     }
     if (!ST::isAjaxRequest()) {
         return $result;
     } else {
         print json_encode($result);
     }
 }
 public function ask($file, $key)
 {
     $result = null;
     if (file_exists(NODE_REAL_PATH . "config/" . $file . ".xml")) {
         $helpfile = (object) simplexml_load_file(NODE_REAL_PATH . "config/" . $file . ".xml");
         foreach ($helpfile as $element) {
             if (strval($element->name) == $key) {
                 $result = "<div style='font-size: 16px;'>" . strval($element->content) . "</div>";
                 if (isset($element->image)) {
                     $result = "<div class='text-center'><image style='width:95%;' src='" . $element->image . "'/></div>" . $result;
                 }
             }
         }
     }
     if (ST::isAjaxRequest()) {
         print json_encode([$result]);
     } else {
         return $result;
     }
 }
 public function pull()
 {
     if (!Auth::isLogged(App::$instance)) {
         die(json_encode([]));
     }
     // not auth
     //set time barrier
     if (!$this->isCanBePulled()) {
         die(json_encode([]));
     }
     // not time come
     $startThere = date_create()->modify("-120 seconds");
     $readed = $this->sesRead();
     //define last access time
     $this->putLastRequestTime();
     //get notices
     $notifications = Notification::where("created_at", ">", $startThere)->where("created_at", "<", date_create())->whereNotIn("id", $readed['filtered'])->whereIn("to", [0, App::$instance->user->id])->take(5)->get();
     //humanize
     if (count($notifications)) {
         foreach ($notifications as $notice) {
             $notice->humanized = new stdClass();
             $notice->humanized->created_at = date_create($notice->created_at)->format("d.m.Y H:i:s");
         }
     }
     //mark as collected
     if (count($notifications)) {
         foreach ($notifications as $notice) {
             $readed['raw'][] = [$notice->id, date_create()->format("Y-m-d H:i:s")];
         }
         $this->sesWrite($readed['raw']);
     }
     if (ST::isAjaxRequest()) {
         print json_encode($notifications);
     } else {
         return $notifications;
     }
 }
 public function askAtDateTime(DateTime $startDateTime, DateTime $endDateTime, $vks_blocked_type)
 {
     $blocks = BlockedTime::where('end_at', ">=", $startDateTime)->where('start_at', '<=', $endDateTime)->where('vks_type_blocked', intval($vks_blocked_type))->get();
     if (ST::isAjaxRequest()) {
         print json_encode($blocks);
     } else {
         return $blocks;
     }
 }
 public function getCodesCores()
 {
     Auth::isAdminOrDie(App::$instance);
     $this->castCodeDelivery();
     $codes = (object) simplexml_load_file("config/code-delivery-cfg.xml");
     $result = [];
     foreach ($codes as $option) {
         if (!in_array((string) $option['core'], $result)) {
             $result[] = (string) $option['core'];
         }
     }
     if (ST::isAjaxRequest()) {
         print json_encode($result);
     } else {
         return $result;
     }
 }
 public function ProcessCheck(stdClass $requestCheckResult)
 {
     if (ST::isAjaxRequest() && !$requestCheckResult->ajax) {
         print json_encode(['response' => 'false']);
         die;
     }
     if (!$requestCheckResult->controller) {
         $this->error('404');
     }
     if (!$requestCheckResult->action) {
         $this->error('404');
     }
     if (!$requestCheckResult->method) {
         $this->error('router-method-restricted');
     }
     if (!$requestCheckResult->access) {
         $this->error('router-role-access-restricted');
     }
 }
 public function find($searchString, $humanized = false)
 {
     Auth::isAdminOrDie(App::$instance);
     if (ST::isAjaxRequest()) {
         $users = User::where("login", 'LIKE', "%{$searchString}%")->where("status", USER_STATUS_APPROVED)->take(10)->get();
         if ($humanized) {
             foreach ($users as $user) {
                 $user = self::humanize($user);
             }
         }
         print json_encode($users);
     }
 }
 private function drawOverAllImage($date)
 {
     $res1 = $this->dataForGraph($date, 0);
     $res2 = $this->dataForGraph($date, 1);
     $MyData = new pData();
     $MyData->addPoints($res1['percents'], "Load in % for server 1");
     $MyData->addPoints($res2['percents'], "Load in % for server 2");
     $MyData->setAxisName(0, "Participants");
     $MyData->addPoints($res1['times'], "Labels");
     //        $MyData->addPoints($res2['times'], "Labels");
     $MyData->setSerieDescription("Labels", "Months");
     $MyData->setAbscissa("Labels");
     /* Create the pChart object */
     $myPicture = new pImage(1200, 560, $MyData);
     /* Turn of Antialiasing */
     $myPicture->Antialias = TRUE;
     /* Add a border to the picture */
     //$myPicture->drawRectangle(0,0,890,290,array("R"=>0,"G"=>0,"B"=>0));
     /* Write the chart title */
     $myPicture->setFontProperties(array("FontName" => CORE_REPOSITORY_REAL_PATH . "class/pChart/fonts/Forgotte.ttf", "FontSize" => 11));
     $myPicture->drawText(200, 35, "All Servers Resource Usage (" . $date . ")", array("FontSize" => 20, "Align" => TEXT_ALIGN_BOTTOMMIDDLE));
     /* Set the default font */
     $myPicture->setFontProperties(array("FontName" => CORE_REPOSITORY_REAL_PATH . "class/pChart/fonts/pf_arma_five.ttf", "FontSize" => 8));
     /* Define the chart area */
     $myPicture->setGraphArea(60, 40, 1100, 500);
     $AxisBoundaries = array(0 => array("Min" => 0, "Max" => 100));
     /* Draw the scale */
     $scaleSettings = array("XMargin" => 10, "YMargin" => 10, "Floating" => TRUE, "GridR" => 200, "GridG" => 200, "GridB" => 200, "DrawSubTicks" => TRUE, "CycleBackground" => TRUE, "LabelSkip" => 1, 'Mode' => SCALE_MODE_MANUAL, "ManualScale" => $AxisBoundaries);
     $myPicture->drawScale($scaleSettings);
     $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10));
     /* Draw the stacked area chart */
     $myPicture->drawStackedAreaChart(array("DrawLine" => TRUE, "LineSurrounding" => -20));
     /* Turn on Antialiasing */
     $myPicture->Antialias = TRUE;
     /* Draw the line chart */
     $myPicture->drawLineChart();
     /* Write the chart legend */
     $myPicture->drawLegend(800, 20, array("Style" => LEGEND_NOBORDER, "Mode" => LEGEND_HORIZONTAL));
     /* Render the picture (choose the best way) */
     //$myPicture->autoOutput(App::$instance->opt->fizPath."class/pChart/pictures/example.drawLineChart.simple.png");
     $myPicture->render(CORE_REPOSITORY_REAL_PATH . "class/pChart/pictures/load_at_" . $date . "_on_overall.png");
     $path = CORE_REPOSITORY_HTTP_PATH . "class/pChart/pictures/load_at_" . $date . "_on_overall.png";
     if (ST::isAjaxRequest()) {
         $data = [];
         print json_encode($data['path'] = $path);
     } else {
         return $path;
     }
 }
 public function hasLocalVks($caVksId)
 {
     $result = Vks::where('link_ca_vks_id', $caVksId)->count();
     if (ST::isAjaxRequest()) {
         print json_encode($result ? ['response' => 1] : ['response' => 0]);
     } else {
         return $result;
     }
 }