function execute()
 {
     $this->frame = false;
     $locale = new Locales('connection');
     $list = $locale->getList();
     $this->smarty->assign('lang', $list);
     $fieldID = Request::post('id');
     $model = new connectionFieldsModel();
     $this->smarty->assign('field', $model->getField($fieldID));
 }
 private function filterCustomField($fields)
 {
     $result = array();
     $model = new connectionFieldsModel();
     foreach ($fields as $key => $value) {
         $exp = explode('_', $key);
         $fieldId = (int) $exp[1];
         $field = $model->getField($fieldId);
         $type = $field['type'] == 'textarea' ? 'input' : $field['type'];
         switch ($type) {
             case 'input':
                 $result[$key] = new MongoRegex('/' . $value . '/i');
                 break;
             case 'checkbox':
                 $result[$key] = true;
                 break;
             case 'select':
                 if ($model->hasVariant($fieldId, $value)) {
                     $variants = $model->getLocalesVariant($fieldId, $value);
                     $result[$key] = array('$in' => $variants);
                 }
                 break;
             case 'list':
                 if (is_array($value)) {
                     $variants = array();
                     foreach ($value as $variant) {
                         if ($model->hasVariant($fieldId, $variant)) {
                             $variantsLocale = $model->getLocalesVariant($fieldId, $variant);
                             $variants = array_merge($variants, $variantsLocale);
                         }
                     }
                     if (sizeof($variants) != 0) {
                         $result[$key] = array('$in' => $variants);
                     }
                 }
                 break;
         }
     }
     return $result;
 }
 static function getFieldValue($data, $fieldId, $lang = false)
 {
     $name = 'field_' . $fieldId;
     if (!array_key_exists($name, $data)) {
         return '';
     }
     $model = new connectionFieldsModel();
     $field = $model->getField((int) $fieldId);
     $lang = $lang ? $lang : Language::getActiveLanguageISO();
     if ($field) {
         switch ($field['type']) {
             case 'select':
                 $variants = $model->getLocalesVariant($fieldId, $data[$name], true);
                 if (isset($variants[$lang])) {
                     return $variants[$lang];
                 } else {
                     return '';
                 }
                 break;
             case 'list':
                 $ret = array();
                 foreach ($data[$name] as $vart) {
                     $variants = $model->getLocalesVariant($fieldId, $vart, true);
                     if (isset($variants[$lang])) {
                         $ret[] = $variants[$lang];
                     }
                 }
                 return $ret;
                 break;
             default:
                 return $data[$name];
                 break;
         }
     }
     return $data[$name];
 }
예제 #4
0
 public function updateInfo($array, $id, $files = array())
 {
     $update = array();
     $default = array('first_name', 'last_name', 'birth_day', 'birth_month', 'birth_year', 'country');
     foreach ($default as $value) {
         if (array_key_exists($value, $array) && Validator::Field($array[$value], $this->regFields[$value])) {
             $update[$value] = Validator::clearValue($array[$value]);
         }
         unset($array[$value]);
     }
     if (isset($update['birth_day']) && isset($update['birth_month']) && isset($update['birth_year'])) {
         $update['birth_date'] = (int) strtotime($update['birth_year'] . '-' . $update['birth_month'] . '-' . $update['birth_day']);
     }
     unset($update['birth_day']);
     unset($update['birth_month']);
     unset($update['birth_year']);
     $fieldModel = new connectionFieldsModel();
     $fieldMask = 'field_';
     foreach ($array as $key => $value) {
         if (substr($key, 0, strlen($fieldMask)) != $fieldMask) {
             continue;
         }
         $fieldStr = explode('_', $key);
         $fieldId = (int) $fieldStr[1];
         $field = $fieldModel->getField($fieldId);
         if ($field) {
             switch ($field['type']) {
                 case 'checkbox':
                     $update[$key] = false;
                     if ((int) $value == 1) {
                         $update[$key] = true;
                     }
                     break;
                 case 'select':
                     if ($fieldModel->hasVariant($fieldId, $value)) {
                         $update[$key] = $value;
                     }
                     break;
                 case 'list':
                     if (is_array($value)) {
                         $values = array();
                         foreach ($value as $field_variant) {
                             if ($fieldModel->hasVariant($fieldId, $field_variant)) {
                                 $values = $value;
                             }
                         }
                         $update[$key] = $values;
                     } else {
                         $update[$key] = array();
                     }
                     break;
                 case 'group':
                     $update[$key] = array(Validator::clearValue($value[0]), Validator::clearValue($value[1]));
                     break;
                 default:
                     $update[$key] = Validator::clearValue($value);
                     break;
             }
         }
     }
     if (sizeof($files) > 0) {
         foreach ($files as $key => $file) {
             if (substr($key, 0, strlen($fieldMask)) != $fieldMask) {
                 continue;
             }
             $fID = (int) str_replace($fieldMask, '', $key);
             if (!($field = $fieldModel->where(array('id' => $fID, 'type' => 'file'))->fetchOne())) {
                 continue;
             }
             $extension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
             if (!in_array($extension, $field['extension'])) {
                 continue;
             }
             $fileName = md5($file['name'] . time() . uniqid()) . '.' . $extension;
             $fileInfo = array('name' => htmlspecialchars($file['name']), 'extension' => $extension, 'file' => $fileName);
             if (move_uploaded_file($file['tmp_name'], UPLOAD_DIR . DS . 'attachment' . DS . $fileName)) {
                 $user = $this->getFromId((int) $id);
                 if (!isset($user[$key]) || !is_array($user[$key]) || sizeof($user[$key]) == 0) {
                     $update[$key] = array($fileInfo);
                 } else {
                     $user[$key][] = $fileInfo;
                     $update[$key] = $user[$key];
                 }
             }
         }
     }
     $this->where(array('id' => (int) $id))->update($update);
     return true;
 }