/** * Löscht einen Datensatz * * @param string $tablename * @param string $where * @param boolean $debug * @return int number of rows affected */ public static function doDelete($tablename, $where, $debug = 0) { $res = parent::doDelete($tablename, $where, $debug); self::log('doDelete', $tablename, $where); return $res; }
/** * Wrapper for actual deletion * * Delete records according to given ready-constructed "where" condition and deletion mode * * @param string $table * @param string $where Ready-to-use where condition containing uid restriction * @param int $mode @see self::handleDelete() */ protected function delete($table, $where, $mode) { global $GLOBALS; tx_rnbase::load('tx_rnbase_util_DB'); switch ($mode) { // Hide model case self::DELETION_MODE_HIDE: // Set hidden field according to $TCA if (!isset($GLOBALS['TCA'][$table]['ctrl']['enablecolumns']['disabled'])) { throw new Exception("tx_rnbase_sv1_Base->delete(): Cannot hide records in table {$table} - no \$TCA entry found!"); } //else $data = array($GLOBALS['TCA'][$table]['ctrl']['enablecolumns']['disabled'] => 1); tx_rnbase_util_DB::doUpdate($table, $where, self::insertTimestamp($data, $table)); break; // Soft-delete model // Soft-delete model case self::DELETION_MODE_SOFTDELETE: // Set deleted field according to $TCA if (!isset($GLOBALS['TCA'][$table]['ctrl']['delete'])) { throw new Exception("tx_rnbase_sv1_Base->delete(): Cannot soft-delete records in table {$table} - no \$TCA entry found!"); } //else $data = array($GLOBALS['TCA'][$table]['ctrl']['delete'] => 1); tx_rnbase_util_DB::doUpdate($table, $where, self::insertTimestamp($data, $table)); break; // Really hard-delete model // Really hard-delete model case self::DELETION_MODE_REALLYDELETE: tx_rnbase_util_DB::doDelete($table, $where); break; default: throw new Exception("tx_rnbase_sv1_Base->delete(): Unknown deletion mode ({$mode})"); } }
/** * Removes dam references. If no parameter is given, all references will be removed. * * @param string $uids commaseperated uids */ public static function deleteReferences($tableName, $fieldName, $itemId, $uids = '') { $where = 'tablenames=' . tx_rnbase_util_DB::fullQuoteStr($tableName, 'tx_dam_mm_ref'); $where .= ' AND ident=' . tx_rnbase_util_DB::fullQuoteStr($fieldName, 'tx_dam_mm_ref'); $where .= ' AND uid_foreign=' . (int) $itemId; if (strlen(trim($uids))) { $uids = implode(',', tx_rnbase_util_Strings::intExplode(',', $uids)); $where .= ' AND uid_local IN (' . $uids . ') '; } tx_rnbase_util_DB::doDelete('tx_dam_mm_ref', $where); // Jetzt die Bildanzahl aktualisieren self::updateImageCount($tableName, $fieldName, $itemId); }
/** * Setzt einen Dam Record auf hidden * @todo nicht nur verstecken sondern auch löschen integrieren * @param array $aDamRecord sollte nur einen record in ['rows'] enthalten * @param int $iMode verstecken, auf deleted setzen oder ganz löschen * @param bool $bDeletePicture * * @return bool */ public static function deleteDamRecord($aDamRecords, $iMode = 0, $bDeletePicture = false) { if (empty($aDamRecords['rows'])) { return false; } foreach ($aDamRecords['rows'] as $iDam => $row) { //wenn wir nur keine referenzen mehr haben dann können wir das bild und //den eigentlichen eintrag löschen if (!tx_mklib_util_DAM::damRecordHasReferences($iDam)) { //dam eintrag und bild löschen tx_rnbase::load('tx_rnbase_util_DB'); switch ($iMode) { case 0: //verstecken //verstecken default: tx_rnbase_util_DB::doUpdate('tx_dam', 'tx_dam.uid = ' . $iDam, array('hidden' => 1)); break; case 1: //löschen tx_rnbase_util_DB::doUpdate('tx_dam', 'tx_dam.uid = ' . $iDam, array('deleted' => 1)); break; case 2: //hart löschen tx_rnbase_util_DB::doDelete('tx_dam', 'tx_dam.uid = ' . $iDam); break; } //und bild löschen? if ($bDeletePicture) { unlink(PATH_site . '/' . $aDamRecords['files'][$iDam]); } } } return true; }