/** * @param string $key * @return bool */ public function hasKey($key) { if ($this->memoryCache->hasKey($key)) { return true; } return $this->fileCache->hasKey($key); }
/** * @test */ public function testMemoizeResultIsCorrect() { $memoryCache = new MemoryCache(); $func = $memoryCache->memoize($this->testFunction); $this->assertEquals(3, $func(1, 2)); $this->assertEquals(3, $func(1, 2)); }
/** * Test load method correctly */ public function testLoadObject() { $object = new TestClass('value'); $object->publicParam = 'public'; $this->memoryCache->save(self::KEY, $object); $this->assertEquals($object, $this->memoryCache->load(self::KEY)); $object->setPrivateParam('new value'); $this->assertNotEquals($object, $this->memoryCache->load(self::KEY)); }
/** * jUnit4 BeforeClass annotation. **/ function setUp() { $stats = new StatisticsEcho(); $cache = new MemoryCache(); $metahandler = new MetaHandlerIMDB($stats); $cachedmetahandler = new MetaHandlerCache($metahandler, $cache); if (!TestIcefilmScraper::$is_setup) { date_default_timezone_set("EST"); $cache->clear(); TestIcefilmScraper::$is_setup = TRUE; } $this->url = 'http://www.icefilms.info/movies/popular/1'; $this->scraper = new IcefilmScraper($cachedmetahandler, $cache, $stats); }
public function testExpire() { $key = uniqid(); $c = new MemoryCache(); $this->assertTrue($c->set($key, ['bar' => ['baz']], 1)); $this->assertEquals(['bar' => ['baz']], $c->get($key)); $this->assertTrue($c->expires($key) <= time() + 1); sleep(2); $this->assertNull($c->get($key)); $this->assertEquals(0, $c->expires('foobar')); }
/** * @usage 获取被试的试卷信息,判断试卷是否全部完成,成功则返回试卷信息 * @param int $project_id * @param int $examinee_id * @throws Exception * @return unknown */ protected static function getPapers($project_id, $examinee_id) { $project_detail_json = MemoryCache::getProjectDetail($project_id); $project_detail = json_decode($project_detail_json->exam_json, true); $papers_tmp = QuestionAns::find(array("examinee_id = :examinee_id:", 'bind' => array('examinee_id' => $examinee_id))); if (count($papers_tmp) != count($project_detail)) { throw new Exception(self::$error_state . '-答卷数量不正确-' . count($papers_tmp) . '-' . count($project_detail)); } $papers_id_tmp = array(); foreach ($papers_tmp as $value) { $papers_id_tmp[] = $value->paper_id; } $project_papers_id = array(); foreach ($project_detail as $key => $value) { $project_papers_id[] = MemoryCache::getPaperDetail($key)->id; } if (!array_diff($papers_id_tmp, $project_papers_id)) { return $papers_tmp; } else { throw new Exception(self::$error_state . '-答卷信息与题库信息不符-' . print_r($papers_id_tmp, true) . print_r($project_papers_id, true)); } }
public function DoLogin() { global $g_ui_locale; $vs_redirect_url = $this->request->getParameter('redirect', pString) ?: caNavUrl($this->request, null, null, null); if (!$this->request->doAuthentication(array('dont_redirect_to_login' => true, 'redirect' => $vs_redirect_url, 'noPublicUsers' => true, 'user_name' => $this->request->getParameter('username', pString), 'password' => $this->request->getParameter('password', pString)))) { $this->notification->addNotification(_t("Login was invalid"), __NOTIFICATION_TYPE_ERROR__); $this->view->setVar('notifications', $this->notification->getNotifications()); if (isset($_COOKIE['CA_' . __CA_APP_NAME__ . '_ui_locale'])) { if (!initializeLocale($_COOKIE['CA_' . __CA_APP_NAME__ . '_ui_locale'])) { die("Error loading locale " . $g_ui_locale); } } $this->render('login_html.php'); } else { // // Reset locale globals // global $g_ui_locale_id, $g_ui_locale, $g_ui_units_pref, $_, $_locale; $g_ui_locale_id = $this->request->user->getPreferredUILocaleID(); // get current UI locale as locale_id (available as global) $g_ui_locale = $this->request->user->getPreferredUILocale(); // get current UI locale as locale string (available as global) $g_ui_units_pref = $this->request->user->getPreference('units'); // user's selected display units for measurements (available as global) if (!initializeLocale($g_ui_locale)) { die("Error loading locale " . $g_ui_locale); } MemoryCache::flush('translation'); AppNavigation::clearMenuBarCache($this->request); // want to clear menu bar on login // Notify the user of the good news $this->notification->addNotification(_t("You are now logged in"), __NOTIFICATION_TYPE_INFO__); // Jump to redirect if set if ($vs_redirect_url) { $this->redirect($vs_redirect_url); } $this->render('welcome_html.php'); } }
/** * 缓存路由表 */ private static function getCacheRoute() { $urlArr = parse_url($_SERVER['REQUEST_URI']); $urlArr['path'] = trim($urlArr['path'], '\\/'); if (empty($urlArr['path'])) { $urlArr['path'] = 'index'; } $memCacheObj = new MemoryCache(); $urlRes = @$memCacheObj->get($urlArr['path']); return $urlRes; }
/** * Clears the caches. */ function clear() { MemoryCache::$cache = array(); }
/** * Removes all cached configuration */ public static function clearCache() { ExternalCache::flush(); MemoryCache::flush(); }
/** * @usage 写入被试的答卷信息 * @param int $examinee_id * @param string $paper_name * @param string $option_str * @param array $number_array * @throws Exception * @return boolean */ public static function insertQuestionAns($examinee_id, $paper_name, $option_str, $number_array, $time) { $project_id = self::getProjectId($examinee_id); if (!$project_id) { return false; } $paper_name = strtoupper($paper_name); switch ($paper_name) { case 'EPQA': self::checkEPQA($option_str, $number_array, $project_id); break; case 'EPPS': self::checkEPPS($option_str, $number_array, $project_id); break; case 'CPI': self::checkCPI($option_str, $number_array, $project_id); break; case '16PF': self::checkKS($option_str, $number_array, $project_id); break; case 'SCL': self::checkSCL($option_str, $number_array, $project_id); break; case 'SPM': self::checkSPM($option_str, $number_array, $project_id); break; default: throw new Exception(self::$error_state . '-不存在试卷-' . $paper_name); } $paper_id = MemoryCache::getPaperDetail($paper_name)->id; try { // Create a transaction manager $manager = new TxManager(); // Request a transaction $transaction = $manager->get(); $question_ans = new QuestionAns(); #将事务设置到每一次的new之后 $question_ans->setTransaction($transaction); $question_ans->option = $option_str; $question_ans->paper_id = $paper_id; $question_ans->examinee_id = $examinee_id; $question_ans->question_number_list = implode("|", $number_array); $question_ans->time = $time; if ($question_ans->save() == false) { $transaction->rollback(self::$error_state . '-数据库插入失败-' . print_r($question_ans, true)); } $transaction->commit(); return true; } catch (TxFailed $e) { throw new Exception($e->getMessage()); } }
/** * Establishes a connection to the database * * @param mixed $po_caller representation of the caller, usually a Db() object * @param array $pa_options array containing options like host, username, password * @return bool success state */ public function connect($po_caller, $pa_options) { $vs_db_connection_key = $pa_options["host"] . '/' . $pa_options["database"]; // reuse connection if (!($vb_unique_connection = caGetOption('uniqueConnection', $pa_options, false)) && MemoryCache::contains($vs_db_connection_key, 'PdoConnectionCache')) { $this->opr_db = MemoryCache::fetch($vs_db_connection_key, 'PdoConnectionCache'); return true; } if (!class_exists("PDO")) { die(_t("Your PHP installation lacks PDO MySQL support. Please add it and retry...")); } try { $this->opr_db = new PDO('mysql:host=' . $pa_options["host"] . ';dbname=' . $pa_options["database"], $pa_options["username"], $pa_options["password"], array(PDO::ATTR_PERSISTENT => caGetOption("persistentConnections", $pa_options, true), PDO::ATTR_EMULATE_PREPARES => true, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch (Exception $e) { $po_caller->postError(200, $e->getMessage(), "Db->pdo_mysql->connect()"); return false; } $this->opr_db->exec('SET NAMES \'utf8\''); $this->opr_db->exec('SET character_set_results = NULL'); if (!$vb_unique_connection) { MemoryCache::save($vs_db_connection_key, $this->opr_db, 'PdoConnectionCache'); } return true; }
public static function delete($id) { $res = MemoryCache::delete($id); $res &= DiskCache::delete($id); return $res; }
/** * Returns the locale name of the specified locale_id, or null if the id is invalid. Note that this does not * change the state of the model - it just returns the locale. * * @param int $pn_id The locale_id of the locale, or null if the code is invalid * @return string The name of the locale */ public function localeIDToName($pn_id) { if (!MemoryCache::contains($pn_id, 'LocaleIdToName')) { ca_locales::getLocaleList(); } return MemoryCache::fetch($pn_id, 'LocaleIdToName'); }
/** * */ public static function getInstance($pm_element_code_or_id) { if (!$pm_element_code_or_id) { return null; } if (MemoryCache::contains($pm_element_code_or_id, 'ElementInstances')) { return MemoryCache::fetch($pm_element_code_or_id, 'ElementInstances'); } $t_element = new ca_metadata_elements(is_numeric($pm_element_code_or_id) ? $pm_element_code_or_id : null); if (!($vn_element_id = $t_element->getPrimaryKey())) { if ($t_element->load(array('element_code' => $pm_element_code_or_id))) { MemoryCache::save($t_element->getPrimaryKey(), $t_element, 'ElementInstances'); MemoryCache::save($t_element->get('element_code'), $t_element, 'ElementInstances'); return $t_element; } } else { MemoryCache::save($vn_element_id, $t_element, 'ElementInstances'); MemoryCache::save($t_element->get('element_code'), $t_element, 'ElementInstances'); return $t_element; } return null; }
/** * @param string $ps_file_path * @param bool $pb_dont_cache * @param bool $pb_dont_cache_instance * @return Configuration */ static function load($ps_file_path = __CA_APP_CONFIG__, $pb_dont_cache = false, $pb_dont_cache_instance = false) { if (!$ps_file_path) { $ps_file_path = __CA_APP_CONFIG__; } if (!MemoryCache::contains($ps_file_path, 'ConfigurationInstances') || $pb_dont_cache || $pb_dont_cache_instance) { MemoryCache::save($ps_file_path, new Configuration($ps_file_path, true, $pb_dont_cache), 'ConfigurationInstances'); } return MemoryCache::fetch($ps_file_path, 'ConfigurationInstances'); }
/** * Returns element_code of ca_metadata_element with specified element_id or NULL if the element doesn't exist */ private function _getElementListCode($pn_element_id) { $vn_element_id = $this->_getElementID($pn_element_id); // ensures MemoryCache is populated return MemoryCache::fetch($vn_element_id, 'SearchIndexerElementIds'); }
/** * Extracts media metadata using MediaInfo * * @param string $ps_filepath file path * @param string $ps_mediainfo_path optional path to MediaInfo binary. If omitted the path configured in external_applications.conf is used. * * @return array Extracted metadata */ function caExtractMetadataWithMediaInfo($ps_filepath, $ps_mediainfo_path = null) { if (!$ps_mediainfo_path) { $ps_mediainfo_path = caGetExternalApplicationPath('mediainfo'); } if (!caIsValidFilePath($ps_mediainfo_path)) { return false; } if (MemoryCache::contains($ps_filepath, 'MediaInfoMetadata')) { return MemoryCache::fetch($ps_filepath, 'MediaInfoMetadata'); } // // TODO: why don't we parse this from the XML output like civilized people? // exec($ps_mediainfo_path . " " . caEscapeShellArg($ps_filepath), $va_output, $vn_return); $vs_cat = "GENERIC"; $va_return = array(); foreach ($va_output as $vs_line) { $va_split = explode(":", $vs_line); $vs_left = trim(array_shift($va_split)); $vs_right = trim(join(":", $va_split)); if (strlen($vs_right) == 0) { // category line $vs_cat = strtoupper($vs_left); continue; } if (strlen($vs_left) && strlen($vs_right)) { if ($vs_left != "Complete name") { // we probably don't want to display temporary filenames $va_return[$vs_cat][$vs_left] = $vs_right; } } } MemoryCache::save($ps_filepath, $va_return, 'MediaInfoMetadata'); return $va_return; }
/** * @expectedException MemoryCacheInvalidParameterException */ public function testInvalidKey() { MemoryCache::save('', 'data1', 'barNamespace'); }
/** * Fetch item_id for item with specified value. Value must match exactly. * * @param string $ps_list_code List code * @param string $ps_value The item value to search for * @param array $pa_options Options include: * transaction = transaction to execute queries within. [Default=null] * @return int item_id of list item or null if no matching item was found */ function caGetListItemIDForValue($ps_list_code, $ps_value, $pa_options = null) { $vs_cache_key = md5($ps_list_code . $ps_value . serialize($pa_options)); if (MemoryCache::contains($vs_cache_key, 'ListItemIDsForValues')) { return MemoryCache::fetch($vs_cache_key, 'ListItemIDsForValues'); } $t_list = new ca_lists(); if ($o_trans = caGetOption('transaction', $pa_options, null)) { $t_list->setTransaction($o_trans); } if ($va_item = $t_list->getItemFromListByItemValue($ps_list_code, $ps_value)) { $vs_ret = array_shift(array_keys($va_item)); MemoryCache::save($vs_cache_key, $vs_ret, 'ListItemIDsForValues'); return $vs_ret; } return null; }
/** * */ public function getRelationships($ps_left_table, $ps_right_table) { if (MemoryCache::contains("{$ps_left_table}/{$ps_right_table}", 'DatamodelRelationships')) { return MemoryCache::fetch("{$ps_left_table}/{$ps_right_table}", 'DatamodelRelationships'); } $va_relationships = $this->opo_graph->getAttribute("relationships", $ps_left_table, $ps_right_table); MemoryCache::save("{$ps_left_table}/{$ps_right_table}", $va_relationships, 'DatamodelRelationships'); return $va_relationships; }
/** * Flush whole cache, both in-memory and on-disk. Use with caution! */ public static function flush() { MemoryCache::flush(); ExternalCache::flush(); }
/** * The same as _t(), but rather than returning the translated string, it prints it **/ function _p($ps_key) { if (!$ps_key) { return; } global $_; if (!sizeof(func_get_args()) && MemoryCache::contains($ps_key, 'translation')) { print MemoryCache::fetch($ps_key, 'translation'); return; } if (is_array($_)) { $vs_str = $ps_key; foreach ($_ as $o_locale) { if ($o_locale->isTranslated($ps_key)) { $vs_str = $o_locale->_($ps_key); break; } } } else { if (!is_object($_)) { $vs_str = $ps_key; } else { $vs_str = $_->_($ps_key); } } if (sizeof($va_args = func_get_args()) > 1) { $vn_num_args = sizeof($va_args) - 1; for ($vn_i = $vn_num_args; $vn_i >= 1; $vn_i--) { $vs_str = str_replace("%{$vn_i}", $va_args[$vn_i], $vs_str); } } MemoryCache::save($ps_key, $vs_str, 'translation'); print $vs_str; return; }
function clearCache($arr = null) { $hash = 'sqlc' . hash('sha1', $this->queryString . serialize($arr)); return MemoryCache::delete($hash); }
public function Save() { $vs_view_name = 'preferences_html.php'; $vs_action = $this->request->getParameter('action', pString); switch ($vs_action) { case 'EditCataloguingPrefs': $vs_group = 'cataloguing'; $this->request->user->setPreference('cataloguing_locale', $this->request->getParameter('pref_cataloguing_locale', pString)); $va_ui_prefs = array(); foreach ($this->request->user->getValidPreferences($vs_group) as $vs_pref) { foreach ($_REQUEST as $vs_k => $vs_v) { if (preg_match("!pref_{$vs_pref}_([\\d]+)!", $vs_k, $va_matches)) { $va_ui_prefs[$vs_pref][$va_matches[1]] = $vs_v; } elseif (preg_match("!pref_{$vs_pref}__NONE_!", $vs_k)) { $va_ui_prefs[$vs_pref]['_NONE_'] = $vs_v; } } foreach ($va_ui_prefs as $vs_pref => $va_values) { $this->request->user->setPreference($vs_pref, $va_values); } } $vs_view_name = 'preferences_cataloguing_html.php'; break; case 'EditBatchPrefs': $vs_group = 'batch'; $va_ui_prefs = array(); foreach ($this->request->user->getValidPreferences($vs_group) as $vs_pref) { foreach ($_REQUEST as $vs_k => $vs_v) { if (preg_match("!pref_{$vs_pref}!", $vs_k, $va_matches)) { $this->request->user->setPreference($vs_pref, $vs_v); } } } $vs_view_name = 'preferences_batch_html.php'; break; case 'EditQuickAddPrefs': $vs_group = 'quickadd'; $va_ui_prefs = array(); foreach ($this->request->user->getValidPreferences($vs_group) as $vs_pref) { foreach ($_REQUEST as $vs_k => $vs_v) { if (preg_match("!pref_{$vs_pref}_([\\d]+)!", $vs_k, $va_matches)) { $va_ui_prefs[$vs_pref][$va_matches[1]] = $vs_v; } } foreach ($va_ui_prefs as $vs_pref => $va_values) { $this->request->user->setPreference($vs_pref, $va_values); } } $vs_view_name = 'preferences_quickadd_html.php'; break; case 'EditMediaPrefs': $vs_group = 'media'; foreach ($this->request->user->getValidPreferences($vs_group) as $vs_pref) { $this->request->user->setPreference($vs_pref, $this->request->getParameter('pref_' . $vs_pref, pString)); } break; case 'EditUnitsPrefs': $vs_group = 'units'; foreach ($this->request->user->getValidPreferences($vs_group) as $vs_pref) { $this->request->user->setPreference($vs_pref, $this->request->getParameter('pref_' . $vs_pref, pString)); } break; case 'EditProfilePrefs': $vs_group = 'profile'; foreach ($this->request->user->getValidPreferences($vs_group) as $vs_pref) { $this->request->user->setPreference($vs_pref, $this->request->getParameter('pref_' . $vs_pref, pString)); } break; case 'EditDuplicationPrefs': $vs_group = 'duplication'; foreach (array('ca_objects', 'ca_object_lots', 'ca_entities', 'ca_places', 'ca_occurrences', 'ca_collections', 'ca_storage_locations', 'ca_loans', 'ca_movements', 'ca_lists', 'ca_list_items', 'ca_tours', 'ca_tour_stops', 'ca_sets', 'ca_bundle_displays') as $vs_table) { foreach ($this->request->user->getValidPreferences($vs_group) as $vs_pref) { if ($vs_pref == 'duplicate_relationships') { $vs_val = $this->request->getParameter("pref_{$vs_table}_{$vs_pref}", pArray); } else { $vs_val = $this->request->getParameter("pref_{$vs_table}_{$vs_pref}", pString); } $this->request->user->setPreference("{$vs_table}_{$vs_pref}", $vs_val); } } $vs_view_name = 'preferences_duplication_html.php'; break; case 'EditUIPrefs': default: $vs_group = 'ui'; $vs_action = 'EditUIPrefs'; foreach ($this->request->user->getValidPreferences($vs_group) as $vs_pref) { $this->request->user->setPreference($vs_pref, $vs_locale = $this->request->getParameter('pref_' . $vs_pref, pString)); if ($vs_pref == 'ui_locale' && $vs_locale) { global $_, $g_ui_locale_id, $g_ui_locale, $_locale; // set UI locale for this request (causes UI language to change immediately - and in time - for this request) // if we didn't do this, you'd have to reload the page to see the locale change $this->request->user->setPreference('ui_locale', $vs_locale); $g_ui_locale_id = $this->request->user->getPreferredUILocaleID(); // get current UI locale as locale_id (available as global) $g_ui_locale = $this->request->user->getPreferredUILocale(); // get current UI locale as locale string (available as global) if (!initializeLocale($g_ui_locale)) { die("Error loading locale " . $g_ui_locale); } MemoryCache::flush('translation'); // reload menu bar AppNavigation::clearMenuBarCache($this->request); } if ($vs_pref == 'ui_theme') { // set the view path to use the new theme; if we didn't set this here you'd have to reload the page to // see the theme change. $this->view->setViewPath($this->request->getViewsDirectoryPath() . '/' . $this->request->getModulePath()); } } break; } $this->request->setAction($vs_action); $this->view->setVar('group', $vs_group); $this->notification->addNotification(_t("Saved preference settings"), __NOTIFICATION_TYPE_INFO__); $this->view->setVar('t_user', $this->request->user); $this->render($vs_view_name); }
/** * Cache the given Nodes. * * @param string $key * @param string[] $nodes * @param int $ttl TTL in seconds * * @return bool */ public function set($key, array $nodes, $ttl) { $this->read(); parent::set($key, $nodes, $ttl); return $this->write(); }
public function testSetAndFetchFromExternalCache() { $vm_ret = ExternalCache::save('foo', array('foo' => 'bar'), 'barNamespace'); $this->assertTrue($vm_ret, 'Setting item in cache should return true'); $vm_ret = CompositeCache::contains('foo', 'barNamespace'); $this->assertTrue($vm_ret, 'Checking for existence of a key we just set should return true'); $vm_ret = CompositeCache::contains('foo'); $this->assertFalse($vm_ret, 'The key should not exist in an unused namespace'); $vm_ret = CompositeCache::fetch('foo', 'barNamespace'); $this->assertArrayHasKey('foo', $vm_ret, 'Returned array should have key'); $this->assertEquals(array('foo' => 'bar'), $vm_ret, 'Cache item should not change'); // after we fetch it once using CompositeCache, it should be in memory $vm_ret = MemoryCache::fetch('foo', 'barNamespace'); $this->assertArrayHasKey('foo', $vm_ret, 'Returned array should have key'); $this->assertEquals(array('foo' => 'bar'), $vm_ret, 'Cache item should not change'); }
/** * Flush cache * @param string|null $ps_namespace Optional namespace definition. If given, only this namespace is wiped. * @throws MemoryCacheInvalidParameterException */ public static function flush($ps_namespace = null) { if (!$ps_namespace) { self::$opa_caches = array(); } else { if (!is_string($ps_namespace)) { throw new MemoryCacheInvalidParameterException('Namespace has to be a string'); } self::$opa_caches[$ps_namespace] = array(); } }
/** * Try to match given (partial) hierarchy path to a single subject in getty linked data AAT service * @param array $pa_hierarchy_path * @param int $pn_threshold * @param array $pa_options * removeParensFromLabels = Remove parens from labels for search and string comparison. This can improve results in specific cases. * @return bool|string */ function caMatchAAT($pa_hierarchy_path, $pn_threshold = 180, $pa_options = array()) { $vs_cache_key = md5(print_r($pa_hierarchy_path, true)); if (MemoryCache::contains($vs_cache_key, 'AATMatches')) { return MemoryCache::fetch($vs_cache_key, 'AATMatches'); } if (!is_array($pa_hierarchy_path)) { return false; } $pb_remove_parens_from_labels = caGetOption('removeParensFromLabels', $pa_options, false); // search the bottom-most component (the actual term) $vs_bot = trim(array_pop($pa_hierarchy_path)); if ($pb_remove_parens_from_labels) { $vs_lookup = trim(preg_replace("/\\([\\p{L}\\-\\_\\s]+\\)/", '', $vs_bot)); } else { $vs_lookup = $vs_bot; } $o_service = new WLPlugInformationServiceAAT(); $va_hits = $o_service->lookup(array(), $vs_lookup, array('phrase' => true, 'raw' => true, 'limit' => 2000)); if (!is_array($va_hits)) { return false; } $vn_best_distance = 0; $vn_pick = -1; foreach ($va_hits as $vn_i => $va_hit) { if (stripos($va_hit['TermPrefLabel']['value'], $vs_lookup) !== false) { // only consider terms that match what we searched // calculate similarity as a number by comparing both the term and the parent string $vs_label_with_parens = $va_hit['TermPrefLabel']['value']; $vs_label_without_parens = trim(preg_replace("/\\([\\p{L}\\s]+\\)/", '', $vs_label_with_parens)); $va_label_percentages = array(); // we try every combination with and without parens on both sides // unfortunately this code gets rather ugly because getting the similarity // as percentage is only possible by passing a reference parameter :-( similar_text($vs_label_with_parens, $vs_bot, $vn_label_percent); $va_label_percentages[] = $vn_label_percent; similar_text($vs_label_with_parens, $vs_lookup, $vn_label_percent); $va_label_percentages[] = $vn_label_percent; similar_text($vs_label_without_parens, $vs_bot, $vn_label_percent); $va_label_percentages[] = $vn_label_percent; similar_text($vs_label_without_parens, $vs_lookup, $vn_label_percent); $va_label_percentages[] = $vn_label_percent; // similarity to parent path similar_text($va_hit['ParentsFull']['value'], join(' ', array_reverse($pa_hierarchy_path)), $vn_parent_percent); // it's a weighted sum because the term label is more important than the exact path $vn_tmp = 2 * max($va_label_percentages) + $vn_parent_percent; //var_dump($va_hit); var_dump($vn_tmp); if ($vn_tmp > $vn_best_distance) { $vn_best_distance = $vn_tmp; $vn_pick = $vn_i; } } } if ($vn_pick >= 0 && $vn_best_distance > $pn_threshold) { $va_pick = $va_hits[$vn_pick]; MemoryCache::save($vs_cache_key, $va_pick['ID']['value'], 'AATMatches'); return $va_pick['ID']['value']; } return false; }
/** * Options: * rawDate - if true, returns date as an array of start and end historic timestames * sortable - if true a language-independent sortable representation is returned. * getDirectDate - get underlying historic timestamp (floatval) */ public function getDisplayValue($pa_options = null) { if (!is_array($pa_options)) { $pa_options = array(); } if (isset($pa_options['rawDate']) && $pa_options['rawDate']) { return array(0 => $this->opn_start_date, 1 => $this->opn_end_date, 'start' => $this->opn_start_date, 'end' => $this->opn_end_date); } if (caGetOption('GET_DIRECT_DATE', $pa_options, false) || caGetOption('getDirectDate', $pa_options, false)) { return $this->opn_start_date; } if (isset($pa_options['sortable']) && $pa_options['sortable']) { if (!$this->opn_start_date || !$this->opn_end_date) { return null; } return $this->opn_start_date . '/' . $this->opn_end_date; } $o_date_config = Configuration::load(__CA_CONF_DIR__ . '/datetime.conf'); $vs_date_format = $o_date_config->get('dateFormat'); $vs_cache_key = md5($vs_date_format . $this->opn_start_date . $this->opn_end_date); // pull from cache if (isset(DateRangeAttributeValue::$s_date_cache[$vs_cache_key])) { return DateRangeAttributeValue::$s_date_cache[$vs_cache_key]; } // if neither start nor end date are set, the setHistoricTimestamps() call below will // fail and the TEP will return the text for whatever happened to be parsed previously // so we have to init() before trying DateRangeAttributeValue::$o_tep->init(); if ($vs_date_format == 'original') { return DateRangeAttributeValue::$s_date_cache[$vs_cache_key] = $this->ops_text_value; } else { if (!is_array($va_settings = MemoryCache::fetch($this->getElementID(), 'ElementSettings'))) { $t_element = new ca_metadata_elements($this->getElementID()); $va_settings = MemoryCache::fetch($this->getElementID(), 'ElementSettings'); } DateRangeAttributeValue::$o_tep->setHistoricTimestamps($this->opn_start_date, $this->opn_end_date); return DateRangeAttributeValue::$s_date_cache[$vs_cache_key] = DateRangeAttributeValue::$o_tep->getText(array_merge(array('isLifespan' => $va_settings['isLifespan']), $pa_options)); //$this->ops_text_value; } }