/** * Get renderer for Mime-Type specified in Accept header of request. * * @return Mage_Webapi_Controller_Response_Rest_RendererInterface * @throws Mage_Webapi_Exception * @throws LogicException */ public function get() { $acceptTypes = $this->_request->getAcceptTypes(); $availableRenderers = (array) $this->_applicationConfig->getNode(self::XML_PATH_WEBAPI_RESPONSE_RENDERS); if (!is_array($acceptTypes)) { $acceptTypes = array($acceptTypes); } foreach ($acceptTypes as $acceptType) { foreach ($availableRenderers as $rendererConfig) { $rendererType = (string) $rendererConfig->type; if ($acceptType == $rendererType || $acceptType == current(explode('/', $rendererType)) . '/*' || $acceptType == '*/*') { $rendererClass = (string) $rendererConfig->model; break 2; } } } if (!isset($rendererClass)) { /** If server does not have renderer for any of the accepted types it SHOULD send 406 (not acceptable). */ throw new Mage_Webapi_Exception($this->_helper->__('Server cannot understand Accept HTTP header media type.'), Mage_Webapi_Exception::HTTP_NOT_ACCEPTABLE); } $renderer = $this->_objectManager->get($rendererClass); if (!$renderer instanceof Mage_Webapi_Controller_Response_Rest_RendererInterface) { throw new LogicException('The renderer must implement "Mage_Webapi_Controller_Response_Rest_RendererInterface".'); } return $renderer; }
/** * Redirect type options * * @return array */ public function toOptionArray() { $values = (array) $this->_config->getNode('redirect_type', 'default'); if (isset($values['@attributes'])) { unset($values['@attributes']); } return $values; }
/** * Search a code pool for modules and enable them * * @param string $codePool * @param OutputInterface $output * * @return int|void */ protected function enableCodePool($codePool, OutputInterface $output) { $modules = $this->config->getNode('modules')->asArray(); foreach ($modules as $module => $data) { if (isset($data['codePool']) && $data['codePool'] == $codePool) { $this->enableModule($module, $output); } } }
/** * Prepares "edit" block. * * @return Mage_Core_Block_Abstract */ protected function _prepareLayout() { $type = $this->getRequest()->getParam('type'); if (!empty($type)) { $blockClassName = (string) $this->_config->getNode(self::XML_PATH_REDIRECT_TYPE_BLOCK . $type); if (!empty($blockClassName)) { $editBlock = $this->getLayout()->createBlock($blockClassName); $this->setChild('edit', $editBlock); } } return parent::_prepareLayout(); }
/** * Return Backend area front name * * @return string */ public function getAreaFrontName() { if (null === $this->_areaFrontName) { $this->_areaFrontName = (bool) (string) $this->_config->getNode(self::XML_PATH_USE_CUSTOM_ADMIN_PATH) ? (string) $this->_config->getNode(self::XML_PATH_CUSTOM_ADMIN_PATH) : (string) $this->_config->getNode(self::XML_PATH_BACKEND_FRONTNAME); } return $this->_areaFrontName; }
/** * Add a logger by specified key * * Second argument is a file name (relative to log directory) or a PHP "wrapper" * * @param string $loggerKey * @param string $fileOrWrapper * @return Mage_Core_Model_Logger * @link http://php.net/wrappers */ public function addStreamLog($loggerKey, $fileOrWrapper = '') { $file = $fileOrWrapper ?: "{$loggerKey}.log"; if (!preg_match('#^[a-z][a-z0-9+.-]*\\://#i', $file)) { $file = $this->_config->getOptions()->getLogDir() . DIRECTORY_SEPARATOR . $file; } $writerClass = (string) $this->_config->getNode('global/log/core/writer_model'); if (!$writerClass || !is_subclass_of($writerClass, 'Zend_Log_Writer_Stream')) { $writerClass = 'Zend_Log_Writer_Stream'; } /** @var $writer Zend_Log_Writer_Stream */ $writer = $writerClass::factory(array('stream' => $file)); $writer->setFormatter(new Zend_Log_Formatter_Simple('%timestamp% %priorityName% (%priority%): %message%' . PHP_EOL)); $this->_loggers[$loggerKey] = new Zend_Log($writer); return $this; }
/** * Disable modules updates (reindex issue) * * @param null $path * @param string $scope * @param null $scopeCode * @return bool|Mage_Core_Model_Config_Element */ public function getNode($path = null, $scope = '', $scopeCode = null) { if ($path == Mage_Core_Model_App::XML_PATH_SKIP_PROCESS_MODULES_UPDATES) { return true; } return parent::getNode($path, $scope, $scopeCode); }
/** * Override frontend configuration with VDE area data */ protected function _overrideConfiguration() { $vdeNode = $this->_configuration->getNode(Mage_DesignEditor_Model_Area::AREA_VDE); if ($vdeNode) { $this->_configuration->getNode(Mage_Core_Model_App_Area::AREA_FRONTEND)->extend($vdeNode, true); } }
/** * Get current directory scanner. Initialize if it was not initialized previously. * * @return Zend\Code\Scanner\DirectoryScanner */ public function getDirectoryScanner() { if (!$this->_directoryScanner) { $this->_directoryScanner = new Zend\Code\Scanner\DirectoryScanner(); /** @var Mage_Core_Model_Config_Element $module */ foreach ($this->_applicationConfig->getNode('modules')->children() as $moduleName => $module) { if ($module->is('active')) { /** Invalid type is specified to retrieve path to module directory. */ $moduleDir = $this->_applicationConfig->getModuleDir('invalid_type', $moduleName); $directory = $moduleDir . DS . 'Controller' . DS . 'Webapi'; if (is_dir($directory)) { $this->_directoryScanner->addDirectory($directory); } } } } return $this->_directoryScanner; }
/** * Init router from config * * @param Mage_Core_Model_Config $config Config * @return void */ public function initFromConfig(Mage_Core_Model_Config $config) { $routerConfig = $config->getNode('global/messenger/publish_router'); if (!$routerConfig) { return; } foreach ($routerConfig->children() as $_route) { $this->addMap(new Varien_Object($_route->criterion->asArray()), $_route->queue); } }
/** * @param PugMoRe_Mageploy_Model_Io_RecordingInterface $io * @param Mage_Core_Model_Config $config * @return PugMoRe_Mageploy_Model_Request_Funnel $this */ public function init($io, $config) { $this->_io = $io; $this->_config = $config; Mage::dispatchEvent('mageploy_funnel_collect_actions_before', array('funnel' => $this)); $actionsInfo = $this->_config->getNode(self::XML_ACTIONS_PATH)->asArray(); Varien_Profiler::start('mageploy::funnel::collect_actions'); foreach ($actionsInfo as $actionCode => $actionInfo) { if (isset($actionInfo['disabled']) && $actionInfo['disabled']) { continue; } if (isset($actionInfo['class'])) { $action = new $actionInfo['class'](); $this->addAction($actionCode, $action); } } Varien_Profiler::stop('mageploy::funnel::collect_actions'); Mage::dispatchEvent('mageploy_funnel_collect_actions_after', array('funnel' => $this)); return $this; }
public function isModuleIgnored($observer) { $ignores = $this->_config->getNode('global/ignoredModules/entities')->asArray(); if (is_array($ignores) && $observer) { $curModule = $observer->getEvent()->getControllerAction()->getRequest()->getRouteName(); if (isset($ignores[$curModule])) { return true; } } return false; }
/** * Get information about all declared cache types * * @return array */ public function getTypes() { $types = array(); $config = $this->_config->getNode(self::XML_PATH_TYPES); if ($config) { foreach ($config->children() as $type => $node) { $types[$type] = new Varien_Object(array('id' => $type, 'cache_type' => $this->_helper->__((string) $node->label), 'description' => $this->_helper->__((string) $node->description), 'tags' => strtoupper((string) $node->tags), 'status' => (int) $this->canUse($type))); } } return $types; }
/** * Get list of available fonts. * * Return format: * [['arial'] => ['label' => 'Arial', 'path' => '/www/magento/fonts/arial.ttf']] * * @return array */ public function getFonts() { $node = $this->_config->getNode(Mage_Captcha_Helper_Data::XML_PATH_CAPTCHA_FONTS); $fonts = array(); if ($node) { foreach ($node->children() as $fontName => $fontNode) { $fonts[$fontName] = array('label' => (string) $fontNode->label, 'path' => $this->_config->getOptions()->getDir('base') . DIRECTORY_SEPARATOR . $fontNode->path); } } return $fonts; }
/** * Init observers from Magento config * * @param Mage_Core_Model_Config $config Config * @return Oggetto_Messenger_Model_Event_Observer */ public function initFromConfig(Mage_Core_Model_Config $config) { $configNodes = $config->getNode()->xpath('global/messenger/event_observers/*'); if (!$configNodes) { return $this; } $observers = []; foreach ($configNodes as $_observer) { $observers[$_observer->getName()] = Mage::getSingleton('messenger/di')->get((string) $_observer->class); } $this->setObservers($observers); return $this; }
/** * Retrieve proper interpreter for the specified content type. * * @param string $contentType * @return Mage_Webapi_Controller_Request_Rest_InterpreterInterface * @throws LogicException|Mage_Webapi_Exception */ public function get($contentType) { $interpretersMetadata = (array) $this->_applicationConfig->getNode(self::XML_PATH_WEBAPI_REQUEST_INTERPRETERS); if (empty($interpretersMetadata) || !is_array($interpretersMetadata)) { throw new LogicException('Request interpreter adapter is not set.'); } foreach ($interpretersMetadata as $interpreterMetadata) { $interpreterType = (string) $interpreterMetadata->type; if ($interpreterType == $contentType) { $interpreterClass = (string) $interpreterMetadata->model; break; } } if (!isset($interpreterClass) || empty($interpreterClass)) { throw new Mage_Webapi_Exception($this->_helper->__('Server cannot understand Content-Type HTTP header media type "%s"', $contentType), Mage_Webapi_Exception::HTTP_BAD_REQUEST); } $interpreter = $this->_objectManager->get($interpreterClass); if (!$interpreter instanceof Mage_Webapi_Controller_Request_Rest_InterpreterInterface) { throw new LogicException('The interpreter must implement "Mage_Webapi_Controller_Request_Rest_InterpreterInterface".'); } return $interpreter; }
/** * Save custom redirects when url key was changed (for category, children and assigned products) * * @param Mage_Catalog_Model_Category $category * @param int $storeId */ public function saveCustomRedirects($category, $storeId) { $this->_createRedirectTemporaryTable(); $categoryPriority = (int) $this->_config->getNode(sprintf(Enterprise_UrlRewrite_Model_Url_Rewrite::REWRITE_MATCHERS_PRIORITY_PATH, 'category'), 'default'); $productsPriority = (int) $this->_config->getNode(sprintf(Enterprise_UrlRewrite_Model_Url_Rewrite::REWRITE_MATCHERS_PRIORITY_PATH, 'product'), 'default'); if ($categoryPriority < $productsPriority) { $this->_insertProductRedirectsToTemporaryTable($category, $storeId); $this->_insertCategoryRedirectsToTemporaryTable($category, $storeId); } else { $this->_insertCategoryRedirectsToTemporaryTable($category, $storeId); $this->_insertProductRedirectsToTemporaryTable($category, $storeId); } $this->_copyRedirectsToMainTable(); }
/** * Constructor * * @param array $args */ public function __construct(array $args = array()) { $this->_categoryResource = isset($args['resource']) ? $args['resource'] : Mage::getResourceSingleton('enterprise_catalog/category'); $this->_request = !empty($args['request']) ? $args['request'] : Mage::app()->getFrontController()->getRequest(); $this->_response = !empty($args['response']) ? $args['response'] : Mage::app()->getFrontController()->getResponse(); $this->_storeId = isset($args['storeId']) ? $args['storeId'] : Mage::app()->getStore()->getId(); $fromStore = $this->_request->getQuery('___from_store'); $this->_prevStoreId = isset($args['prevStoreId']) ? $args['prevStoreId'] : (!empty($fromStore) ? Mage::app()->getStore($fromStore)->getId() : $this->_storeId); $this->_config = isset($args['config']) ? $args['config'] : Mage::app()->getConfig(); $this->_seoSuffix = (string) $this->_config->getNode(Mage_Catalog_Helper_Category::XML_PATH_CATEGORY_URL_SUFFIX, 'store', (int) $this->_prevStoreId); $this->_newStoreSeoSuffix = (string) $this->_config->getNode(Mage_Catalog_Helper_Category::XML_PATH_CATEGORY_URL_SUFFIX, 'store', (int) $this->_storeId); if (isset($args['baseUrl'])) { $this->_baseUrl = $args['baseUrl']; } }
/** * Get scope name and scopeId * */ protected function _getScope() { if ($this->getStore()) { $scope = 'stores'; $scopeId = (int) $this->_appConfig->getNode('stores/' . $this->getStore() . '/system/store/id'); } elseif ($this->getWebsite()) { $scope = 'websites'; $scopeId = (int) $this->_appConfig->getNode('websites/' . $this->getWebsite() . '/system/website/id'); } else { $scope = 'default'; $scopeId = 0; } $this->setScope($scope); $this->setScopeId($scopeId); }
/** * Save cron settings for start change log model * * @return Enterprise_Index_Model_Config_Backend_Cron * @throws Mage_Core_Exception */ protected function _saveCronSettings() { try { //save schedule cron expression $this->_saveConfig(self::CRON_STRING_PATH, $this->_getCronExpr()); //save ChangeLog model $this->_saveConfig(self::CRON_MODEL_PATH, (string) $this->_config->getNode(self::CRON_MODEL_PATH)); } catch (Exception $e) { /* @var $logger Mage_Core_Model_Logger */ $logger = $this->_factory->getModel('core/logger'); $logger->logException($e); throw new Mage_Core_Exception($this->helper('enterprise_index')->__('Unable to save the cron expression.')); } return $this; }
public function loadCrontabConfig() { $crontabFile = realpath($this->_etcModuleDir . DIRECTORY_SEPARATOR . 'crontab.xml'); if (!is_readable($crontabFile)) { return; } /** @var Mage_Core_Model_Config_Element $jobs */ $jobs = $this->_config->getNode('crontab/jobs'); $newConfig = Mage::getModel('core/config_base'); $newConfig->loadFile($crontabFile); /* @var Mage_Core_Model_Config_Element $group */ foreach ($newConfig->getNode('group/job') as $job) { /** @var Mage_Core_Model_Config_Element $newJob */ $newJob = $jobs->addChild((string) $job['name']); $newJob->addChild('schedule'); $newJob->schedule->addChild('cron_expr', (string) $job->schedule); $newJob->addChild('run'); $newJob->run->addChild('model', (string) $job['instance'] . '::' . (string) $job['method']); } }
/** * Apply configuration rewrites to current url * * @return bool */ protected function _rewriteConfig() { $config = $this->_config->getNode('global/rewrite'); if (!$config) { return false; } foreach ($config->children() as $rewrite) { $from = (string) $rewrite->from; $to = (string) $rewrite->to; if (empty($from) || empty($to)) { continue; } $from = $this->_processRewriteUrl($from); $to = $this->_processRewriteUrl($to); $pathInfo = preg_replace($from, $to, $this->_request->getPathInfo()); if (isset($rewrite->complete)) { $this->_request->setPathInfo($pathInfo); } else { $this->_request->rewritePathInfo($pathInfo); } } return true; }
/** * @return string */ public function getIndexClassAlias() { return (string) $this->_config->getNode(self::XML_PATH_INDEX_INDEX_MODEL); }
/** * Load configuration values into xml config object * * @param Mage_Core_Model_Config $xmlConfig * @param string $condition * @return Mage_Core_Model_Resource_Config */ public function loadToXml(Mage_Core_Model_Config $xmlConfig, $condition = null) { $read = $this->_getReadAdapter(); if (!$read) { return $this; } $websites = array(); $select = $read->select()->from($this->getTable('core_website'), array('website_id', 'code', 'name')); $rowset = $read->fetchAssoc($select); foreach ($rowset as $w) { $xmlConfig->setNode('websites/' . $w['code'] . '/system/website/id', $w['website_id']); $xmlConfig->setNode('websites/' . $w['code'] . '/system/website/name', $w['name']); $websites[$w['website_id']] = array('code' => $w['code']); } $stores = array(); $select = $read->select()->from($this->getTable('core_store'), array('store_id', 'code', 'name', 'website_id'))->order('sort_order ' . Varien_Db_Select::SQL_ASC); $rowset = $read->fetchAssoc($select); foreach ($rowset as $s) { if (!isset($websites[$s['website_id']])) { continue; } $xmlConfig->setNode('stores/' . $s['code'] . '/system/store/id', $s['store_id']); $xmlConfig->setNode('stores/' . $s['code'] . '/system/store/name', $s['name']); $xmlConfig->setNode('stores/' . $s['code'] . '/system/website/id', $s['website_id']); $xmlConfig->setNode('websites/' . $websites[$s['website_id']]['code'] . '/system/stores/' . $s['code'], $s['store_id']); $stores[$s['store_id']] = array('code' => $s['code']); $websites[$s['website_id']]['stores'][$s['store_id']] = $s['code']; } $substFrom = array(); $substTo = array(); // load all configuration records from database, which are not inherited $select = $read->select()->from($this->getMainTable(), array('scope', 'scope_id', 'path', 'value')); if (!is_null($condition)) { $select->where($condition); } $rowset = $read->fetchAll($select); // set default config values from database foreach ($rowset as $r) { if ($r['scope'] !== 'default') { continue; } $value = str_replace($substFrom, $substTo, $r['value']); $xmlConfig->setNode('default/' . $r['path'], $value); } // inherit default config values to all websites $extendSource = $xmlConfig->getNode('default'); foreach ($websites as $id => $w) { $websiteNode = $xmlConfig->getNode('websites/' . $w['code']); $websiteNode->extend($extendSource); } $deleteWebsites = array(); // set websites config values from database foreach ($rowset as $r) { if ($r['scope'] !== 'websites') { continue; } $value = str_replace($substFrom, $substTo, $r['value']); if (isset($websites[$r['scope_id']])) { $nodePath = sprintf('websites/%s/%s', $websites[$r['scope_id']]['code'], $r['path']); $xmlConfig->setNode($nodePath, $value); } else { $deleteWebsites[$r['scope_id']] = $r['scope_id']; } } // extend website config values to all associated stores foreach ($websites as $website) { $extendSource = $xmlConfig->getNode('websites/' . $website['code']); if (isset($website['stores'])) { foreach ($website['stores'] as $sCode) { $storeNode = $xmlConfig->getNode('stores/' . $sCode); /** * $extendSource DO NOT need overwrite source */ $storeNode->extend($extendSource, false); } } } $deleteStores = array(); // set stores config values from database foreach ($rowset as $r) { if ($r['scope'] !== 'stores') { continue; } $value = str_replace($substFrom, $substTo, $r['value']); if (isset($stores[$r['scope_id']])) { $nodePath = sprintf('stores/%s/%s', $stores[$r['scope_id']]['code'], $r['path']); $xmlConfig->setNode($nodePath, $value); } else { $deleteStores[$r['scope_id']] = $r['scope_id']; } } if ($deleteWebsites) { $this->_getWriteAdapter()->delete($this->getMainTable(), array('scope = ?' => 'websites', 'scope_id IN(?)' => $deleteWebsites)); } if ($deleteStores) { $this->_getWriteAdapter()->delete($this->getMainTable(), array('scope=?' => 'stores', 'scope_id IN(?)' => $deleteStores)); } return $this; }
/** * Retrieve application website object * * @return Mage_Core_Model_Website */ public function getWebsite($id = null) { if (is_null($id)) { $id = $this->getStore()->getWebsiteId(); } elseif ($id instanceof Mage_Core_Model_Website) { return $id; } elseif ($id === true) { return $this->_website; } if (empty($this->_websites[$id])) { $website = Mage::getModel('core/website'); if (is_numeric($id)) { $website->load($id); if (!$website->hasWebsiteId()) { throw Mage::exception('Mage_Core', 'Invalid website id requested.'); } } elseif (is_string($id)) { $websiteConfig = $this->_config->getNode('websites/' . $id); if (!$websiteConfig) { throw Mage::exception('Mage_Core', 'Invalid website code requested: ' . $id); } $website->loadConfig($id); } $this->_websites[$website->getWebsiteId()] = $website; $this->_websites[$website->getCode()] = $website; } return $this->_websites[$id]; }
/** * Get config value by indexer name and node name * * @param string $indexerNodeName * @param string $nodeName * @return string */ public function getIndexerConfigValue($indexerNodeName, $nodeName) { return (string) $this->_config->getNode(self::XML_PATH_INDEXER_DATA . '/' . $indexerNodeName . '/' . $nodeName); }
/** * Get expiration days count * * @return string */ public function getDaysToExpire() { return (int) $this->_configuration->getNode(self::XML_PATH_DAYS_TO_EXPIRE); }
/** * Retrieve clean schedule enabled flag * * @return bool */ protected function _isCleanChangelogEnabled() { return (bool) (string) $this->_config->getNode(self::XML_PATH_INDEX_CLEAN_SCHEDULE_ENABLED); }
/** * @return bool */ private function _isTestEnvironment() { return (string) $this->_config->getNode(self::ENVIRONMENT_NODE) === self::TEST_ENVIRONMENT; }
/** * Load configuration values into xml config object * * @param Mage_Core_Model_Config $xmlConfig * @param string $cond * @return Mage_Core_Model_Mysql4_Config_Collection */ public function loadToXml(Mage_Core_Model_Config $xmlConfig, $cond = null) { $read = $this->_getReadAdapter(); if (!$read) { return $this; } $websites = array(); $rows = $read->fetchAssoc("select website_id, code, name from " . $this->getTable('website')); foreach ($rows as $w) { $xmlConfig->setNode('websites/' . $w['code'] . '/system/website/id', $w['website_id']); $xmlConfig->setNode('websites/' . $w['code'] . '/system/website/name', $w['name']); $websites[$w['website_id']] = array('code' => $w['code']); } $stores = array(); $rows = $read->fetchAssoc("select store_id, code, name, website_id from " . $this->getTable('store') . " order by sort_order asc"); foreach ($rows as $s) { if (!isset($websites[$s['website_id']])) { continue; } $xmlConfig->setNode('stores/' . $s['code'] . '/system/store/id', $s['store_id']); $xmlConfig->setNode('stores/' . $s['code'] . '/system/store/name', $s['name']); $xmlConfig->setNode('stores/' . $s['code'] . '/system/website/id', $s['website_id']); $xmlConfig->setNode('websites/' . $websites[$s['website_id']]['code'] . '/system/stores/' . $s['code'], $s['store_id']); $stores[$s['store_id']] = array('code' => $s['code']); $websites[$s['website_id']]['stores'][$s['store_id']] = $s['code']; } $subst_from = array(); $subst_to = array(); // load all configuration records from database, which are not inherited $rows = $read->fetchAll("select scope, scope_id, path, value from " . $this->getMainTable() . ($cond ? ' where ' . $cond : '')); // set default config values from database foreach ($rows as $r) { if ($r['scope'] !== 'default') { continue; } $value = str_replace($subst_from, $subst_to, $r['value']); $xmlConfig->setNode('default/' . $r['path'], $value); } // inherit default config values to all websites $extendSource = $xmlConfig->getNode('default'); foreach ($websites as $id => $w) { $websiteNode = $xmlConfig->getNode('websites/' . $w['code']); $websiteNode->extend($extendSource); } $deleteWebsites = array(); // set websites config values from database foreach ($rows as $r) { if ($r['scope'] !== 'websites') { continue; } $value = str_replace($subst_from, $subst_to, $r['value']); if (isset($websites[$r['scope_id']])) { $xmlConfig->setNode('websites/' . $websites[$r['scope_id']]['code'] . '/' . $r['path'], $value); } else { $deleteWebsites[$r['scope_id']] = $r['scope_id']; } } // extend website config values to all associated stores foreach ($websites as $website) { $extendSource = $xmlConfig->getNode('websites/' . $website['code']); if (isset($website['stores'])) { foreach ($website['stores'] as $sCode) { $storeNode = $xmlConfig->getNode('stores/' . $sCode); /** * $extendSource DO NOT need overwrite source */ $storeNode->extend($extendSource, false); } } } $deleteStores = array(); // set stores config values from database foreach ($rows as $r) { if ($r['scope'] !== 'stores') { continue; } $value = str_replace($subst_from, $subst_to, $r['value']); if (isset($stores[$r['scope_id']])) { $xmlConfig->setNode('stores/' . $stores[$r['scope_id']]['code'] . '/' . $r['path'], $value); } else { $deleteStores[$r['scope_id']] = $r['scope_id']; } } if ($deleteWebsites) { $this->_getWriteAdapter()->delete($this->getMainTable(), array($this->_getWriteAdapter()->quoteInto('scope=?', 'websites'), $this->_getWriteAdapter()->quoteInto('scope_id IN(?)', $deleteWebsites))); } if ($deleteStores) { $this->_getWriteAdapter()->delete($this->getMainTable(), array($this->_getWriteAdapter()->quoteInto('scope=?', 'stores'), $this->_getWriteAdapter()->quoteInto('scope_id IN(?)', $deleteStores))); } return $this; }