/** * Führt ein SELECT aus * * @param string $what requested columns * @param string $from either the name of on table or an array with index 0 the from clause * and index 1 the requested tablename and optional index 2 a table alias to use. * @param array $arr the options array * @param boolean $debug = 0 Set to 1 to debug sql-String * @return array */ public static function doSelect($what, $from, $arr, $debug = 0) { return parent::doSelect($what, $from, $arr, $debug); }
public static function getAddLocalizationLinks(tx_rnbase_model_base $item, tx_rnbase_mod_BaseModule $mod = NULL) { if ($item->getUid() != $item->getProperty('uid') || $item->getSysLanguageUid() !== 0) { return ''; } $out = ''; foreach (self::getLangRecords($item->getPid()) as $lang) { // skip, if the be user hase no access to for the language! if (!$GLOBALS['BE_USER']->checkLanguageAccess($lang['uid'])) { continue; } // skip, if a overlay for this language allready exists tx_rnbase::load('tx_rnbase_util_TCA'); $parentField = tx_rnbase_util_TCA::getTransOrigPointerFieldForTable($item->getTableName()); $sysLanguageUidField = tx_rnbase_util_TCA::getLanguageFieldForTable($item->getTableName()); $overlays = tx_rnbase_util_DB::doSelect('uid', $item->getTableName(), array('where' => implode(' AND ', array($parentField . '=' . $item->getUid(), $sysLanguageUidField . '=' . (int) $lang['uid'])), 'limit' => 1)); if (!empty($overlays)) { continue; } /* @var $mod tx_rnbase_mod_BaseModule */ if (!$mod instanceof tx_rnbase_mod_BaseModule) { $mod = $GLOBALS['SOBE']; } $onclick = $mod->getDoc()->issueCommand('&cmd[' . $item->getTableName() . '][' . $item->getUid() . '][localize]=' . $lang['uid']); $onclick = 'window.location.href=\'' . $onclick . '\'; return false;'; $out .= sprintf('<a href="#" onclick="%1$s">%2$s</a>', htmlspecialchars($onclick), self::getLangSpriteIcon($lang, array('show_title' => FALSE))); } return $out; }
/** * Get picture usage count * * @param int $mediaUid * @return int */ public static function getReferencesCount($mediaUid) { $options['where'] = 'uid_local = ' . (int) $mediaUid; $options['count'] = 1; $options['enablefieldsoff'] = 1; $ret = tx_rnbase_util_DB::doSelect('count(*) AS \'cnt\'', 'tx_dam_mm_ref', $options, 0); $cnt = count($ret) ? intval($ret[0]['cnt']) : 0; return $cnt; }
/** * gets the last run time * * @return DateTime|null */ protected function getLastRunTime() { if ($this->lastRun === FALSE) { $options = array(); $options['enablefieldsoff'] = 1; $options['where'] = 'uid=' . (int) $this->getTaskUid(); $options['limit'] = 1; try { $ret = @tx_rnbase_util_DB::doSelect('tx_mklib_lastrun', 'tx_scheduler_task', $options); } catch (Exception $e) { $ret = NULL; } $this->lastRun = empty($ret) || empty($ret[0]['tx_mklib_lastrun']) || $ret[0]['tx_mklib_lastrun'] === '0000-00-00 00:00:00' ? NULL : new DateTime($ret[0]['tx_mklib_lastrun']); } return $this->lastRun; }
/** * Die Bildanzahl auslesen * * @param string $sTableName * @param string $sFieldName * @param int $iItemId * @return int */ public static function getImageCount($sTableName, $sFieldName, $iItemId) { if (!self::isLoaded()) { return 0; } $aOptions['where'] = 'tablenames=\'' . $sTableName . '\' AND ident=\'' . $sFieldName . '\' AND uid_foreign=' . $iItemId; $aOptions['count'] = 1; $aOptions['enablefieldsoff'] = 1; $ret = tx_rnbase_util_DB::doSelect('count(*) AS \'cnt\'', 'tx_dam_mm_ref', $aOptions, 0); return count($ret) ? intval($ret[0]['cnt']) : 0; }
/** * returns all language overlays. * * @param Tx_Rnbase_Domain_Model_Base $entry * @return array[Tx_Rnbase_Domain_Model_Base] */ private static function getLangOverlayEntries(Tx_Rnbase_Domain_Model_RecordInterface $entry) { tx_rnbase::load('tx_rnbase_util_TCA'); $parentField = tx_rnbase_util_TCA::getTransOrigPointerFieldForTable($entry->getTableName()); $overlays = tx_rnbase_util_DB::doSelect('*', $entry->getTableName(), array('where' => $parentField . '=' . $entry->getUid(), 'wrapperclass' => get_class($entry))); return $overlays; }
/** * Wurden die ZipRules geladen? */ private static function checkStaticCountries() { $cnt = tx_rnbase_util_DB::doSelect('COUNT(uid) as cnt', 'static_countries', array('enablefieldsoff' => 1, 'where' => 'zipcode_rule > 0')); $loaded = intval($cnt[0]['cnt']) > 0; if (!$loaded) { // zur Sicherheit die Zip Code Rules einfügen $sqlFilename = t3lib_div::getFileAbsFileName(t3lib_extMgm::extPath('mklib', 'ext_tables_static_update.sql')); if (@is_file($sqlFilename)) { tx_mklib_tests_Util::queryDB($sqlFilename, false, true); //alle statements importieren } } }
/** * @param int $taskId * @return DateTime */ protected function getLastRunTime($taskId) { $options = array(); $options['enablefieldsoff'] = 1; $options['where'] = 'uid=' . intval($taskId); $ret = tx_rnbase_util_DB::doSelect('tx_mklog_lastrun', 'tx_scheduler_task', $options); $lastrun = new DateTime(); if (count($ret)) { $lastrun = new DateTime($ret[0]['tx_mklog_lastrun']); } return $lastrun; }
/** * Pagebrowser vorbereiten. Wir im Plugin nach dem init() des Filters aufgerufen: * * // Soll ein PageBrowser verwendet werden * tx_rnbase_filter_BaseFilter::handlePageBrowser($configurations, * $this->getConfId().'myitem.pagebrowser', $viewdata, $fields, $options, array( * 'searchcallback'=> array($service, 'search'), * 'pbid' => 'mt'.$configurations->getPluginId(), * ) * ); * * @param tx_rnbase_configurations $configurations * @param string $confid Die Confid des PageBrowsers. z.B. myview.org.pagebrowser ohne Punkt! * @param ArrayObject $viewdata * @param array $fields * @param array $options * @param array $cfg You have to set 'searchcallback' and optional 'pbid' */ public static function handlePageBrowser(&$configurations, $confid, &$viewdata, &$fields, &$options, $cfg = array()) { $confid .= '.'; if (is_array($configurations->get($confid))) { $searchCallback = $cfg['searchcallback']; if (!$searchCallback) { throw new Exception('No search callback defined!'); } // Die Gesamtzahl der Items ist entweder im Limit gesetzt oder muss ermittelt werden $listSize = intval($options['limit']); if (!$listSize) { // Mit Pagebrowser benötigen wir zwei Zugriffe, um die Gesamtanzahl der Items zu ermitteln $pageBrowserOptions = $options; $pageBrowserOptions['count'] = 1; // eigenes what? if ($configurations->get($confid . 'what')) { $pageBrowserOptions['what'] = $configurations->get($confid . 'what'); // wir brauchen keinen countwrap wenn sich das what selbst darum // kümmert if (strpos(strtoupper($pageBrowserOptions['what']), 'COUNT(') !== FALSE) { $pageBrowserOptions['disableCountWrap'] = TRUE; } } $listSize = call_user_func($searchCallback, $fields, $pageBrowserOptions); //$listSize = $service->search($fields, $options); unset($options['count']); } // PageBrowser initialisieren $pbId = $cfg['pbid'] ? $cfg['pbid'] : 'pb'; /** * @var tx_rnbase_util_PageBrowser $pageBrowser */ $pageBrowser = tx_rnbase::makeInstance('tx_rnbase_util_PageBrowser', $pbId); $pageSize = intval($configurations->get($confid . 'limit')); $pageBrowser->setState($configurations->getParameters(), $listSize, $pageSize); // Nach dem Item nur suchen wenn über die Parameter kein Pointer gesetzt wurde. if (is_array($cfg['pointerFromItem']) && !$configurations->getParameters()->offsetExists($pageBrowser->getParamName('pointer')) && ($itemId = $configurations->getParameters()->get($cfg['pointerFromItem']['param']))) { // Wir erzeugen uns das SQl der eigentlichen Abfrage. // Dabei wollen wir auch die rownum haben! $sql = call_user_func($searchCallback, $fields, array_merge($options, array('sqlonly' => 1, 'rownum' => 1))); // Jetzt besorgen wir uns die Position des aktuellen Eintrages $res = tx_rnbase_util_DB::doSelect('ROW.rownum', '(' . $sql . ') as ROW', array('where' => 'ROW.' . $cfg['pointerFromItem']['field'] . '=' . $GLOBALS['TYPO3_DB']->fullQuoteStr($itemId, ''), 'enablefieldsoff' => TRUE)); // Jetzt haben wir ein Ergebnis, mit der Zeilennummer des Datensatzes. if (!empty($res)) { $rownum = intval($res[0]['rownum']); // Wir berechnen die Seite, auf der sich der aktuelle Eintrag befindet. // intval schneidet die Dezimalzahlen ab, erspart uns das runden. // -1, weil Bei 10 Einträgen pro Seite rownum 20 auf seite 2 ist, // 20/10 allerdings 2 (für seite 3) ergibt. $pageBrowser->setPointer(intval(($rownum - 1) / $pageSize)); } } $limit = $pageBrowser->getState(); $options = array_merge($options, $limit); if ($viewdata) { $viewdata->offsetSet('pagebrowser', $pageBrowser); } } }
/** * möglicherweise hängen geblibene tasks * @return array */ protected function getPossiblyFrozenTasks() { $selectFields = tx_rnbase_util_TYPO3::isTYPO62OrHigher() ? 'uid,serialized_task_object' : 'uid,classname'; return tx_rnbase_util_DB::doSelect($selectFields, 'tx_scheduler_task', array('enablefieldsoff' => true, 'where' => ' uid != ' . intval($this->taskUid) . ' AND LENGTH(serialized_executions) > 0 AND freezedetected = 0 AND lastexecution_time < ' . ($GLOBALS['EXEC_TIME'] - $this->getOption('threshold')))); }
/** * prüfen ob alles gelöscht wird, auch die bilder da sie keine * verwendung mehr haben * @group integration */ public function testHandleDeleteWhenNoReference() { $this->importDataSet(tx_mklib_tests_Util::getFixturePath('db/wordlist.xml')); //wir müssen nachträglich noch die richtige pid in die dam datensätze einfügen damit //diese auch gefunden werden über tx_mklib_util_DAM::getRecords require_once PATH_txdam . 'lib/class.tx_dam_db.php'; tx_rnbase_util_DB::doUpdate('tx_dam', '', array('pid' => tx_dam_db::getPidList())); $result = tx_mklib_util_DAM::handleDelete('tx_mklib_wordlist', 2, 'blacklisted', 1, true); //richtige Anzahl gelöscht? $this->assertEquals(0, $result['deletedReferences'], 'deletedReferences ist falsch!'); $this->assertEquals(0, $result['deletedRecords'], 'deletedRecords ist falsch!'); //bild nicht gelöscht? $this->assertFileExists($this->sAbsoluteImagePath, 'Das Bild der tempoäreren Anzeigen 4 und 20 wurde nicht gelöscht!'); //eintrag in dam auf hidden gesetzt? $res = tx_rnbase_util_DB::doSelect('*', 'tx_dam', array('enablefieldsoff' => true)); $this->assertEquals(1, count($res), 'Es wurde nicht die korrekte Anzahl von DAM Einträgen gefunden!'); $this->assertEquals(1, $res[0]['uid'], 'Es wurde scheinbar eine falscher DAM Eintrag gelöscht!!'); $this->assertEquals(0, $res[0]['hidden'], 'hidden falsch!'); $this->assertEquals(0, $res[0]['deleted'], 'deleted falsch!'); }
/** * Anzahl aller Meldungen für alle Log-Level laden * @param DateTime $lastRun */ protected function getSummary(DateTime $lastRun) { $what = 'severity, count(uid) As cnt'; $from = Tx_Mklog_Utility_Devlog::getTableName(); $options = array(); $options['groupby'] = 'severity'; $options['enablefieldsoff'] = '1'; $options['where'] = 'crdate>=' . $lastRun->format('U'); $result = tx_rnbase_util_DB::doSelect($what, $from, $options); return $result; }