Postado Novembro 10, 2020 4 anos Este é um post popular. Bom estava estudando um pouco sobre NPM onde cheguei a ferramenta Electron JS onde ela me permite criar um aplicativo desktop através de HTML, CSS e JS. Então com essa informação pensei em desenvolver um app desktop para gerenciar umas coisas em que o pessoal tem um pouco de dor de cabeça. Conhecendo o APP admin: Clique para acessar o youtube O que o aplicativo faz: Adiciona pontos Adiciona item ao shop Edita um item do shop Remove um item do shop Requisitos para instalar: OTX server 2x PHP5.5+ Gesior 2012 z_shop_offer com a mesma estrutura da imagem abaixo: Spoiler Acredito que muitos já sabem como chegar ai, mas caso não saibam siga os passos: Logue no Phpmyadmin, selecione seu banco de dados e logo em seguida selecione a tabela z_shop_offer Se seu servidor possui os requisitos então siga os passos abaixo: Certo primeiramente vamos instalar umas dependências para isso você precisará seguir os passos com muita atenção! Vá no seu index.php localizado na raíz do projeto (pasta inicial); procure por: include_once('./system/load.page.php'); Embaixo adicionamos a seguinte função: Spoiler if (!function_exists('getallheaders')) { function getallheaders() { $headers = []; foreach ($_SERVER as $name => $value) { if (substr($name, 0, 5) == 'HTTP_') { $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; } } return $headers; } } function checkHeader (){ if (!empty(getallheaders()['login']) && !empty(getallheaders()['password'])){ $account = new Account(); $account->find(getallheaders()['login']); if (!$account->isLoaded()){ $json['message'] = "login não encontrado"; $json['login'] = false; echo json_encode($json); return false; } if (sha1(getallheaders()['password']) != $account->getPasssword()){ $json['message'] = "login inválido"; $json['login'] = false; echo json_encode($json); return false; } if ($account->getGroupId() < 3){ $json['message'] = "Sem permissão {$account->getGroupId()}"; $json['login'] = false; echo json_encode($json); return false; } } else { $json['message'] = "Sem permissão"; $json['login'] = false; echo json_encode($json); return false; } return true; } if ($indexnoLoad) { echo $main_content; return; } vá até a pasta classes crie um arquivo chamado shopoffer.php, copie e cole todo o código abaixo: Spoiler <?php class ShopOffer extends ObjectData { const LOADTYPE_ID = 'id'; const LOADTYPE_NAME = 'ref'; public static $table = 'z_shop_offer'; public $data = array('points' => 0, 'itemid1' => 0, 'count1' => 0, 'itemid2' => 0, 'count2' => 0, "offer_type" => null, "offer_description" => null, "offer_name" => null, "pid" => 0, "category" => 1); public static $fields = array('id' , 'points', 'itemid1', 'count1', 'itemid2', 'count2', 'offer_type', 'offer_description', 'offer_name', 'pid', "category"); public function __construct() { } public function load($search_text, $search_by = self::LOADTYPE_ID, $all = false) { if(in_array($search_by, self::$fields)) $search_string = $this->getDatabaseHandler()->fieldName($search_by) . ' = ' . $this->getDatabaseHandler()->quote($search_text); else new Error_Critic('', 'Wrong Donate search_by type.'); $fieldsArray = array(); foreach(self::$fields as $fieldName) $fieldsArray[] = $this->getDatabaseHandler()->fieldName($fieldName); if ($all){ $this->data = $this->getDatabaseHandler()->query('SELECT ' . implode(', ', $fieldsArray) . ' FROM ' . $this->getDatabaseHandler()->tableName(self::$table) . ' WHERE ' . $search_string)->fetchAll(); } else { $this->data = $this->getDatabaseHandler()->query('SELECT ' . implode(', ', $fieldsArray) . ' FROM ' . $this->getDatabaseHandler()->tableName(self::$table) . ' WHERE ' . $search_string)->fetch(); } } public function loadAll() { $fieldsArray = array(); foreach(self::$fields as $fieldName){ $fieldsArray[] = $this->getDatabaseHandler()->fieldName($fieldName); } $this->data = $this->getDatabaseHandler()->query('SELECT ' . implode(', ', $fieldsArray) . ' FROM ' . $this->getDatabaseHandler()->tableName(self::$table))->fetchAll(); return $this->data; } public function loadById($id, $all = false) { $this->load($id, 'id', $all); } public function loadByItemId($itemid, $all = false) { $this->load($itemid, 'itemid1', $all); } public function save($forceInsert = false) { if(!isset($this->data['id']) || $forceInsert) { $keys = array(); $values = array(); foreach(self::$fields as $key) if($key != 'id') { $keys[] = $this->getDatabaseHandler()->fieldName($key); $values[] = $this->getDatabaseHandler()->quote($this->data[$key]); } $this->getDatabaseHandler()->query('INSERT INTO ' . $this->getDatabaseHandler()->tableName(self::$table) . ' (' . implode(', ', $keys) . ') VALUES (' . implode(', ', $values) . ')'); $this->setID($this->getDatabaseHandler()->lastInsertId()); } else { $updates = array(); foreach(self::$fields as $key) if($key != 'id') $updates[] = $this->getDatabaseHandler()->fieldName($key) . ' = ' . $this->getDatabaseHandler()->quote($this->data[$key]); $this->getDatabaseHandler()->query('UPDATE ' . $this->getDatabaseHandler()->tableName(self::$table) . ' SET ' . implode(', ', $updates) . ' WHERE ' . $this->getDatabaseHandler()->fieldName('id') . ' = ' . $this->getDatabaseHandler()->quote($this->data['id'])); } } public function delete() { $this->getDatabaseHandler()->query('DELETE FROM ' . $this->getDatabaseHandler()->tableName(self::$table) . ' WHERE ' . $this->getDatabaseHandler()->fieldName('id') . ' = ' . $this->getDatabaseHandler()->quote($this->data['id'])); unset($this->data['id']); } public function setID($id) { $this->data['id'] = $id; } public function getId() { return $this->data['id']; } public function setItemId1($val) { $this->data['item1'] = $val; } } Certo agora com esses arquivos dentro do site basta apenas pegar a pasta pages disponiblizado no link abaixo: OBS: Basta apenas pegar os arquivos e colocar dentro da pasta pages do site. Link Pages Agora com o site configurado basta apenas instalar o App com o link abaixo: Link do App Configurando o app: Configurar o App Admin é muito fácil, basta apenas abrir o App e seguir de acordo com a imagem abaixo: Após isso clique em Submit e faça o login: OBS: será possível logar com o ADMIN no caso é preciso que a conta logada esteja com o group_id 3 ou superior Espero que gostem, espero feedback de vocês e estou aceitando ideias para próxima atualização!
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.