本文整理汇总了PHP中modX::getTableName方法的典型用法代码示例。如果您正苦于以下问题:PHP modX::getTableName方法的具体用法?PHP modX::getTableName怎么用?PHP modX::getTableName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类modX
的用法示例。
在下文中一共展示了modX::getTableName方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: collectUserCaches
/**
* Get the cache of Users and User Groups from the Discuss database
* @return boolean
*/
protected function collectUserCaches()
{
$this->log('Collecting User cache...');
$userTable = $this->modx->getTableName('disUser');
$stmt = $this->modx->query('SELECT id,username,integrated_id FROM ' . $userTable . ' ORDER BY username ASC');
if ($stmt) {
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$this->memberCache[$row['integrated_id']] = $row['id'];
$this->memberNameCache[$row['integrated_id']] = $row['username'];
}
$stmt->closeCursor();
}
$this->log('Collecting User Group cache...');
$userGroupTable = $this->modx->getTableName('disUserGroupProfile');
$stmt = $this->modx->query('SELECT id,name,integrated_id FROM ' . $userGroupTable . ' ORDER BY name ASC');
if ($stmt) {
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$this->memberGroupCache[$row['integrated_id']] = $row['id'];
}
$stmt->closeCursor();
}
return true;
}
示例2: loadAttributes
/**
* Load the attributes for the ACLs for the context
*
* @static
* @param modX $modx A reference to the modX instance
* @param string $context The context to load from. If empty, will use the current context.
* @param int $userId The ID of the user to grab ACL records for.
* @return array An array of loaded attributes
*/
public static function loadAttributes(&$modx, $context = '', $userId = 0)
{
$attributes = array();
$accessTable = $modx->getTableName('modAccessNamespace');
$policyTable = $modx->getTableName('modAccessPolicy');
$memberTable = $modx->getTableName('modUserGroupMember');
$memberRoleTable = $modx->getTableName('modUserGroupRole');
if ($userId > 0) {
$sql = "SELECT acl.target, acl.principal, mr.authority, acl.policy, p.data FROM {$accessTable} acl " . "LEFT JOIN {$policyTable} p ON p.id = acl.policy " . "JOIN {$memberTable} mug ON acl.principal_class = 'modUserGroup' " . "AND mug.member = :principal " . "AND mug.user_group = acl.principal " . "JOIN {$memberRoleTable} mr ON mr.id = mug.role " . "AND mr.authority <= acl.authority " . "ORDER BY acl.target, acl.principal, mr.authority, acl.policy";
$bindings = array(':principal' => $userId);
$query = new xPDOCriteria($modx, $sql, $bindings);
if ($query->stmt && $query->stmt->execute()) {
while ($row = $query->stmt->fetch(PDO::FETCH_ASSOC)) {
$attributes[$row['target']][] = array('principal' => $row['principal'], 'authority' => $row['authority'], 'policy' => $row['data'] ? $modx->fromJSON($row['data'], true) : array());
}
}
} else {
$sql = "SELECT acl.target, acl.principal, 0 AS authority, acl.policy, p.data FROM {$accessTable} acl " . "LEFT JOIN {$policyTable} p ON p.id = acl.policy " . "WHERE acl.principal_class = 'modUserGroup' " . "AND acl.principal = 0 " . "ORDER BY acl.target, acl.principal, acl.authority, acl.policy";
$query = new xPDOCriteria($modx, $sql);
if ($query->stmt && $query->stmt->execute()) {
while ($row = $query->stmt->fetch(PDO::FETCH_ASSOC)) {
$attributes[$row['target']][] = array('principal' => 0, 'authority' => $row['authority'], 'policy' => $row['data'] ? $modx->fromJSON($row['data'], true) : array());
}
}
}
return $attributes;
}
示例3: move
/**
* Move a thread to a new board
*
* @param int $boardId
* @return boolean True if successful
*/
public function move($boardId)
{
$oldBoard = $this->getOne('Board');
$newBoard = is_object($boardId) && $boardId instanceof disBoard ? $boardId : $this->xpdo->getObject('disBoard', $boardId);
if (!$oldBoard || !$newBoard) {
return false;
}
$this->addOne($newBoard);
if ($this->save()) {
/* readjust all posts */
$posts = $this->getMany('Posts');
foreach ($posts as $post) {
$post->set('board', $newBoard->get('id'));
$post->save();
}
/* adjust old board topics/reply counts */
$oldBoard->set('num_topics', $oldBoard->get('num_topics') - 1);
$replies = $oldBoard->get('num_replies') - $this->get('replies');
$oldBoard->set('num_replies', $replies);
$total_posts = $oldBoard->get('total_posts') - $this->get('replies') - 1;
$oldBoard->set('total_posts', $total_posts);
/* recalculate latest post */
$oldBoardLastPost = $this->xpdo->getObject('disPost', array('id' => $oldBoard->get('last_post')));
if ($oldBoardLastPost && $oldBoardLastPost->get('id') == $this->get('post_last')) {
$newLastPost = $oldBoard->get2ndLatestPost();
if ($newLastPost) {
$oldBoard->set('last_post', $newLastPost->get('id'));
$oldBoard->addOne($newLastPost, 'LastPost');
}
}
$oldBoard->save();
/* adjust new board topics/reply counts */
$newBoard->set('num_topics', $oldBoard->get('num_topics') - 1);
$replies = $newBoard->get('num_replies') + $this->get('replies');
$newBoard->set('num_replies', $replies);
$total_posts = $newBoard->get('total_posts') + $this->get('replies') + 1;
$newBoard->set('total_posts', $total_posts);
/* recalculate latest post */
$newBoardLastPost = $this->xpdo->getObject('disPost', array('id' => $newBoard->get('last_post')));
$thisThreadPost = $this->getOne('LastPost');
if ($newBoardLastPost && $thisThreadPost && $newBoardLastPost->get('createdon') < $thisThreadPost->get('createdon')) {
$newBoard->set('last_post', $thisThreadPost->get('id'));
$newBoard->addOne($thisThreadPost, 'LastPost');
}
$newBoard->save();
/* Update ThreadRead board field */
$this->xpdo->exec('UPDATE ' . $this->xpdo->getTableName('disThreadRead') . '
SET ' . $this->xpdo->escape('board') . ' = ' . $newBoard->get('id') . '
WHERE ' . $this->xpdo->escape('thread') . ' = ' . $this->get('id') . '
');
/* clear caches */
if (!defined('DISCUSS_IMPORT_MODE')) {
$this->xpdo->getCacheManager();
$this->xpdo->cacheManager->delete('discuss/thread/' . $this->get('id'));
$this->xpdo->cacheManager->delete('discuss/board/' . $newBoard->get('id'));
$this->xpdo->cacheManager->delete('discuss/board/' . $oldBoard->get('id'));
}
}
return true;
}
示例4: listPackages
public static function listPackages(modX &$modx, $workspace, $limit = 0, $offset = 0) {
$result = array('collection' => array(), 'total' => 0);
$c = $modx->newQuery('transport.modTransportPackage');
$c->leftJoin('transport.modTransportProvider','Provider', array("modTransportPackage.provider = Provider.id"));
$c->where(array(
'workspace' => $workspace,
));
$c->where(array(
"(SELECT TOP 1
latestPackage.signature
FROM {$modx->getTableName('modTransportPackage')} AS latestPackage
WHERE latestPackage.package_name = modTransportPackage.package_name
ORDER BY
latestPackage.version_major DESC,
latestPackage.version_minor DESC,
latestPackage.version_patch DESC,
CASE WHEN latestPackage.release = '' OR latestPackage.release = 'ga' OR latestPackage.release = 'pl' THEN 'z' ELSE latestPackage.release END DESC,
latestPackage.release_index DESC
) = modTransportPackage.signature",
));
$result['total'] = $modx->getCount('modTransportPackage',$c);
$c->select(array(
'modTransportPackage.*',
));
$c->select('Provider.name AS provider_name');
$c->sortby('modTransportPackage.signature', 'ASC');
if ($limit > 0) $c->limit($limit, $offset);
$result['collection'] = $modx->getCollection('transport.modTransportPackage',$c);
return $result;
}
示例5: getTagged
/**
* Gets matching resources by tags. This is adapted function from miniShop1 for backward compatibility
* @deprecated
*
* @param array $tags Tags for search
* @param int $only_ids Return only ids of matched resources
* @param int $strict 0 - goods must have at least one specified tag
* 1 - goods must have all specified tags, but can have more
* 2 - goods must have exactly the same tags.
* @return array $ids Or array with resources with data and tags
*/
function getTagged($tags = array(), $strict = 0, $only_ids = 0)
{
if (!is_array($tags)) {
$tags = explode(',', $tags);
}
$q = $this->modx->newQuery('msProductOption', array('key' => 'tags', 'value:IN' => $tags));
$q->select('product_id');
$ids = array();
if ($q->prepare() && $q->stmt->execute()) {
$ids = $q->stmt->fetchAll(PDO::FETCH_COLUMN);
}
$ids = array_unique($ids);
// If needed only ids of not strictly mathed items - return.
if (!$strict && $only_ids) {
return $ids;
}
// Filtering ids
$count = count($tags);
/* @var PDOStatement $stmt*/
if ($strict) {
foreach ($ids as $key => $product_id) {
if ($strict > 1) {
$sql = "SELECT COUNT(*) FROM {$this->modx->getTableName('msProductOption')} WHERE `product_id` = {$product_id} AND `key` = 'tags';";
$stmt = $this->modx->prepare($sql);
$stmt->execute();
if ($stmt->fetch(PDO::FETCH_COLUMN) != $count) {
unset($ids[$key]);
continue;
}
}
foreach ($tags as $tag) {
$sql = "SELECT COUNT(`product_id`) FROM {$this->modx->getTableName('msProductOption')} WHERE `product_id` = {$product_id} AND `key` = 'tags' AND `value` = '{$tag}';";
$stmt = $this->modx->prepare($sql);
$stmt->execute();
if (!$stmt->fetch(PDO::FETCH_COLUMN)) {
unset($ids[$key]);
break;
}
}
}
}
// Return strictly ids, if needed
$ids = array_unique($ids);
if ($only_ids) {
return $ids;
}
// Process results
$data = array();
foreach ($ids as $id) {
if (!$only_ids) {
if ($res = $this->modx->getObject('msProduct', $id)) {
$data[$id] = $res->toArray();
}
}
}
return $data;
}
示例6: loadAttributes
/**
* Load the attributes for the ACLs for the Resource Group
*
* @static
* @param modX $modx A reference to the modX instance
* @param string $context The context to load from. If empty, will use the current context.
* @param int $userId The ID of the user to grab ACL records for.
* @return array An array of loaded attributes
*/
public static function loadAttributes(&$modx, $context = '', $userId = 0)
{
$attributes = array();
if (empty($context)) {
$context = $modx->context->get('key');
}
$enabled = (bool) $modx->getOption('access_resource_group_enabled', null, true);
if ($context !== $modx->context->get('key') && $modx->getContext($context)) {
$enabled = (bool) $modx->contexts[$context]->getOption('access_resource_group_enabled', $enabled);
}
if ($enabled) {
$accessTable = $modx->getTableName('modAccessResourceGroup');
$policyTable = $modx->getTableName('modAccessPolicy');
$memberTable = $modx->getTableName('modUserGroupMember');
$memberRoleTable = $modx->getTableName('modUserGroupRole');
$legacyDocGroups = array();
if ($userId > 0) {
$sql = "SELECT acl.target, acl.principal, mr.authority, acl.policy, p.data FROM {$accessTable} acl " . "LEFT JOIN {$policyTable} p ON p.id = acl.policy " . "JOIN {$memberTable} mug ON acl.principal_class = 'modUserGroup' " . "AND (acl.context_key = :context OR acl.context_key IS NULL OR acl.context_key = '') " . "AND mug.member = :principal " . "AND mug.user_group = acl.principal " . "JOIN {$memberRoleTable} mr ON mr.id = mug.role " . "AND mr.authority <= acl.authority " . "ORDER BY acl.target, acl.principal, mr.authority, acl.policy";
$bindings = array(':principal' => $userId, ':context' => $context);
$query = new xPDOCriteria($modx, $sql, $bindings);
if ($query->stmt && $query->stmt->execute()) {
while ($row = $query->stmt->fetch(PDO::FETCH_ASSOC)) {
$attributes[$row['target']][] = array('principal' => $row['principal'], 'authority' => $row['authority'], 'policy' => $row['data'] ? $modx->fromJSON($row['data'], true) : array());
$legacyDocGroups[$row['target']] = $row['target'];
}
}
} else {
$sql = "SELECT acl.target, acl.principal, 0 AS authority, acl.policy, p.data FROM {$accessTable} acl " . "LEFT JOIN {$policyTable} p ON p.id = acl.policy " . "WHERE acl.principal_class = 'modUserGroup' " . "AND acl.principal = 0 " . "AND (acl.context_key = :context OR acl.context_key IS NULL OR acl.context_key = '') " . "ORDER BY acl.target, acl.principal, acl.authority, acl.policy";
$bindings = array(':context' => $context);
$query = new xPDOCriteria($modx, $sql, $bindings);
if ($query->stmt && $query->stmt->execute()) {
while ($row = $query->stmt->fetch(PDO::FETCH_ASSOC)) {
$attributes[$row['target']][] = array('principal' => 0, 'authority' => $row['authority'], 'policy' => $row['data'] ? $modx->fromJSON($row['data'], true) : array());
$legacyDocGroups[$row['target']] = $row['target'];
}
}
}
$_SESSION['modx.user.' . ($userId > 0 ? (string) $userId : '0') . '.resourceGroups'] = array($context => array_values($legacyDocGroups));
}
return $attributes;
}
示例7: getnum
/**
* Return current number of order
*
* @return string
*/
public function getnum()
{
$table = $this->modx->getTableName('msOrder');
$cur = date('ym');
$sql = $this->modx->query("SELECT `num` FROM {$table} WHERE `num` LIKE '{$cur}%' ORDER BY `id` DESC LIMIT 1");
$num = $sql->fetch(PDO::FETCH_COLUMN);
if (empty($num)) {
$num = date('ym') . '/0';
}
$num = explode('/', $num);
$num = $cur . '/' . ($num[1] + 1);
return $num;
}
示例8: updateChildrenURIs
/**
* Update all Articles URIs to reflect the new blog alias
*
* @param string $newAlias
* @param string $oldAlias
* @return bool
*/
public function updateChildrenURIs($newAlias, $oldAlias)
{
$useMultiByte = $this->getOption('use_multibyte', null, false) && function_exists('mb_strlen');
$encoding = $this->getOption('modx_charset', null, 'UTF-8');
$oldAliasLength = ($useMultiByte ? mb_strlen($oldAlias, $encoding) : strlen($oldAlias)) + 1;
$uriField = $this->xpdo->escape('uri');
$sql = 'UPDATE ' . $this->xpdo->getTableName('Article') . '
SET ' . $uriField . ' = CONCAT("' . $newAlias . '",SUBSTRING(' . $uriField . ',' . $oldAliasLength . '))
WHERE
' . $this->xpdo->escape('parent') . ' = ' . $this->get('id') . '
AND SUBSTRING(' . $uriField . ',1,' . $oldAliasLength . ') = "' . $oldAlias . '/"';
$this->xpdo->log(xPDO::LOG_LEVEL_DEBUG, $sql);
$this->xpdo->exec($sql);
return true;
}
示例9: rankResourceImages
/**
* @param $resource_id
*/
public function rankResourceImages($resource_id)
{
$q = $this->modx->newQuery('msResourceFile', array('resource_id' => $resource_id, 'parent' => 0, 'type' => 'image'));
$q->select('id');
$q->sortby('rank ASC, createdon', 'ASC');
if ($q->prepare() && $q->stmt->execute()) {
$sql = '';
$table = $this->modx->getTableName('msResourceFile');
if ($ids = $q->stmt->fetchAll(PDO::FETCH_COLUMN)) {
foreach ($ids as $k => $id) {
$sql .= "UPDATE {$table} SET `rank` = '{$k}' WHERE `type` = 'image' AND (`id` = '{$id}' OR `parent` = '{$id}');";
}
}
$sql .= "ALTER TABLE {$table} ORDER BY `rank` ASC;";
$this->modx->exec($sql);
}
}
示例10: findPolicy
/**
* Loads the access control policies applicable to this template variable.
*
* {@inheritdoc}
*/
public function findPolicy($context = '')
{
$policy = array();
$context = !empty($context) ? $context : $this->xpdo->context->get('key');
if ($context === $this->xpdo->context->get('key')) {
$catEnabled = (bool) $this->xpdo->getOption('access_category_enabled', null, true);
$rgEnabled = (bool) $this->xpdo->getOption('access_resource_group_enabled', null, true);
} elseif ($this->xpdo->getContext($context)) {
$catEnabled = (bool) $this->xpdo->contexts[$context]->getOption('access_category_enabled', true);
$rgEnabled = (bool) $this->xpdo->contexts[$context]->getOption('access_resource_group_enabled', true);
}
$enabled = $catEnabled || $rgEnabled;
if ($enabled) {
if (empty($this->_policies) || !isset($this->_policies[$context])) {
if ($rgEnabled) {
$accessTable = $this->xpdo->getTableName('modAccessResourceGroup');
$policyTable = $this->xpdo->getTableName('modAccessPolicy');
$resourceGroupTable = $this->xpdo->getTableName('modTemplateVarResourceGroup');
$sql = "SELECT Acl.target, Acl.principal, Acl.authority, Acl.policy, Policy.data FROM {$accessTable} Acl " . "LEFT JOIN {$policyTable} Policy ON Policy.id = Acl.policy " . "JOIN {$resourceGroupTable} ResourceGroup ON Acl.principal_class = 'modUserGroup' " . "AND (Acl.context_key = :context OR Acl.context_key IS NULL OR Acl.context_key = '') " . "AND ResourceGroup.tmplvarid = :element " . "AND ResourceGroup.documentgroup = Acl.target " . "ORDER BY Acl.target, Acl.principal, Acl.authority";
$bindings = array(':element' => $this->get('id'), ':context' => $context);
$query = new xPDOCriteria($this->xpdo, $sql, $bindings);
if ($query->stmt && $query->stmt->execute()) {
while ($row = $query->stmt->fetch(PDO::FETCH_ASSOC)) {
$policy['modAccessResourceGroup'][$row['target']][] = array('principal' => $row['principal'], 'authority' => $row['authority'], 'policy' => $row['data'] ? $this->xpdo->fromJSON($row['data'], true) : array());
}
}
}
if ($catEnabled) {
$accessTable = $this->xpdo->getTableName('modAccessCategory');
$categoryClosureTable = $this->xpdo->getTableName('modCategoryClosure');
$sql = "SELECT Acl.target, Acl.principal, Acl.authority, Acl.policy, Policy.data FROM {$accessTable} Acl " . "LEFT JOIN {$policyTable} Policy ON Policy.id = Acl.policy " . "JOIN {$categoryClosureTable} CategoryClosure ON CategoryClosure.descendant = :category " . "AND Acl.principal_class = 'modUserGroup' " . "AND CategoryClosure.ancestor = Acl.target " . "AND (Acl.context_key = :context OR Acl.context_key IS NULL OR Acl.context_key = '') " . "ORDER BY CategoryClosure.depth DESC, target, principal, authority ASC";
$bindings = array(':category' => $this->get('category'), ':context' => $context);
$query = new xPDOCriteria($this->xpdo, $sql, $bindings);
if ($query->stmt && $query->stmt->execute()) {
while ($row = $query->stmt->fetch(PDO::FETCH_ASSOC)) {
$policy['modAccessCategory'][$row['target']][] = array('principal' => $row['principal'], 'authority' => $row['authority'], 'policy' => $row['data'] ? $this->xpdo->fromJSON($row['data'], true) : array());
}
}
}
$this->_policies[$context] = $policy;
} else {
$policy = $this->_policies[$context];
}
}
return $policy;
}
示例11: listPackages
public static function listPackages(modX &$modx, $workspace, $limit = 0, $offset = 0, $search = '')
{
$result = array('collection' => array(), 'total' => 0);
$c = $modx->newQuery('transport.modTransportPackage');
$c->leftJoin('transport.modTransportProvider', 'Provider', array("modTransportPackage.provider = Provider.id"));
$c->where(array('workspace' => $workspace));
$c->where(array("(SELECT\n `signature`\n FROM {$modx->getTableName('modTransportPackage')} AS `latestPackage`\n WHERE `latestPackage`.`package_name` = `modTransportPackage`.`package_name`\n ORDER BY\n `latestPackage`.`version_major` DESC,\n `latestPackage`.`version_minor` DESC,\n `latestPackage`.`version_patch` DESC,\n IF(`release` = '' OR `release` = 'ga' OR `release` = 'pl','z',IF(`release` = 'dev','a',`release`)) DESC,\n `latestPackage`.`release_index` DESC\n LIMIT 1) = `modTransportPackage`.`signature`"));
if (!empty($search)) {
$c->where(array('modTransportPackage.signature:LIKE' => '%' . $search . '%', 'OR:modTransportPackage.package_name:LIKE' => '%' . $search . '%'));
}
$result['total'] = $modx->getCount('modTransportPackage', $c);
$c->select(array('modTransportPackage.*'));
$c->select('`Provider`.`name` AS `provider_name`');
$c->sortby('`modTransportPackage`.`signature`', 'ASC');
if ($limit > 0) {
$c->limit($limit, $offset);
}
$result['collection'] = $modx->getCollection('transport.modTransportPackage', $c);
return $result;
}
示例12: rankResourceImages
/**
* Accurate sorting of resource files
*
* @param $resource_id
*/
public function rankResourceImages($resource_id)
{
if (!$this->modx->getOption('ms2gallery_exact_sorting', null, true, true)) {
return;
}
$q = $this->modx->newQuery('msResourceFile', array('resource_id' => $resource_id, 'parent' => 0));
$q->select('id');
$q->sortby('rank ASC, createdon', 'ASC');
if ($q->prepare() && $q->stmt->execute()) {
$sql = '';
$table = $this->modx->getTableName('msResourceFile');
if ($ids = $q->stmt->fetchAll(PDO::FETCH_COLUMN)) {
foreach ($ids as $k => $id) {
$sql .= "UPDATE {$table} SET `rank` = '{$k}' WHERE (`id` = {$id} OR `parent` = {$id});";
}
}
$sql .= "ALTER TABLE {$table} ORDER BY `rank` ASC;";
$this->modx->exec($sql);
}
}
示例13: process
//.........这里部分代码省略.........
$sourceBasePath = str_replace('\\', '/', substr($source, strpos($source, ':') + 1));
}
$target = 'dirname(MODX_BASE_PATH) . "/sources/' . ltrim(dirname($sourceBasePath), '/') . '/"';
$classAttributes['resolve'][] = array('type' => 'file', 'source' => $source, 'target' => "return {$target};");
$classAttributes['resolve'][] = array('type' => 'php', 'source' => VAPOR_DIR . 'scripts/resolve.media_source.php', 'target' => $sourceBasePath, 'targetRelative' => false, 'targetPrepend' => "return dirname(MODX_BASE_PATH) . '/sources/';");
}
}
}
if ($package->put($object, $classAttributes)) {
$instances++;
} else {
$modx->log(modX::LOG_LEVEL_WARN, "Could not package {$class} instance with pk: " . print_r($object->getPrimaryKey(), true));
}
}
$modx->log(modX::LOG_LEVEL_INFO, "Packaged {$instances} of {$class}");
continue 2;
default:
break;
}
/** @var xPDOObject $object */
foreach ($modx->getIterator($class, $classCriteria) as $object) {
if ($package->put($object, $classAttributes)) {
$instances++;
} else {
$modx->log(modX::LOG_LEVEL_WARN, "Could not package {$class} instance with pk: " . print_r($object->getPrimaryKey(), true));
}
}
$modx->log(modX::LOG_LEVEL_INFO, "Packaged {$instances} of {$class}");
}
/* collect table names from classes and grab any additional tables/data not listed */
$coreTables = array();
$extraTables = array();
foreach ($classes as $class) {
$coreTables[$class] = $modx->quote($modx->literal($modx->getTableName($class)));
}
if ($coreTables) {
$stmt = $modx->query("SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = '{$modxDatabase}' AND TABLE_NAME NOT IN (" . implode(',', $coreTables) . ")");
$extraTables = $stmt->fetchAll(PDO::FETCH_COLUMN);
}
if (is_array($extraTables) && !empty($extraTables)) {
//$modx->loadClass('vapor.vaporVehicle', VAPOR_DIR . 'model/', true, true);
$modx->loadClass('vapor.vaporVehicle', VAPOR_DIR, true, true);
$excludeExtraTablePrefix = isset($vaporOptions['excludeExtraTablePrefix']) && is_array($vaporOptions['excludeExtraTablePrefix']) ? $vaporOptions['excludeExtraTablePrefix'] : array();
$excludeExtraTables = isset($vaporOptions['excludeExtraTables']) && is_array($vaporOptions['excludeExtraTables']) ? $vaporOptions['excludeExtraTables'] : array();
foreach ($extraTables as $extraTable) {
if (in_array($extraTable, $excludeExtraTables)) {
continue;
}
if (!XPDO_CLI_MODE && !ini_get('safe_mode')) {
set_time_limit(0);
}
$instances = 0;
$object = array();
$attributes = array('vehicle_package' => 'vapor', 'vehicle_class' => 'vaporVehicle');
/* remove modx table_prefix if table starts with it */
$extraTableName = $extraTable;
if (!empty($modxTablePrefix) && strpos($extraTableName, $modxTablePrefix) === 0) {
$extraTableName = substr($extraTableName, strlen($modxTablePrefix));
$addTablePrefix = true;
} elseif (!empty($modxTablePrefix) || in_array($extraTableName, $excludeExtraTablePrefix)) {
$addTablePrefix = false;
} else {
$addTablePrefix = true;
}
$object['tableName'] = $extraTableName;
$modx->log(modX::LOG_LEVEL_INFO, "Extracting non-core table {$extraTableName}");
示例14: findPolicy
/**
* Find all policies for this object
*
* @param string $context
* @return array
*/
public function findPolicy($context = '')
{
$policy = array();
$enabled = true;
$context = 'mgr';
if ($context === $this->xpdo->context->get('key')) {
$enabled = (bool) $this->xpdo->getOption('access_media_source_enabled', null, true);
} elseif ($this->xpdo->getContext($context)) {
$enabled = (bool) $this->xpdo->contexts[$context]->getOption('access_media_source_enabled', true);
}
if ($enabled) {
if (empty($this->_policies) || !isset($this->_policies[$context])) {
$accessTable = $this->xpdo->getTableName('sources.modAccessMediaSource');
$sourceTable = $this->xpdo->getTableName('sources.modMediaSource');
$policyTable = $this->xpdo->getTableName('modAccessPolicy');
$sql = "SELECT Acl.target, Acl.principal, Acl.authority, Acl.policy, Policy.data FROM {$accessTable} Acl " . "LEFT JOIN {$policyTable} Policy ON Policy.id = Acl.policy " . "JOIN {$sourceTable} Source ON Acl.principal_class = 'modUserGroup' " . "AND (Acl.context_key = :context OR Acl.context_key IS NULL OR Acl.context_key = '') " . "AND Source.id = Acl.target " . "WHERE Acl.target = :source " . "GROUP BY Acl.target, Acl.principal, Acl.authority, Acl.policy";
$bindings = array(':source' => $this->get('id'), ':context' => $context);
$query = new xPDOCriteria($this->xpdo, $sql, $bindings);
if ($query->stmt && $query->stmt->execute()) {
while ($row = $query->stmt->fetch(PDO::FETCH_ASSOC)) {
$policy['sources.modAccessMediaSource'][$row['target']][] = array('principal' => $row['principal'], 'authority' => $row['authority'], 'policy' => $row['data'] ? $this->xpdo->fromJSON($row['data'], true) : array());
}
}
$this->_policies[$context] = $policy;
} else {
$policy = $this->_policies[$context];
}
}
return $policy;
}
示例15: foreach
break;
}
/** @var xPDOObject $object */
foreach ($modx->getIterator($class, $classCriteria) as $object) {
if ($package->put($object, $classAttributes)) {
$instances++;
} else {
$modx->log(modX::LOG_LEVEL_WARN, "Could not package {$class} instance with pk: " . print_r($object->getPrimaryKey()));
}
}
$modx->log(modX::LOG_LEVEL_INFO, "Packaged {$instances} of {$class}");
}
/* collect table names from classes and grab any additional tables/data not listed */
$coreTables = array();
foreach ($classes as $class) {
$coreTables[$class] = $modx->quote($modx->literal($modx->getTableName($class)));
}
$stmt = $modx->query("SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = '{$modxDatabase}' AND TABLE_NAME NOT IN (" . implode(',', $coreTables) . ")");
$extraTables = $stmt->fetchAll(PDO::FETCH_COLUMN);
if (is_array($extraTables) && !empty($extraTables)) {
$modx->loadClass('vapor.vaporVehicle', VAPOR_DIR . 'model/', true, true);
$excludeExtraTablePrefix = isset($vaporOptions['excludeExtraTablePrefix']) && is_array($vaporOptions['excludeExtraTablePrefix']) ? $vaporOptions['excludeExtraTablePrefix'] : array();
$excludeExtraTables = isset($vaporOptions['excludeExtraTables']) && is_array($vaporOptions['excludeExtraTables']) ? $vaporOptions['excludeExtraTables'] : array();
foreach ($extraTables as $extraTable) {
if (in_array($extraTable, $excludeExtraTables)) {
continue;
}
if (!XPDO_CLI_MODE && !ini_get('safe_mode')) {
set_time_limit(0);
}
$instances = 0;