/** * {@inheritDoc} */ public function installAction() { if (empty($this->config)) { return; } $config = $this->canonizeConfig($this->config); if (empty($config['sqlfile'])) { return; } $module = $this->event->getParam('module'); $sqlFile = sprintf('%s/%s/%s', Pi::path('module'), $this->event->getParam('directory'), $config['sqlfile']); if (!file_exists($sqlFile)) { return array('status' => false, 'message' => sprintf('SQL file "%s" is not found.', $sqlFile)); } try { $status = SqlSchema::query($sqlFile, $module); } catch (\Exception $e) { return array('status' => false, 'message' => 'SQL schema query failed: ' . $e->getMessage()); } if (isset($config['schema'])) { $schemaList = $config['schema']; } else { $schemaList = SqlSchema::fetchSchema($sqlFile); } $modelSchema = Pi::model('module_schema'); foreach ($schemaList as $name => $type) { $status = $modelSchema->insert(array('name' => $name, 'type' => $type, 'module' => $module)); if (!$status) { return array('status' => false, 'message' => 'Module schema is not saved.'); } } return true; }
/** * Create system module data * * @param Event $e * @return bool */ public function createSystemSchema(Event $e) { $sqlFile = Pi::path('module') . '/system/sql/mysql.system.sql'; $status = SqlSchema::query($sqlFile); return $status; }