ET-prolog

  • strict warning: Non-static method GalleryDataCache::put() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/embed.php on line 32.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 85.
  • strict warning: Non-static method GalleryEmbed::getEmbedPathByHttpRequest() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/embed.php on line 36.
  • strict warning: Non-static method GalleryUtilities::getRequestVariablesNoPrefix() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 1092.
  • strict warning: Non-static method GalleryUtilities::_getRequestVariable() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 289.
  • strict warning: Non-static method GalleryUtilities::_internalGetRequestVariable() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 875.
  • strict warning: Non-static method GalleryUtilities::_internalGetRequestVariable() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 879.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 293.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 708.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 714.
  • strict warning: Non-static method GalleryEmbed::init() should not be called statically in /var/www/kibergus.su/htdocs/sites/all/modules/gallery/gallery_base.inc on line 134.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 94.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 46.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 47.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 48.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 49.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryModule.class on line 21.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 55.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryPlatform/UnixPlatform.class on line 21.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 107.
  • strict warning: Non-static method GalleryUtilities::getRequestVariables() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 150.
  • strict warning: Non-static method GalleryUtilities::_getRequestVariable() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 242.
  • strict warning: Non-static method GalleryUtilities::_internalGetRequestVariable() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 875.
  • strict warning: Non-static method GalleryUtilities::_internalGetRequestVariable() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 879.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 246.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 708.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUtilities.class on line 714.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 152.
  • strict warning: Non-static method GalleryTranslator::getSupportedLanguageCode() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 154.
  • strict warning: Non-static method GalleryTranslator::getLanguageData() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryTranslator.class on line 414.
  • strict warning: Non-static method GalleryUtilities::strToUpper() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryTranslator.class on line 418.
  • strict warning: Non-static method GalleryDataCache::put() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 103.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 85.
  • strict warning: Non-static method GalleryEmbed::isCompatibleWithEmbedApi() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 107.
  • strict warning: Non-static method GalleryEmbed::getApiVersion() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 61.
  • strict warning: Non-static method GalleryUtilities::isCompatibleWithApi() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 61.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 128.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryCoreApi::getAllFactoryImplementationIds() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 179.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 187.
  • strict warning: Non-static method GalleryFactoryHelper_simple::getAllImplementationIds() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 188.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getFactoryData() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 213.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getSingleton() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 63.
  • strict warning: Non-static method GalleryCoreApi::newFactoryInstanceById() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 186.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 174.
  • strict warning: Non-static method GalleryFactoryHelper_simple::newInstanceById() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 175.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getFactoryData() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 191.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getSingleton() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 63.
  • strict warning: Non-static method GalleryFactoryHelper_simple::newInstance() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 201.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getFactoryData() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 141.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getSingleton() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 63.
  • strict warning: Non-static method GalleryCoreApi::getAnonymousUserId() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 203.
  • strict warning: Non-static method GalleryCoreApi::getPluginParameter() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 3078.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 300.
  • strict warning: Non-static method GalleryPluginHelper_simple::getParameter() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 302.
  • strict warning: Non-static method GalleryPluginHelper_simple::_fetchAllParameters() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 222.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 281.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryDataCache::get() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 282.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 186.
  • strict warning: Non-static method GalleryCoreApi::loadEntitiesById() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/init.inc on line 208.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 2360.
  • strict warning: Non-static method GalleryEntityHelper_simple::loadEntitiesById() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 2361.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryEntityHelper_simple.class on line 53.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryDataCache::getFromDisk() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryEntityHelper_simple.class on line 56.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 273.
  • strict warning: Non-static method GalleryDataCache::getCachePath() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 280.
  • strict warning: Non-static method GalleryDataCache::getCacheTuple() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 405.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 287.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUser.class on line 21.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEntity.class on line 21.
  • strict warning: Declaration of GalleryUser::create() should be compatible with GalleryEntity::create() in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUser.class on line 42.
  • strict warning: Declaration of GalleryUser::save() should be compatible with GalleryEntity::save($postEvent = true, $setAclId = NULL) in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryUser.class on line 42.
  • strict warning: Non-static method GalleryDataCache::put() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryEntityHelper_simple.class on line 95.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 85.
  • strict warning: Non-static method GalleryUtilities::isA() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryEntityHelper_simple.class on line 118.
  • strict warning: Non-static method GalleryDataCache::put() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 133.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 85.
  • strict warning: Non-static method GalleryEmbed::done() should not be called statically in /var/www/kibergus.su/htdocs/sites/all/modules/gallery/gallery_block.inc on line 36.
  • strict warning: Non-static method GalleryEmbed::getBlock() should not be called statically in /var/www/kibergus.su/htdocs/sites/all/modules/gallery/gallery_block.inc on line 194.
  • strict warning: Non-static method GalleryCoreApi::fetchPluginStatus() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 994.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 368.
  • strict warning: Non-static method GalleryPluginHelper_simple::fetchPluginStatus() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 369.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 347.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryDataCache::getFromDisk() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 352.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 273.
  • strict warning: Non-static method GalleryDataCache::getCachePath() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 280.
  • strict warning: Non-static method GalleryDataCache::getCacheTuple() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 438.
  • strict warning: Non-static method GalleryDataCache::put() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 444.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 85.
  • strict warning: Non-static method GalleryCoreApi::getCodeBasePath() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 1000.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 1006.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 1012.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryTheme.class on line 21.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 1020.
  • strict warning: Non-static method GalleryView::setStandardTemplateVariables() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEmbed.class on line 1021.
  • strict warning: Non-static method GalleryCoreApi::isAnonymousUser() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryView.class on line 660.
  • strict warning: Non-static method GalleryCoreApi::getAnonymousUserId() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 3098.
  • strict warning: Non-static method GalleryCoreApi::getPluginParameter() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 3078.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 300.
  • strict warning: Non-static method GalleryPluginHelper_simple::getParameter() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 302.
  • strict warning: Non-static method GalleryPluginHelper_simple::_fetchAllParameters() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 222.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 281.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryDataCache::get() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 282.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 186.
  • strict warning: Non-static method GalleryCoreApi::isUserInSiteAdminGroup() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryView.class on line 665.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 1775.
  • strict warning: Non-static method GalleryUserGroupHelper_simple::isUserInSiteAdminGroup() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 1776.
  • strict warning: Non-static method GalleryCoreApi::getPluginParameter() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryUserGroupHelper_simple.class on line 41.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 300.
  • strict warning: Non-static method GalleryPluginHelper_simple::getParameter() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 302.
  • strict warning: Non-static method GalleryPluginHelper_simple::_fetchAllParameters() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 222.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 281.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryDataCache::get() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 282.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 186.
  • strict warning: Non-static method GalleryUserGroupHelper_simple::isUserInGroup() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryUserGroupHelper_simple.class on line 46.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryUserGroupHelper_simple.class on line 62.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryCoreApi::getMapEntry() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryUserGroupHelper_simple.class on line 68.
  • strict warning: Non-static method GalleryDataCache::put() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryUserGroupHelper_simple.class on line 74.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 85.
  • strict warning: Declaration of GalleryChildEntity::create() should be compatible with GalleryEntity::create() in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryChildEntity.class on line 170.
  • strict warning: Declaration of GalleryChildEntity::createLink() should be compatible with GalleryEntity::createLink($entity) in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryChildEntity.class on line 170.
  • strict warning: Declaration of GalleryFileSystemEntity::create() should be compatible with GalleryChildEntity::create($parentId) in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryFileSystemEntity.class on line 44.
  • strict warning: Declaration of GalleryItem::save() should be compatible with GalleryEntity::save($postEvent = true, $setAclId = NULL) in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryItem.class on line 44.
  • strict warning: Declaration of GalleryAlbumItem::create() should be compatible with GalleryItem::create($parentId, $path, $canContainChildren = false) in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryAlbumItem.class on line 41.
  • strict warning: Only variables should be passed by reference in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEvent.class on line 54.
  • strict warning: Declaration of mapModule::getItemLinks() should be compatible with GalleryModule::getItemLinks($items, $wantsDetailedLinks, $permissions, $userId) in /var/www/kibergus.su/htdocs/gallery2/modules/map/module.inc on line 1050.
  • strict warning: Declaration of mapModule::getItemSummaries() should be compatible with GalleryModule::getItemSummaries($items, $permissions, &$template) in /var/www/kibergus.su/htdocs/gallery2/modules/map/module.inc on line 1050.
  • strict warning: Declaration of GalleryDataItem::create() should be compatible with GalleryItem::create($parentId, $path, $canContainChildren = false) in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataItem.class on line 417.
  • strict warning: Declaration of GalleryDerivativeImage::create() should be compatible with GalleryDerivative::create($parentId) in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDerivativeImage.class on line 40.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/lib/smarty_plugins/modifier.markup.php on line 46.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryCoreApi::getPluginParameter() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/lib/smarty_plugins/modifier.markup.php on line 48.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 300.
  • strict warning: Non-static method GalleryPluginHelper_simple::getParameter() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryCoreApi.class on line 302.
  • strict warning: Non-static method GalleryPluginHelper_simple::_fetchAllParameters() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 222.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 281.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryDataCache::get() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 282.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 186.
  • strict warning: Non-static method GalleryDataCache::put() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/lib/smarty_plugins/modifier.markup.php on line 53.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 85.
  • strict warning: Non-static method GalleryDataCache::get() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/lib/smarty_plugins/modifier.markup.php on line 56.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 186.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/lib/smarty_plugins/modifier.markup.php on line 46.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryDataCache::get() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/lib/smarty_plugins/modifier.markup.php on line 56.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryDataCache.class on line 186.
  • strict warning: Only variables should be passed by reference in /var/www/kibergus.su/htdocs/gallery2/modules/core/classes/GalleryEvent.class on line 54.
  • strict warning: Non-static method GalleryEmbed::parseHead() should not be called statically in /var/www/kibergus.su/htdocs/sites/all/modules/gallery/gallery_base.inc on line 495.
  • strict warning: Non-static method GalleryEmbed::done() should not be called statically in /var/www/kibergus.su/htdocs/sites/all/modules/gallery/gallery_block.inc on line 36.
Event driven Temporla prolog - это расширение SWI-Prolog предназначенное написания скриптов, задающих поведение системы (телефона, компьютера...) в зависимости от состояния внешней среды. Язык расширен операторами темпоральной логики, темпоральными термами (термами, запоминающими свое значение в предыдущие моменты времени) и средствами установки callback запросов на изменение значений темпоральных термов.

Введенные конструкции

Логика

В ET-Prolog используется обратная конечная линейная темпоральная логика. Она основана на временной шкале, идущей от текущего момента времени в прошлое. Шкала состоит из эпох, упорядоченных моментов времени, в которые происходит выполнение программы. Конечность временной шкалы означает, что информация о старых эпохах удаляется, чтобы ограничить расход системных ресурсов.

Темпоральные термы

На временной шкале определены темпоральные термы. Их значение описывает состояние окружающей среды, поэтому может меняться от эпохи к эпохе (гарантируется, что в течении одной эпохи значение не меняется). ET-Prolog по возможности сам отслеживает изменения значений темпоральных термов (т.е. они меняют значения не обязательно в результате выполнения программ на прологе).
ET-Prolog запоминает значения, которые получают темпоральные термы, поэтому вы всегда можете обратиться к истории с помощью темпоральных операторов

Стражи и скрипты

К каждому из темпоральных термов может быть привязано произвольное количество пар (список стражей|скрипт). При каждом вычислении темпорального терма стражам передаются последние два значения и страж принимает решение, надо ли вычислять соответствующий ему скрипт в текущей эпохе. В случае положительного вердикта скрипт добавляется в очередь и исполняется. Страж служит для увеличения быстродействия путем отсечения заведомо ненужных запросов. Если в списке несколько стражей, скрипт будет выполнен только если все стражи вернули истину.

Подсказки

Как было сказано выше, темпоральные термы не могут менять значение на протяжении эпохи, поэтому сообщения о необходимости смены значения запоминаются в виде подсказок, которые могут исходить как от исполняемых скриптов, так и от нитей, следящих за изменениями файлов, сигналами DBus, таймеров и cron. После завершения исполнения всех скриптов, назначенных на текущую эпоху, наступит новая эпоха, которая начнется с обработки накопившихся подсказок и изменения значений темпоральных термов. Если к началу эпохи подсказок нет, ET-Prolog переходит в режим ожидания и расходует системные ресурсы.

Синтаксис

Темпоральные термы

В настоящий момент реализованы следующие предикаты:
  • fileContents(CONTENT, FILENAME) - унифицирует первый аргумент с содержимым файла FILENAME. При этом ET-Prolog будет следить за файлом и, когда поступит сигнал и необходимости считать данные (urgent read), файл будет считан с начала. Подходит для чтения некоторых файлов из файловой системы sys. На основе этого предиката в стандартной библиотеке определены:
    • headphonesState(STATE) - унифицирует аргумент с состоянием гнезда для наушников (а также av кабеля)
    • slideState(STATE) - унифицирует аргумент с состоянием клавиатуры (выдвинута/задвинута)
    • shutterState(STATE) - унифицирует аргумент с состоянием шторки фотоаппарата
  • pollFile(STATE, FILENAME) - унифицирует первый аргумент с содержимым файла FILENAME. Считывание файла производится при каждом первом обращении за эпоху. На основе этого предиката в стандартной библиотеке определены:
    • proximitySensor(STATE) - унифицирует состояние проксимити-сенсора с первым аргументом.
  • intFile(LIGHT, FILENAME, TIME, MEASURES) - модификация pollFile, считывающая из файла одно целое число. При этом выполняется MEASURES измерений в течении TIME времени (измеряется в 1/1000 секунды), а LIGHT унифицируется со средним значением. На основе этого предиката в стандартной библиотеке определены:
    • lightSensor(LIGHT, TIME, MEASURES) - унифицирует значение освещенности с первым аргументом.
  • temporalTerm(VALUE, NAME) - темпоральный терм, значением которого можно управлять из пролога или через прием DBus сигналов.

Работа с temporalTerm

В отличие от остальных темпоральных термов ET-Prolog не умеет инициировать вычисление термов этого типа. Он просто запоминает его значения и возвращает их по требованию. Поэтому с ним определен особый порядок работы. Сначала необходимо его создать с помощью предиката
newTemporalTerm(NAME, INITIAL_VALUE)
где первый аргумент задает имя терма (по этому имени можно получить его значение), а INITIAL_VALUE задает его начальное значение. INITIAL_VALUE может быть произвольной конструкцией пролога, не содержащей неизвестных.
Получить значение терма можно с помощью предиката temporalTerm(VALUE, NAME). Изменить - путем добавления подсказки с помощью предиката
addHint(NAME, VALUE)
После обработки этой подсказки значение предиката поменяется на указанное.
Важной особенностью этого вида темпоральных термов является способность взаимодействовать с DBus. Вы можете зарегистрировать обработчик вызовов удаленных процедур DBus, все приходящие вызовы будут преобразовываться в прологовские списки и передаваться указанному терму в виде подсказки. Для этого предусмотрен предикат
addDBusHandler(SERVICE, OBJECT_PATH, INTERFACE, METHOD, IS_EVENT, TEMPORAL_TERM)
SERVICE, OBJECT_PATH, INTERFACE и METHOD определяют, какие DBus вызовы вы хотите получать. Если IS_EVENT ложь, то каждый сигнал будет преобразован в одну подсказку и терм будет хранить последнее пришедшее значение. Если IS_EVENT истина, то каждый вызов будет порождать две подсказки, одну со значениями аргументов вызова, а вторую с false. В результате, во все эпохи, в которые вызовы не поступали, терм будет иметь значение false. В качестве TEMPORAL_TERM указывается темпоральный терм, которому следует направлять подсказки.
Аналогично вы можете обрабатывать сигналы DBus.
addDBusListener(TYPE, OBJECT_PATH, INTERFACE, METHOD, IS_EVENT, USE_SYSTEM_BUS, TEMPORAL_TERM)
Где:
  • TYPE - тип принимаемого сообщения (signal или method_call)
  • OBJECT_PATH, INTERFACE, METHOD - определяют, какие сигналы ожидать, пустая строка '', означает, что принимать сигналы с любым значением указанного поля
  • IS_EVENT имеет то же значение, что и для addDBusHandler
  • USE_SYSTEM_BUS - если истина, ожидание будет производиться на системной шине, иначе на сессионной
Полученный DBus сигнал преобразуется в список. Вы можете обрабатывать полученное значение с помощью операторов работы со списками.

Добавление стражей

Определены следующие стражи:
  • alwaysGuard - всегда возвращает истину
  • changedGuard - возвращает истину если значение поменялось
  • decreasedGuard - возвращает истину если значение уменьшилось
  • equalGuard(value) - возвращает истину если значение равно value
  • greaterGuard(value) - возвращает истину если значение больше value
  • increasedGuard - возвращает истину если значение увеличилось
  • intervalGuard(A, B) - возвращает истину если значсение принадлежит отрезку [A, B]
  • lessGuard(value) - возвращает истину если значение меньше
  • nEqualGuard(value) - возвращает истину если значение не равно value
  • sameGuard - возвращает истину если значение не изменилось
    • Привязка стражей к терму производится с помощью команты
      addGuard(TEMPORAL_TERM, [[GUARD, ARGS...], [GUARD, ARGS...]...], SCRIPT, TRIGGER_ON_CHANGE)
      • TEMPORAL_TERM - темпоральный терм, к которому хотите привязать страж
      • [[GUARD, ARGS...], [GUARD, ARGS...]...] - список стражей, ARGS - список аргументов, передаваемых темпоральному терму. В настоящее врмя используется тольков GpsTerm, для остальных термов ARGS опускается.
      • SCRIPT - путь до скрипта, который нужно выполнить
      • TRIGGER_ON_CHANGE если истина, то скрипт вызывается при изменении значения коньюнкции стражей, если ложь - то скрипт будет вызван, если все стражи вернут истину
      Например
      addGuard(temporalTerm(_, 'manual_timer'), [[alwaysGuard]], 'logic/manual.pl', false)
      Также вы можете использовать
      addChangeGuard(TEMPORAL_TERM, [[GUARD, ARGS...], [GUARD, ARGS...]...], SCRIPT, TRIGGER_ON_CHANGE)
      который работает точно так же, но скрипт вызывается при изменении значения конъюнкции стражей.

      Работа с таймерами

      Если вам необходимо периодически проверять значение темпорального терма, то это можно сделать посылая ему подсказки с заданным интервалом. Воспользуйтесь предикатами
      addTimerHint(TERM, INTERVAL)
      для добавления таймера к терму TERM и
      delTimerHint(TERM, INTERVAL)
      для удаления.

      Отсылка DBus сигналов

      Так как основным средством межпроцессной коммуникации в maemo является DBus, ET-Prolog поддерживает посылку DBus сигналов. Для этого предназначена команда
      dbusSend(SERVICE, OBJECT_PATH, INTERFACE, METHOD, SIGNAL)
      где первые 4 параметра определяют куда необходимо послать сигнал (подробнее смотрите в документации по DBus), а SIGNAL - это данные, передаваемые в сигнале. SIGNAL должен быть списком, ET-Prolog производит автоматический перевод prolog типов данных в типы данных DBus. Едиснтвенная сложность заключается в отсутствии в SWI-Prolog синтаксиса для определения строк, поэтому, если вы хотите послать строку, вам придется сделать так:
      string_to_atom(PROFILE, 'silent'),
      dbusSend('com.nokia.profiled', '/com/nokia/profiled', 'com.nokia.profiled', 'set_profile', [PROFILE])

      Темпоральные операторы

      Для обеспечения доступа к предыдущим значениям темпоральных термов определены темпоральные операторы:
      • previous - вычисляет значение для предыдущей эпохи. Т.е. темпоральные термы примут значения, которые они имели эпоху назад. Вы можете применять этот оператор произвольное количество раз.
      • always - вернет истину, если его аргумент истинен во всех предыдущих эпохах (о которых есть данные).
      • sometimes - вернет истину, если его аргумент истинен хотя бы в одной предыдущей эпохе.
      В силу особенностей C++ интерфейса SWI-Prolog и просто отсутствия времени многозначные предикаты внутри темпоральных предикатов не поддерживаются (по крайней мере пока). Если вы хотите вычислить несколько предикатов, то, для соблюдения синтаксиса, их необходимо заключить в скобки:
      previous((
      	temporalTerm(OLDVALUE, 'manual'), 
      	write('Previous manual term value:'),
      	write(OLDVALUE),
      	nl))

      Очистка памяти

      Если какой-то темпоральный терм вам больше не нужен, вы можете удалить его предикатом
      deleteTerm(TEMPORAL_TERM)
      Кроме того, старые значения термов автоматически удаляются. По умолчанию удаляются значения старше получаса, если есть более новые значения. Эту величину можно поменять с помощью опции командной строки -t.

      Взаимодействие с библиотеками maemo

      alarmd - события, связанные с наступлением определенного момента времени

      Работа с таким событием состоит из двух этапов: создания события и его использования. Создается оно предикатом
      newAlarmTerm(NAME, IS_EVENT, SCHEDULE)
      Где NAME задает имя события, IS_EVENT определяет является ли это событие точкой во времени (значение истина), либо периодом (значение ложь). SCHEDULE описывает расписание, по которому событие наступает. Для случая IS_EVENT=true расписание имеет вид
      (DD.MM.YYYY HH:MM;...)
      причем вместо каждого значения можно указать *, что будет означать "любое значение", либо перечислить допустимые значения через запятую. Причем в качестве дня можно указывать как даты, так и дни недели. Т.е. "(5,wed.4,8,12.* 15:00)" означает "по средам и 5го числа 4го, 8го и 12го месяцев любого года в 15 часов". Вы можете указать несколько таких условий через точку с запятой, однако все они должны иметь одинаковый год.
      Для случая IS_EVENT=false расписание имеет вид
      (DD.MM.YYYY HH:MM;...)-(DD.MM.YYYY HH:MM;...)
      Где в первых скобках указаны моменты времени, когда интервал начинается, а во вторых, когда он заканчивается.
      Для получения значения терма используйте
      alarmTerm(VALUE, NAME)

      liblocation - GPS

      Для работы с GPS определены два предиката.
      gpsConfig(METHOD, INTERVAL)
      где METHOD - метод, используемый для определения местоположения. Может принимать значения CWP, ACWP, GNSS, AGNSS. А INTERVAL задает, как частно надо проверять местоположение. Подробнее смотрите в документации
      Второй терм позволяет получать информацию о текущем местоположении:
      gpsFix(VALUE, FIELD)
      Где FIELD задает поле LocationGPSDeviceFix, которое вы хотите получить. Допустимые значения: mode, time, time_set, ept, latitude, longitude, latlong_set, altitude, altitude_set, epv, track, track_set, epd, speed, speed_set, eps, climb, climb_set, epc. VALUE будет унифицирован с указанным значением.
      При установке стражей на GpsTerm необходимо указывать, на какое из полей вы устанавливаете страж, например вот так выглядят стражи, срабатывающие, если вы находитесь недалеко от Московского Государственного Университета им. М.В. Ломоносва:
      addGuard(gpsFix(_, 'mode'), [[equalGuard(true),'latlong_set'],[greaterGuard(55.71129),'latitude'],[greaterGuard(37.49922),'longitude'],[lessGuard(55.69145),'latitude'],[lessGuard(37.56634),'longitude']], 'logic/nearUniversity.pl', false)

      Послесловие

      Данная документация может быть не полной, мы могли забыть описать какие-то термы или не указать каких-то подробностей. Все-таки это первый бета релиз ET-Prolog. Если не понятно, как что-то работает, можете попробовать посмотреть в исходных кодах.