예제 #1
0
 public function toggle_index_server_action()
 {
     if (Request::isPost()) {
         $host = new LernmarktplatzHost(Request::option("host_id"));
         if ($host->isMe()) {
             $host['index_server'] = Request::int("active", 0);
             $host->store();
             //distribute this info to adjacent server
             $data = array('data' => array('public_key' => $host['public_key'], 'url' => $host['url'], 'name' => $host['name'], 'index_server' => $host['index_server']));
             foreach (LernmarktplatzHost::findAll() as $remote) {
                 if (!$remote->isMe()) {
                     $remote->pushDataToEndpoint("update_server_info", $data);
                 }
             }
             /*$curl_multi_handle = curl_multi_init();
               $requests = array();
               foreach (LernmarktplatzHost::findAll() as $remote) {
                   if (!$remote->isMe()) {
                       $request = $remote->pushDataToEndpoint("update_server_info", $data, true);
                       curl_multi_add_handle($curl_multi_handle, $request);
                       $requests[] = $request;
                   }
               }
               $active = null;
               do {
                   $mrc = curl_multi_exec($curl_multi_handle, $active);
               } while ($mrc == CURLM_CALL_MULTI_PERFORM);
               while ($active && $mrc == CURLM_OK) {
                   if (curl_multi_select($curl_multi_handle) != -1) {
                       do {
                           $mrc = curl_multi_exec($curl_multi_handle, $active);
                       } while ($mrc == CURLM_CALL_MULTI_PERFORM);
                   }
               }
               foreach ($requests as $request) {
                   curl_multi_remove_handle($curl_multi_handle, $request);
               }
               curl_multi_close($curl_multi_handle);
               */
         } else {
             $host['allowed_as_index_server'] = Request::int("active", 0);
             $host->store();
         }
     }
     $this->render_text(Icon::create("checkbox-" . (Request::int("active") ? "" : "un") . "checked"));
 }