Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Нужно чтобы скрипт записывал данные в mysql.
Форумы портала PHP.SU » Объявления » FreeLance » Нужно чтобы скрипт записывал данные в mysql.

Страниц (1): [1]
 

1. Ravage_su - 06 Сентября, 2013 - 19:01:47 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.  
  3. define("FORBIDDEN", -"Забаненный");
  4. define("GUEST_AUTH", "Игрок");
  5.  
  6. define("PLAYER_AUTH", "VIP");
  7.  
  8. define("BUILDER_AUTH", "Premium");
  9.  
  10. define("MODERATOR_AUTH", "Модератор");
  11. define("ADMIN_AUTH", "Администратор");
  12. define("CONSOLE_AUTH", "Консоль");
  13. define("DEFAULT_AUTH", GUEST_AUTH);
  14.  
  15.  
  16. class PermissionSuite implements Plugin{
  17.  
  18. private $api, $sapi, $config, $permissions, $chests;
  19. private $ranklist;
  20.  
  21.  
  22.  
  23. public function __construct(ServerAPI $api, $server = false){
  24.   $this->api = $api;
  25. if(!class_exists("SimpleAuthAPI")){$this->api->plugin->load('./plugins/PermissionSuite/SimpleAuth.php');}
  26.   $this->sapi = SimpleAuthAPI::get();
  27. $this->ranklist = array(
  28. 5 =>"Консоль",
  29. 4 =>"Модератор",
  30. 3 =>"Premium",
  31. 2 =>"VIP",
  32. 1 =>"Игрок",
  33. 0 =>"Гость",
  34. -1=>"Забанен");
  35.  
  36. }
  37.  
  38.  
  39.  
  40. public function init(){
  41. if(!file_exists("./plugins/PermissionSuite/SimpleAuth.php")){
  42.      console("[ERROR][PermissionSuite] SimpleAuth Plugin is missing, it's strictly necessary for the proper functionality of this plugin.");
  43.  
  44.      return false;
  45.   }
  46. elseif(file_exists("./plugins/SimpleAuth.php")){
  47. console("[WARNING][P.Suite] Theres a duplicated SimpleAuth Plugin, make sure to remove SimpleAuth from plugins folder if you had it installed before installing P.Suite.");
  48. }
  49.   $this->config = new Config($this->api->plugin->configPath ($this)."config.yml", CONFIG_YAML, array(
  50. "PluginEnabled" => true,
  51. "defaultAction" => "allowed",
  52. "Permissions" => array(
  53.  
  54.   "login" => GUEST_AUTH,
  55.   "register" => GUEST_AUTH,
  56.   "permission" => ADMIN_AUTH,
  57.  
  58.   "help" => GUEST_AUTH,
  59.  
  60. "banip" => MODERATOR_AUTH,
  61.  
  62. "give" => MODERATOR_AUTH,
  63.  
  64. "ban" => MODERATOR_AUTH,
  65. "op" => -1, /*Forbidden command due to permissions conflict. enabling it may permit ops to use commands above their auth*/
  66.   "defaultgamemode" => MODERATOR_AUTH,
  67.   "gamemode" => MODERATOR_AUTH,
  68.   "kill" => MODERATOR_AUTH,
  69.   "kick" => MODERATOR_AUTH
  70.  
  71. )));
  72.  
  73.  
  74.  
  75.   $this->permissions = new Config($this->api->plugin->configPath ($this)."permissions.yml", CONFIG_YAML, array());
  76.   $this->chests = new Config($this->api->plugin->configPath($this)."chests.yml", CONFIG_YAML, array());
  77.  
  78.  
  79.   $this->api->addHandler("console.command", array($this, "eventHandler"));
  80.   $this->api->addHandler("player.block.touch", array($this, "eventHandler"));
  81. $this->api
  82. ->addHandler("op.check", array($this, "eventHandler"));
  83.   $this->api->console->register("permission","PermissionSuite Master command.", array($this, "commandHandler"));
  84. }
  85.  
  86.  
  87.  
  88. public function eventHandler(&$data, $event){
  89.  
  90. switch($event){
  91. case "op.check":
  92. $P = $this->api->player->get($data);
  93. if($P instanceof Player){
  94. $p = $this->permissions->get($P->iusername);
  95. if($this->getNum($p["permission"]) > 2){
  96. return true;
  97. }else{return false;}
  98. }return false;
  99. break;
  100. /*case "player.block.touch":
  101.    if($this->sapi->isAuthed($data["player"]->CID) === true){
  102.      
  103. $tile = $this->api->tile->get(new Position($data["target"]->x, $data["target"]->y, $data["target"]->z, $data["target"]->level));
  104.      
  105. if($tile === false){break;}
  106.      
  107. $class = $tile->class;
  108.      
  109. switch($class){
  110.          
  111. case TILE_CHEST:
  112.             switch($data["type"]){
  113.                case "place":
  114.                   $toSave = arra(array("owner"=$data["creator"], "chestX" = $data["target"]->x, "chestY" = $data["target"]->y,
  115.                      "chestZ" = $data["target"]->z,
  116.                      "chestLevel" = $data["target"]->level));
  117.                   $this->chests->set($data["player"]->iusername, $toSave);
  118.                   break;
  119.                
  120. case "break":
  121.            
  122. }
  123.      
  124. }
  125.    
  126. }
  127.    
  128. break;
  129. */
  130.  
  131. case "console.command":
  132.      
  133. if($data["issuer"] === "console"){break;}
  134.  
  135.      elseif($data["issuer"] instanceof Player){
  136.        
  137. $c = $this->config->get("Permissions");
  138.  
  139.         $p = $this->permissions->get($data["issuer"]->iusername);
  140.  
  141.         if($p === false){
  142.            
  143. if($this->sapi->isAuthed($data["issuer"]->CID) !== true){
  144.              
  145. $this->api->chat->sendTo(false, "Пожалуйста войдите используя команду /login или /register. Подробнее на сайте Ravage.su", $data["issuer"]->iusername);
  146.              
  147. return false;
  148.            }
  149.            
  150. else{
  151.              
  152. $this->permissions->set($data["issuer"]->iusername, array("permission" => DEFAULT_AUTH));
  153.              
  154. $p = $this->permissions->get($data["issuer"]->iusername);
  155.            }
  156.         }
  157.  
  158.         if($this->sapi->isAuthed($data["issuer"]->CID) !== true){
  159.            
  160. $this->api->chat->sendTo(false, "Пожалуйста войдите используя команду /login или /register. Подробнее на сайте Ravage.su", $data["issuer"]->iusername);
  161.            
  162. return false;
  163.         }
  164. elseif(!isset($c[$data["cmd"]])){
  165.            if($this->config->get("defaultAction") === "allowed"){
  166.              
  167. console("[PermissionSuite] ".($data["cmd"])." has not been assigned a permission level! Consider setting one up now.");
  168.              
  169. break;
  170.            }
  171.            
  172. console("[PermissionSuite] Blocked execution of '".($data["cmd"])."' as default action.");
  173.            
  174. return false;
  175.        
  176. }
  177. elseif($this->getNum($c[$data["cmd"]]) > $this->getNum($p["permission"])){if($this->getNum($c[$data["cmd"]]) === 5){
  178.            
  179. $this->api->chat->sendTo(false, "[PermissionSuite] This command can only be executed on the console.",$data["issuer"]->iusername);
  180.            
  181. return false;
  182.         }return false;
  183.      }
  184.   }
  185. break;
  186. }
  187. }
  188.  
  189.  
  190. public function getNum($rank){
  191. if(!$rank){return false;}
  192. switch($rank){
  193. case "Консоль":
  194. return 5;
  195.  
  196. case "Модератор":
  197. return 4;
  198.  
  199. case "Premium":
  200. return 3;
  201.  
  202. case "VIP":
  203. return 2;
  204.  
  205. case "Игрок":
  206. return 1;
  207.  
  208. case "Гость":
  209. return 0;
  210.  
  211. case "Забанен":
  212. return -1;
  213. }
  214. }
  215.  
  216. public function commandHandler($cmd, $params, $issuer, $alias){
  217.   $output = "";
  218.  
  219. $cmd = strtolower($cmd);
  220.  
  221.  
  222.   switch($cmd){
  223.  
  224.  
  225.      case "issueReboot":
  226.        
  227. $this->api = new ServerAPI();
  228.        
  229. break;
  230.      case "permission":
  231.        
  232. $subcmd = strtolower($params[0]);
  233.        
  234. switch($subcmd){
  235.  
  236.            case "":
  237.              
  238. $output .= "permission set <command> <-1 | 0 | 1 | 2 | 3 | 4 | 5> | Rank required to run <command>.\n\n";
  239.  
  240.               $output .= "/permission remove <command>  |  Removes the permission requirement of a command. When executed, the default action takes place.\n";
  241.              
  242. $output .= "/permission auth <playername> <-1 | 0 | 1 | 2 | 3 | 4> | Grants the specified permission level to an user.";
  243.  
  244.               break;
  245.            
  246.  
  247. case "set":
  248.              
  249. $command = strtolower($params[1]);
  250.              
  251. $c = $this->config->get("Permissions");
  252.              
  253. if($command !== false and is_numeric($params[2]) and $c !== false){
  254.                  
  255. if($params[2] < 0 or $params[2] > 5){
  256.                    
  257. $output = "[P.Suite] Wrong permission set. Please enter a value between 0 and 5 inclusive.";
  258.                    
  259. break;
  260.                  
  261. }
  262.                  
  263. $c[$command] = $this->ranklist[$params[2]];
  264.                  
  265. $this->config->set("Permissions", $c);
  266. $this->config->save();
  267.                  
  268. $output .= "[P.Suite] '".($command)."' has been set a permission of level '".($params[2])."'!";
  269.                  
  270. break;
  271.               }
  272. else{
  273.                  
  274. $output = "Что-то не так. Свяжитесь с администратором Ravage.su";
  275.  
  276.               }
  277.              
  278. break;
  279.  
  280.            
  281. case "remove":
  282.  
  283.               $c = $this->config->get("Permissions");
  284.              
  285. if($c === false){
  286.                  $output = "Что-то не так. Свяжитесь с администратором Ravage.su";
  287.  
  288.                  break;
  289.               }
  290.  
  291. unset($c[$params[1]]);
  292.              
  293. $this->config->set("Permissions", $c);
  294.  
  295.               $output = "[PermissionSuite] '".($params[1])."' removed from permission list. It's usage will now be '".($this->config->get("defaultAction"))."' by default.";
  296. $this->config->save();
  297.  
  298.               break;
  299.            
  300. case "auth":
  301.              
  302. if($params[1] !== false and $params[2] !== false){
  303.                  
  304. if(!is_numeric($params[2])){
  305.                    
  306. $output = "[PermissionsSuite] Permission must be a number between 0 and 4 inclusive.";
  307.                    
  308. break;
  309.                  }
  310.  
  311.                  $this->permissions->set($params[1], array("permission" => $this->ranklist[$params[2]]));
  312. $this->permissions->save();
  313.                  
  314. $output = "".($params[1])."' теперь имеет группу '".($params[2])."'";
  315.                  
  316. break;
  317.              
  318. }
  319.  
  320.        
  321. }
  322.      }
  323.      return $output;
  324.  
  325.   }
  326.  
  327.  
  328.  
  329. public function __destruct(){
  330.  
  331. $this->config->save();
  332.  
  333. $this->permissions->save();
  334.  
  335.   $this->chests->save();
  336. }
  337.  
  338. }

Выше находится код плагина, который должен записывать все свои данные и вместо файла yml в базу данных mysql. Запись в yml производится с помощью api другого скрипта (но это не важно). В ЛС сообщу данные от базы данных mysql.
Об оплате договоримся. Мой skype: mc-maps, также готов говорить в ЛС.

 

Powered by ExBB FM 1.0 RC1