Si se echa un vistazo a la fuente para el controlador de administración de ese módulo, se puede ver el código que utilizan para llevar a cabo una masa borrar
#File: app/code/local/Mage/Imaclean/controllers/Adminhtml/ImacleanController.php
public function massDeleteAction() {
$imacleanIds = $this->getRequest()->getParam('imaclean');
if(!is_array($imacleanIds)) {
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)'));
} else {
try {
$model = Mage::getModel('imaclean/imaclean');
foreach ($imacleanIds as $imacleanId) {
$model->load($imacleanId);
unlink('media/catalog/product'. $model->getFilename());
$model->setId($imacleanId)->delete();
}
Mage::getSingleton('adminhtml/session')->addSuccess(
Mage::helper('adminhtml')->__(
'Total of %d record(s) were successfully deleted', count($imacleanIds)
)
);
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
}
}
$this->_redirect('*/*/index');
}
Por lo tanto, esta acción del controlador acepta un número de ids de modelos "imaclean/imaclean", usa estos ids para realizar una eliminación. Por lo tanto, el código clave en que la acción es
$imacleanIds = $this->getRequest()->getParam('imaclean');
$model = Mage::getModel('imaclean/imaclean');
foreach ($imacleanIds as $imacleanId) {
$model->load($imacleanId);
unlink('media/catalog/product'. $model->getFilename());
$model->setId($imacleanId)->delete();
}
Así, se podría replicar el código anterior en una versión independiente con algo como
//itterates through all 'imaclean/imaclean' models in the database
$models = Mage::getModel('imaclean/imaclean')->getCollection();
foreach ($models as $model) {
unlink('media/catalog/product'. $model->getFilename());
$model->setId($model->getId())->delete();
}
Por último, se ve como una "imaclean/imaclean "Los modelos se utilizan para realizar un seguimiento de las imágenes que ya no se necesitan. Parece que el módulo los crea (es decir, ejecuta una comprobación de las imágenes no utilizadas) en la nueva Acción con el método compareList
del ayudante predeterminado.
public function newAction(){
Mage::helper('imaclean')->compareList();
$this->_redirect('*/*/');
}
Por lo tanto, podemos añadir que al inicio de nuestro script, así como la inicialización de Magento de facto, lo que nos debe dar lo que necesitamos.
#File: cleanup.php
require_once "app/Mage.php";
$app = Mage::app("default");
Mage::helper('imaclean')->compareList();
$models = Mage::getModel('imaclean/imaclean')->getCollection();
foreach ($models as $model) {
unlink('media/catalog/product'. $model->getFilename());
$model->setId($model->getId())->delete();
}
Eso debería al menos comenzar. ¡Buena suerte!
No quiero usar un módulo para eso porque demasiados módulos confunden al administrador. Tampoco necesito otra tabla db solo para borrar imágenes antiguas. Trataré de tomar solo el código que necesito del módulo y publicar el resultado. Gracias – pablo
¿Alguna vez se le ocurrió una solución? – styks
@Alan Storm si utilizamos cleanup.php anterior. ¿afecta a nuestra otra imagen? o solo borre esas imágenes que existen pero su producto eliminado? – MageDev