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"}';
     }
 }
Esempio n. 2
0
    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
		';
    }