Ejemplo n.º 1
0
		/**
		 * Gets an array of BlockTypes for a given Package
		 * @param Package $pkg
		 * @return BlockType[]
		 */
		public static function getByPackage($pkg) {
			$db = Loader::db();
			$r = $db->Execute("select btID from BlockTypes where pkgID = ?", $pkg->getPackageID());
			$blockTypes = array();
			while ($row = $r->FetchRow()) {
				$blockTypes[] = BlockType::getByID($row['btID']);
			}
			return $blockTypes;
		}
Ejemplo n.º 2
0
 /**
  * @param Package $pkg
  * @return array
  */
 public static function getListByPackage($pkg)
 {
     $db = Loader::db();
     $upaIDs = $db->GetCol('select upaID from UserPointActions where pkgID = ? order by upaName asc', array($pkg->getPackageID()));
     $actions = array();
     foreach ($upaIDs as $upaID) {
         $action = static::getByID($upaID);
         if (is_object($action)) {
             $actions[] = $action;
         }
     }
     return $actions;
 }
 /**
  * Checks which package requirements do already exist in right version.
  * Returns a list with all existing requirements.
  * 
  * @return	array
  */
 public function getAllExistingRequirements()
 {
     $existingRequirements = array();
     $existingPackages = array();
     if ($this->package !== null) {
         $sql = "SELECT\t\tpackage.*, CASE WHEN instanceName <> '' THEN instanceName ELSE packageName END AS packageName\n\t\t\t\tFROM\t\twcf" . WCF_N . "_package_requirement requirement\n\t\t\t\tLEFT JOIN\twcf" . WCF_N . "_package package\n\t\t\t\tON\t\t(package.packageID = requirement.requirement)\n\t\t\t\tWHERE\t\trequirement.packageID = " . $this->package->getPackageID();
         $result = WCF::getDB()->sendQuery($sql);
         while ($row = WCF::getDB()->fetchArray($result)) {
             $existingRequirements[$row['package']] = $row;
         }
     }
     // build sql
     $packageNames = '';
     $requirements = $this->getRequirements();
     foreach ($requirements as $requirement) {
         if (isset($existingRequirements[$requirement['name']])) {
             $existingPackages[$requirement['name']] = array();
             $existingPackages[$requirement['name']][$existingRequirements[$requirement['name']]['packageID']] = $existingRequirements[$requirement['name']];
         } else {
             if (!empty($packageNames)) {
                 $packageNames .= ',';
             }
             $packageNames .= "'" . escapeString($requirement['name']) . "'";
         }
     }
     // check whether the required packages do already exist
     if (!empty($packageNames)) {
         $sql = "SELECT \tpackage.*, CASE WHEN instanceName <> '' THEN instanceName ELSE packageName END AS packageName\n\t\t\t\tFROM\twcf" . WCF_N . "_package package\n\t\t\t\tWHERE\tpackage.package IN (" . $packageNames . ")";
         $result = WCF::getDB()->sendQuery($sql);
         while ($row = WCF::getDB()->fetchArray($result)) {
             // check required package version
             if (isset($requirements[$row['package']]['minversion']) && Package::compareVersion($row['packageVersion'], $requirements[$row['package']]['minversion']) == -1) {
                 continue;
             }
             if (!isset($existingPackages[$row['package']])) {
                 $existingPackages[$row['package']] = array();
             }
             $existingPackages[$row['package']][$row['packageID']] = $row;
         }
     }
     return $existingPackages;
 }
Ejemplo n.º 4
0
 /**
  * @param \Package $pkg
  *
  * @return Library[]
  */
 public static function getListByPackage($pkg)
 {
     $db = Loader::db();
     $saslHandles = $db->GetCol('select saslHandle from SystemAntispamLibraries where pkgID = ? order by saslHandle asc', array($pkg->getPackageID()));
     $libraries = array();
     foreach ($saslHandles as $saslHandle) {
         $sasl = static::getByHandle($saslHandle);
         $libraries[] = $sasl;
     }
     return $libraries;
 }
Ejemplo n.º 5
0
 /**
  * @param \Package $pkg A Concrete5 Package object
  * @return array
  */
 public static function getListByPackage($pkg)
 {
     $list = array();
     $categories = Database::connection()->fetchAll('SELECT akCategoryID
         FROM AttributeKeyCategories
         WHERE pkgID = ?
         ORDER BY akCategoryID ASC', array($pkg->getPackageID()));
     foreach ($categories as $cat) {
         $list[] = static::getByID($cat['akCategoryID']);
     }
     return $list;
 }
 /**
  * Adds an uninstall entry to the package installation queue.
  * 
  * @param	Package		$package
  * @param	array		$packages
  */
 public static function addQueueEntries(Package $package, $packages = array())
 {
     // get new process no
     $processNo = PackageInstallationQueue::getNewProcessNo();
     // add dependent packages to queue
     $inserts = '';
     $userID = WCF::getUser()->userID;
     foreach ($packages as $dependentPackage) {
         if (!empty($inserts)) {
             $inserts .= ',';
         }
         $inserts .= "(" . $processNo . ", " . $userID . ", '" . escapeString($dependentPackage['packageName']) . "', " . $dependentPackage['packageID'] . ", 'uninstall')";
     }
     // add uninstalling package to queue
     if (!empty($inserts)) {
         $inserts .= ',';
     }
     $inserts .= "(" . $processNo . ", " . $userID . ", '" . escapeString($package->getName()) . "', " . $package->getPackageID() . ", 'uninstall')";
     // insert queue entry (entries)
     $sql = "INSERT INTO\twcf" . WCF_N . "_package_installation_queue\n\t\t\t\t\t(processNo, userID, package, packageID, action)\n\t\t\tVALUES\t\t" . $inserts;
     WCF::getDB()->sendQuery($sql);
     // open queue
     HeaderUtil::redirect('index.php?page=Package&action=openQueue&processNo=' . $processNo . '&packageID=' . PACKAGE_ID . SID_ARG_2ND_NOT_ENCODED);
     exit;
 }
Ejemplo n.º 7
0
 /**
  * Return an array of AuthenticationTypes that are associated with a specific package.
  * @param \Package $pkg
  * @return \Concrete\Core\File\StorageLocation\Type\Type[]
  */
 public static function getListByPackage(\Package $pkg)
 {
     $em = \ORM::entityManager('core');
     return $em->getRepository('\\Concrete\\Core\\File\\StorageLocation\\Type\\Type')->findBy(array('pkgID' => $pkg->getPackageID()), array('fslTypeID' => 'asc'));
 }
Ejemplo n.º 8
0
		/**
		 * installs a new BlockType from a package, 
		 * typicaly called from a package controller's install() method durring package installation 
		 * @todo Documentation how is the btID used, if you want to reserve/specify a btID??
		 * @param string $btHandle the block Type's handle
		 * @param Package $pkg
		 * @param int $btID if it's an existing block type
		 * @return void|string error message
		 */
		public function installBlockTypeFromPackage($btHandle, $pkg, $btID = 0) {
			$dir1 = DIR_PACKAGES . '/' . $pkg->getPackageHandle() . '/' . DIRNAME_BLOCKS;
			$dir2 = DIR_PACKAGES_CORE . '/' . $pkg->getPackageHandle() . '/' . DIRNAME_BLOCKS;
			
			if (file_exists($dir1)) {
				$dir = $dir1;
				$dirDbXml = $dir;
			} else {
				$dir = $dir2;
				$dirDbXml = $dir;
			}

			// now we check to see if it's been overridden in the site root and if so we do it there
			if ($btID > 0) { 
				// this is only necessary when it's an existing refresh
				if (file_exists(DIR_FILES_BLOCK_TYPES . '/' . $btHandle . '/' . FILENAME_BLOCK_CONTROLLER)) {
					$dir = DIR_FILES_BLOCK_TYPES;
				}
				if (file_exists(DIR_FILES_BLOCK_TYPES . '/' . $btHandle . '/' . FILENAME_BLOCK_DB)) {
					$dirDbXml = DIR_FILES_BLOCK_TYPES;
				}
			}
			
			$bt = new BlockType;
			$bt->btHandle = $btHandle;
			$bt->pkgHandle = $pkg->getPackageHandle();
			$bt->pkgID = $pkg->getPackageID();
			return BlockType::doInstallBlockType($btHandle, $bt, $dir, $btID, $dirDbXml);
		}
Ejemplo n.º 9
0
 /**
  * Return an array of AuthenticationTypes that are associated with a specific package.
  * @param \Package $pkg
  * @return \Concrete\Core\File\StorageLocation\Type\Type[]
  */
 public static function getListByPackage(\Package $pkg)
 {
     $db = Database::get();
     $em = $db->getEntityManager();
     return $em->getRepository('\\Concrete\\Core\\File\\StorageLocation\\Type\\Type')->findBy(array('pkgID' => $pkg->getPackageID()), array('fslTypeID' => 'asc'));
 }
Ejemplo n.º 10
0
 /**
  * Writes the config.inc.php for a standalone application.
  * 
  * @param	integer		$packageID
  */
 public static function writeConfigFile($packageID)
 {
     $package = new Package($packageID);
     $packageDir = FileUtil::addTrailingSlash(FileUtil::getRealPath(WCF_DIR . $package->getDir()));
     $file = new File($packageDir . PackageInstallation::CONFIG_FILE);
     $file->write("<?php\n");
     $currentPrefix = strtoupper($package->getAbbreviation());
     // get dependencies (only standalones)
     $sql = "SELECT\t\tpackage.*, IF(package.packageID = " . $packageID . ", 1, 0) AS sortOrder\n\t\t\tFROM\t\twcf" . WCF_N . "_package_dependency package_dependency\n\t\t\tLEFT JOIN\twcf" . WCF_N . "_package package\n\t\t\tON\t\t(package.packageID = package_dependency.dependency)\n\t\t\tWHERE\t\tpackage_dependency.packageID = " . $packageID . "\n\t\t\t\t\tAND package.standalone = 1\n\t\t\t\t\tAND package.packageDir <> ''\n\t\t\tORDER BY\tsortOrder DESC,\n\t\t\t\t\tpackage_dependency.priority DESC";
     $result = WCF::getDB()->sendQuery($sql);
     while ($row = WCF::getDB()->fetchArray($result)) {
         $dependency = new Package(null, $row);
         $dependencyDir = FileUtil::addTrailingSlash(FileUtil::getRealPath(WCF_DIR . $dependency->getDir()));
         $prefix = strtoupper($dependency->getAbbreviation());
         $file->write("// " . $dependency->getPackage() . " vars\n");
         $file->write("// " . strtolower($prefix) . "\n");
         $file->write("if (!defined('" . $prefix . "_DIR')) define('" . $prefix . "_DIR', " . ($dependency->getPackageID() == $package->getPackageID() ? "dirname(__FILE__).'/'" : "'" . $dependencyDir . "'") . ");\n");
         $file->write("if (!defined('RELATIVE_" . $prefix . "_DIR')) define('RELATIVE_" . $prefix . "_DIR', " . ($dependency->getPackageID() == $package->getPackageID() ? "''" : "RELATIVE_" . $currentPrefix . "_DIR.'" . FileUtil::getRelativePath($packageDir, $dependencyDir) . "'") . ");\n");
         $file->write("if (!defined('" . $prefix . "_N')) define('" . $prefix . "_N', '" . WCF_N . "_" . $dependency->getInstanceNo() . "');\n");
         $file->write("\$packageDirs[] = " . $prefix . "_DIR;\n");
         $file->write("\n");
     }
     // write general information
     $file->write("// general info\n");
     $file->write("if (!defined('RELATIVE_WCF_DIR'))\tdefine('RELATIVE_WCF_DIR', RELATIVE_" . $currentPrefix . "_DIR.'" . FileUtil::getRelativePath($packageDir, WCF_DIR) . "');\n");
     $file->write("if (!defined('PACKAGE_ID')) define('PACKAGE_ID', " . $package->getPackageID() . ");\n");
     $file->write("if (!defined('PACKAGE_NAME')) define('PACKAGE_NAME', '" . str_replace("'", "\\'", $package->getName()) . "');\n");
     $file->write("if (!defined('PACKAGE_VERSION')) define('PACKAGE_VERSION', '" . $package->getVersion() . "');\n");
     // write end
     $file->write("?>");
     $file->close();
 }