/** * Sets parameters * * @param array $params */ private function __setParams($params) { $defaultParams = Configure::read('ExcludeSimilarDocs'); $defaultParamsType = $defaultParams['types'][$params['type']]; $this->_params = Hash::mergeDiff($params, $defaultParamsType); if (isset($this->_params['allowSimilarity']) && $this->_params['allowSimilarity'] > 100) { $this->_params['allowSimilarity'] = $defaultParamsType['allowSimilarity']; } if (isset($this->_params['length']) && empty($this->_params['length'])) { $this->_params['length'] = $defaultParamsType['length']; } }
/** * List of widgets */ public function admin_index() { if ($this->request->is('ajax')) { $option_name = Configure::read('template') . '.widgets'; $widgets_db = unserialize(Configure::read(Configure::read('template') . '.widgets')); //Before save sidebar widgets remove exist sidebar data in database. foreach (Configure::read('sidebars') as $id => $sidebar) { if (array_key_exists($id, $this->request->data)) { unset($widgets_db[$id]); } } $wg = array(); foreach ($this->request->data as $sidebar_id => $widgets) { foreach ($widgets as $widget) { foreach ($widget as $widget_id => $widget_data) { $wg[$sidebar_id][$widget_id] = Hash::combine($widget_data, '{n}.name', '{n}.value'); } } } $widgets_order = serialize(Hash::mergeDiff($wg, $widgets_db)); $this->Option->write($option_name, $widgets_order); } }
/** * Binds the given domain to a file in the specified directory. * * @param string $domain Domain to bind * @return string Domain binded */ protected function _bindTextDomain($domain) { $this->_noLocale = true; $core = true; $merge = array(); $searchPaths = App::path('locales'); $plugins = CakePlugin::loaded(); if (!empty($plugins)) { foreach ($plugins as $plugin) { $pluginDomain = Inflector::underscore($plugin); if ($pluginDomain === $domain) { $searchPaths[] = CakePlugin::path($plugin) . 'Locale' . DS; $searchPaths = array_reverse($searchPaths); break; } } } foreach ($searchPaths as $directory) { foreach ($this->l10n->languagePath as $lang) { $localeDef = $directory . $lang . DS . $this->category; if (is_file($localeDef)) { $definitions = self::loadLocaleDefinition($localeDef); if ($definitions !== false) { $this->_domains[$domain][$this->_lang][$this->category] = $definitions; $this->_noLocale = false; return $domain; } } if ($core) { $app = $directory . $lang . DS . $this->category . DS . 'core'; $translations = false; if (is_file($app . '.mo')) { $translations = self::loadMo($app . '.mo'); } if ($translations === false && is_file($app . '.po')) { $translations = self::loadPo($app . '.po'); } if ($translations !== false) { $this->_domains[$domain][$this->_lang][$this->category] = $translations; $merge[$domain][$this->_lang][$this->category] = $this->_domains[$domain][$this->_lang][$this->category]; $this->_noLocale = false; $core = null; } } $file = $directory . $lang . DS . $this->category . DS . $domain; $translations = false; if (is_file($file . '.mo')) { $translations = self::loadMo($file . '.mo'); } if ($translations === false && is_file($file . '.po')) { $translations = self::loadPo($file . '.po'); } if ($translations !== false) { $this->_domains[$domain][$this->_lang][$this->category] = $translations; $this->_noLocale = false; break 2; } } } if (empty($this->_domains[$domain][$this->_lang][$this->category])) { $this->_domains[$domain][$this->_lang][$this->category] = array(); return $domain; } if (isset($this->_domains[$domain][$this->_lang][$this->category][""])) { $head = $this->_domains[$domain][$this->_lang][$this->category][""]; foreach (explode("\n", $head) as $line) { $header = strtok($line, ':'); $line = trim(strtok("\n")); $this->_domains[$domain][$this->_lang][$this->category]["%po-header"][strtolower($header)] = $line; } if (isset($this->_domains[$domain][$this->_lang][$this->category]["%po-header"]["plural-forms"])) { $switch = preg_replace("/(?:[() {}\\[\\]^\\s*\\]]+)/", "", $this->_domains[$domain][$this->_lang][$this->category]["%po-header"]["plural-forms"]); $this->_domains[$domain][$this->_lang][$this->category]["%plural-c"] = $switch; unset($this->_domains[$domain][$this->_lang][$this->category]["%po-header"]); } $this->_domains = Hash::mergeDiff($this->_domains, $merge); if (isset($this->_domains[$domain][$this->_lang][$this->category][null])) { unset($this->_domains[$domain][$this->_lang][$this->category][null]); } } return $domain; }
/** * Merge the results of 'hasMany' associations. * * Note: this function also deals with the formatting of the data. * * @param array &$resultSet Data to merge into. * @param array $assocResultSet Data to merge. * @param string $association Name of Model being merged. * @param Model $Model Model being merged onto. * @return void */ protected function _mergeHasMany(&$resultSet, $assocResultSet, $association, Model $Model) { $modelAlias = $Model->alias; $primaryKey = $Model->primaryKey; $foreignKey = $Model->hasMany[$association]['foreignKey']; foreach ($resultSet as &$result) { if (!isset($result[$modelAlias])) { continue; } $resultPrimaryKey = $result[$modelAlias][$primaryKey]; $merged = array(); foreach ($assocResultSet as $data) { if ($resultPrimaryKey !== $data[$association][$foreignKey]) { continue; } if (count($data) > 1) { $data = array_merge($data[$association], $data); unset($data[$association]); foreach ($data as $key => $name) { if (is_numeric($key)) { $data[$association][] = $name; unset($data[$key]); } } $merged[] = $data; } else { $merged[] = $data[$association]; } } $result = Hash::mergeDiff($result, array($association => $merged)); } }
/** * testMergeDiff method * * @return void */ public function testMergeDiff() { $first = array('ModelOne' => array('id' => 1001, 'field_one' => 'a1.m1.f1', 'field_two' => 'a1.m1.f2')); $second = array('ModelTwo' => array('id' => 1002, 'field_one' => 'a2.m2.f1', 'field_two' => 'a2.m2.f2')); $result = Hash::mergeDiff($first, $second); $this->assertEquals($result, $first + $second); $result = Hash::mergeDiff($first, array()); $this->assertEquals($result, $first); $result = Hash::mergeDiff(array(), $first); $this->assertEquals($result, $first); $third = array('ModelOne' => array('id' => 1003, 'field_one' => 'a3.m1.f1', 'field_two' => 'a3.m1.f2', 'field_three' => 'a3.m1.f3')); $result = Hash::mergeDiff($first, $third); $expected = array('ModelOne' => array('id' => 1001, 'field_one' => 'a1.m1.f1', 'field_two' => 'a1.m1.f2', 'field_three' => 'a3.m1.f3')); $this->assertEquals($expected, $result); $first = array(0 => array('ModelOne' => array('id' => 1001, 'field_one' => 's1.0.m1.f1', 'field_two' => 's1.0.m1.f2')), 1 => array('ModelTwo' => array('id' => 1002, 'field_one' => 's1.1.m2.f2', 'field_two' => 's1.1.m2.f2'))); $second = array(0 => array('ModelOne' => array('id' => 1001, 'field_one' => 's2.0.m1.f1', 'field_two' => 's2.0.m1.f2')), 1 => array('ModelTwo' => array('id' => 1002, 'field_one' => 's2.1.m2.f2', 'field_two' => 's2.1.m2.f2'))); $result = Hash::mergeDiff($first, $second); $this->assertEquals($result, $first); $third = array(0 => array('ModelThree' => array('id' => 1003, 'field_one' => 's3.0.m3.f1', 'field_two' => 's3.0.m3.f2'))); $result = Hash::mergeDiff($first, $third); $expected = array(0 => array('ModelOne' => array('id' => 1001, 'field_one' => 's1.0.m1.f1', 'field_two' => 's1.0.m1.f2'), 'ModelThree' => array('id' => 1003, 'field_one' => 's3.0.m3.f1', 'field_two' => 's3.0.m3.f2')), 1 => array('ModelTwo' => array('id' => 1002, 'field_one' => 's1.1.m2.f2', 'field_two' => 's1.1.m2.f2'))); $this->assertEquals($expected, $result); $result = Hash::mergeDiff($first, null); $this->assertEquals($result, $first); $result = Hash::mergeDiff($first, $second); $this->assertEquals($result, $first + $second); }
<?php /** * Author: samokspv <*****@*****.**> * Date: 01.03.2014 * Time: 15:00:00 * Format: http://book.cakephp.org/2.0/en/views.html */ CakePlugin::load('CakePdf', array('bootstrap' => true, 'routes' => true)); include 'defaultConfig.php'; $config = Hash::mergeDiff((array) Configure::read('PdfGenerator'), $defaultConfig); Configure::write('PdfGenerator', $config);
/** * Merge the results of 'hasMany' associations. * * Note: this function also deals with the formatting of the data. * * @param array &$resultSet Data to merge into. * @param array $assocResultSet Data to merge. * @param string $association Name of Model being merged. * @param Model $Model Model being merged onto. * @return void */ protected function _mergeHasMany(&$resultSet, $assocResultSet, $association, Model $Model) { $modelAlias = $Model->alias; $primaryKey = $Model->primaryKey; $foreignKey = $Model->hasMany[$association]['foreignKey']; // Make one pass through children and collect by parent key // Make second pass through parents and associate children $mergedByFK = array(); foreach ($assocResultSet as $data) { $fk = $data[$association][$foreignKey]; if (!array_key_exists($fk, $mergedByFK)) { $mergedByFK[$fk] = array(); } if (count($data) > 1) { $data = array_merge($data[$association], $data); unset($data[$association]); foreach ($data as $key => $name) { if (is_numeric($key)) { $data[$association][] = $name; unset($data[$key]); } } $mergedByFK[$fk][] = $data; } else { $mergedByFK[$fk][] = $data[$association]; } } foreach ($resultSet as &$result) { if (!isset($result[$modelAlias])) { continue; } $merged = array(); $pk = $result[$modelAlias][$primaryKey]; if (isset($mergedByFK[$pk])) { $merged = $mergedByFK[$pk]; } $result = Hash::mergeDiff($result, array($association => $merged)); } }
<?php /** * Author: samokspv <*****@*****.**> * Date: 29.10.2014 * Time: 15:00:00 */ CakePlugin::load('CakePdf', array('bootstrap' => true, 'routes' => false)); include 'defaultConfig.php'; $config = Hash::mergeDiff((array) Configure::read('ExcludeSimilarDocs'), $defaultConfig); Configure::write('ExcludeSimilarDocs', $config);
protected function _checkAuth() { /* if (!$this->Auth->loggedIn()) { return $this->redirect('/'); } */ //restore user session from cookie if (!$this->Auth->loggedIn() && ($userLogin = $this->Cookie->read('User'))) { $this->currUser = $this->User->findByUsername($userLogin['username']); if (isset($this->currUser['User']['id'])) { $this->Auth->login($this->currUser['User']); } } $this->_addStatistic(); if ($this->Auth->loggedIn()) { $this->loadModel('Group'); $this->currUserID = $this->Auth->user('id'); if (empty($this->currUser)) { $this->currUser = $this->User->findById($this->currUserID); } $this->_initTimezone($this->currUser['User']['timezone']); $this->_initLang($this->currUser['User']['lang']); $conditions = array('Group.owner_id' => $this->currUserID); $this->userGroups = $this->Group->find('all', compact('conditions', 'order')); $groupDreamInfo = Hash::combine($this->userGroups, '{n}.Group.id', '{n}.Group.is_dream'); $this->userGroups = Hash::combine($this->userGroups, '{n}.Group.id', '{n}.Group.title'); $ids = Hash::combine($this->userGroups, '{n}.Group.id'); $conditions = array('GroupMember.approved' => '1', 'GroupMember.is_deleted' => '0', 'GroupMember.user_id' => $this->currUserID); $groups = $this->userGroups; $member = $this->GroupMember->find('all', compact('conditions', 'order')); $groupDreamInfoMembers = Hash::combine($member, '{n}.Group.id', '{n}.Group.is_dream'); $member = Hash::combine($member, '{n}.Group.id', '{n}.Group.title'); $this->userGroups = Hash::mergeDiff($member, $groups); $groupDreamInfo = Hash::mergeDiff($groupDreamInfo, $groupDreamInfoMembers); $this->userGroups['create'] = __('Create group'); if (isset($_COOKIE['Group'])) { $this->set('groupHeader', $this->Group->findById($_COOKIE['Group'])); } $conditions = array('GroupMember.is_invited' => '1', 'GroupMember.is_deleted' => '0', 'GroupMember.user_id' => $this->currUserID); $ids = $this->GroupMember->find('all', compact('conditions')); $ids = Hash::extract($ids, '{n}.GroupMember.group_id'); $conditions = array('Group.id' => $ids); $invites['Groups'] = $this->Group->find('all', compact('conditions', 'order')); $this->set('invites', $invites); $this->set('currUser', $this->currUser); $this->set('currUserID', $this->currUserID); $this->set('pageTitle', $this->pageTitle); $this->set('userGroups', $this->userGroups); $this->set(compact('groupDreamInfo')); } else { $this->_initLang(); } }
<?php /** * Author: imsamurai <*****@*****.**> * Date: 23.07.2014 * Time: 16:42:21 * Format: http://book.cakephp.org/2.0/en/views.html */ Configure::write('Pagination.pages', Configure::read('Pagination.pages') ? Configure::read('Pagination.pages') : 10); $config = Hash::mergeDiff((array) Configure::read('Monitoring'), array('dateFormat' => 'H:i:s d.m.Y', 'dbDateFormat' => 'Y-m-d H:i:s', 'checkersPath' => 'Lib/Monitoring', 'defaults' => array('cron' => '*/5 * * * *', 'timeout' => 600, 'active' => false, 'priority' => 0), 'email' => array('enabled' => array('fail' => true, 'stillFail' => true, 'success' => false, 'backToNormal' => true), 'config' => 'default', 'subject' => array('fail' => 'Monitoring: %s is fail!', 'stillFail' => 'Monitoring: %s still failing!', 'success' => 'Monitoring: %s is ok!', 'backToNormal' => 'Monitoring: %s back to normal!')), 'views' => array('pluginFirst' => false), 'checkers' => array('MonitoringSelfFailCheck' => array('defaults' => array('errorText' => 'MonitoringSelfFailCheck error text'))), 'sms' => array('enabled' => array('fail' => true, 'stillFail' => true, 'success' => false, 'backToNormal' => false), 'subject' => array('fail' => 'Monitoring: %s is fail!', 'stillFail' => 'Monitoring: %s still failing!', 'success' => 'Monitoring: %s is ok!', 'backToNormal' => 'Monitoring: %s back to normal!'), 'source' => null, 'desc' => 'Monitoring'))); Configure::write('Monitoring', $config);