loadModel('Cmsusers'); $this->loadModel('Clients'); $this->loadModel('Letters'); $this->loadModel('LetterExtras'); } public function main() { $this->out('Start'); if(defined('APP_ROOT_TRANSFER') && APP_ROOT_TRANSFER){ $this->resourcesForMember(); }else { $this->getListOfFiles(); } $this->out('Resource Transfer Completed'); $this->out('End'); } private function GetDirectorySize($path) { $bytestotal = 0; $path = realpath($path); if ($path !== false && $path != '' && file_exists($path)) { foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path, \FilesystemIterator::SKIP_DOTS)) as $object) { $bytestotal += $object->getSize(); } } return $bytestotal; } private function resourcesForMember() { $cli_logData['action'] = "MOVE_MEMBER_DOCUMENT"; $total_file_size = 0; // $spreadsheet = IOFactory::load(WWW_ROOT . 'active_member.xlsx'); // $active_members = $spreadsheet->getActiveSheet()->toArray(); // $active_members = array_slice($active_members, 1); $active_members = $this->getMember(); $member_logs = array(); foreach ($active_members as $member) { $file_size = 0; if (empty($member)) { continue; } $size = [ 'agreement_signed_content' => 0, 'agreenment_contents' => 0, 'certificates_pdf' => 0, 'chat_attachment' => 0, 'client_popup_content' => 0, 'client_agreement_files' => 0, 'contact_photo' => 0, 'credit_analysis_pdf' => 0, 'credit_analysis_template' => 0, 'email_queue' => 0, 'media' => 0, 'member_education_templates' => 0, 'member_email_attachment' => 0, 'member_email_template_attachment' => 0, 'member_email_template_body' => 0, 'member_help_templates' => 0, 'html_content' => 0, 'html_history_code' => 0, 'html_history_code_history_data' => 0, 'pdfletters_epic_velocity' => 0, 'pdfletters_super_rtg' => 0, 'pdfletters_velocity' => 0, 'pdfletters_zip' => 0, 'velocity' => 0, 'velocity_ringcentral' => 0, 'velocity_letterstream' => 0, 'epicvelocity_attachment' => 0, 'epicvelocity_printpdf' => 0, 'epicvelocity_letters_account' => 0, 'epicvelocity_letters_attachment' => 0, 'epicvelocity_clients_docs' => 0, 'epicvelocity_letter' => 0, 'rtg_letters_dropbox' => 0, 'rtg_letters_google_drive' => 0, 'rtg_letters_letterstream' => 0, 'rtg_letters_ringcentral' => 0, 'rtg_letters_zapier' => 0]; $cmsuser = $this->Cmsusers->find() ->where(['email' => $member]) ->first(); $member_id = $cmsuser->id; //agreement_signed_content/ $size['agreement_signed_content'] = $size['agreement_signed_content'] + $this->transferDirectory('agreement_signed_content/', $member_id); $file_size = $file_size + $size['agreement_signed_content']; //agreenment_contents/ $size['agreenment_contents'] = $size['agreenment_contents'] + $this->transferDirectory('agreenment_contents/', $member_id); $file_size = $file_size + $size['agreenment_contents']; //certificates/pdf/ $size['certificates_pdf'] = $size['certificates_pdf'] + $this->transferDirectory('certificates/pdf/', $member_id); $file_size = $file_size + $size['certificates_pdf']; //chat_attachment/ $size['chat_attachment'] = $size['chat_attachment'] + $this->transferDirectory('chat_attachment/', $member_id); $file_size = $file_size + $size['chat_attachment']; // client_agreement_files// $size['client_agreement_files'] = $size['client_agreement_files'] + $this->transferDirectory('client_agreement_files/', $member_id); $file_size = $file_size + $size['client_agreement_files']; // client_popup_content// $size['client_popup_content'] = $size['client_popup_content'] + $this->transferDirectory('client_popup_content/', $member_id); $file_size = $file_size + $size['client_popup_content']; // credit_analysis_pdf/ $size['credit_analysis_pdf'] = $size['credit_analysis_pdf'] + $this->transferDirectory('credit_analysis_pdf/', $member_id); $file_size = $file_size + $size['credit_analysis_pdf']; // credit_analysis_template/Member/ $size['credit_analysis_template'] = $size['credit_analysis_template'] + $this->transferDirectory('credit_analysis_template/Member/', $member_id); $file_size = $file_size + $size['credit_analysis_template']; //email_queue/ $size['email_queue'] = $size['email_queue'] + $this->transferDirectory('email_queue/', $member_id); $file_size = $file_size + $size['email_queue']; //media/companies/ $size['media'] = $size['media'] + $this->transferDirectory('media/companies/', $member_id); $file_size = $file_size + $size['media']; //member_education_templates/ $size['member_education_templates'] = $size['member_education_templates'] + $this->transferDirectory('member_education_templates/', $member_id); $file_size = $file_size + $size['member_education_templates']; //member_email_attachment/ $size['member_email_attachment'] = $size['member_email_attachment'] + $this->transferDirectory('member_email_attachment/', $member_id); $file_size = $file_size + $size['member_email_attachment']; //member_email_template_attachment/ $size['member_email_template_attachment'] = $size['member_email_template_attachment'] + $this->transferDirectory('member_email_template_attachment/', $member_id); $file_size = $file_size + $size['member_email_template_attachment']; //member_email_template_body/ $size['member_email_template_body'] = $size['member_email_template_body'] + $this->transferDirectory('member_email_template_body/', $member_id); $file_size = $file_size + $size['member_email_template_body']; //member_help_templates/ $size['member_help_templates'] = $size['member_help_templates'] + $this->transferDirectory('member_help_templates/', $member_id); $file_size = $file_size + $size['member_help_templates']; //html_content/ $size['html_content'] = $size['html_content'] + $this->transferDirectory('html_content/', $member_id); $file_size = $file_size + $size['html_content']; //html_history_code/ $size['html_history_code'] = $size['html_history_code'] + $this->transferDirectory('html_history_code/', $member_id); $file_size = $file_size + $size['html_history_code']; //html_history_code/history_data/ $size['html_history_code_history_data'] = $size['html_history_code_history_data'] + $this->transferDirectory('html_history_code/history_data/', $member_id); $file_size = $file_size + $size['html_history_code_history_data']; //pdfletters/Epic Velocity/ $size['pdfletters_epic_velocity'] = $size['pdfletters_epic_velocity'] + $this->transferDirectory('pdfletters/Epic Velocity/', $member_id); $file_size = $file_size + $size['pdfletters_epic_velocity']; //pdfletters/Super RTG/ $size['pdfletters_super_rtg'] = $size['pdfletters_super_rtg'] + $this->transferDirectory('pdfletters/Super RTG/', $member_id); $file_size = $file_size + $size['pdfletters_super_rtg']; //pdfletters/Velocity/ $size['pdfletters_velocity'] = $size['pdfletters_velocity'] + $this->transferDirectory('pdfletters/Velocity/', $member_id); $file_size = $file_size + $size['pdfletters_super_rtg']; //pdfletters/zip/ $size['pdfletters_zip'] = $size['pdfletters_zip'] + $this->transferDirectory('pdfletters/zip/', $member_id); $file_size = $file_size + $size['pdfletters_zip']; //velocity/ $size['velocity'] = $size['velocity'] + $this->transferDirectory('velocity/', $member_id); $file_size = $file_size + $size['velocity']; //velocity/ringcentral/ $size['velocity_ringcentral'] = $size['velocity_ringcentral'] + $this->transferDirectory('velocity/ringcentral/', $member_id); $file_size = $file_size + $size['velocity_ringcentral']; //velocity/letterstream/ $size['velocity_letterstream'] = $size['velocity_letterstream'] + $this->transferDirectory('velocity/letterstream/', $member_id); $file_size = $file_size + $size['velocity_letterstream']; // epicvelocity/letters/attachment// $size['epicvelocity_attachment'] = $size['epicvelocity_attachment'] + $this->transferDirectory('epicvelocity/letters/attachment/', $member_id); $file_size = $file_size + $size['epicvelocity_attachment']; //epicvelocity/printpdf/ $size['epicvelocity_printpdf'] = $size['epicvelocity_printpdf'] + $this->transferDirectory('epicvelocity/printpdf/', $member_id); $file_size = $file_size + $size['epicvelocity_printpdf']; // epicvelocity/letters/account/ $size['epicvelocity_letters_account'] = $size['epicvelocity_letters_account'] + $this->transferDirectory('epicvelocity/letters/account/', $member_id); $file_size = $file_size + $size['epicvelocity_letters_account']; //epicvelocity/clients_docs/ $letterExtras = $this->LetterExtras->find()->where(['cmsuser_id' => $member_id])->toArray(); if (!empty($letterExtras)) { foreach ($letterExtras as $letterExtra) { if (!empty($letterExtra->html_file_path)) { $size['epicvelocity_clients_docs'] = $size['epicvelocity_clients_docs'] + $this->calculateDirectorySize(WWW_ROOT . "epicvelocity/clients_docs/" . $letterExtra->html_file_path); $this->transferFile('epicvelocity/clients_docs/', $letterExtra->html_file_path); $file_size = $file_size + $size['epicvelocity_clients_docs']; } } } //epicvelocity/letter/ $letters = $this->Letters->find()->where(['cmsuser_id' => $member_id])->toArray(); if (!empty($letters)) { foreach ($letters as $letter) { $size['epicvelocity_letter'] = $size['epicvelocity_letter'] + $this->calculateDirectorySize(WWW_ROOT . "epicvelocity/letters/" . $letter->zip_file); $this->transferFile('epicvelocity/letter/', $letter->zip_file); $file_size = $file_size + $size['epicvelocity_letter']; } } //rtg_letters/dropbox/ $size['rtg_letters_dropbox'] = $size['rtg_letters_dropbox'] + $this->transferDirectory('rtg_letters/dropbox/', $member_id); $file_size = $file_size + $size['rtg_letters_dropbox']; //rtg_letters/google_drive/ $size['rtg_letters_google_drive'] = $size['rtg_letters_google_drive'] + $this->transferDirectory('rtg_letters/google_drive/', $member_id); $file_size = $file_size + $size['rtg_letters_google_drive']; //rtg_letters/letterstream/ $size['rtg_letters_letterstream'] = $size['rtg_letters_letterstream'] + $this->transferDirectory('rtg_letters/letterstream/', $member_id); $file_size = $file_size + $size['rtg_letters_letterstream']; //rtg_letters/ringcentral/ $size['rtg_letters_ringcentral'] = $size['rtg_letters_ringcentral'] + $this->transferDirectory('rtg_letters/ringcentral/', $member_id); $file_size = $file_size + $size['rtg_letters_ringcentral']; //rtg_letters/zapier/ $size['rtg_letters_zapier'] = $size['rtg_letters_zapier'] + $this->transferDirectory('rtg_letters/zapier/', $member_id); $file_size = $file_size + $size['rtg_letters_zapier']; $clients = $this->Clients->find() ->where(['cmsuser_id' => $cmsuser->id]) ->toArray(); if (!empty($clients)) { foreach ($clients as $client) { $client_id = $client->id; $member_id = $client->cmsuser_id; if (empty($client)) { continue; } $client->status = 4; // status 4 -- is deleted from db // $this->Clients->save($client); // contact_photo/ $size['contact_photo'] = $size['contact_photo'] + $this->transferDirectory('contact_photo/', $client_id); $file_size = $file_size + $size['contact_photo']; } } $total_file_size = $total_file_size + $file_size; $member_logs[$cmsuser->email] = ['member' => $member_id, 'files' => $size]; } $cli_logData['data'] = $member_logs; $cli_logData['total_file_size'] = $total_file_size; $this->cronjobLog($cli_logData); $this->out('Total Moved File Size In Bytes: ' . $total_file_size); } private function calculateDirectorySize($path) { $size = 0; if (is_file($path) || is_dir($path)) { try { if (is_file($path)) { $size = filesize($path); } if (is_dir($path)) { $size = $this->GetDirectorySize($path); } } catch (\Exception $ex) { } } return $size; } private function copyFolderContents($sourceFolder, $destinationFolder) { $size = 0; $folder = new Folder($sourceFolder); [$subfolders, $files] = $folder->read(true, true); if (!is_dir($destinationFolder)) { mkdir($destinationFolder, 0755, true); } foreach ($files as $file) { $filePath = $sourceFolder . DS . $file; $destinationPath = $destinationFolder . DS . $file; $fileObj = new File($filePath); $size += $fileObj->size(); if (SERVER == 1) { $this->serverCommand($filePath, $destinationPath); } else { $fileObj->copy($destinationPath); } } foreach ($subfolders as $subfolderName) { $size += $this->copyFolderContents( $sourceFolder . DS . $subfolderName, $destinationFolder . DS . $subfolderName ); } return $size; } private function transferDirectory($root_dir, $target_dir) { if (empty($root_dir) || empty($target_dir)) { return 0; } $source_path = SOURCE_DIRECTORY . $root_dir . DS . $target_dir; $destination = DESTINATION_DIRECTORY . DS . $root_dir . DS . $target_dir; if (!is_dir($source_path)) { return 0; } $this->saveFolderPath($root_dir . DS . $target_dir); return $this->copyFolderContents($source_path, $destination); } public function transferFile($dir, $file_name) { $message = 'Source file not found.'; $source_path = SOURCE_DIRECTORY . $dir . DS . $file_name; $destination = DESTINATION_DIRECTORY . DS . $dir; $destination_path = $destination . DS . $file_name; $folder = new Folder($destination, true, 0755); $file = new File($source_path); if ($file->exists()) { if (SERVER == 1) { $this->serverCommand($source_path, $destination_path); } else { if ($file->copy($destination_path)) { $message = 'File transferred successfully.'; } else { $message = 'Failed to copy the file.'; } } } $this->saveFilePath($dir . DS . $file_name); return $message; } private function getListOfFiles() { $cli_logData['action'] = "MOVE_ROOT_DOCUMENT"; $source_dir_path = SOURCE_DIRECTORY; $destination_dir_path = DESTINATION_DIRECTORY; $folder = new Folder($source_dir_path); list($directories, $files) = $folder->read(); new Folder($destination_dir_path, true, 0755); $file_list = []; foreach ($files as $key => $file) { $sourceFile = new File($source_dir_path . $file); $destinationFilePath = $destination_dir_path . $file; $sourceFile->copy($destinationFilePath); $file_list[$file] = ['source' => $destination_dir_path . $file, 'message' => "Done"]; } $directory_list = []; foreach ($directories as $key => $directory) { $transfer = $this->transferFixedFolder($source_dir_path . $directory, $directory); $directory_list[$directory] = ['destination' => $destination_dir_path . $directory, 'response' => $transfer]; } $cli_logData['data'] = $directory_list; $this->cronjobLog($cli_logData); $this->out('Transfer Completed.'); } private function transferFixedFolder($dir, $transfer_dir) { $transfer = []; // if (!$this->memberFolderList($transfer_dir)) { if ($this->webRootFolders($transfer_dir)) { $source_path = SOURCE_DIRECTORY . DS . $transfer_dir; $destination = DESTINATION_DIRECTORY . DS . $transfer_dir; if (!is_dir($source_path)) { return 0; } return $this->copyFolderContents($source_path, $destination); } return $transfer; } private function memberFolderList($value) { $source_dir_name = $value . '/'; $member_folder = ['agreement_signed_content/', 'agreenment_contents/', 'certificates/pdf/', 'chat_attachment/', 'client_agreement_files/', 'agreenment_contents/', 'certificates/', 'chat_attachment/', 'client_agreement_files/', 'client_popup_content/', 'credit_analysis_pdf/', 'credit_analysis_template/Member/', 'email_queue/', 'credit_analysis_template/', 'media/companies/', 'member_education_templates/', 'member_email_attachment/', 'member_email_template_attachment/', 'member_email_template_body/', 'member_help_templates/', "html_content/", "html_history_code/", "html_history_code/history_data/", "pdfletters/", "pdfletters/Epic Velocity/", "pdfletters/Super RTG/", "pdfletters/Velocity/", "pdfletters/zip/", "velocity/", "velocity/ringcentral/", "velocity/letterstream/", "epicvelocity/", "epicvelocity/letters/attachment/", 'rtg_letters/dropbox/', 'rtg_letters/google_drive/', 'rtg_letters/', 'rtg_letters/letterstream/', 'rtg_letters/ringcentral/', 'rtg_letters/zapier/', 'contact_photo/', 'epicvelocity/letter/', 'epicvelocity/clients_docs/']; return in_array($source_dir_name, $member_folder); } private function serverCommand($source, $destination) { $command = "rsync -avz $source $destination"; exec($command, $output, $return_var); } private function saveFolderPath($path){ $fileName = 'folder_paths.txt'; $filePath = WWW_ROOT . DS . $fileName; file_put_contents($filePath, $path. PHP_EOL, FILE_APPEND); } private function saveFilePath($path){ $fileName = 'file_paths.txt'; $filePath = WWW_ROOT . DS . $fileName; file_put_contents($filePath, $path. PHP_EOL, FILE_APPEND); } private function webRootFolders($value) { $source_dir_name = $value . '/'; $webroot_folder = [ 'AdminAccountImage/', 'GuestForms/', 'REST-Client/', 'RTG/', 'Redis/', 'V1.0/', 'V2.0/', 'V3.0/', 'admin_lte/', 'admin_RTG/', 'api/', 'attach-documents/', 'bootstrap/', 'build/', 'cmsuser_logo/', 'credit_analysis_default/', 'compiles/', 'cronjob/', 'css/', 'datepicker/', 'dist/', 'dropbox/', 'fonts/', 'forum/', 'images/', 'invoice-logo/', 'js/', 'loading/', 'magnify/', 'mpdf60/', 'new_layout/', 'payment_vendor/', 'pie-semi-chart/', 'plugins/', 'project-media-files/', 'rtgv3/', 'tshirts/', 'zapier/', 'user-photo/' ]; return in_array($source_dir_name, $webroot_folder); } private function getMember() { $emails = [ 'tmoment09@gmail.com', 'tagee52283@aol.com', 'ashantitreasures@gmail.com', 'consumerresourcesolutions@gmail.com', 'carlos.montes33@gmail.com', 'bdawson92073@gmail.com', 'davidmauime@gmail.com', 'foster23jordan@gmail.com', 'kashem2003@gmail.com', 'dmiddleton@sagecredit-business.com', 'christine.dunn22@gmail.com', 'credithackerjim@gmail.com', 'aphifer2@aol.com', 'kevindbaskerville1@gmail.com', 'abrafinancialgroup@gmail.com', 'Barbra.gray@yahoo.com', 'dan@danhollis.com', 'brijetjordan@yahoo.com', 'carmansmith5@gmail.com', 'johnniesmith99@gmail.com', 'karenforbes2020@gmail.com', 'roguewesley@gmail.com', 'customerservice@eanddcreditconsultant.com', 'sau.tagaloa@gmail.com', 'tony@tonyscreditrepair.com', 'cpsjerry@gmail.com', '2123inna@gmail.com', 'ARICBOST@GMAIL.COM', 'info@upgradefinancialservices.com', 'Don_millions@yahoo.com', 'dinah@dbeverly.com', 'wvalerie@swbell.net', 'maurice@gattenterprises.com', 'karinaferrer@creditrepairreno.com', 'support@m2cacademy.com', 'jesse@coachjmiller.com', ]; return $emails; } }