Ejemplo n.º 1
0
 /**
  * Parse the template
  *
  * @param  string $template
  * @param  mixed  $id
  * @param  mixed  $pid
  * @return boolean
  */
 public static function parse($template, $id = null, $pid = null)
 {
     // Parse any date placeholders
     $dates = [];
     preg_match_all('/\\[\\{date.*\\}\\]/', $template, $dates);
     if (isset($dates[0]) && isset($dates[0][0])) {
         foreach ($dates[0] as $date) {
             $pattern = str_replace('}]', '', substr($date, strpos($date, '_') + 1));
             $template = str_replace($date, date($pattern), $template);
         }
     }
     // Parse any template placeholders
     $templates = [];
     preg_match_all('/\\[\\{template_.*\\}\\]/', $template, $templates);
     if (isset($templates[0]) && isset($templates[0][0])) {
         foreach ($templates[0] as $tmpl) {
             $t = str_replace('}]', '', substr($tmpl, strpos($tmpl, '_') + 1));
             if ($t != $id && $t != $pid) {
                 $newTemplate = is_numeric($t) ? Table\Templates::findById($t) : Table\Templates::findBy(['name' => $t]);
                 if (isset($newTemplate->id)) {
                     $t = self::parse($newTemplate->template, $newTemplate->id, $id);
                     $template = str_replace($tmpl, $t, $template);
                 } else {
                     $template = str_replace($tmpl, '', $template);
                 }
             } else {
                 $template = str_replace($tmpl, '', $template);
             }
         }
     }
     // Parse any session placeholders
     $open = [];
     $close = [];
     $merge = [];
     $sess = [];
     preg_match_all('/\\[\\{sess\\}\\]/msi', $template, $open, PREG_OFFSET_CAPTURE);
     preg_match_all('/\\[\\{\\/sess\\}\\]/msi', $template, $close, PREG_OFFSET_CAPTURE);
     // If matches are found, format and merge the results.
     if (isset($open[0][0]) && isset($close[0][0])) {
         foreach ($open[0] as $key => $value) {
             $merge[] = [$open[0][$key][0] => $open[0][$key][1], $close[0][$key][0] => $close[0][$key][1]];
         }
     }
     foreach ($merge as $match) {
         $sess[] = substr($template, $match['[{sess}]'], $match['[{/sess}]'] - $match['[{sess}]'] + 9);
     }
     if (count($sess) > 0) {
         $session = Session::getInstance();
         foreach ($sess as $s) {
             $sessString = str_replace(['[{sess}]', '[{/sess}]'], ['', ''], $s);
             $isSess = null;
             $noSess = null;
             if (strpos($sessString, '[{or}]') !== false) {
                 $sessValues = explode('[{or}]', $sessString);
                 if (isset($sessValues[0])) {
                     $isSess = $sessValues[0];
                 }
                 if (isset($sessValues[1])) {
                     $noSess = $sessValues[1];
                 }
             } else {
                 $isSess = $sessString;
             }
             if (null !== $isSess) {
                 if (!isset($session->user)) {
                     $template = str_replace($s, $noSess, $template);
                 } else {
                     $newSess = $isSess;
                     foreach ($_SESSION as $sessKey => $sessValue) {
                         if ((is_array($sessValue) || $sessValue instanceof \ArrayObject) && strpos($template, '[{' . $sessKey . '->') !== false) {
                             foreach ($sessValue as $sessK => $sessV) {
                                 if (!is_array($sessV)) {
                                     $newSess = str_replace('[{' . $sessKey . '->' . $sessK . '}]', $sessV, $newSess);
                                 }
                             }
                         } else {
                             if (!is_array($sessValue) && !$sessValue instanceof \ArrayObject && strpos($template, '[{' . $sessKey) !== false) {
                                 $newSess = str_replace('[{' . $sessKey . '}]', $sessValue, $newSess);
                             }
                         }
                     }
                     if ($newSess != $isSess) {
                         $template = str_replace('[{sess}]' . $sessString . '[{/sess}]', $newSess, $template);
                     } else {
                         $template = str_replace($s, $noSess, $template);
                     }
                 }
             } else {
                 $template = str_replace($s, '', $template);
             }
         }
     }
     return $template;
 }
Ejemplo n.º 2
0
 /**
  * Remove a template
  *
  * @param  array $fields
  * @return void
  */
 public function remove(array $fields)
 {
     if (isset($fields['rm_templates'])) {
         foreach ($fields['rm_templates'] as $id) {
             $template = Table\Templates::findById((int) $id);
             if (isset($template->id)) {
                 $template->delete();
             }
         }
     }
 }
Ejemplo n.º 3
0
 /**
  * Json action method
  *
  * @param  int $id
  * @param  int $marked
  * @return void
  */
 public function json($id, $marked)
 {
     $json = [];
     $template = Table\Templates::findById($id);
     if (isset($template->id) && null !== $template->history) {
         $history = json_decode($template->history, true);
         if (isset($history[$marked])) {
             $json['value'] = $history[$marked];
         }
     }
     $this->response->setBody(json_encode($json, JSON_PRETTY_PRINT));
     $this->send(200, ['Content-Type' => 'application/json']);
 }