Exemplo n.º 1
0
 /**
  * WARNING: This method will attempt to delete all records of a given object type given a query
  * Deletes first 10000 by default
  *
  * @param String      $object  object type
  * @param String      $query   the query string to execute.  Use SQL operators
  * @param api_session $session instance of api_session object.
  * @param Integer     $max     [optional] Maximum number of records to delete.  Default is 10000
  *
  * @return Integer count of records deleted
  */
 public static function deleteByQuery($object, $query, api_session $session, $max = 10000)
 {
     // read all the record ids for the given object
     $ids = api_post::readByQuery($object, "id > 0 and {$query}", "id", $session, $max);
     if (!is_array($ids) && trim($ids) == '' || !count($ids) > 0) {
         return 0;
     }
     $count = 0;
     $delIds = array();
     foreach ($ids as $rec) {
         $delIds[] = $rec['id'];
         if (count($delIds) == 100) {
             api_post::delete($object, implode(",", $delIds), $session);
             $count += 100;
             $delIds = array();
         }
     }
     if (count($delIds) > 0) {
         api_post::delete($object, implode(",", $delIds), $session);
         $count += count($delIds);
     }
     return $count;
 }