public function send($username, $recipient, $message, array $passwordLocations) { $rcptDir = $this->messageDir . '/' . $recipient; if (file_exists($rcptDir) && (!is_writable($rcptDir) || !is_dir($rcptDir))) { throw new \RuntimeException('Message directory is not writable!'); } if (!file_exists($rcptDir)) { mkdir($rcptDir); } $messageFileName = date('YmdHis') . '-' . uniqid() . '.sms'; $fd = fopen($rcptDir . '/' . $messageFileName, 'w'); fwrite($fd, $message); fclose($fd); $this->logger->messageLog($username, $recipient, $message, $passwordLocations); return true; }
public function send($username, $recipient, $message, array $passwordLocations) { if ($this->logger === null) { throw new \LogicException('Logger is not defined!'); } $descriptors = array(0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w')); $cmd = escapeshellcmd($this->gnokiiPath . ' --sendsms ' . escapeshellarg($recipient)); $pipes = array(); $process = proc_open($cmd, $descriptors, $pipes, null, array('LANG' => 'en_US.UTF-8')); if (is_resource($process)) { fwrite($pipes[0], $message); fclose($pipes[0]); $stdout = stream_get_contents($pipes[1]); $stderr = stream_get_contents($pipes[2]); $returnValue = proc_close($process); if ($returnValue != 0) { throw new \RuntimeException('Unable to send SMS: ' . $stderr . '; ' . $stdout); } $this->logger->messageLog($username, $recipient, $message, $passwordLocations); } else { throw new \RuntimeException('Unable to start Gnokii.'); } return true; }