public function deleteUnreg() { if (count($this->messageIds) > 0) { foreach ($this->messageIds as $i => $row) { $par[] = "(:id_{$i},:mod_{$i})"; $param[":id_{$i}"] = $row['id']; $param[":mod_{$i}"] = hash('sha512', $row['modKey']); $mngData = array('oldId' => $row['id'], 'modKey' => isset($row['modKey']) ? hash('sha512', $row['modKey']) : ''); } if ($fileRemove = Yii::app()->db->createCommand("SELECT file FROM mailTable WHERE (id,modKey) IN (" . implode($par, ',') . ")")->queryAll(true, $param)) { foreach ($fileRemove as $filejson) { if ($files = json_decode($filejson['file'], true)) { foreach ($files as $names) { FileWorks::deleteFile($names); } } } } if ($newEmailsToClean = Yii::app()->mongo->findOne('mailQueue', $mngData)) { $emailToDeleteId = array('_id' => new MongoId($newEmailsToClean['_id']), 'modKey' => $newEmailsToClean['modKey']); if ($files = json_decode($newEmailsToClean['file'], true)) { foreach ($files as $filename) { FileWorks::deleteFile($filename); } } } if (Yii::app()->db->createCommand("DELETE FROM mailTable WHERE (id,modKey) IN (" . implode($par, ',') . ")")->execute($param) || Yii::app()->mongo->removeAll('mailQueue', $emailToDeleteId)) { echo '{"results":"success"}'; } else { echo '{"results":"fail"}'; } } else { echo '{"results":"success"}'; } }
public function houseCleaner() { if (!Yii::app()->db->createCommand("SELECT * FROM crawler WHERE action='cleaningHouse'")->queryRow()) { Yii::app()->db->createCommand("INSERT INTO crawler (action,active) VALUES('cleaningHouse',1)")->execute(); //$newMail2field[]=array('oldId'=>$row['mailId'],'modKey'=>hash('sha512', $row['mailModKey'])); $user = array('expireAfter' => array('$lte' => new MongoDate(strtotime('now')))); if ($emailsToClean = Yii::app()->db->createCommand("SELECT file,id,expired FROM mailTable WHERE expired <NOW()")->queryAll()) { foreach ($emailsToClean as $i => $row) { $emailToDeleteId[":mailId_{$i}"] = $row['id']; if ($files = json_decode($row['file'], true)) { foreach ($files as $filename) { FileWorks::deleteFile($filename); } } } Yii::app()->db->createCommand("DELETE FROM mailTable WHERE id IN (" . implode(array_keys($emailToDeleteId), ',') . ")")->execute($emailToDeleteId); unset($emailToDeleteId); } else { if ($newEmailsToClean = Yii::app()->mongo->findAll('mailQueue', $user)) { foreach ($newEmailsToClean as $i => $doc) { $emailToDeleteId[] = array('_id' => new MongoId($doc['_id'])); if ($files = json_decode($doc['file'], true)) { foreach ($files as $filename) { FileWorks::deleteFile($filename); } } } $mngDataAgregate = array('$or' => $emailToDeleteId); Yii::app()->mongo->removeAll('mailQueue', $mngDataAgregate); } } Yii::app()->db->createCommand("DELETE FROM crawler WHERE action ='cleaningHouse'")->execute(); } echo 'success '; }