예제 #1
0
 public function getPackageObject()
 {
     return Package::getByID($this->pkgID);
 }
예제 #2
0
 protected static function install($dir, $pThemeHandle, $pkgID)
 {
     $result = null;
     if (is_dir($dir)) {
         $pkg = null;
         if ($pkgID) {
             $pkg = \Concrete\Core\Package\Package::getByID($pkgID);
         }
         $db = Loader::db();
         $cnt = $db->getOne('select count(pThemeID) from PageThemes where pThemeHandle = ?', [$pThemeHandle]);
         if ($cnt > 0) {
             throw new \Exception(static::E_THEME_INSTALLED);
         }
         $loc = Localization::getInstance();
         $loc->pushActiveContext('system');
         try {
             $res = static::getThemeNameAndDescription($dir, $pThemeHandle, is_object($pkg) ? $pkg->getPackageHandle() : '');
         } catch (\Exception $x) {
             $loc->popActiveContext();
             throw $x;
         }
         $loc->popActiveContext();
         if (strlen($res->pError) === 0) {
             $pThemeName = $res->pThemeName;
             $pThemeDescription = $res->pThemeDescription;
             $db->query('insert into PageThemes (pThemeHandle, pThemeName, pThemeDescription, pkgID) values (?, ?, ?, ?)', [$pThemeHandle, $pThemeName, $pThemeDescription, $pkgID]);
             $env = Environment::get();
             $env->clearOverrideCache();
             $pt = static::getByID($db->Insert_ID());
             $pt->updateThemeCustomClass();
             $result = $pt;
         }
     }
     return $result;
 }
예제 #3
0
 /**
  * @return Package
  */
 public function install()
 {
     $cl = \Concrete\Core\Foundation\ClassLoader::getInstance();
     $cl->registerPackage($this);
     PackageList::refreshCache();
     $db = Loader::db();
     $dh = Loader::helper('date');
     $v = array($this->getPackageName(), $this->getPackageDescription(), $this->getPackageVersion(), $this->getPackageHandle(), 1, $dh->getOverridableNow());
     $db->query("insert into Packages (pkgName, pkgDescription, pkgVersion, pkgHandle, pkgIsInstalled, pkgDateInstalled) values (?, ?, ?, ?, ?, ?)", $v);
     $pkg = Package::getByID($db->Insert_ID());
     Package::installDB($pkg->getPackagePath() . '/' . FILENAME_PACKAGE_DB);
     $env = Environment::get();
     $env->clearOverrideCache();
     return $pkg;
 }
예제 #4
0
 public static function getByID($wfID)
 {
     $db = Loader::db();
     $r = $db->GetRow('select WorkflowTypes.wftHandle, WorkflowTypes.pkgID from Workflows inner join WorkflowTypes on Workflows.wftID = WorkflowTypes.wftID where Workflows.wfID = ?', array($wfID));
     if ($r['wftHandle']) {
         $class = '\\Core\\Workflow\\' . Loader::helper('text')->camelcase($r['wftHandle']) . 'Workflow';
         if ($r['pkgID']) {
             $pkg = Package::getByID($r['pkgID']);
             $prefix = $pkg->getPackageHandle();
         }
         $class = core_class($class, $prefix);
         $obj = Core::make($class);
         $obj->load($wfID);
         if ($obj->getWorkflowID() > 0) {
             $obj->loadDetails();
             return $obj;
         }
     }
 }
예제 #5
0
 /**
  * Installs the package info row and installs the database. Packages installing additional content should override this method, call the parent method,
  * and use the resulting package object for further installs.
  * @return Package
  */
 public function install()
 {
     PackageList::refreshCache();
     $db = Database::getActiveConnection();
     $dh = Core::make('helper/date');
     $v = array($this->getPackageName(), $this->getPackageDescription(), $this->getPackageVersion(), $this->getPackageHandle(), 1, $dh->getOverridableNow());
     $db->query("INSERT INTO Packages (pkgName, pkgDescription, pkgVersion, pkgHandle, pkgIsInstalled, pkgDateInstalled) VALUES (?, ?, ?, ?, ?, ?)", $v);
     $pkg = Package::getByID($db->lastInsertId());
     ClassLoader::getInstance()->registerPackage($pkg);
     $pkg->installDatabase();
     $env = Environment::get();
     $env->clearOverrideCache();
     Localization::clearCache();
     return $pkg;
 }