Ejemplo n.º 1
0
 function purge_trash()
 {
     Env::useHelper("permissions");
     $days = config_option("days_on_trash", 0);
     $count = 0;
     if ($days > 0) {
         $date = DateTimeValueLib::now()->add("d", -$days);
         $objects = Objects::findAll(array("conditions" => array("`trashed_by_id` > 0 AND `trashed_on` < ?", $date), "limit" => 100));
         foreach ($objects as $object) {
             $concrete_object = Objects::findObject($object->getId());
             if (!$concrete_object instanceof ContentDataObject) {
                 continue;
             }
             if ($concrete_object instanceof MailContent && $concrete_object->getIsDeleted() > 0) {
                 continue;
             }
             try {
                 DB::beginWork();
                 if ($concrete_object instanceof MailContent) {
                     $concrete_object->delete(false);
                 } else {
                     $concrete_object->delete();
                 }
                 ApplicationLogs::createLog($concrete_object, ApplicationLogs::ACTION_DELETE);
                 DB::commit();
                 $count++;
             } catch (Exception $e) {
                 DB::rollback();
                 Logger::log("Error delting object in purge_trash: " . $e->getMessage(), Logger::ERROR);
             }
         }
     }
     return $count;
 }
        }
    }
    return false;
}
if (!complete_migration_check_table_exists(TABLE_PREFIX . "processed_objects", DB::connection()->getLink())) {
    DB::execute("CREATE TABLE `" . TABLE_PREFIX . "processed_objects` (\r\n\t\t\t\t  `object_id` INTEGER UNSIGNED,\r\n\t\t\t\t  PRIMARY KEY (`object_id`)\r\n\t\t\t\t) ENGINE = InnoDB;");
}
try {
    $sql = "";
    $first_row = true;
    $cant = 0;
    $count = 0;
    $processed_objects = array();
    $user = Contacts::findOne(array("conditions" => "user_type = (SELECT id FROM " . TABLE_PREFIX . "permission_groups WHERE name='Super Administrator')"));
    $object_controller = new ObjectController();
    $objects = Objects::findAll(array('id' => true, "conditions" => "id NOT IN(SELECT object_id FROM " . TABLE_PREFIX . "processed_objects)", "order" => "id DESC", "limit" => OBJECT_COUNT));
    foreach ($objects as $obj) {
        $cobj = Objects::findObject($obj);
        if ($cobj instanceof ContentDataObject) {
            if (!$cobj instanceof Workspace) {
                $mem_ids = $cobj->getMemberIds();
                if (count($mem_ids) > 0) {
                    $object_controller->add_to_members($cobj, $mem_ids, $user);
                } else {
                    $cobj->addToSharingTable();
                }
                $cobj->addToSearchableObjects(true);
            }
            // add mails to sharing table for account owners
            if ($cobj instanceof MailContent && $cobj->getAccount() instanceof MailAccount) {
                $db_result = DB::execute("SELECT contact_id FROM " . TABLE_PREFIX . "mail_account_contacts WHERE account_id = " . $cobj->getAccountId());
Ejemplo n.º 3
0
    while ($row = mysql_fetch_array($res)) {
        if ($row[0] == $table_name) {
            return true;
        }
    }
    return false;
}
if (!complete_migration_check_table_exists(TABLE_PREFIX . "processed_objects", DB::connection()->getLink())) {
    DB::execute("CREATE TABLE `" . TABLE_PREFIX . "processed_objects` (\n\t\t\t\t  `object_id` INTEGER UNSIGNED,\n\t\t\t\t  PRIMARY KEY (`object_id`)\n\t\t\t\t) ENGINE = InnoDB;");
}
$sql = "";
$first_row = true;
$cant = 0;
$count = 0;
$processed_objects = array();
$objects = Objects::findAll(array('id' => true, "conditions" => "id NOT IN(SELECT object_id FROM " . TABLE_PREFIX . "processed_objects)"));
foreach ($objects as $obj) {
    $cobj = Objects::findObject($obj);
    if ($cobj instanceof ContentDataObject) {
        $cobj->addToSearchableObjects(true);
        $cobj->addToSharingTable();
        // add mails to sharing table for account owners
        if ($cobj instanceof MailContent) {
            $db_result = DB::execute("SELECT contact_id FROM " . TABLE_PREFIX . "mail_accounts WHERE id = " . $cobj->getAccountId());
            $macs = $db_result->fetchAll();
            if ($macs && is_array($macs) && count($macs) > 0) {
                $pgs = array();
                foreach ($macs as $mac) {
                    $contact_id = $mac['contact_id'];
                    $db_result = DB::execute("SELECT permission_group_id FROM " . TABLE_PREFIX . "contact_permission_groups WHERE contact_id = " . $contact_id);
                    $mac_pgs = $db_result->fetchAll();
Ejemplo n.º 4
0
 /**
  * Enter description here...
  *
  * @param Array $context: array of the selected dimensions and/or members
  * @deprecated use ContentDataObjects::listing() instead 
  */
 static function getObjectsFromContext($context, $order = null, $order_dir = null, $trashed = false, $archived = false, $filters = null, $start = 0, $limit = null, $obj_type_types = null)
 {
     //Filters conditions
     $filter_conditions = self::prepareFiltersConditions($filters);
     $name_filter_condition = $filter_conditions[0];
     $obj_ids_filter_condition = $filter_conditions[1];
     $type_filter_condition = $filter_conditions[2];
     //Trash && Archived conditions
     $conditions = self::prepareTrashandArchivedConditions($trashed, $archived);
     $trashed_cond = $conditions[0];
     $archived_cond = $conditions[1];
     //Order conditions
     $order_conditions = self::prepareOrderConditions($order, $order_dir);
     //Dimension conditions
     $member_conditions = self::prepareDimensionConditions($context);
     if ($member_conditions == "") {
         $member_conditions = "true";
     }
     $limit_query = "";
     if ($limit !== null && $start !== null) {
         $limit_query = "LIMIT {$start} , {$limit} ";
     }
     if ($obj_type_types == null) {
         $obj_type_types = array('content_object');
     }
     // $exists_member_cond: checks if the logged user deleted or archived the object then he always can see it in the trash can or archived objs panel
     $trashed_by_id_cond = $trashed ? "OR `o`.`trashed_by_id` = " . logged_user()->getId() : "";
     $archived_by_id_cond = $archived ? "OR `o`.`archived_by_id` = " . logged_user()->getId() : "";
     $exists_member_cond = "(NOT `om`.`member_id` IS NULL {$trashed_by_id_cond} {$archived_by_id_cond})";
     $sql_count = "SELECT count( DISTINCT `o`.`id` ) AS total FROM `" . TABLE_PREFIX . "objects` `o` \r\n\t\t\t\tINNER JOIN `" . TABLE_PREFIX . "object_types` `ot` ON `ot`.`id` = `o`.`object_type_id` \r\n\t\t\t\tLEFT JOIN `" . TABLE_PREFIX . "object_members` `om` ON `o`.`id` = `om`.`object_id` \r\n\t\t\t\tLEFT JOIN `" . TABLE_PREFIX . "project_tasks` `t` ON `t`.`object_id` = `o`.`id`\r\n\t\t\t\tLEFT JOIN `" . TABLE_PREFIX . "project_milestones` `m` ON `m`.`object_id` = `o`.`id`\r\n\t    \t\t\r\n\t\t\t\tWHERE {$trashed_cond} {$archived_cond}\r\n\t\t\t\tAND {$exists_member_cond}\r\n\t\t\t\tAND ( `t`.`is_template` IS NULL OR `t`.`is_template` = 0 )\r\n\t\t\t\tAND ( `m`.`is_template` IS NULL OR `m`.`is_template` = 0 )\r\n\t\t\t\tAND `ot`.`type` IN ('" . implode("','", $obj_type_types) . "')\r\n\t\t\t\tAND ({$member_conditions}) {$name_filter_condition} {$obj_ids_filter_condition} {$type_filter_condition} {$order_conditions}";
     $total = array_var(DB::executeOne($sql_count), "total");
     $sql = "SELECT DISTINCT `o`.`id` FROM `" . TABLE_PREFIX . "objects` `o` \r\n\t\t\t\tINNER JOIN `" . TABLE_PREFIX . "object_types` `ot` ON `ot`.`id` = `o`.`object_type_id`\r\n\t\t\t\tLEFT JOIN `" . TABLE_PREFIX . "object_members` `om` ON `o`.`id` = `om`.`object_id` \r\n\t\t\t\tLEFT JOIN `" . TABLE_PREFIX . "project_tasks` `t` ON `t`.`object_id` = `o`.`id`\r\n\t\t\t\tLEFT JOIN `" . TABLE_PREFIX . "project_milestones` `m` ON `m`.`object_id` = `o`.`id`\r\n\t    \t\t\r\n\t\t\t\tWHERE {$trashed_cond} {$archived_cond}\r\n\t\t\t\tAND {$exists_member_cond}\r\n\t\t\t\tAND ( `t`.`is_template` IS NULL OR `t`.`is_template` = 0 )\r\n\t\t\t\tAND ( `m`.`is_template` IS NULL OR `m`.`is_template` = 0 )\r\n\t\t\t\tAND `ot`.`type` IN ('" . implode("','", $obj_type_types) . "')\r\n\t\t\t\tAND ({$member_conditions}) {$name_filter_condition} {$obj_ids_filter_condition} {$type_filter_condition} {$order_conditions}\r\n\t\t\t\t{$limit_query} ";
     $result = DB::execute($sql);
     $rows = $result->fetchAll();
     $objects = array();
     if (!is_null($rows)) {
         $ids = array();
         foreach ($rows as $row) {
             $ids[] = array_var($row, 'id');
         }
         if (count($ids) > 0) {
             $q_order = "";
             if (!is_null($order)) {
                 if (!is_array($order)) {
                     $q_order = "`" . str_replace("o.", "", $order) . "` {$order_dir}";
                 } else {
                     $q_order = "";
                     foreach ($order as $o) {
                         $q_order .= ($q_order == "" ? "" : ", ") . "`" . str_replace("o.", "", $o) . "` {$order_dir}";
                     }
                 }
             }
             $query_params = array("conditions" => "`id` IN (" . implode(",", $ids) . ")");
             if (trim($q_order) != "") {
                 $query_params["order"] = $q_order;
             }
             $objects = Objects::findAll($query_params);
         }
     }
     $result = new stdClass();
     $result->objects = $objects;
     $result->total = $total;
     return $result;
 }