Example #1
0
 static function itemsexist($data, $params)
 {
     $checktrash = false;
     if (isset($params[2]) and $params[2] == "checktrash") {
         $checktrash = true;
     }
     $table = $params[0];
     $id = $data["id"];
     $data = array_intersect_key($data, array_flip(explode(",", $params[1])));
     return validate::itemexists($table, $data, $id, $checktrash);
 }
Example #2
0
 function validate_field($field_name, $value, $id = -1)
 {
     if ($field_name == "" or !isset($this->fields[$field_name])) {
         return array();
     }
     $error = array();
     $field = $this->fields[$field_name];
     $key_name = isset($field["DISPLAYNAME"]) ? $field["DISPLAYNAME"] : $field["NAME"];
     $value = (array) $value;
     $value_str = self::scalarize($value, $field);
     if (isset($field["REQUIRED"]) and $value_str == "") {
         $error[] = array($key_name, "{t}missing field{/t}");
     }
     if (isset($field["VALIDATE"])) {
         foreach ($field["VALIDATE"] as $validate) {
             list($class, $function, $params) = sys_find_callback("validate", $validate["FUNCTION"]);
             foreach ($value as $value_item) {
                 if ($value_item != "" or isset($field["REQUIRED"])) {
                     $result = call_user_func(array($class, $function), $value_item, $params, $field);
                     if ($result != "") {
                         $error[] = array($key_name, $result);
                     }
                 }
             }
         }
     }
     if (isset($field["KEY"]) or (isset($field["IS_UNIQUE"]) or isset($field["IS_UNIQUE_WITH_TRASH"])) and $value_str != "") {
         $check_trash = isset($field["IS_UNIQUE_WITH_TRASH"]);
         if ($result = validate::itemexists($this->tname, array($field_name => $value_str), $id, $check_trash) and $result != "") {
             $error[] = array($key_name, $result);
         }
     }
     return $error;
 }
Example #3
0
 private static function _copy($ccp, $folder, $sgsml, $delete)
 {
     $tname = $sgsml->tname;
     $vars = array("handler" => $ccp["handler"], "sqlvarsnoquote" => $ccp["vars_noquote"], "custom_name" => $ccp["custom_name"], "default_sql" => $ccp["default_sql"]);
     $rows = db_select($ccp["tname"], $ccp["data_fields"], $ccp["where"], "", "", array("item" => $ccp["items"], "folder" => $ccp["folder"], "folders" => $ccp["folders"]), $vars);
     if (is_array($rows) and count($rows) < count($ccp["items"])) {
         exit("{t}Item(s) not found or access denied.{/t}");
     }
     foreach (self::_get_mappings("->") as $mapping) {
         if (!strpos($mapping[1], "=")) {
             continue;
         }
         $mapping[1] = explode(".", $mapping[1]);
         if ("simple_" . $mapping[0] == $ccp["tname"] and "simple_" . $mapping[1][0] == $tname) {
             $sgsml->patch_fields(array_slice($mapping[1], 1));
         }
     }
     $mappings = array();
     foreach (self::_get_mappings("|") as $mapping) {
         if (strpos($mapping[0], "->")) {
             continue;
         }
         $mapping1 = explode(".", $mapping[0]);
         $mapping2 = explode(".", $mapping[1]);
         $key = "simple_" . $mapping1[0] . ".simple_" . $mapping2[0];
         $mappings[$key][$mapping2[1]] = $mapping1[1];
         $key = "simple_" . $mapping2[0] . ".simple_" . $mapping1[0];
         $mappings[$key][$mapping1[1]] = $mapping2[1];
     }
     $default_values = folder_get_default_values($folder);
     $messages = array();
     foreach ($rows as $row) {
         if (empty($row["folder"]) or !db_get_right($row["folder"], "read")) {
             continue;
         }
         if (isset($mappings[$ccp["tname"] . "." . $tname])) {
             foreach ($mappings[$ccp["tname"] . "." . $tname] as $to => $from) {
                 $row[$to] = $row[$from];
             }
         }
         $row = array_merge($row, $default_values);
         foreach (array_keys($row) as $key) {
             if (!isset($sgsml->fields[$key])) {
                 unset($row[$key]);
                 continue;
             }
             $field = $sgsml->fields[$key];
             if ((isset($field["KEY"]) or isset($field["IS_UNIQUE"])) and !empty($row[$key]) and !isset($field["READONLYIN"])) {
                 $val = $row[$key];
                 $step = 1;
                 while ($step < 100 and validate::itemexists($tname, array($key => $val), -1) != "") {
                     $step++;
                     $val = $row[$key] . "_" . $step;
                 }
                 $row[$key] = $val;
             }
             if (isset($field["RESTORE"])) {
                 $row[$key] = self::_restore_value($row, $key, $field["RESTORE"]);
             }
         }
         $id = $row["id"];
         $row["id"] = -1;
         $row["folder"] = $folder;
         if (isset($row["syncid"])) {
             $row["syncid"] = "";
         }
         $newfiles = array();
         if (is_array($ccp["file_fields"]) and count($ccp["file_fields"]) > 0) {
             foreach ($ccp["file_fields"] as $file_field) {
                 if (!empty($row[$file_field])) {
                     $data_files = explode("|", trim($row[$file_field], "|"));
                     $row[$file_field] = array();
                     foreach ($data_files as $file) {
                         if (!file_exists($file)) {
                             continue;
                         }
                         $target = self::_paste_item_copyfile($file, $row["id"], $tname);
                         $row[$file_field][] = $target;
                         $newfiles[] = $target;
                     }
                     $row[$file_field] = implode("|", $row[$file_field]);
                 }
             }
         }
         if (!empty($sgsml->att["DISABLE_TRIGGER_CCP"])) {
             unset($sgsml->att["TRIGGER_NEW"]);
         }
         $result = $sgsml->insert($row);
         if (!is_numeric($result)) {
             if (is_array($result) and count($result) > 0) {
                 $message = "{t}Error pasting asset{/t}:";
                 foreach ($result as $field => $errors) {
                     foreach ($errors as $error) {
                         $message .= "\n" . $error[0] . ": " . $error[1];
                     }
                 }
             } else {
                 $message = $result;
             }
             $messages[] = $message;
         } else {
             if ($delete) {
                 asset::delete_items($ccp["folder"], "display", array($id), $ccp["delete_mode"]);
             }
             sys_log_stat("copied_records", 1);
         }
         foreach ($newfiles as $file) {
             if (sys_strbegins($file, SIMPLE_CACHE . "/upload/")) {
                 @unlink($file);
             }
         }
     }
     return $messages;
 }
Example #4
0
 static function contactid($var, $row)
 {
     if ($var != "") {
         return $var;
     }
     $contact_id = "";
     if (!empty($row["lastname"])) {
         $contact_id .= substr($row["lastname"], 0, 3);
     }
     if (!empty($row["firstname"])) {
         $contact_id .= substr($row["firstname"][0], 0, 2);
     }
     if (strlen($contact_id) < 3) {
         $contact_id .= str_repeat("_", 3 - strlen($contact_id));
     }
     $contact_id = strtoupper($contact_id);
     $i = 1;
     $id = $contact_id;
     while (validate::itemexists("simple_contacts", array("contactid" => $id), 1)) {
         $i++;
         $id = $contact_id . $i;
         if ($i > 20) {
             break;
         }
     }
     return $id;
 }