コード例 #1
0
ファイル: Module.php プロジェクト: phirecms/phirecms
 /**
  * Finalize module install
  *
  * @param  string               $module
  * @param  string               $folder
  * @param  string               $modulesPath
  * @param  \Pop\Service\Locator $services
  * @return void
  */
 protected function finalizeInstall($module, $folder, $modulesPath, $services)
 {
     // Get module config and module info from config file
     $config = (include $modulesPath . '/' . $folder . '/config/module.php');
     $info = $this->getInfo(file_get_contents($modulesPath . '/' . $folder . '/config/module.php'));
     $name = key($config);
     $descName = '';
     if (isset($info['name'])) {
         $descName = $info['name'];
     } else {
         if (isset($info['Name'])) {
             $descName = $info['Name'];
         } else {
             if (isset($info['NAME'])) {
                 $descName = $info['NAME'];
             } else {
                 if (isset($info['module name'])) {
                     $descName = $info['module name'];
                 } else {
                     if (isset($info['Module Name'])) {
                         $descName = $info['Module Name'];
                     } else {
                         if (isset($info['MODULE NAME'])) {
                             $descName = $info['MODULE NAME'];
                         }
                     }
                 }
             }
         }
     }
     $info['Desc Name'] = $descName;
     if (isset($info['version'])) {
         $version = $info['version'];
     } else {
         if (isset($info['Version'])) {
             $version = $info['Version'];
         } else {
             if (isset($info['VERSION'])) {
                 $version = $info['VERSION'];
             } else {
                 $version = 'N/A';
             }
         }
     }
     // Get SQL, if exists
     $sqlType = strtolower(DB_INTERFACE == 'pdo' ? DB_TYPE : DB_INTERFACE);
     $sqlFile = $modulesPath . '/' . $folder . '/data/' . $name . '.' . $sqlType . '.sql';
     if (!file_exists($sqlFile)) {
         $sqlFile = null;
     }
     $tables = null !== $sqlFile ? $this->getTables(file_get_contents($sqlFile)) : [];
     // Save module in the database
     $mod = new Table\Modules(['file' => $module, 'folder' => $folder, 'name' => $name, 'prefix' => isset($config[$name]['prefix']) ? $config[$name]['prefix'] : '', 'version' => $version, 'active' => 1, 'order' => (int) Table\Modules::findAll()->count() + 1, 'assets' => serialize(['tables' => $tables, 'info' => $info]), 'installed_on' => date('Y-m-d H:i:s')]);
     $mod->save();
     $this->sendStats($name, $version);
     // Execute any SQL that came with the module
     if (null !== $sqlFile) {
         Db::install($sqlFile, ['database' => DB_NAME, 'username' => DB_USER, 'password' => DB_PASS, 'host' => DB_HOST, 'prefix' => DB_PREFIX, 'type' => DB_TYPE], ucfirst(strtolower(DB_INTERFACE)));
     }
     // Run any install functions
     if (isset($config[$name]) && isset($config[$name]['install']) && !empty($config[$name]['install'])) {
         call_user_func_array($config[$name]['install'], [$services]);
     }
 }
コード例 #2
0
ファイル: Config.php プロジェクト: phirecms/phirecms
 /**
  * Get update info
  *
  * @param  boolean $live
  * @return \ArrayObject
  */
 public function getUpdates($live = true)
 {
     $updates = ['phirecms' => null, 'modules' => []];
     if ($live) {
         $headers = ['Authorization: ' . base64_encode('phire-updater-' . time()), 'User-Agent: ' . (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:41.0) Gecko/20100101 Firefox/41.0')];
         $curl = new Curl('http://updates.phirecms.org/latest/phirecms', [CURLOPT_HTTPHEADER => $headers]);
         $curl->send();
         if ($curl->getCode() == 200) {
             $json = json_decode($curl->getBody(), true);
             $updates['phirecms'] = $json['version'];
         }
         $modules = Table\Modules::findAll();
         if ($modules->hasRows()) {
             foreach ($modules->rows() as $module) {
                 $curl = new Curl('http://updates.phirecms.org/latest/' . $module->name, [CURLOPT_HTTPHEADER => $headers]);
                 $curl->send();
                 if ($curl->getCode() == 200) {
                     $json = json_decode($curl->getBody(), true);
                     $updates['modules'][$module->name] = $json['version'];
                 }
             }
         }
     }
     return new \ArrayObject($updates, \ArrayObject::ARRAY_AS_PROPS);
 }
コード例 #3
0
 /**
  * Get module id
  *
  * @return int
  */
 protected function getModuleId()
 {
     $modules = Table\Modules::findAll()->rows();
     $module = new Model\Module();
     $new = $module->detectNew();
     $moduleIds = [];
     if ($new > 0) {
         $this->console->append('[' . $new . ' New Module' . ($new > 1 ? 's' : '') . ' Detected]' . PHP_EOL);
     }
     $this->console->append("ID  \tActive\t\tModule");
     $this->console->append("----\t------\t\t------");
     foreach ($modules as $module) {
         $moduleIds[] = $module->id;
         $this->console->append($module->id . "\t" . ($module->active ? 'Yes' : 'No') . "\t\t" . $module->folder);
     }
     $this->console->append();
     $this->console->send();
     $moduleId = null;
     while (!is_numeric($moduleId) || !in_array($moduleId, $moduleIds)) {
         $moduleId = $this->console->prompt($this->console->getIndent() . 'Select Module ID: ');
     }
     return $moduleId;
 }