public function testClassShortName()
 {
     $expectations = [['Strings', "Strings"], ['\\Packaged\\Helpers\\Strings', "Strings"], [new \Packaged\Helpers\Strings(), "Strings"]];
     foreach ($expectations as $expect) {
         $this->assertEquals($expect[1], class_shortname($expect[0]));
     }
 }
Example #2
0
 public function getUrl(RecordMapper $entity)
 {
     $parts = [];
     if ($entity instanceof WalkthroughStep) {
         return $this->_getWalkthroughStepUrl($entity);
     }
     $parts[] = strtolower(class_shortname($entity));
     $slug = isset($entity->slug) ? sprintf('-%s', $entity->slug) : '';
     $parts[] = sprintf('%d%s', $entity->id(), $slug);
     return $this->getProjectBaseUri() . implode('/', $parts);
 }
Example #3
0
 /**
  * @param DataMapper $mapper
  * @param array      $updatables array of arguments that are allowed to be
  *                               updated in the mapper
  */
 protected function _edit(DataMapper $mapper, array $updatables)
 {
     $className = class_shortname($mapper);
     if ($mapper->exists()) {
         $updates = $this->_updateMapper($mapper, $updatables);
         if ($updates) {
             $mapper->saveChanges();
             echo "{$className} {$mapper->id()} updated;\n\n";
             echo TextTable::fromArray($updates);
         } else {
             echo "No updates were made\n";
             echo "Updatable fields: " . implode(", ", $updatables);
         }
     } else {
         echo "{$className} {$this->id} doesn't exist, did you mean to call add?";
     }
 }
Example #4
0
 public function getViewOptions()
 {
     if ($this instanceof RecordMapper) {
         $viewOptions = [];
         $project = Container::config()->get('project');
         $mapperName = class_shortname($this);
         $viewPath = "/Applications/Front/" . $mapperName . "/Views/";
         $viewDirs = [];
         $extended = [];
         $viewDirs[$project->namespace] = $project->path . $viewPath;
         $extended[$project->namespace] = false;
         if ($project->extended) {
             $viewDirs[$project->extended_namespace] = $project->extended_path . $viewPath;
             $extended[$project->extended_namespace] = true;
         }
         foreach ($viewDirs as $namespace => $viewDir) {
             if (file_exists($viewDir)) {
                 $files = glob($viewDir . '*.php');
                 foreach ($files as $file) {
                     $pathInfo = pathinfo($file);
                     $className = basename($pathInfo['filename']);
                     $fullClassName = $namespace . '\\Applications\\Front\\' . $mapperName . '\\Views\\' . $className;
                     if (isset($extended[$namespace]) && $extended[$namespace]) {
                         $className = $className . ' [Default]';
                     }
                     $viewOptions[$fullClassName] = $className;
                 }
             }
         }
         if (empty($viewOptions)) {
             throw new \Exception('No Views found');
         }
         return $viewOptions;
     } else {
         throw new \Exception('ViewOptionTrait can only be used by a RecordMapper');
     }
 }
Example #5
0
 protected function _getLastIdPath($campaignId, $taskId)
 {
     $campaignDir = build_path("/var/lib/defero", class_shortname($this), $campaignId);
     if (!file_exists($campaignDir)) {
         mkdir($campaignDir, 0777, true);
     }
     $fileName = 'campaign-' . preg_replace('/[\\\\\\/\\:\\*\\?]/', '-', $taskId) . '.lastId';
     return build_path($campaignDir, $fileName);
 }
Example #6
0
 public function process()
 {
     $userData = $this->_message->getArr('data');
     $campaignActive = $this->_message->getInt('campaignActive');
     $serviceName = $this->_message->getStr('emailService', $campaignActive ? 'email' : 'email_test');
     $name = null;
     if (isset($userData['firstname'])) {
         $name = $userData['firstname'];
         if (isset($userData['lastname'])) {
             $name .= ' ' . $userData['lastname'];
         }
     }
     $email = $userData['email'];
     Log::info("Sending to {$name} <{$email}> using {$serviceName}");
     $mailer = Email::getAccessor($serviceName);
     $mailer->addRecipient($email, $name);
     $mailer->setSubject($this->_message->getStr('subject'));
     switch ($this->_message->getStr('sendType')) {
         case SendType::PLAIN_TEXT:
             $mailer->setTextBody($this->_message->getStr('plainText') ?: null);
             break;
         case SendType::HTML_ONLY:
             $mailer->setHtmlBody($this->_message->getStr('htmlContent') ?: null);
             break;
         case SendType::HTML_AND_PLAIN:
             $mailer->setTextBody($this->_message->getStr('plainText') ?: null);
             $mailer->setHtmlBody($this->_message->getStr('htmlContent') ?: null);
             break;
     }
     if ($mailer instanceof \Cubex\Email\Service\Mail) {
         $mailer->addHeader("X-Defero-MID", uniqid(class_shortname($mailer), true));
         $mailer->addHeader("X-Defero-PID", getmypid());
     }
     $campaignId = $this->_message->getStr('campaignId');
     if ($mailer instanceof DatabaseMailer) {
         $mailer->setCampaignId($campaignId);
     }
     $mailer->setFrom($this->_message->getStr('senderEmail'), $this->_message->getStr('senderName'));
     $returnPath = $this->_message->getStr('returnPath');
     if ($returnPath) {
         $mailer->setSender($returnPath);
     }
     $replyTo = $this->_message->getStr('replyTo');
     if ($replyTo) {
         $mailer->setSender($replyTo);
     } else {
         $mailer->setSender($this->_message->getStr('senderEmail'), $this->_message->getStr('senderName'));
     }
     try {
         $result = $mailer->send();
     } catch (\Exception $e) {
         Log::debug($e->getMessage());
         $result = false;
     }
     $hour = time();
     $hour -= $hour % 3600;
     if (isset($userData['statskey'])) {
         $brandStatsCf = MailStatisticsByBrand::cf();
         $column = $hour . '|failed|' . $userData['statskey'] . '|' . $userData['language'];
         if ($result !== false) {
             $column = $hour . '|' . ($campaignActive ? 'sent' : 'test');
             $column .= '|' . $userData['statskey'] . '|' . $userData['language'];
             $brandStatsCf->increment($campaignId, $column);
         } else {
             $brandStatsCf->increment($campaignId, $column);
         }
     }
     $statsCf = MailStatistic::cf();
     $column = $hour . '|failed-' . $userData['language'];
     if ($result !== false) {
         $column = $hour . '|' . ($campaignActive ? 'sent' : 'test');
         $column .= '-' . $userData['language'];
         $statsCf->increment($campaignId, $column);
     } else {
         $statsCf->increment($campaignId, $column);
     }
     if (!$userData['user_id']) {
         $userData['user_id'] = 0;
     }
     MailerLog::addLogEntry($userData['user_id'], $campaignId);
     if ($result !== false) {
         if ($campaignActive) {
             SentEmailLog::addLogEntry($userData['user_id'], $campaignId);
         }
     }
     return false;
 }