Esempio n. 1
0
 public function CustomRestrictionResponse($restrictions)
 {
     $s = array();
     $n = 0;
     if (is_array($restrictions) && !empty($restrictions)) {
         foreach ($restrictions as $restriction) {
             $check1 = AECToolbox::rewriteEngine($restriction[0], $this);
             $check2 = AECToolbox::rewriteEngine($restriction[2], $this);
             $eval = $restriction[1];
             if ($check1 === $restriction[0] && reWriteEngine::isRWEstring($restriction[0])) {
                 $check1 = null;
             }
             if ($check2 === $restriction[2] && reWriteEngine::isRWEstring($restriction[2])) {
                 $check2 = null;
             }
             $s['customchecker' . $n] = AECToolbox::compare($eval, $check1, $check2);
             $n++;
         }
     }
     return $s;
 }
 public function executeCommand($command, $vars, $safe = false)
 {
     $result = '';
     switch ($command) {
         case 'rw_constant':
             if (isset($this->rewrite[$vars])) {
                 $result = $this->rewrite[$vars];
             }
             break;
         case 'data':
             if (empty($this->data)) {
                 return false;
             }
             $result = AECToolbox::getObjectProperty($this->data, $vars);
             break;
         case 'safedata':
             if (empty($this->data)) {
                 return false;
             }
             if (AECToolbox::getObjectProperty($this->data, $vars, true)) {
                 $result = AECToolbox::getObjectProperty($this->data, $vars);
             }
             break;
         case 'checkdata':
             if (empty($this->data)) {
                 return false;
             }
             $result = AECToolbox::getObjectProperty($this->data, $vars, true);
             break;
         case 'checkdata_notempty':
             if (empty($this->data)) {
                 return false;
             }
             $check = AECToolbox::getObjectProperty($this->data, $vars, true);
             if (AECToolbox::getObjectProperty($this->data, $vars, true)) {
                 $check = AECToolbox::getObjectProperty($this->data, $vars);
                 $result = !empty($check);
             }
             break;
         case 'metaUser':
             if (!is_object($this->data['metaUser'])) {
                 return false;
             }
             // We also support dot notation for the vars,
             // so explode if that is what the admin wants here
             if (!is_array($vars) && strpos($vars, '.') !== false) {
                 $temp = explode('.', $vars);
                 $vars = $temp;
             } elseif (!is_array($vars)) {
                 return false;
             }
             $result = $this->data['metaUser']->getProperty($vars);
             break;
         case 'invoice_count':
             if (!is_object($this->data['metaUser'])) {
                 return false;
             }
             return aecInvoiceHelper::InvoiceCountbyUserID($this->data['metaUser']->userid);
             break;
         case 'invoice_count_paid':
             if (!is_object($this->data['metaUser'])) {
                 return false;
             }
             return aecInvoiceHelper::PaidInvoiceCountbyUserID($this->data['metaUser']->userid);
             break;
         case 'invoice_count_unpaid':
             if (!is_object($this->data['metaUser'])) {
                 return false;
             }
             return aecInvoiceHelper::UnpaidInvoiceCountbyUserID($this->data['metaUser']->userid);
             break;
         case 'jtext':
             $result = JText::_($vars);
             break;
         case 'constant':
             if (defined($vars)) {
                 $result = constant($vars);
             } else {
                 $result = JText::_($vars);
             }
             break;
         case 'global':
             if (is_array($vars)) {
                 if (isset($vars[0]) && isset($vars[1])) {
                     $call = strtoupper($vars[0]);
                     $v = $vars[1];
                     $allowed = array('SERVER', 'GET', 'POST', 'FILES', 'COOKIE', 'SESSION', 'REQUEST', 'ENV');
                     if (in_array($call, $allowed)) {
                         switch ($call) {
                             case 'SERVER':
                                 if (isset($_SERVER[$v]) && !$safe) {
                                     $result = $_SERVER[$v];
                                 }
                                 break;
                             case 'GET':
                                 if (isset($_GET[$v])) {
                                     $result = $_GET[$v];
                                 }
                                 break;
                             case 'POST':
                                 if (isset($_POST[$v])) {
                                     $result = $_POST[$v];
                                 }
                                 break;
                             case 'FILES':
                                 if (isset($_FILES[$v]) && !$safe) {
                                     $result = $_FILES[$v];
                                 }
                                 break;
                             case 'COOKIE':
                                 if (isset($_COOKIE[$v])) {
                                     $result = $_COOKIE[$v];
                                 }
                                 break;
                             case 'SESSION':
                                 if (isset($_SESSION[$v])) {
                                     $result = $_SESSION[$v];
                                 }
                                 break;
                             case 'REQUEST':
                                 if (isset($_REQUEST[$v])) {
                                     $result = $_REQUEST[$v];
                                 }
                                 break;
                             case 'ENV':
                                 if (isset($_ENV[$v]) && !$safe) {
                                     $result = $_ENV[$v];
                                 }
                                 break;
                         }
                     }
                 }
             } else {
                 if (isset($GLOBALS[$vars])) {
                     $result = $GLOBALS[$vars];
                 }
             }
             break;
         case 'condition':
             if (empty($vars[0]) || !isset($vars[1])) {
                 if (isset($vars[2])) {
                     $result = $vars[2];
                 } else {
                     $result = '';
                 }
             } elseif (isset($vars[1])) {
                 $result = $vars[1];
             } else {
                 $result = '';
             }
             break;
         case 'hastext':
             $result = strpos($vars[0], $vars[1]) !== false ? 1 : 0;
             break;
         case 'uppercase':
             $result = strtoupper($vars);
             break;
         case 'lowercase':
             $result = strtoupper($vars);
             break;
         case 'concat':
             $result = implode($vars);
             break;
         case 'date':
             $result = date($vars[0], strtotime($vars[1]));
             break;
         case 'date_distance':
             $result = round($vars - (int) gmdate('U'));
             break;
         case 'date_distance_days':
             $result = round(($vars - (int) gmdate('U')) / 86400);
             break;
         case 'crop':
             if (isset($vars[2])) {
                 $result = substr($vars[0], (int) $vars[1], (int) $vars[2]);
             } else {
                 $result = substr($vars[0], (int) $vars[1]);
             }
             break;
         case 'pad':
             if (isset($vars[3])) {
                 $result = str_pad($vars[0], (int) $vars[1], $vars[2], JText::_("STR_PAD_" . strtoupper($vars[3])));
             } elseif (isset($vars[2])) {
                 $result = str_pad($vars[0], (int) $vars[1], $vars[2]);
             } else {
                 $result = str_pad($vars[0], (int) $vars[1]);
             }
             break;
         case 'chunk':
             $chunks = str_split($vars[0], (int) $vars[1]);
             if (isset($vars[2])) {
                 $result = implode($vars[2], $chunks);
             } else {
                 $result = implode(' ', $chunks);
             }
             break;
         case 'compare':
             if (isset($vars[2])) {
                 $result = AECToolbox::compare($vars[1], $vars[0], $vars[2]);
             } else {
                 $result = 0;
             }
             break;
         case 'math':
             if (isset($vars[2])) {
                 $result = AECToolbox::math($vars[1], (double) $vars[0], (double) $vars[2]);
             } else {
                 $result = 0;
             }
             break;
         case 'randomstring':
             $result = AECToolbox::randomstring((int) $vars);
             break;
         case 'randomstring_alphanum':
             $result = AECToolbox::randomstring((int) $vars, true);
             break;
         case 'randomstring_alphanum_large':
             $result = AECToolbox::randomstring((int) $vars, true, true);
             break;
         case 'php_function':
             if (!$safe) {
                 if (isset($vars[1])) {
                     $result = call_user_func_array($vars[0], $vars[1]);
                 } else {
                     $result = call_user_func_array($vars[0], array());
                 }
             }
             break;
         case 'php_method':
             if (!$safe) {
                 $callback = array($vars[0], $vars[1]);
                 if (isset($vars[2])) {
                     $result = call_user_func_array($callback, $vars[2]);
                 } else {
                     $result = call_user_func_array($callback, array());
                 }
             }
             break;
         default:
             $result = $command . ' is no command';
             break;
     }
     return $result;
 }