예제 #1
0
     $lasterror[] = $language['client_off_line'];
 }
 if (!$lasterror) {
     $query = 'select a.name,b.alias from ' . $mysql_ini['prefix'] . 'online_clients as a left join ' . $mysql_ini['prefix'] . 'dummy as b on b.dummy=a.dummy where a.cid=' . $clientId . ' limit 1';
     $result = $db->query($query);
     if (1 == mysqli_num_rows($result)) {
         $tmp = $result->fetch_assoc();
         $clientName = GlobalFunc::clip_str_width($tmp['name']);
         $query = 'select b.module,b.charset from ' . $mysql_ini['prefix'] . 'online_module as a left join ' . $mysql_ini['prefix'] . 'modules as b on b.module=a.module where a.cid=' . $clientId . ' and a.module=\'' . $moduleId . '\' limit 1';
         $result = $db->query($query);
         if (1 != mysqli_num_rows($result)) {
             $lasterror[] = $language['no_mid_client'];
         } else {
             $tmp = $result->fetch_assoc();
             $mod_name_array = GlobalFunc::get_mod_name($tmp['module'], $language_choosed);
             $moduleName = GlobalFunc::clip_str_width($mod_name_array['name']);
             if ($data) {
                 if (0 != $tmp['charset']) {
                     $data = iconv($module_charset[$tmp['charset']], "utf-8//IGNORE", $data);
                     if (false === $data) {
                         $lasterror[] = $language['fail_iconv'] . $module_charset[$tmp['charset']];
                     }
                 }
             }
         }
     } else {
         $lasterror[] = $language['client_off_line'];
     }
 }
 if (!$lasterror) {
     $query = 'insert into ' . $mysql_ini['prefix'] . 'online_task_lock values(?)';
예제 #2
0
 public static function check_owner_sub_units()
 {
     global $language;
     $clients = self::$_cid;
     $cid = self::$_cid;
     $max_request_len = 1024;
     //最大每次请求长度(受mysql单指令长度限制)
     //注:可能会超过,需要保守使用
     $query_head = 'select a.cid,a.name,b.alias,c.module from ' . self::$_mysql_ini['prefix'] . 'online_clients as a left join ' . self::$_mysql_ini['prefix'] . 'dummy as b on b.dummy=a.dummy left join ' . self::$_mysql_ini['prefix'] . 'online_module as c on c.cid=a.cid and c.module=\'' . self::$_mid . '\'' . ' where a.status=1' . ' and (';
     $query_tail = ') limit ';
     $max_request_len -= strlen($query_head) + strlen($query_tail);
     while (!empty($cid)) {
         $units = 0;
         $remain = $cid;
         $c_len = $max_request_len;
         $query = $query_head;
         $c_units = array();
         foreach ($remain as $a) {
             $q = 'a.cid=' . $a . ' or ';
             $b = strlen($q);
             if ($c_len > $b) {
                 $c_len -= $b;
                 $query .= $q;
                 $c_units[$a] = $a;
                 unset($cid[$a]);
                 $units++;
             } else {
                 break;
             }
         }
         $query = substr($query, 0, strlen($query) - 4);
         $query .= $query_tail . $units;
         $result = self::$_db->query($query);
         $i = mysqli_num_rows($result);
         if ($i) {
             for (; $i > 0; $i--) {
                 $tmp = $result->fetch_assoc();
                 unset($clients[$tmp['cid']]);
                 self::$_result[$tmp['cid']]['cid'] = $tmp['cid'];
                 self::$_result[$tmp['cid']]['mid'] = self::$_mid;
                 if (!empty($tmp['alias'])) {
                     self::$_result[$tmp['cid']]['name'] = GlobalFunc::clip_str_width($tmp['alias']);
                 } else {
                     self::$_result[$tmp['cid']]['name'] = GlobalFunc::clip_str_width($tmp['name']);
                 }
                 if (!GlobalFunc::is_sys_module_id(self::$_mid) and !$tmp['module']) {
                     self::$_result[$tmp['cid']]['lasterror'] = $language['no_mid_client'] . self::$_mid;
                     //$language['no_mid_client'];
                 }
             }
         }
     }
     foreach ($clients as $a) {
         //var_dump ($query);
         self::$_result[$a]['lasterror'] = $language['client_off_line'];
     }
     if (false === self::$_result) {
         return false;
     } else {
         return true;
     }
 }
예제 #3
0
 $shortcuts_num = $result['shortcuts_num'];
 $same_mod_filter = array();
 $auto_hide_warning = false;
 $app_array_id = 0;
 if ($mod_num) {
     $query = 'select a.module,a.version,a.latest_version,a.root from ' . $mysql_ini['prefix'] . 'modules as a,' . $mysql_ini['prefix'] . 'online_module as b where b.cid=' . $clientId . ' and b.module = a.module limit ' . $mod_num;
     $result = $db->query($query);
     $i = mysqli_num_rows($result);
     if ($mod_num > $i) {
         $tmp = $mod_num - $i;
         $lastwarning[] = $tmp . $language['some_unsupport_mod'];
     }
     for (; $i > 0; $i--) {
         $tmp = $result->fetch_assoc();
         $mod_name_array = GlobalFunc::get_mod_name($tmp['module'], $language_choosed);
         $tmp['title'] = GlobalFunc::clip_str_width($mod_name_array['name']);
         $tmp['name'] = $mod_name_array['name'];
         if (isset($same_mod_filter[$tmp['root']])) {
             if ($same_mod_filter[$tmp['root']]['ver'] > $tmp['version']) {
                 $auto_hide_warning .= $tmp['name'] . ' ver.' . $tmp['version'] . ',';
                 continue;
             } else {
                 $auto_hide_warning .= $same_mod_filter[$tmp['root']]['name'] . ' ver.' . $same_mod_filter[$tmp['root']]['ver'] . ',';
                 unset($app_array[$same_mod_filter[$tmp['root']]['id']]);
             }
         }
         $same_mod_filter[$tmp['root']]['id'] = $app_array_id;
         $same_mod_filter[$tmp['root']]['ver'] = $tmp['version'];
         $same_mod_filter[$tmp['root']]['name'] = $tmp['name'];
         $app_array[$app_array_id] = $tmp;
         $app_array_id++;