Rev 16768 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
<?phpdeclare(strict_types=1);namespace LeadersLinked\Controller;use Laminas\Db\Adapter\AdapterInterface;use Laminas\Mvc\Controller\AbstractActionController;use Laminas\Log\LoggerInterface;use Laminas\View\Model\ViewModel;use Laminas\View\Model\JsonModel;use LeadersLinked\Form\Tools\UserUploadGeneratePasswordForm;use PhpOffice\PhpSpreadsheet\IOFactory;use LeadersLinked\Library\Functions;class ToolsController extends AbstractActionController{/**** @var \Laminas\Db\Adapter\AdapterInterface*/private $adapter;/**** @var \LeadersLinked\Cache\CacheInterface*/private $cache;/**** @var \Laminas\Log\LoggerInterface*/private $logger;/**** @var array*/private $config;/**** @var \Laminas\Mvc\I18n\Translator*/private $translator;/**** @param \Laminas\Db\Adapter\AdapterInterface $adapter* @param \LeadersLinked\Cache\CacheInterface $cache* @param \Laminas\Log\LoggerInterface LoggerInterface $logger* @param array $config* @param \Laminas\Mvc\I18n\Translator $translator*/public function __construct($adapter, $cache, $logger, $config, $translator){$this->adapter = $adapter;$this->cache = $cache;$this->logger = $logger;$this->config = $config;$this->translator = $translator;}public function indexAction(){return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}public function userfilePasswordGeneratorAction(){$request = $this->getRequest();if($request->isPost()){$form = new UserUploadGeneratePasswordForm();$dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());$form->setData($dataPost);if($form->isValid()) {$file = $_FILES['file'];$tmp_filename = $file['tmp_name'];$filename = $file['name'];$final_filename = 'data/' . $filename;if(!move_uploaded_file($tmp_filename, $final_filename)) {return new JsonModel(['success' => false,'data' => 'ERROR_UPLOAD_FILE']);}$spreadsheet = IOFactory::load($final_filename);$sheet = $spreadsheet->getActiveSheet();$max = $sheet->getHighestDataRow('A');$caracteres = ['#', '?', '!', '@', '$'];$max_caracteres = count($caracteres);for($i = 1; $i <= $max; $i++){$first_name = Functions::sanitizeFilterString($sheet->getCell('A' . $i)->getValue());$last_name = Functions::sanitizeFilterString($sheet->getCell('B' . $i)->getValue());$email = trim(filter_var(strval($sheet->getCell('C' . $i)->getValue()), FILTER_SANITIZE_EMAIL));if(empty($first_name) || empty($last_name) || !filter_var($email, FILTER_VALIDATE_EMAIL) ) {continue;}$caracter = $caracteres[ rand(0, $max_caracteres - 1) ];$runmber = rand(1001, 9999);$sfirst_name = ucfirst(substr(strtolower(str_replace(' ', '', $first_name)), 0, 4));$slast_name = ucfirst(substr(strtolower(str_replace(' ', '', $last_name)), 0, 4));$password = $sfirst_name . $slast_name . $runmber . $caracter;$sheet->SetCellValue('D' . $i, $password);}$filename = $file['name'];$final_filename = 'data/' . $filename;$fileName = Functions::normalizeStringFilename($file['name']);$fileName = str_replace('.xlsx', '', $fileName);$fileName = str_replace('.xls', '', $fileName);$fileName = $fileName . '-generado-' . date('Y-m-d-H-i-s') . '.xlsx';$tempFilename = tempnam(sys_get_temp_dir(), $file['name'] . time());$writer = IOFactory::createWriter($spreadsheet, 'Xls');$writer->save($tempFilename);$content = file_get_contents($tempFilename);@unlink($final_filename);@unlink($tempFilename);return new JsonModel(['success' => true,'data' => ['content' => base64_encode($content),'basename' => $fileName]]);} else {$messages = [];$form_messages = (array) $form->getMessages();foreach ($form_messages as $fieldname => $field_messages) {$messages[$fieldname] = array_values($field_messages);}return new JsonModel(['success' => false,'data' => $messages]);}}else if($request->isGet()) {$form = new UserUploadGeneratePasswordForm();$this->layout()->setTemplate('layout/layout-backend.phtml');$viewModel = new ViewModel();$viewModel->setTemplate('leaders-linked/tools/password-generator-for-file.phtml');$viewModel->setVariables(['form' => $form]);return $viewModel ;} else {return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);;}}}